我正在使用带有OpenOCD和GDB的Olimex Arm-USB-OCD加密狗进行编程和调试STM32F103微型。我使用的IDE来自Olimex Dev-Kit CD,并利用Eclipse Ganymede。

我可以将一个小程序加载到RAM中,并浏览代码没有任何问题。

我现在有一个不适合RAM的程序(只有20K),因此我想从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