J_link在linux(ubuntu)下的環境配置

1. J_link的依賴環境配置:
J_link的依賴環境有:libusb和libreadline。
(1) 安裝libusb:
如果J-Link是通過USB連接的,得先裝libusb, JLink_Linux_V430包中READNE
文件聲稱用apt-get install libusb,在我機器上不行,提示“無法找到軟件包:...can
not allocate package libusb”。所以得自己下載安裝。
可到gnu官網下載,或直接到我網盤下載共享文件:libusb-1.0.9.tar.bz2

  1. root@honli:~/Downloads# tar jxvf libusb-1.0.9.tar.bz2
  2. root@honli:~/Downloads# cd libusb-1.0.9/
  3. root@honli:~/Downloads/libusb-1.0.9# ./configure
  4. root@honli:~/Downloads/libusb-1.0.9# make
  5. root@honli:~/Downloads/libusb-1.0.9# make install

(2)安裝libreadline:
JLinkExe會用到libreadline庫,所以得把libreadline庫裝上。
可到gnu官網下載,或直接到我網盤下載共享文件
readline-5.2.tar.gz

這一步很關鍵,因爲到最後運行JLinkExe時你很可能會遇到這樣的問題:
root@honli:~/Downloads/JLink_Linux_V430#./JLinkExe: symbol lookup error: /usr/lib/libreadline.so.5: undefined symbol: UP
等等

PC,UP這些符號
都是保留在libncurses或libtermcap 之中。檢測系統中ncurses庫,可以發現有這幾個符
號,如:
root@honli:# readelf -a /usr/lib/libncurses.so | grep PC
02c1133c 0000f806 R_386_GLOB_DAT 02c12778 PC
248: 02c12778 1 OBJECT GLOBAL DEFAULT 23 PC


root@honli:# readelf -a /usr/lib/libncurses.so | grep UP
02c1138c 00024b06 R_386_GLOB_DAT 02c12540 UP
587: 02c12540 4 OBJECT GLOBAL DEFAULT 23 UP

既然readline的庫文件/usr/lib/libreadline.so.5中找不到這些符號,而我們又知道這些符號的定義在
./start
./JLinkExe: symbol lookup error: /usr/lib/libreadline.so.5: undefined symbol: PC
或類似的其他問題,如:
ncurses的庫文件/usr/lib/libncurses.so中,自然會想到將/usr/lib/libncurses.so設置成readline的依
賴庫。

現在查詢readline的依賴庫:
#root readelf -a /usr/lib/libreadline.so.5 | grep NEEDED
0x00000001 (NEEDED) Shared library: [libc.so.6]

顯然還沒有libncurses.so.5

另外,爲確保ncurses已安裝了,先
#root ncurses5-config --version
查看版本,若沒有顯示,則沒安裝,可用:
#root apt-get install libncurses5-dev
安裝好。
查看ncurses庫的路徑:
#root ncurses5-config --libs
a. 若顯示: /usr/lib, 即庫libncurses.so和libncurses.so.5(libncurses.so的軟鏈接,相當於windows
下的快捷鍵)。
b. 若顯示: -L/usr/lib -lncurses, 即-lncurses爲庫的路徑了。
c. 若沒有顯示,可退回根目錄,查找libncurses.so所在的路徑。
#root cd /
#root find -name libncurses.so
path......
該過程可能比較久,但若安裝了ncurses就必然有結果輸出。
進入該目錄,複製庫,建立軟鏈接:
#root cd path
cp -f libncurses.* /usr/lib
rm -f libncurses.so.5
ln -s libncurses.so libncurses.so.5

好啦,現在開始編譯和安裝readline。
root@honli:~/Downloads# tar -zxvf readline-5.2.tar.gz
  1. root@honli:~/Downloads/readline-5.2# ./configure --prefix=/usr --with-ncurses
  2. root@honli:~/Downloads/readline-5.2# gedit shlib/MakeFile
    /*若是上面討論的情況a和c,將87行的SHLIB_LIBS = /usr/lib/libncurses.so
    /* 或SHLIB_LIBS = /usr/lib/libncurses.so.5
    /*若是情況b, 將887行的SHLIB_LIBS = -lncurses
 
  1. root@honli:~/Downloads/readline-5.2# make
     
  2. root@honli:~/Downloads/readline-5.2# make install
  3. root@honli:~/Downloads/readline-5.2# ldconfig
現在再查看readline的依賴庫,libncurses.so.5已經鏈接進去了:
readelf -a /usr/lib/libreadline.so.5 | grep NEEDED
0x00000001 (NEEDED) Shared library: [libncurses.so.5]
0x00000001 (NEEDED) Shared library: [libc.so.6]
至此,readline成功安裝!

 
2. 安裝Beta software version for Linux:
可到gnu官網下載, 或到我的網盤下載共享文件:JLink_Linux_V443c.tgz
#root tar xvf JLink_Linux_V430c.tgz
#root: ~/JLink_Linux_V430$ cp libjlinkarm.s0.4* /usr/lib
#root :~/JLink_Linux_V430$ rm -f /usr/lib/libjlinkarm.so.4
#root:~/JLink_Linux_V430$ cd /usr/lib
#root:~/usr/lib$ rm -f libjlinkarm.so.4
#root:~/usr/lib$ ln -s libjlinkarm.so.43.4 libjlinkarm.so.4
#root:~/JLink_Linux_V430$ ldconfig

 
獲取標準用戶權限使用JLinkExe:
#root:~/JLink_Linux_V430$ cp 45-jlink.rules /etc/udev/rules.d/
#root ~/JLink_Linux_V430$ groupadd plugdev
#root: ~/JLink_Linux_V430$usermod -a -G plugdev honli(我的賬戶)

 
運行試試:
 
#root:~/JLink_Linux_V430$ ./JLinkExe
#root:~/JLink_Linux_V430$ ./start
若輸出如下信息:
SEGGER J-LINK Commander V4.
 
Compiled Jan 27 2012 19:11:22
Requirement out of time: sent 1 byte, recieve -19 bytes....
之類的信息,則說明Jtag硬件沒有成功連上Jlink驅動程序。
這一般是Jlink驅動版本的問題,從官網上好像只能下載最新的驅動,而新版本內嵌的固件升級
了,與Jtag本身的固件不兼容,從而導致Jlink驅動識別不了Jlink的硬件。
可重新到我網盤下載舊版本的驅動:JLink_Linux_100618.tar
安裝過程類似,解壓,將庫拷貝到/usr/lib/, 新建軟鏈接..
#JLink_Linux_100618$ cp -f libjlinkarm.so.0.0 /usr/lib
#/usr/lib$ ln -s libjlinkarm.so.0.0 libjlinkarm.so.0
#/usr/lib$ ln -s libjlinkarm.so.0.0 libjlinkarm.so
#JLink_Linux_100618$ cp -f 45-jlink.rules /etc/udev/rules.d/
#JLink_Linux_100618$ ldconfig

要想在Shell的任何目錄下運行Jlink,可將JLinkExe 拷貝到/usr/local/bin/ 目錄下:
#JLink_Linux_100618$ cp -f JLinkExe /usr/local/bin/

#JLink_Linux_100618$ ./JlinkExe
SEGGER J-Link Commander V4.41g ('?' for help)

Compiled Jan 27 2012 19:11:22

DLL version V4.41g, compiled Jan 27 2012 19:11:21

Firmware: J-Link ARM V8 compiled Feb 8 2012 14:30:39

Hardware: V8.00

S/N: 805306163

Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFull

VTarget = 3.287V

Info: TotalIRLen = 4, IRPrint = 0x01

Info: CP15.0.0: 0x41129200: ARM, Architecure 4T

Info: CP15.0.1: 0x0D172172: ICache: 16kB (64*8*32), DCache: 16kB (64*8*32)

Info: Cache type: Separate, Write-back, Format A

Found 1 JTAG device, Total IRLen = 4:

好了,至此爲止吧!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章