使用 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.
我正在使用以下命令在 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.