关于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了
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值