Depuración del comportamiento de bajo consumo de STM32LF1xx

2

¿Hay alguna forma práctica de usar un depurador basado en SWD como los creados por Segger para depurar un programa para el STM32LF1xx que usa modos de baja potencia y ajusta la velocidad del reloj muy lento? El depurador parece ahogarse cada vez que el chip se configura en un modo de ahorro de energía. Es comprensible que la depuración no funcione mientras la unidad está en modo de bajo consumo, pero desafortunadamente una vez que el depurador se ahoga, no puedo encontrar ninguna manera de hacer que funcione nuevamente, excepto para reiniciar completamente la CPU. En algunos casos, es posible mitigar el problema utilizando un indicador de compilación condicional para deshabilitar el código que pondría el chip en modo de bajo consumo, pero esto hace que sea muy difícil solucionar el problema del código que hace que la unidad entre y salga de baja. Modos de potencia.

¿Hay algún truco para permitir que las herramientas de depuración funcionen de manera útil en tales situaciones?

    
pregunta supercat

2 respuestas

1

Me sentiría tentado a utilizar técnicas de depuración alternativas, como los LED de estado o una salida en serie que muestre mensajes de progreso, con el código correspondiente y la alimentación de los periféricos necesarios activada por los indicadores de compilación. Se ha realizado mucho trabajo de esta manera en sistemas donde no estaba disponible un depurador de punto de interrupción; utilizado de forma creativa es extremadamente potente y con los ciclos de compilación / flash / prueba de hoy en día, bastante eficientes.

Dependiendo de cuán lenta sea la velocidad de reloj a la que se está reduciendo, es posible que aún pueda ejecutar un puerto serie a una velocidad de transmisión estándar (300 baudios, 75 baudios con abreviaturas cortas). De lo contrario, podría realizar el registro a través de un protocolo síncrono como SPI, donde generalmente se puede permitir que la velocidad de transmisión varíe ampliamente, y usar otro microcontrolador como esclavo SPI, que a su vez re-envía datos asíncronos a su PC a una velocidad de transmisión estándar. .

También puede ser útil personalizar su depurador SWD con control automatizado de la línea de reinicio; Los tableros de descubrimiento de VL hacen esto para el procesador de destino a bordo, pero no parece ser parte de la especificación del conector SWD. Además, si tiene un firmware que entra en un modo de bajo consumo de energía rápidamente después del inicio, por lo general, puede hacer que el depurador siga presionando el botón de reinicio mientras controla el modo de un solo paso, por lo que obtiene acceso de depuración antes de que pueda ocurrir el cambio de modo.

    
respondido por el Chris Stratton
0
  1. Intente usar el modo JTAG con Adaptive Clocking.

  2. Si es posible, siempre evite que el código pase al modo de bajo consumo de energía durante la depuración. Es posible que tenga que tener 2 configuraciones de compilación diferentes para hacerlo, una sin modos de bajo consumo, una con modos de bajo consumo. Podría agregar un método de ingeniería especial para deshabilitar el modo de bajo consumo, como leer un botón o puente, luego el código cambiaría a un nuevo modo, por lo tanto, le permite moverse de un lado a otro entre no-normal-poder-siempre o usar-dormir -modo.

  3. Alterna estados en pines o LED de repuesto en varios puntos de su código que está depurando, y luego en el analizador de lógica de conexión para ver dónde lo hace su código.

respondido por el Steve Meirowsky

Lea otras preguntas en las etiquetas