ubuntu下安裝openocd ,利用Openocd + Jlink 調試ARM
網址: http://sourceforge.net/projects/openocd/
2.解壓
3.進入解壓之后的目錄 cd /openocd-0.5.0
4.進行配置 ./configure --enable-jlink
這個時候出現錯誤提示 找不到usb.h,原因是沒有安裝libusb的庫
下面安裝Libusb庫
5.sudo apt-get install libusb++-dev
安裝完之后重新執行第四步操作 ./configure --enable-jlink,此時配置成功
6.make 編譯
7.make install
以上這些步驟完成之后,如果我們要使用openocd,還需要進行配置,那就是編寫一個配置文件openocd.cfg
配置完之后。執行openocd ,出錯,提示Error:Cannot find jlink interface.please check connection and permission .
這種錯誤的原因有可能是系統沒有識別usb。但是我在系統中已經安裝過libusb。那為什么會這樣。后來發現是這樣的,我的ubuntu是裝在virtualbox虛擬機上的,在虛擬機中我沒有為之分配一個Usb設備,所以導致這樣。于是通過虛擬機上的圖標為之分配一個usb設備,再輸入此命令。jlink就識別了。
但是并不是完全通過的。雖然可以識別jlink了,但是輸入命令openocd之后,仍有一些錯誤信息。如下圖

上圖用的是Jlink v7固件。之后,我將固件Jlink v8燒寫到jlink 中。出現如下錯誤:


后來幾經周折,解決掉此問題。總結如下:
原因有三: 一是Jlink固件版本問題。用v7的話會有提示:Arm11targetJTAGerrorscregout0x00;二是用戶權限問題,不要再普通用戶下執行openocd命令 ,而換做在超級用戶下執行 ;三則是配置文件問題,在自帶的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
結果如圖:

評論