使用 ConqueGDB 通过 OpenOCD 调试 ARM 微控制器

Using ConqueGDB to debug ARM microcontroller with OpenOCD

我正在使用以下命令在 Redwire Econotag r3(基于 ARM 微控制器)上调试程序 运行。

xterm -e "openocd -f interface/ftdi/redbee-econotag.cfg -f board    /redbee.cfg" &
sleep 1

echo -e "soft_reset_halt\n set *0x80020010 = 0\n" | nc -i 1 localho    st 4444  > /dev/null &
arm-none-eabi-gdb hello.elf -x debugOCD.gdb

其中 debugOCD.gdb 包含:

target remote localhost:3333

monitor soft_reset_halt
load hello.elf 0x00400000
b _start

我想在 VIM 中打开调试器,使用 ConqueGDB(或 VIM 中的任何其他调试界面)。

有线索吗?谢谢!!

经过一番研究,我找到了问题的答案。

要在 ConqueGDB 中使用所需的调试器,必须在加载插件之前在 g:ConqueGdb_GdbExe 变量中指定它。

为此,我将 .vimrc 文件修改为如下所示(请注意,我使用 Vundle 来管理 VIM 插件):

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

"Specify the debugger to be used
let g:ConqueGdb_GdbExe = 'arm-none-eabi-gdb'

Plugin 'VundleVim/Vundle.vim'

"Load ConqueGDB
Plugin 'vim-scripts/Conque-GDB'


call vundle#end()
filetype plugin indent on

现在可以使用ConqueGDB调试远程板卡了。从 VIM 命令行,执行:

:ConqueGdb -q -x debugOCD.gdb

为了不在这个命令中指定两个不同的文件,符号可以从GDB命令文件中加载。 OpenOCD 执行和目标连接可以用同样的方式处理。这是我的 debugOCD.gdb 的样子。

#Load the debug symbols
file hello.elf

#Make sure that openOCD is running, otherwise load it
shell if [ ! `pgrep openocd` ]; then xterm -e "openocd -f interface/ftdi/redbee-econotag.cfg -f board/redbee.cfg" & sleep 1; fi      

#Connect GDB to OpenOCD and reset the microcontroller
target remote localhost:3333
monitor soft_reset_halt    
shell sleep 1

#Upload the image and wait for 1 second
monitor load_image hello.elf
shell sleep 1

#Set a breakpoint at SRAM start address and run from there
b *0x400000
monitor step 0x3ffffc
c

就是这样,给这个命令设置一个别名就好了,这样更容易记住,但我想这是微不足道的。 Here you can see a screenshot of VIM with ConqueGDB working.