繁体   English   中英

如何使用openOCD和gdb对STM32闪存进行编程

[英]how to program the STM32 flash using openOCD and gdb

我正在使用带有openOCD和GDB的Olimex ARM-USB-OCD加密狗来编程和调试stm32f103 micro。 我正在使用的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 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM