ubuntu下安裝openocd ,利用Openocd + Jlink 調(diào)試ARM
網(wǎng)址: http://sourceforge.net/projects/openocd/
2.解壓
3.進入解壓之后的目錄 cd /openocd-0.5.0
4.進行配置 ./configure --enable-jlink
這個時候出現(xiàn)錯誤提示 找不到usb.h,原因是沒有安裝libusb的庫
下面安裝Libusb庫
5.sudo apt-get install libusb++-dev
安裝完之后重新執(zhí)行第四步操作 ./configure --enable-jlink,此時配置成功
6.make 編譯
7.make install
以上這些步驟完成之后,如果我們要使用openocd,還需要進行配置,那就是編寫一個配置文件openocd.cfg
配置完之后。執(zhí)行openocd ,出錯,提示Error:Cannot find jlink interface.please check connection and permission .
這種錯誤的原因有可能是系統(tǒng)沒有識別usb。但是我在系統(tǒng)中已經(jīng)安裝過libusb。那為什么會這樣。后來發(fā)現(xiàn)是這樣的,我的ubuntu是裝在virtualbox虛擬機上的,在虛擬機中我沒有為之分配一個Usb設備,所以導致這樣。于是通過虛擬機上的圖標為之分配一個usb設備,再輸入此命令。jlink就識別了。
但是并不是完全通過的。雖然可以識別jlink了,但是輸入命令openocd之后,仍有一些錯誤信息。如下圖
上圖所示錯誤 arm11 target JTAG error SCREG OUT 0x00.unexpected ARM11 ID code .我想應該是jlink固件版本的問題吧。
上圖用的是Jlink v7固件。之后,我將固件Jlink v8燒寫到jlink 中。出現(xiàn)如下錯誤:
后來幾經(jīng)周折,解決掉此問題。總結(jié)如下:
原因有三: 一是Jlink固件版本問題。用v7的話會有提示:Arm11targetJTAGerrorscregout0x00;二是用戶權(quán)限問題,不要再普通用戶下執(zhí)行openocd命令 ,而換做在超級用戶下執(zhí)行 ;三則是配置文件問題,在自帶的jlink.cfg文件中加入jtag時鐘配置。使用openocd 自帶的配置文件(在安裝目錄下)/usr/local/share/openocd/scripts/interface/jlink.cfg ,和/usr/local/share/openocd/scripts/target/samsung_s3c6410.cfg .其中jlink.cfg 中添加一句時鐘約束語句 : jtag_khz 250
運行命令: openocd -f jlink.cfg -f samsung_s3c6410.cfg
結(jié)果如圖:
ok ,done
評論