首頁 > 軟體

Ubuntu下設定OpenOCD+FT2232

2020-06-16 17:55:52

Ubuntu下設定OpenOCD+FT2232

【1】確認偵錯程式方案
將偵錯程式插到電腦上,lsusb看一下:

Bus 003 Device 009: ID 1457:5118 First International Computer, Inc. OpenMoko Neo1973 Debug board (V2+)

dmesg看一下:

[ 1223.230752] usb 3-12: new full-speed USB device number 7 using xhci_hcd
[ 1223.364173] usb 3-12: New USB device found, idVendor=1457, idProduct=5118
[ 1223.364181] usb 3-12: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1223.364185] usb 3-12: Product: USB<=>JTAG&RS232
[ 1223.364188] usb 3-12: Manufacturer: www.100ask.net
[ 1223.366931] usb 3-12: Ignoring serial port reserved for JTAG
[ 1223.369248] ftdi_sio 3-12:1.1: FTDI USB Serial Device converter detected
[ 1223.369341] usb 3-12: Detected FT2232C
[ 1223.369349] usb 3-12: Number of endpoints 2
[ 1223.369356] usb 3-12: Endpoint 1 MaxPacketSize 64
[ 1223.369362] usb 3-12: Endpoint 2 MaxPacketSize 64
[ 1223.369369] usb 3-12: Setting MaxPacketSize 64
[ 1223.369636] usb 3-12: FTDI USB Serial Device converter now attached to ttyUSB0

OK,確認為FT2232C方案,後面要根據這個設定OPENOCD。

【2】增加udev規則,以便使用普通使用者許可權操作我們的偵錯程式。

插上openocd,dmesg看一下:

以root許可權建立/etc/udev/rules.d/45-openjtag.rules(檔名可以換成別的),內容如下:

SYSFS{idProduct}=="5118", SYSFS{idVendor}=="1457", MODE="666", GROUP="plugdev"

新增規則檔案後,重新插拔偵錯程式生效。

【3】確認JTAG線序,並連線裝置與偵錯程式。以下是100ask.com的OPENJTAG線序。可能需要使用轉接板或杜邦線連線裝置和偵錯程式,EB-SAM9G45需要使用自帶的20pin-10pin轉接板。

【4】安裝openocd。

【4.1】ubuntu 14.10的版本庫中,openocd的當前版本是0.8。ubuntu 14.04中是0.7。

apt-get install openocd

【4.2】下載原始碼包安裝

sourceforge頁面:http://sourceforge.net/projects/openocd/
我下載的檔案為openocd-0.8.0.tar.bz2,解壓出來的檔案為:

openocd-0.8.0:
aclocal.m4    config.sub        Doxyfile.in  missing    NEWTAPS
AUTHORS      config_subdir.m4  HACKING      NEWS        README
BUGS          configure        INSTALL      NEWS-0.2.0  README.OSX
ChangeLog    configure.ac      install-sh  NEWS-0.3.0  README.Windows
common.mk    contrib          jimtcl      NEWS-0.4.0  src
compile      COPYING          ltmain.sh    NEWS-0.5.0  tcl
config.guess  depcomp          Makefile.am  NEWS-0.6.0  TODO
config.h.in  doc              Makefile.in  NEWS-0.7.0  tools

安裝依賴庫:

apt-get install libusb-1.0-0-dev libftdi-dev

編譯安裝,這裡安裝到了/opt/openocd

./configure --enable-ftdi --prefix=/opt/openocd
make
sudo mkdir /opt/openocd
sudo chmod a+w opt/openocd
make install

【4.3】通過git獲取最新開發版:

git clone git://git.code.sf.net/p/openocd/code openocd-code

得到的檔案為:

openocd-code:
AUTHORS            configure.ac  jimtcl       NEWS-0.6.0      src
AUTHORS.ChangeLog  contrib       Makefile.am  NEWS-0.7.0      tcl
bootstrap          COPYING       NEWS         NEWS-0.8.0      testing
BUGS               doc           NEWS-0.2.0   NEWTAPS         TODO
ChangeLog          Doxyfile.in   NEWS-0.3.0   README          tools
common.mk          guess-rev.sh  NEWS-0.4.0   README.OSX      uncrustify.cfg
config_subdir.m4   HACKING       NEWS-0.5.0   README.Windows

下載子模組,編譯安裝:

./bootstrap
./configure --enable-ftdi --prefix=/opt/openocd
make
sudo mkdir /opt/openocd
sudo chmod a+w opt/openocd
make install

【5】設定openocd
【5.1】介面部分,我這裡的組態檔路徑為 ~/.openocd/openjtag.cfg,內容如下:

#openocd 0.8中預設使用新的ftdi介面,如果希望使用舊的ft2232介面,需要在編譯openocd時指定。
interface ftdi
#通過描述來指定裝置,應當和dmesg中的Product一致
#ftdi_device_desc "USB<=>JTAG&RS232"
#通過PID VID指定偵錯程式,比描述更準確些
ftdi_vid_pid 0x1457 0x5118
#如果有多個同樣的偵錯程式,還可以指定要使用的偵錯程式序列號
#ftdi_serial

#引腳定義,相當於舊版中的 ft2232_layout jtagkey
ftdi_layout_init 0x0c08 0x0f1b
ftdi_layout_signal nTRST -data 0x0100 -noe 0x0400
ftdi_layout_signal nSRST -data 0x0200 -noe 0x0800

此時可以嘗試執行一下openocd,以檢查連線和設定情況:

1.關閉裝置電源,
2.連結裝置、偵錯程式、PC
3.??開裝置電源(因為沒有指定處理器,只能先開啟裝置以進行自動探測)
4.執行openocd:

openocd -f ~/.openocd/openjtag.cfg -c jtag_rclk 3000

該命令中,  -f 指定組態檔,可以如 -f a.cfg -f b.cfg指定多個組態檔;
       -c 執行一條命令,這裡是處理器不支援RCLK時,偵錯程式使用的時鐘。
openocd的列印如下:

Open On-Chip Debugger 0.8.0 (2014-05-10-23:20)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
RCLK - adaptive
RCLK - adaptive
Info : RCLK (adaptive clock speed) not supported - fallback to 3000 kHz
Warn : There are no enabled taps.  AUTO PROBING MIGHT NOT WORK!!
Warn : AUTO auto0.tap - use "jtag newtap auto0 tap -expected-id 0x0792603f ..."
Warn : AUTO auto0.tap - use "... -irlen 4"
Warn : gdb services need one or more targets defined

這裡自動探測出一個TAP(Test Access Ports,裝置上的JTAG核心,一個晶片中可能有多個TAP)出來,expected-id與預計(如果openocd支援該處理器,可以翻閱組態檔,否則請翻看datasheet等)的相同,這證明JTAG介面是連線和設定正確的。
如果是類似這樣的列印,請檢查JTAG線序、openocd設定的介面定義、目標板電源等:

Error: JTAG scan chain interrogation failed: all zeroes
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Error: IR capture error at bit 0, saw 0x00 not 0x...3
Warn : Bypassing JTAG setup events due to errors
Warn : gdb services need one or more targets defined

IT145.com E-mail:sddin#qq.com