Как запрограммировать флэш-память STM32 с использованием openOCD и GDB - PullRequest
3 голосов
/ 10 января 2011

Я использую ключ Olimex ARM-USB-OCD с openOCD и GDB для программирования и отладки микро stm32f103. IDE, которую я использую, взята с компакт-диска Olimex dev-kit и использует eclipse ganymede.

Я могу загрузить небольшую программу в оперативную память и без проблем выполнить код.

Теперь у меня есть гораздо более крупная программа, которая не помещается в ОЗУ (которая составляет всего 20 КБ), и поэтому я хотел бы запустить ее с флэш-памяти (которая составляет 128 КБ).

Я изменил скрипт компоновщика, указав, что код программы должен находиться в разделе флэш-памяти (адрес 0x8000000), но GDB не может загрузить программу.

(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

Что мне нужно сделать, чтобы GDB загрузил программу во флэш-память?

1 Ответ

5 голосов
/ 14 января 2011

Рассматривали ли вы возможность перепрошивки напрямую с помощью openocd?Я делаю это в подобной настройке, но с микроконтроллером ARM7.

 openocd -f flash.cfg

Вот мой 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

GPNVM работает с Atmel SAM7, но я думаю,этот скрипт должен дать вам хорошую отправную точку для создания версии STM32.Вначале Openocd может немного сбивать с толку, но документация хороша и заслуживает прочтения (http://openocd.berlios.de/). Текущая стабильная версия (0.4.0) довольно старая, поэтому, если у вас возникли проблемы, скачайте последний исходный код и скомпилируйте свой собственный.

...