OpenOCD 和 Eclipse,设置错误?
OpenOCD and Eclipse, wrong settings?
当我从 Olimex STM32-E407 开发板附带的旧 Eclipse 安装迁移时,我在安装 OpenOCD 时遇到了一些困难。
旧的 Eclipse 设置工作正常;具有以下初始化脚本的 Zylin 嵌入式调试器:
target remote localhost:3333
monitor reset halt
monitor wait_halt
monitor sleep 100
monitor poll
monitor flash write_image erase main.bin 0x08000000
monitor sleep 200
和这个 运行 脚本:
monitor soft_reset_halt
monitor wait_halt
monitor poll
thbreak main
continue
自从我切换到新的 Eclipse 后,我可以选择不同的调试器,因为 Zylin 似乎已经过时(最新的 Google 结果早于 ~2010)。在 Eclipse Neon 中,我选择了 GDB OpenOCD Debug,它将从与旧 Eclipse 相同的 OpenOCD 实例启动。它不会从 Eclipse 本身启动可执行文件。
OpenOCD 脚本如下所示:
-f ../scripts/interface/ftdi/olimex-arm-usb-tiny-h.cfg
-f ../scripts/board/olimex_stm32_e407.cfg
在“启动”选项卡上,我复制了上面的初始化和 运行 命令,将 main.bin 更改为 Dev.elf 并保存了设置。
从 Eclipse 启动调试会产生以下输出。即使我使用旧 eclipse 中的原始 main.bin - 以前工作过! - 我似乎无法解决这个问题。
Open On-Chip Debugger 0.10.0-rc1
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'.
adapter speed: 2000 kHz
adapter_nsrst_delay: 100
jtag_ntrst_delay: 100
none separate
cortex_m reset_config sysresetreq
Info : clock speed 2000 kHz
Info : JTAG tap: stm32f4x.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : JTAG tap: stm32f4x.bs tap/device found: 0x06413041 (mfg: 0x020 (STMicroelectronics), part: 0x6413, ver: 0x0)
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : accepting 'gdb' connection on tcp/3333
Info : device id = 0x10076413
Info : flash size = 1024kbytes
undefined debug reason 7 - target needs reset
adapter speed: 2000 kHz
Info : JTAG tap: stm32f4x.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : JTAG tap: stm32f4x.bs tap/device found: 0x06413041 (mfg: 0x020 (STMicroelectronics), part: 0x6413, ver: 0x0)
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002b8 msp: 0x20020000
adapter speed: 8000 kHz
Info : dropped 'gdb' connection
Info : accepting 'gdb' connection on tcp/3333
adapter speed: 2000 kHz
Info : JTAG tap: stm32f4x.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : JTAG tap: stm32f4x.bs tap/device found: 0x06413041 (mfg: 0x020 (STMicroelectronics), part: 0x6413, ver: 0x0)
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002b8 msp: 0x20020000
background polling: on
TAP: stm32f4x.cpu (enabled)
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002b8 msp: 0x20020000
auto erase enabled
Error: couldn't open Dev.elf
adapter speed: 2000 kHz
Info : JTAG tap: stm32f4x.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : JTAG tap: stm32f4x.bs tap/device found: 0x06413041 (mfg: 0x020 (STMicroelectronics), part: 0x6413, ver: 0x0)
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002b8 msp: 0x20020000
adapter speed: 8000 kHz
Info : Padding image section 0 with 1 bytes
adapter speed: 2000 kHz
Info : JTAG tap: stm32f4x.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : JTAG tap: stm32f4x.bs tap/device found: 0x06413041 (mfg: 0x020 (STMicroelectronics), part: 0x6413, ver: 0x0)
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002b8 msp: 0x20020000
Info : dropped 'gdb' connection
令我惊讶的是它如何不断重新连接 GDB 以及适配器速度正在切换的事实。我做错了什么?
暂时找到解决方法了
- 在 GDB 硬件调试中添加调试选项
- 使用 gdb 命令 'arm-none-eabi-gdb' - 您需要 PATH 环境中的可执行文件。
- 使用远程目标 'Generic TCP/IP' 作为 localhost:3333
上的 JTAG 设备
转到“启动”选项卡和select 默认设置。初始化命令:
monitor reset halt
monitor flash write_image erase main.bin 0x08000000
monitor sleep 200
使用的运行命令是:
monitor soft_reset_halt
monitor wait_halt
monitor poll
thbreak main
continue
这使用了我最初的 Eclipse 示例项目中的 'old' main.bin。如果您使用 .elf 文件,则应改用此文件:
monitor flash write_image erase main.elf
这是因为 .elf 包含所有必需的 headers。
当我从 Olimex STM32-E407 开发板附带的旧 Eclipse 安装迁移时,我在安装 OpenOCD 时遇到了一些困难。
旧的 Eclipse 设置工作正常;具有以下初始化脚本的 Zylin 嵌入式调试器:
target remote localhost:3333
monitor reset halt
monitor wait_halt
monitor sleep 100
monitor poll
monitor flash write_image erase main.bin 0x08000000
monitor sleep 200
和这个 运行 脚本:
monitor soft_reset_halt
monitor wait_halt
monitor poll
thbreak main
continue
自从我切换到新的 Eclipse 后,我可以选择不同的调试器,因为 Zylin 似乎已经过时(最新的 Google 结果早于 ~2010)。在 Eclipse Neon 中,我选择了 GDB OpenOCD Debug,它将从与旧 Eclipse 相同的 OpenOCD 实例启动。它不会从 Eclipse 本身启动可执行文件。
OpenOCD 脚本如下所示:
-f ../scripts/interface/ftdi/olimex-arm-usb-tiny-h.cfg
-f ../scripts/board/olimex_stm32_e407.cfg
在“启动”选项卡上,我复制了上面的初始化和 运行 命令,将 main.bin 更改为 Dev.elf 并保存了设置。
从 Eclipse 启动调试会产生以下输出。即使我使用旧 eclipse 中的原始 main.bin - 以前工作过! - 我似乎无法解决这个问题。
Open On-Chip Debugger 0.10.0-rc1
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'.
adapter speed: 2000 kHz
adapter_nsrst_delay: 100
jtag_ntrst_delay: 100
none separate
cortex_m reset_config sysresetreq
Info : clock speed 2000 kHz
Info : JTAG tap: stm32f4x.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : JTAG tap: stm32f4x.bs tap/device found: 0x06413041 (mfg: 0x020 (STMicroelectronics), part: 0x6413, ver: 0x0)
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : accepting 'gdb' connection on tcp/3333
Info : device id = 0x10076413
Info : flash size = 1024kbytes
undefined debug reason 7 - target needs reset
adapter speed: 2000 kHz
Info : JTAG tap: stm32f4x.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : JTAG tap: stm32f4x.bs tap/device found: 0x06413041 (mfg: 0x020 (STMicroelectronics), part: 0x6413, ver: 0x0)
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002b8 msp: 0x20020000
adapter speed: 8000 kHz
Info : dropped 'gdb' connection
Info : accepting 'gdb' connection on tcp/3333
adapter speed: 2000 kHz
Info : JTAG tap: stm32f4x.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : JTAG tap: stm32f4x.bs tap/device found: 0x06413041 (mfg: 0x020 (STMicroelectronics), part: 0x6413, ver: 0x0)
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002b8 msp: 0x20020000
background polling: on
TAP: stm32f4x.cpu (enabled)
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002b8 msp: 0x20020000
auto erase enabled
Error: couldn't open Dev.elf
adapter speed: 2000 kHz
Info : JTAG tap: stm32f4x.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : JTAG tap: stm32f4x.bs tap/device found: 0x06413041 (mfg: 0x020 (STMicroelectronics), part: 0x6413, ver: 0x0)
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002b8 msp: 0x20020000
adapter speed: 8000 kHz
Info : Padding image section 0 with 1 bytes
adapter speed: 2000 kHz
Info : JTAG tap: stm32f4x.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : JTAG tap: stm32f4x.bs tap/device found: 0x06413041 (mfg: 0x020 (STMicroelectronics), part: 0x6413, ver: 0x0)
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002b8 msp: 0x20020000
Info : dropped 'gdb' connection
令我惊讶的是它如何不断重新连接 GDB 以及适配器速度正在切换的事实。我做错了什么?
暂时找到解决方法了
- 在 GDB 硬件调试中添加调试选项
- 使用 gdb 命令 'arm-none-eabi-gdb' - 您需要 PATH 环境中的可执行文件。
- 使用远程目标 'Generic TCP/IP' 作为 localhost:3333 上的 JTAG 设备
转到“启动”选项卡和select 默认设置。初始化命令:
monitor reset halt monitor flash write_image erase main.bin 0x08000000 monitor sleep 200
使用的运行命令是:
monitor soft_reset_halt monitor wait_halt monitor poll thbreak main continue
这使用了我最初的 Eclipse 示例项目中的 'old' main.bin。如果您使用 .elf 文件,则应改用此文件:
monitor flash write_image erase main.elf
这是因为 .elf 包含所有必需的 headers。