免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1991 | 回复: 0
打印 上一主题 下一主题

关于OpenOCD的安装配置(以mini2440+OpenJTAG为例) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-07 19:33 |只看该作者 |倒序浏览

                                                                                                                                                [color="#0001FF"]关于OpenOCD的安装和配置(以mini2440+OpenJTAG为例)
    前几天买了一个OpenJTAG,准备用于U-boot的调试和开发。之后学习了一下
《Eclipse,OpenOCD,OpenJTAG 嵌入式开发教程》
(以下简称教程)。首先要学习的是使用OpenJTAG调试的基本原理,这个在教程的[color="#0001FF"]“1.2 嵌入式软件的交叉开发系统”中有很好的介绍,大家一定要看一下。之后的关键是如何配置OpenOCD,使其可以认出你开发板上的芯片和flash。在教程中介绍的是使用他们编译好的0.1.0版本的OpenOCD和已经写好的openocd.cfg配置文件。但是作为一个嵌入式Linux学习者,我们要知道这些东西这么用,也得知道这些东西是怎么来的吧。如果以后换了一个硬件平台还是得自己配置。所以借此机会,我通过上网查阅资料,稍微研究了一下OpenOCD的安装配置。在这里我介绍一下我在调试mini2440上的安装配置情况。
[/url]
一、安装   如果你使用的是ubuntu系统,可以通过新立德直接安装openocd。这样会自动安装依赖的软件(其中关键的是libftdi).安装好的版本是OpenOCD-0.2.0和libftdi-0.13。这种方法最简单省事,但也有局限性,[color="#FF0102"]不同版本的openocd的配置文件会有差异,并不通用。如果你想要使用最新的openocd,那就得自己下载安装了。   (0)下载最新版
[url=http://www.intra2net.com/en/developer/libftdi/download.php]libftdi

,这是OpenJTAG使用的
FT2232D
芯片的底层驱动库。(如果提示无法找到某些头文件,就用新立德安装就好了。需要先安装[color="#FF0102"]libusb-dev[color="#000102"])       下载解包后只要:./configure; make; sudo make install 就好了。       当然,你也可以通过
git的方式
下载源代码。              如果你也想安装ftdi-eeprom(烧写FT2232所连接的e2prom的工具),可用同样的方法下载安装。(必须安装[color="#FF0102"]libconfuse-dev
[color="#0001FF"]以下两种方式选一种:   (1)下载最新版openocd [color="#FF0102"](最新开发版,想做小白鼠的使用)        在你想要保存openocd的目录下执行:git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd
        这样就会在当前目录下创建一个openocd的目录,并将代码下载于此。
   (2)进入openocd的目录,执行:./bootstrap[color="#0000CC"]./configure [color="#FF0102"]--enable-maintainer-mode[color="#0000CC"]  --enable-ft2232_libftdimakesudo make install
我编译安装完后的版本是:tekkaman@MAGI:~/developer/OpenJTAG/openocd/openocd$ openocd -vOpen 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 [color="#FF0102"](最新稳定版,想稳定的使用)  (2)解压并进入openocd的目录,执行:[color="#0000CC"]./configure [color="#FF0102"]--enable-maintainer-mode[color="#0000CC"]  --enable-ft2232_libftdimakesudo 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会自动查找当前文件夹下的[color="#0001FF"]openocd.cfg配置文件,如果你在启动时加了 [color="#0001FF"]-f 的参数,那么openocd会使用你指定的配置文件。   配置文件是至关重要的,直接关系到OpenOCD是否可以通过OpenJTAG认到你的开发板和flash芯片。[color="#FF0102"]详细的讲解最好是看
[color="#FF0102"]OpenOCD的用户指南
[color="#FF0102"]或者
[color="#FF0102"]在线参考手册
[color="#FF0102"]现在我[color="#FF0102"]简要介绍一下配置文件的结构。   配置文件所要配置的命令主要分为以下五个部分:      1、Daemon (守护):主要是配置openocd对外的通讯所使用的本地TCP/IP端口,如gdb、telnet所使用的端口,我的配置如下
telnet_port 4444tcl_port 6666#-------------------------------------------------------------------------# GDB Setup#-------------------------------------------------------------------------gdb_port 3333gdb_breakpoint_override hard gdb_memory_map enablegdb_flash_program enable
      2、interface(接口):也就是openocd所操作的连接开发板的调试器,我使用的是OpenJTAG,配置如下:
interface ft2232ft2232_vid_pid 0x1457 0x5118ft2232_layout "jtagkey_prototype_v1"ft2232_device_desc "USBJTAG&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 $_CPUTAPIDtarget create mini2440 arm920t -endian $_ENDIAN -chain-position $_CHIPNAME.cpu -variant arm920tmini2440 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 Flashflash bank cfi 0x0 0x200000 2 2 mini2440 jedec_probe# NAND nand device s3c2440 mini2440
配置好了这个,[color="#0001FF"]就可以通过Openocd来读写nand flash了。[color="#FF0102"]但是SST的Nor flash 似乎还不支持烧写。
   5、其他:还有一些JTAG口设置等等,请参考
OpenOCD的用户指南

以下是我的可用的openocd.cfg[color="#FF0102"](针对openocd-0.3.0+OpenJTAG+mini2440):

       
        文件:openocd.cfg.tar.gz
        大小:0KB
        下载:
下载
       
[color="#0001FF"]
在教程中介绍的烧写u-boot到flash的方法是现将他们的u-boot现导入内存,并启动。使用u-boot去烧写u-boot,这种方法是最快最好的方法。
但是现在的openocd可以直接烧写nand flash[color="#0001FF"](前提是你在配置文件中配置正确)。步骤如下:(1)启动openocd,并通过telnet登录。(2)让openocd探测板上的nand flash。(3)利用nand命令擦除、再写入。具体命令:在一个shell中启动tekkaman@MAGI:~/桌面/openocd_cfg$ sudo openocd Open On-Chip Debugger 0.3.0 (2009-11-08-13:52)$URL$For bug reports, read    http://openocd.berlios.de/doc/doxygen/bugs.htmlforce hard breakpointsjtag_nsrst_delay: 100jtag_ntrst_delay: 100    TargetName Type Endian TapName State -- ------------------ ---------- ------ ------------------------------ 0* mini2440 arm920t little s3c2440.cpu unknown12000 kHztrst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drainInfo : clock speed 6000 kHzInfo : JTAG tap: s3c2440.cpu tap/device found: 0x0032409d (mfg:0x04e, part: 0x0324, ver: 0x0)Info : Embedded ICE version 2
在另一shell中:tekkaman@MAGI:~/桌面/openocd_cfg$ telnet localhost 4444Trying 127.0.0.1...Connected to localhost.Escape character is '^]'.[color="#000102"]Open On-Chip Debugger[color="#0000CC"]> pollbackground polling: onTAP: s3c2440.cpu (enabled)[color="#FF0102"]target state: haltedtarget halted in ARM state due to breakpoint, current mode:Supervisorcpsr: 0x400000d3 pc: 0x0105daf4MMU: disabled, D-Cache: disabled, I-Cache: disabled[color="#0000CC"]> nand probe 0NAND flash device 'NAND 128MiB 3,3V 8-bit' found> nand erase 0 0 0x60000   [color="#FF0102"]#注释:擦除大小必须是0x20000(block size)的整数倍s3c2440_read_block_data: reading data: 0x91a89e8, 0xbfea3d6a, 6erased blocks 0 to 3 on NAND flash device #0 'NAND 128MiB 3,3V 8-bit'> nand write 0 u-boot.bin 0wrote file u-boot.bin to NAND flash 0 up to offset 0x00043800 in 287.407043s
               
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/34474/showart_2089040.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP