純Linux下的 ARM裸機除錯環境搭建(GDB + JLink)
說明:我也是除錯u-boot,在win下OK了,基於這裡,然後為了完全在linux下便有了下邊轉載的內容。下文會對照我自己的操作進行結果補充!感覺補充的多於轉載的就改為原創了,讓更多人看到!
一直想擺脫windows環境,在純linux下進行arm裸機開發,但是由於一直不知道JLink如何在linux下執行和配置,一直無法進行下去。以前都是windows+AXD除錯。包括本人用的FL2440開發板和JLink偵錯程式也沒有提供在linux除錯的文件。前些天由於想研究下U-BOOT的原始碼,不得不在linux下編譯,就google到了眾多大牛的帖子,且找到了JLink的官方linux版。綜合各位大牛的經驗,最終成功的在純linux環境下除錯了U-BOOT和裸機程式。感謝各位前輩的帖子,很遺憾很多我已經找不到原帖地址了。
筆者的安裝環境:
飛凌的FL2440開發板
JLink V8偵錯程式
Ubuntu 10.04
搭建ARM除錯環境的大概步驟:
0)串列埠通訊的配置
1)JLink V8 Linux驅動的安裝
2)交叉工具鏈的安裝
3) gdb初始化指令碼的編寫
4) 啟動JLink和gdbServer除錯
0)串列埠通訊的配置
這個網上都有,我不多說了。用於開發板和宿主機通訊。
1)JLink V8 Linux驅動的安裝
點選下載,彈出頁面要序列號,可以亂輸。下到JLink_Linux_V422.tgz壓縮包。解壓之。
可以參考壓縮包內的README檔案進行配置。
安裝依賴usb庫
apt-get -update
apt-get -install libusb
cp libjlinkarm.so.* /usr/lib
- Place the rule file "45-jlink.rules" provided with this J-Link software package
at /etc/udev/rules.d/
./start 就可以執行JLink了。
連線JLink和開發板後,可以使用help或?檢視幫助。loadbin命令載入二進位制程式碼到記憶體了。
//kangear補充:
[email protected]:~/JLink_Linux_V462a# apt-get update //沒有“-”
[email protected]:~/JLink_Linux_V462a#apt-get install libusb //沒有“-”
且沒有這個庫!
正在讀取軟體包列表... 完成
正在分析軟體包的依賴關係樹
正在讀取狀態資訊... 完成
E: 無法定位軟體包 libusb
[email protected]:~/JLink_Linux_V462a# ls
[email protected]:~/JLink_Linux_V462a#./StartJLinkExe.sh //沒有start
SEGGER J-Link Commander V4.62a ('?' for help)
Compiled Feb 6 2013 11:42:45
Updating firmware: J-Link ARM V8 compiled Nov 14 2012 22:34:52 //且執行之後會自動升級韌體(之後就不能用了jlink 解決方法見這裡)
Replacing firmware: J-Link ARM V8 compiled Aug 24 2011 17:23:32
^C
[email protected]:~/JLink_Linux_V462a# ^C
此時重燒了韌體,根據這裡的解決方法,就下載jlink_linux_v422a.tgz(下載地址這裡)這個版本的重新做一遍OK了。列印資訊如下:
[email protected]:~/JLink_Linux_V462a/JLink_Linux_V422a# ./start
SEGGER J-Link Commander V4.22 ('?' for help)
Compiled Apr 5 2011 13:54:55
DLL version V4.22, compiled Apr 5 2011 13:54:52
Firmware: J-Link ARM V8 compiled Jan 31 2011 18:34:52
Hardware: V8.00
S/N: 20100213
Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFULL
VTarget = 0.000V
J-Link>
//kangear補充:End
基本上這樣就可以完成一些除錯工作了,但是要做到原始碼級別的除錯,還要用的GDB了。
具體有點忘了。
(以下摘自上面連結)4:修改一些配置
cd Jlink
ln -s libjlinkarm.so.0.0 libjlinkarm.so.0
ln -s libjlinkarm.so.0.0 libjlinkarm.so
5:複製相關庫到使用者庫中
複製45-jlink.rules到/etc/udev/rules.d/
mv libjlinkarm.so.0.0 /usr/lib/
mv libjlinkarm.so.0 /usr/lib/
mv libjlinkarm.so /usr/lib/
6:執行./start
如果出現libreadline.so.5 not found,可以檢視/lib/下的有可能有libreadline.so.6 ,可以做一個軟連結
ln -s /lib/libreadline.so.6 libreadline.so.5
2)交叉工具鏈的安裝
我安裝的是U-BOOT官網提供的ELDK4.2
下到一個IOS檔案。掛載,參照官網上ELDK的文件安裝之。設定好環境變數。
3)gdb初始化指令碼的編寫
參考gdb的文件,JLinkGdbServer的文件。
可知,在除錯之前,必須先進行板子的初始化。才能進行之後的除錯。
最後感謝這些牛人的無私奉獻。自己寫文件才發現,真累!