Cuando estoy siguiendo este procedimiento, la ejecución del programa se detiene correctamente cuando se ejecuta el programa de carga útil:
- Al establecer el punto de interrupción en el inicio del programa, el cargador de arranque lo carga posteriormente. El punto de interrupción se establece con el comando GDB
break *0x2000001c
. Como OpenOCD me dice que la CPU tiene 6 puntos de interrupción de harware al conectarse, supongo que se usa uno de ellos. - Restablecimiento de Mikrocontroller con el comando GDB
monitor reset run
- Cargando programa por gestor de arranque en la región SRAM.
- Detener y luego continuar la ejecución mediante los comandos GDB
monitor halt
ycontinue
. - Indicar al cargador de arranque que ejecute el programa cargado.
Sin embargo, cuando estoy intercambiando los pasos 3 y 4, la ejecución del programa no se detiene al llegar al punto de interrupción.
¿Alguien puede decirme por qué? A mi parecer, el núcleo "pierde" el punto de interrupción cuando el registro en el que se establece el punto de interrupción se sobrescribe.
Este es el equipo que estoy usando:
- STM32F4 mikrocontroller
- ST-Link
- OpenOCD
- GDB