Mi script de configuración de openocd:
# Configuration mode
telnet_port 4444
gdb_port 3333
source [find interface/ftdi/olimex-arm-usb-tiny-h.cfg]
adapter_khz 0
source [find target/at91sam7x512.cfg]
# Command mode
init
reset init
Cómo se ve mi sesión gdb después de iniciar openocd en otro terminal:
Reading symbols from /home/sw3/arm_workspace/Linuxization/main.out...done.
(gdb) target remote localhost:3333
Remote debugging using localhost:3333
warning: Overlapping regions in memory map: ignoring
0x00000050 in ?? ()
Con diferentes opciones de configuración de openocd y diferentes versiones de openocd, la misma fuente, incluido el script del vinculador, funciona bien.
¿Qué significa esta advertencia y dónde debería buscar corregirla?
Solo un poco más de información, para mostrar el diseño de la memoria física. Extrañamente, la comunicación de telnet informa que los bancos son 0 y 1, mientras que gdb monitorea los informes dos bancos 0 :
(gdb) monitor flash banks
#0 : sam7x512.flash.0 (at91sam7) at 0x00100000, size 0x00040000, buswidth 4, chipwidth 0
#0 : sam7x512.flash.1 (at91sam7) at 0x00100000, size 0x00040000, buswidth 4, chipwidth 0
Más tarde, el depurador se interrumpe normalmente en main (), pero el paso a paso produce:
(gdb) step
Single stepping until exit from function _user_app_start,
which has no line number information.
stepi ignored. GDB will now fetch the register state from the target.
Program received signal SIGINT, Interrupt.
0x00110000 in _user_app_start ()
¿Esos síntomas sugieren algo a alguien?