我正在使用带有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
Run Code Online (Sandbox Code Playgroud)
我该怎么办才能让gdb将程序加载到flash中?
使用 OpenOCD 和 GDB 将可执行文件加载到板上时,我得到类似于(摘自此处的片段)的内容:
$ arm-none-eabi-gdb example.elf
(gdb) target remote localhost:3333
Remote debugging using localhost:3333
...
(gdb) monitor reset halt
...
(gdb) load
Loading section .vectors, size 0x100 lma 0x20000000
Loading section .text, size 0x5a0 lma 0x20000100
Loading section .data, size 0x18 lma 0x200006a0
Start address 0x2000061c, load size 1720
Transfer rate: 22 KB/sec, 573 bytes/write.
(gdb) continue
Continuing.
...
Run Code Online (Sandbox Code Playgroud)
lma
在这种情况下是什么意思?
我在尝试在Windows中为STM32F4 Discovery板设置dev env时遇到问题.
我已经安装了所有必需的文件(用于ARM的GCC,Windows构建工具,Eclipse插件),并且在尝试启动OpenOCD调试时遇到此错误:
Missing mandatory configuration. Fill-in the 'Config options:' field in the Debugger tab.
Run Code Online (Sandbox Code Playgroud)
这是我尝试启动它时产生的错误(并构建成功消息):
我正在尝试将我的固件刷新到 STM32L152,但我有:
打开片上调试器 0.10.0+dev-00312-g1a3cbbf3 (2018-03-02-20:11) 根据 GNU GPL v2 授权 有关错误报告,请阅读 http://openocd.org/doc/doxygen/bugs.html 适配器速度:300 kHz 适配器_nsrst_延迟:100 信息:选定的传输接管了低级目标控制。与普通 JTAG/SWD 相比,结果可能有所不同 没有单独的 信息:无法匹配请求的速度 300 kHz,使用 240 kHz 信息:无法匹配请求的速度 300 kHz,使用 240 kHz 信息:时钟速度 240 kHz 信息:STLINK v2 JTAG v28 API v2 SWIM v6 VID 0x0483 PID 0x3748 信息:使用 stlink api v2 信息:目标电压:1.769170 信息:stm32l1.cpu:硬件有 6 个断点,4 个观察点 信息:在端口 3333 上侦听 gdb 连接 信息:无法匹配请求的速度 300 kHz,使用 240 kHz 信息:无法匹配请求的速度 300 kHz,使用 240 kHz 适配器速度:240 kHz 目标由于调试请求而停止,当前模式:线程 xPSR:0x01000000 PC:0x0800b324 msp:0x20007ffc STM32L:启用HSI 信息:无法匹配请求的速度 2000 kHz,使用 1800 kHz …