如何使用 openOCD 和 gdb 对 STM32 闪存进行编程
我使用带有 openOCD 和 GDB 的 Olimex ARM-USB-OCD 加密狗来编程和调试 stm32f103 微控制器。我使用的 IDE 来自 Olimex 开发套件 CD,并使用 eclipse ganymede。
我可以将一个小程序加载到 RAM 中并毫无问题地单步执行代码。
我现在有一个更大的程序,不适合 RAM(只有 20K),所以我想从闪存(128K)运行它。
我修改了链接描述文件,指示程序代码应放入闪存部分(地址 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中?
I'm using an Olimex ARM-USB-OCD dongle with openOCD and GDB to program and debug an stm32f103 micro. The IDE I'm using came from the Olimex dev-kit CD and makes use of eclipse ganymede.
I can load a small program into the RAM and step through the code without any problems.
I now have a much larger program which doesn't fit into RAM (which is only 20K) and so I'd like to run it from flash (which is 128K).
I've modified the linker script indicating the program code should go in the flash section (address 0x8000000), but gdb fails to load the program.
(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
What should I do to get gdb to load the program into flash?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有考虑过直接用openocd刷机吗?我正在类似的设置中执行此操作,但使用 ARM7 微控制器。
这是我的 flash.cfg
GPNVM 内容是 Atmel SAM7 特定的,但我认为这个脚本应该为您制作 STM32 版本提供一个良好的起点。 Openocd 一开始可能会有点令人困惑,但是文档很好并且值得阅读(http://openocd.berlios.de/)。当前的稳定版本(0.4.0)相当旧,因此如果您遇到问题,请下载最新的源代码并编译自己的源代码。
Have you considered flashing directly with openocd? I am doing this in a similar setup, but with an ARM7 microcontroller.
Here is my flash.cfg
The GPNVM stuff is Atmel SAM7 specific, but I think this script should give you a good starting point for making a STM32 version. Openocd can be a bit confusing in the beginning, but the documentation is good and worth reading (http://openocd.berlios.de/). The current stable version (0.4.0) is quite old, so if you have problems, download the latest source code and compile your own.