ubuntuPC機安裝JLink驅動


摘要:

打開你仿真用的機器人的配置文化,這個應該是local_costmap_params.yaml 

transform tolerance g改為1
    本文介紹了如何在Ubuntu平台配置J-Link,因版本較高,網上一些資料已不適用,根據J-Link的README文件操作,會產生諸多問題,本文對產生問題的原因進行簡單分析,並給出解決方法。最后給出J-Link基本用法。


1 引言

    最近因項目需要,需要配置Linux下的J-Link工具,網上有一博文《ubuntu 9.04下J-Link for linux 的配置與使用》,介紹得蠻詳細的,但在實際操作過程中差別甚大,應該是版本的原因(我用的是Ubuntu 10.04LTS和JLink_Linux_V430)。     JLink_Linux_V430安裝包里的README文件,介紹了如何配置,過於簡單,而且安裝過程中會遇到不少問題,遂記錄整個過程,以供分享。


2 J-Link配置
2.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. root@jelline:~/Downloads# tar jxvf libusb-1.0.8.tar.bz2
  2. root@jelline:~/Downloads# cd libusb-1.0.8/
  3. root@jelline:~/Downloads/libusb-1.0.8# ./configure
  4. root@jelline:~/Downloads/libusb-1.0.8# make
  5. root@jelline:~/Downloads/libusb-1.0.8# make install

2.2 安裝libreadline

    JLinkExe會用到libreadline庫,所以得把libreadline庫裝上。http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html 中Current Status選擇下載,並安裝,如下所示:
  1. root@jelline:~/Downloads# tar -zxvf readline-6.2.tar.gz
  2. root@jelline:~/Downloads/readline-6.2# ./configure
  3. root@jelline:~/Downloads/readline-6.2# make
  4. root@jelline:~/Downloads/readline-6.2# make install

2.3 下載Beta software version for Linux
    到http://www.segger.com/cms/jlink-software.html下載Beta software version for Linux,提示輸入序列號,隨便輸入一串數字即可,點submit serial number,接着在I confirm that I will not use the software with illegal clones打勾,而后Download Software。拷貝庫,並執行ldconfig,具體如下:
  • jelline@jelline:~/Downloads$ tar zxvf JLink_Linux_V430.tgz
  • jelline@jelline:~/Downloads/JLink_Linux_V430$ cp libjlinkarm.so.4* /usr/lib
  • jelline@jelline:~/Downloads/JLink_Linux_V430$ ldconfig

上述是依README指示操作,會報如下錯誤:
  1. /sbin/ldconfig.real: /usr/lib/libjlinkarm.so.4 is not a symbolic link
      
      問題出在把libjlinkarm.so.4拷貝到/usr/lib就不再是符號鏈接文件(這點我也納悶),進入到/usr/lib目錄下,刪除libjlinkarm.so.4,並重新建立符號鏈接文件即可,如下:
  • root@jelline:/usr/lib# rm libjlinkarm.so.4
  • root@jelline:/usr/lib# ln -s libjlinkarm.so.4.30.0 libjlinkarm.so.4
  • root@jelline:/usr/lib# ldconfig
       
       為了讓標准用戶有權使用JLinkExe(這句話是README翻譯過來的),還需要進行如下操作:
  1. root@jelline:~/Downloads/JLink_Linux_V430# cp 45-jlink.rules /etc/udev/rules.d/
  2. root@jelline:~/Downloads/JLink_Linux_V430# groupadd plugdev
  3. root@jelline:~/Downloads/JLink_Linux_V430# usermod -a -G plugdev jelline
2.4 測試
按README文件,貌似已經裝好了,但執行JLinkExe,仍提示如下錯誤:
  1. root@jelline:~/Downloads/JLink_Linux_V430# ./JLinkExe
  2. error while loading shared libraries: libreadline.so.5: cannot open shared object file: No such file or directory
       在/usr/lib找不到libreadline.so.5庫,最后發現libreadline.so庫被放在/lib/下,但其版本是6,創建一個符號鏈接指向libreadline.so.6.1,具體如下:
  • jelline@jelline:/lib$ ls libreadline.so.6*
  • libreadline.so.6 libreadline.so.6.1
  • jelline@jelline:/lib$ ln -s libreadline.so.6.1 libreadline.so.5

OK,現在重新運行JLinkExe就可以了,提示如下信息:
  • jelline@jelline:~/Downloads/JLink_Linux_V430$ ./JLinkExe
  • SEGGER J-Link Commander V4.30 ('?' for help)
  • Compiled Jun 30 2011 15:53:19
  • DLL version V4.30, compiled Jun 30 2011 15:53:15
  • Firmware: J-Link ARM V8 compiled Jun 21 2011 20:26:20
  • Hardware: V8.00
  • S/N: 20100214
  • Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFull
  • VTarget = 3.306V
  • Info: TotalIRLen = 9, IRPrint = 0x0011
  • Info: Found Cortex-M3 r1p1, Little endian.
  • Info: TPIU fitted.
  • Info: FPUnit: 6 code (BP) slots and 2 literal slots
  • Found 2 JTAG devices, Total IRLen = 9:
  •  #0 Id: 0x3BA00477, IRLen: 04, IRPrint: 0x1, CoreSight JTAG-DP (ARM)
  •  #1 Id: 0x16410041, IRLen: 05, IRPrint: 0x1, STM32 Boundary Scan
  • Cortex-M3 identified.
  • JTAG 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>也是十六進制的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM