Pregunta

Estoy usando un dongle Olimex ARM-USB-OCD con OpenOCD y BGF a programas y depurar una micro STM32F103. El IDE estoy usando vino de la Olimex dev-kit de CD y hace uso de ganymede eclipse.

I puede cargar un pequeño programa en la memoria RAM y el paso a través del código sin ningún problema.

Ahora tiene un programa mucho más grande que no cabe en la memoria RAM (que sólo 20K) y por eso me gustaría ejecutarlo desde la memoria flash (que es de 128 K).

He modificado el guión enlazador que indica el código del programa debe ir en la sección de flash (dirección 0x8000000), pero GDB no se puede cargar el programa.

(gdb) 
20 load main.out
&"load main.out\n"
load main.out
~"Loading section .text, size 0xb0e6 lma 0x8000000\n"
Loading section .text, size 0xb0e6 lma 0x8000000
&"Load failed\n"
Load failed

¿Qué debo hacer para obtener el BGF para cargar el programa en flash?

¿Fue útil?

Solución

¿Ha considerado intermitente directamente con OpenOCD? Estoy haciendo esto en una configuración similar, pero con un microcontrolador ARM7.

 openocd -f flash.cfg

Aquí está mi flash.cfg

set CHIPNAME at91sam7x512

source [find interface/olimex-arm-usb-ocd.cfg]
source [find target/at91sam7sx.cfg]

init    
halt

flash probe 0
flash probe 1

flash erase_sector 0 0 15
flash erase_sector 1 0 15

flash write_image my-image.elf

at91sam7 gpnvm 0 set
at91sam7 gpnvm 1 set
at91sam7 gpnvm 2 set
shutdown

Las cosas GPNVM es Atmel SAM7 específica, pero creo que este script debe darle un buen punto de partida para hacer una versión STM32. OpenOCD puede ser un poco confuso al principio, pero la documentación es buena y vale la pena leer (http://openocd.berlios.de/). La versión estable actual (0.4.0) es bastante antiguo, así que si usted tiene problemas, descargar el último código fuente y compilar su propia cuenta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top