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主要是熟悉常用的操作和命令.