Openocd的调试步骤
1、前言
本文档仅用于学习参考。对本文档作者保留所有权利。
联系邮箱:yarakyoung@qq.com
2、工具
本文使用的软、硬件工具如下:
目标开发板:ST SPEAr310 EVB 2.0(官网www.st.com)及其交叉编译环境。
仿真器:OpenJTAG(官网www.100ask.net)驱动(www.ftdichip.com/Drivers/D2XX.htm)
操作系统:Fedora(官网fedoraproject.org)
调试软件:openocd(官网openocd.sourceforge.net)
3、安装OpenJTAG驱动
本文不介绍交叉编译环境的安装,若有需要请阅读ST官网文档。
从经销商或官网处获得驱动压缩包。
$tar xvjflibftd2xx0.4.16.tar.bz2
$cd libftd2xx0.4.16/
$ln -s /lib/libftd2xx.so.0.4.16 lib/libftd2xx.so
$ln -s /lib/libftd2xx.so.0.4.16 /lib/libftd2xx.so.0
$cd libusb-0.1.12
$./configure
$make
$make install
$cp 50-ftdi.rules/etc/udev/rules.d/(100ask提供的驱动中包含)
4、安装OpenOCD
从官网下载安装压缩包
$tar jxvf openocd-0.7.0
$cd openocd-0.7.0
$./configure --enable-parport --enable-parport_ppdev --enable-ft2232_ftd2xx
--enable-usbprog --enable-jlink --with-ftd2xx-linux-tardir=`pwd`/../libftd2xx0.4.16
(注意这里的目录)
$make (如果make出错了。
$cd src
$gcc -std=gnu99 -g -O2 -I/root/arm/new_board/openjtag/libftd2xx0.4.16-Wall
-Wstrict-prototypes -Wformat-security -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -o openocd main.o/root/arm/new_board/openjtag/libftd2xx0.4.16/static_lib/libftd2xx.a.0.4.16 ./.libs/libopenocd.a -lusb-ldl-lpthread -lftd2xx
)
$make install
$openocd -v (查看版本号,用于检查是否安装成功)
5、OpenOCD的配置文件介绍
在openocd的目录下有tcl子目录:
该目录存放着很多范例脚本。
Interface目录下存放的是与仿真器有关的脚本。
Board、chip、cpld、cpu、target等都存放与目标板、芯片、CPU等有关的脚本。
若范例中有你的目标板的脚本基本上可以直接使用,若没有则需要自己添加进入。
敬请参考官网文档http://openocd.sourceforge.net/doc/html/index.html
本文使用的ST SPEAr310 EVB 2.0已在范例中,可直接使用。但是本文使用的仿真器对应的脚本需要自己添加或从100ask下载。
或者按照如下编写,并保存为openjtag.cfg:
interface ft2232
ft2232_device_desc "USB<=>JT AG&RS232"
ft2232_layoutjtagkey
ft2232_vid_pid 0x1457 0x5118
adapter_khz 6000
6、使用方法
将仿真器、目标板、PC等搭建好。搭建方法不在本文叙述。
$openocd -f interface/openjtag.cfg -f borad/spear310evb20.cfg
(若出现Can't find mem_helper.tcl则可以在命令后加入参数 -c指定mem_helper.tcl的位置;还有一点应该把interface的配置文件放在前面,否则会出错)
注意:不要关闭或停止了openocd。
开启openocd后,有下列方法进行调试:
6.1 telnet方法
在新的终端
$telnet 127.0.0.1 4444
基本命令:
#reset 重启
#halt 暂停
#load_image /xloader.bin 0xd2800b00 将/xloader.bin载入到0xd2800b00
#resume 0xd2800b00 运行
6.2 gdb方法
在新的终端
#arm-linux-gdb 进入gdb
#target remote 127.0.0.1:3333
基本命令:
#load /u-boot 载入u-boot,注意格式哦。
#file /u-boot
#b 设置断点
#c 继续
#n 单步
#s 进入函数
#print 查看值
#help 帮助