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

时间:2017-11-07 21:17:49

标签: vim arm gdb conque

我使用以下命令调试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

我想使用ConqueGDB(或VIM中的任何其他调试接口)在VIM内部打开调试器。

任何线索?谢谢!!

1 个答案:

答案 0 :(得分:1)

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

要在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.