Как программировать вспышку STM32 с помощью OpenOCD и GDB

StackOverflow https://stackoverflow.com/questions/4649535

  •  09-10-2019
  •  | 
  •  

Вопрос

Я использую ключ Olimex ARM-USB-OCD с OpenOCD и GDB для программирования и отладки Micro STM32F103. IDE Я использую, пришел с CD OLIMEX DEV-KIT и использует Eclipse Ganymede.

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

Теперь у меня есть гораздо большая программа, которая не вписывается в RAM (которая находится всего за 20к), и поэтому я хотел бы запустить его от Flash (что 128k).

Я изменил скрипт линкера, указывающий, что код программы должен перейти в раздел Flash (адрес 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 загрузить программу в Flash?

Это было полезно?

Решение

Вы считали миганием напрямую с 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) довольно старая, поэтому, если у вас возникли проблемы, загрузите последний исходный код и компилируйте свои собственные.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top