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
- root@honli:~/Downloads# tar jxvf libusb-1.0.9.tar.bz2
- root@honli:~/Downloads# cd libusb-1.0.9/
- root@honli:~/Downloads/libusb-1.0.9# ./configure
- root@honli:~/Downloads/libusb-1.0.9# make
- 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
现在查询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
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
- root@honli:~/Downloads/readline-5.2# ./configure --prefix=/usr --with-ncurses
- 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
- root@honli:~/Downloads/readline-5.2# make
- root@honli:~/Downloads/readline-5.2# make install
- 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]
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驱动程序。
Requirement out of time: sent 1 byte, recieve -19 bytes....
这一般是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:
好了,至此为止吧!