關於OpenOCD的安裝配置(以mini2440+OpenJTAG爲例)

關於OpenOCD的安裝配置(以mini2440+OpenJTAG爲例)
 
 


    前幾天買了一個OpenJTAG,準備用於U-boot的調試和開發。其實OpenJTAG和openmoko的Debugboard V3在硬件上是一樣的。如果你之前在 暈到死 下裝過openmoko的Debugboard V3的驅動,那插上OpenJTAG就可以用,並識別爲openmoko的Debugboard。 openmoko的Debugboard還比 OpenJTAG 多了一個 HUB芯片 ,多擴出了兩個USB口,並添加了專爲openmoko手機設計的FPC接口。 可以說 OpenJTAG就是 openmoko的Debugboard的簡化版,如果已經有 openmoko的Debugboard的朋友,就無須購買 OpenJTAG了。
    買來後學習了一下《Eclipse,OpenOCD,OpenJTAG 嵌入式開發教程》 (以下簡稱教程)。首先要學習的是使用OpenJTAG調試的基本原理,這個在教程的“1.2 嵌入式軟件的交叉開發系統” 中有很好的介紹,大家一定要看一下。之後的關鍵是如何配置OpenOCD,使其可以認出你開發板上的芯片和flash。在教程中介紹的是使用他們編譯好的 0.1.0版本的OpenOCD和已經寫好的openocd.cfg配置文件。但是作爲一個嵌入式Linux學習者,我們要知道這些東西這麼用,也得知道這些東西是怎麼來的吧。如果以後換了一個硬件平臺還是得自己配置。所以藉此機會,我通過上網查閱資料,稍微研究了一下OpenOCD的安裝配置。在這裏我介紹一下我在調試mini2440上的安裝配置情況。

一、安裝
   如果你使用的是ubuntu系統,可以通過新立德直接安裝openocd。這樣會自動安裝依賴的軟件(其中關鍵的是libftdi).安裝好的版本是OpenOCD-0.2.0和libftdi-0.13。這種方法最簡單省事,但也有侷限性,不同版本的openocd的配置文件會有差異,並不通用 。如果你想要使用最新的openocd,那就得自己下載安裝了。
   (0)下載最新版libftdi  ,這是OpenJTAG使用的FT2232D  芯片的底層驅動庫。(如果提示無法找到某些頭文件,就用新立德安裝就好了。需要先安裝libusb-dev
       下載解包後只要:./configure; make; sudo make install 就好了。
       當然,你也可以通過git的方式  下載源代碼。
      
        如果你也想安裝ftdi-eeprom(燒寫FT2232所連接的e2prom的工具),可用同樣的方法下載安裝。(必須安裝libconfuse-dev

以下兩種方式選一種:

   (1)下載最新版openocd (最新開發版,想做小白鼠的使用)
        在你想要保存openocd的目錄下執行:

git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd

        這樣就會在當前目錄下創建一個openocd的目錄,並將代碼下載於此。

   (2)進入openocd的目錄,執行:

. / bootstrap
./configure --enable-maintainer-mode  --enable-ft2232_libftdi
make
sudo make install


我編譯安裝完後的版本是:

tekkaman@MAGI: ~ / developer/OpenJTAG/openocd/openocd$ openocd - v
Open On- Chip Debugger 0. 4. 0- dev- 00093- g2b1bd97 ( 2009- 11- 08- 13: 24)
$URL$
For  bug reports,  read
    http: / / openocd. berlios. de/doc/doxygen/bugs. html


  (1)下載 最新穩定版openocd (最新穩定版,想穩定的使用)
  (2)解壓並進入openocd的目錄,執行:

./configure  --enable-maintainer-mode   --enable-ft2232_libftdi
make
sudo make install


我編譯安裝完後的版本是:

tekkaman@MAGI:~/桌面/openocd_cfg$ openocd -v

Open On-Chip Debugger 0.3.0 (2009-11-08-13:52)

$URL$

For bug reports, read

http://openocd.berlios.de/doc/doxygen/bugs.html



二、配置
   當你在某個目錄執行openocd的時候,openocd會自動查找當前文件夾下的openocd.cfg 配置文件,如果你在啓動時加了 -f <filename> 的參數,那麼openocd會使用你指定的配置文件。
   配置文件是至關重要的,直接關係到OpenOCD是否可以通過OpenJTAG認到你的開發板和flash芯片。詳細的講解最好是看 OpenOCD的用戶指南 或者 在線參考手冊 現在我簡要 介紹一下配置文件的結構。
   配置文件所要配置的命令主要分爲以下五個部分:
   
   1、Daemon (守護):主要是配置openocd對外的通訊所使用的本地TCP/IP端口,如gdb、telnet所使用的端口,我的配置如下

telnet_port 4444
tcl_port 6666

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#  GDB Setup
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

gdb_port 3333
gdb_breakpoint_override hard 
gdb_memory_map enable
gdb_flash_program enable


   
   2、interface(接口):也就是openocd所操作的連接開發板的調試器,我使用的是OpenJTAG,配置如下:

interface ft2232
ft2232_vid_pid 0x1457 0x5118
ft2232_layout "jtagkey_prototype_v1"
ft2232_device_desc "USB<=>JTAG&RS232"

      如果你使用的是並口或別的調試器,你可以看看在/usr/share/openocd/scripts/interface目錄中是否有合適您的文件。
   
   3、target(目標):可以理解爲被調試的目標CPU,我的mini2440的target是S3C2440,而被支持的CPU你可以在/usr /share/openocd/scripts/target找到。我個人認爲只應該針對的是CPU核心,比如S3C2440的核心是ARM920T,所以同系列的CPU只要將S3C2440的配置稍加改動即可。我的配置如下:

if  {  [ info exists CHIPNAME]  }  {
   set  _CHIPNAME $CHIPNAME
}  else  {
   set  _CHIPNAME s3c2440
}
if  {  [ info exists ENDIAN]  }  {
   set  _ENDIAN $ENDIAN
}  else  {
  #  this  defaults to a bigendian
   set  _ENDIAN little
}
if  {  [ info exists CPUTAPID ]  }  {
   set  _CPUTAPID $CPUTAPID
}  else  {
  #  force an error  till we get a good number
   set  _CPUTAPID 0x0032409d
}

jtag newtap $_CHIPNAME cpu - irlen 4 - ircapture 0x1 - irmask 0x0f- expected- id $_CPUTAPID
target create mini2440 arm920t - endian $_ENDIAN - chain- position $_CHIPNAME. cpu - variant arm920t

mini2440 configure - work- area- virt 0 - work- area- phys 0x200000- work- area- size 0x4000 - work- area- backup 1

 


#reset configuration

reset_config trst_and_srst

   
   4、board(主板):指的是目標板上的配置,其實主要是針對板子上的Flash和PLD等可通過JTAG編程的設備配置的。針對mini2440,我的配置是:

#  Flash
#  1MBx16 NOR Flash
flash bank cfi 0x0 0x200000 2 2 mini2440 jedec_probe

#  NAND 
nand device s3c2440 mini2440 


配置好了這個,就可以通過Openocd來讀寫nand flash了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章