现在的位置: 首页 > 综合 > 正文

Ubuntu——–J-Link配置及使用

2018年04月19日 ⁄ 综合 ⁄ 共 2423字 ⁄ 字号 评论关闭
1 J-Link配置
1.1安装libusb
      如果J-Link是通过USB连接的,得先装libusb,README文件声称用apt-get install libusb,在我机器上不行,提示“无法找到软件包”。所以得自己下载安装。
       在http://sourceforge.net/projects/libusb/files/libusb-1.0/下载(libusb官网,http://www.libusb.org/),并安装,整个过程多次需要root权限,可通过命令sudo
-s一次性取得root权限:

  1. tar jxvf libusb-1.0.8.tar.bz2
  2. cd libusb-1.0.8/
  3. ./configure
  4. make
  5. make install

发现不安装也可以。
1.2 安装libreadline

    JLinkExe会用到libreadline库,所以得把libreadline库装上。http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html 中Current
Status选择下载,并安装,如下所示:
  1. tar -zxvf readline-6.2.tar.gz
  2. ./configure
  3. make
  4. make install

1.3 下载Beta software version for Linux
    到http://www.segger.com/cms/jlink-software.html下载JLink_Linux_V496_i386.tgz

  1. tar zxvf JLink_Linux_V496_i386.tgz
  2. sudo cp
    libjlinkarm
    .so.4* /usr/lib
  3. sudo cp 99-jlink.rules /etc/udev/rules.d/
  4. ldconfig

snail@VM:snail@JLink_Linux_V496_i386$ ./JLinkExe 
SEGGER J-Link Commander V4.96 ('?' for help)
Compiled Dec 22 2014 09:40:32
DLL version V4.96, compiled Dec 22 2014 09:40:28
Firmware: J-Link ARM V8 compiled Jan 31 2018 18:34:52
Hardware: V8.00
S/N: 20080643 
Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFull 
VTarget = 3.332V
Info: TotalIRLen = 9, IRPrint = 0x0011
Found 2 JTAG devices, Total IRLen = 5:
 #0 Id: 0x2B900F0F, IRLen: 04, IRPrint: 0x0, ARM ETB
 #1 Id: 0x07B76F0F, IRLen: 05, IRPrint: 0x1, ARM1176 Core
ARM11 identified.
Target interface speed: 100 kHz
J-Link>
3 使用JLink
在J-Link>输入"?",即给出命令列表。我在使用过程中,总体觉得Linux下JLink不够成熟,主要表现在资料太小、功能不易用、操作成功与否不提示(当然不排除不熟练的原因)。
3.1 下载loadbin

loadbin用于将二进制文件下载到目标存储器,语法如下:
  1. Syntax: loadbin <filename>, <addr>  //Load
    binary file into target memory
   下载之前需要设置下目标版的处理器,否则无法正常烧写,我的型号是STM32F103RBT6,但在指定的时候只指定为STM32F103RB,如下:
  1. J-Link>exec device = STM32F103RB
   有个麻烦,下载完没有明显提示成功与否,可以通过这样解决:在PC通过命令xxd查看待下载文件,下载进去通过JLink命令mem查看,判断这两者是否一样(只比较前面若干字节即可),若一样,则表示烧写成功。举个例子,把/bin/cp文件烧到板子:
  1. J-Link>loadbin /bin/cp, 0x08000000
  2. Loading binary file... [/bin/cp]
  3. Writing bin data into target memory @ 0x08000000.
  4. J-Link>mem 0x08000000,3f
  5. 08000000 = 7F 45 4C 46 01 01 01 00 00 00 00 00 00 00 00 00
  6. 08000010 = 02 00 03 00 01 00 00 00 40 A1 04 08 34 00 00 00
  7. 08000020 = 04 73 01 00 00 00 00 00 34 00 20 00 09 00 28 00
  8. 08000030 = 1D 00 1C 00 06 00 00 00 34 00 00 00 34 80 04
  9. jelline@jelline:~$ xxd /bin/cp | more
  10. 0000000: 7f45 4c46 0101 0100 0000 0000 0000 0000 .ELF............
  11. 0000010: 0200 0300 0100 0000 40a1 0408 3400 0000 ........@...4...
  12. 0000020: 0473 0100 0000 0000 3400 2000 0900 2800 .s......4. ...(.
  13. 0000030: 1d00 1c00 0600 0000 3400 0000 3480 0408 ........4...4...
3.2 保存savebin
  1. Syntax: savebin <filename>, <addr>, <NumBytes>   //Saves target memory into binary file
   这里值得一提的是,参数<NumBytes>是十六进制,比如指定10,保存的是16个字节。我最开始误以为是十进制,我通过ls命令,发现文件大小与自己预期不一致,对比实际文件与预期大小,才发现这个问题。命令mem的<NumBytes>也是十六进制的。

抱歉!评论已关闭.