openOCD的使用
简介
openOCD是一个用于JTAG调试的软件, 可以用于不同调试器和CPU, 还可以与GDB配合, 开源.
安装
openOCD的项目主页是http://sourceforge.net/projects/openocd/files/openocd/, 可以下载源代码和软件手册, 我选择的是0.7.0版本. 主要步骤如下:
- 从项目主页下载软代码包到本地, 并解压
- 然后是autoconfig的配置, 在解压的目录中执行
./configure --prefix=/usr/local --enable-jlink
. --prefix用于设置软件安转的目录, --enable-jlink选项用于支持jlink调试器, 还有很多其他选项, 可以通过命令./configure --help
查看. - 执行
make
和make install
,make install
可能需要超级用户权限 + 安装完成已后运行openocd -v
查看是否能够使用 通过Debian的仓库可以直接下载0.5版本的openOCD, 版本有点老, 不太好用, 所以编译0.7版本, 在编译的过程中没有出现错误, 现在(2014/06)的最新版本是0.8, 我在编译0.8版本的过程中会报错, 没找到错误的原因.
openOCD的配置
openOCD的配置文件使用的是tcl语言, 有很多现成的配置脚本可以直接使用, 对配置文件不是很了解, 具体的可以查看软件手册. 在启动openOCD时可以使用 -f 选项指定配置文件, 可以多次使用指定多个配置文件. 如过不指定, 则默认使用当前目录中的openocd.cfg文件. 以下是我自己的一个配置文件
# interface config source [find interface/jlink.cfg] adapter_khz 6000 # board config source [find target/samsung_s3c2440.cfg] ## NOR flash config nand device nand s3c2440 $_TARGETNAME ## NAND flash config flash bank nor cfi 0 0x200000 2 2 $_TARGETNAME jedec probe ## Target reset handlers for SDRAM and I/O configuration ## reset config adapter_nsrst_delay 100 jtag_ntrst_delay 100 reset_config trst_and_srst ## other proc init_2440 { } { halt s3c2440.cpu curstate # sdram mww phys 0x48000000 0x22011110 ; mww phys 0x4800001c 0x00018005 ; mww phys 0x48000020 0x00018005 ; mww phys 0x48000024 0x008C04F4 ; mww phys 0x48000028 0x000000B1 ; mww phys 0x4800002C 0x00000030 ; mww phys 0x48000030 0x00000030 ; } proc ldimg { } { load_image /home/sannyas/main.bin 0x30000000 bin; resume 0x30000000 }
配置中有些命我也不知道是什么意思, 不过能使用就可以了. 可以添加一些自己定义的命令, 方便在调试的时候使用, 比如上面的 ini_2440
和 ldimg
就是自己定义命令.
使用
openOCD的使用比较简单, 直接运行openocd命令, 并指定配置文件, 或使用默认的配置文件, 运行成功后, 可以执行命令 telnet localhost 4444
, 使用telnet接入openocd, 就可以执行一些调试命令. 使用openocd主要是熟悉常用的操作和命令.