Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1639963
  • 博文数量: 311
  • 博客积分: 7778
  • 博客等级: 少将
  • 技术积分: 4186
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-09 19:59
个人简介

蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88

文章存档

2012年(3)

2011年(115)

2010年(170)

2009年(23)

分类: 嵌入式

2010-11-08 00:30:14

 
Andrew Haung
 转载请注明作者和联络方式
 
 

ADS的调试全部是通过AXD来调试,一种是使用模拟器在本机运行,但这一般只能用于ARM指令的测试。并不能控制外设。并通过外设反应来验证程序正确。跟真正的ARM设备进行在线调试了,则需要外部设备

AXD为了与各种不同ARM设备互联,制定一个RDIRemote Debug Interface)标准接口,通过标准接口.去调用一个特定还需通过一个调试代理软件(Debug Agent)来进行访问设备。这样可以让AXD无需了解各种硬件的细节.不论如是用并口,还是USB的接口,都可以通过统一的RDI接口与Debug Agent相连.这样结构比较灵活.

常用的Debug Agent软件有BANYANG ,ARM7,H-jtag.这一些软件都通过一定标准JTAG口与ARM设备进行通讯。

QQ2440通讯都是采用H-Jtag这个免费的代理软件。并且需要PC机上有并口。这个方案的特点是硬件极为简单。代理软件也是免费使用,因此有成本低的优点。但缺点下载速度慢,超过几十K的程序下载极为缓慢.

 

 

但现在很多PC机都取消并口,特别是笔记本,基本都没有并口。因此可以有如下代替方案。

 

  PCMIA转并口

  现在大量的机器,特别是笔记本已经取消串口和并口。市面上还有支持USBJTAG的产品—U-Link.但这一只能用在Keil for ARM上,ADS无法使用。并价格比较贵。 

我们在市场上发现了一种PCI-Express卡能比较好解决没有并口和串口的问题,如果是笔记本并有PCMIA接口(一般这是标准接口)。可以使用PCI Express转并/串口.以下是在笔记本成功使用并口的转接卡。

 

它可以通过不同的转换线,转换成串口或并口。并且我们已经成功用H-Jtag进行调试。在安装额外的驱动后。在WINDOWS下会显示.而且市面上常见的USB转并口线只合适于并口打印机,并不能进行调试。而且这个转换卡价格不贵。因此是嵌入式开发人员首选的转换设备

 

JTAG接口

JTAG(Joint Test Action Group )1985年制定的检测PCBIC芯片的一个标准,是芯片厂商是用于在线芯片检测的接口. JTAG的基本原理是在器件内部定义一个TAPTest Access Port;测试访问口)通过专用的JTAG测试工具对进行内部节点进行测试。

1990年被修改后成为IEEE的一个标准,即IEEE1149.1-1990。通过这个标准,可对具有JTAG接口的芯片的硬件电路进行边界扫描和故障检测。

他早期的目的是为了IC的生产线上对IC作自动检测。后来才发展一个调试接口。

JTAG引脚的定义为:TCK为测试时钟输入;TDI为测试数据输入,数据通过TDI引脚输入JTAG接口;TDO为测试数据输出,数据通过TDO引脚从JTAG接口输出;TMS为测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式;TRST为测试复位,输入引脚,低电平有效。

JTAG现在变成CPU的标准的接口,除了用于芯片检测外, JTAG接口还常用于实现ISPIn-System Programmable�在线编程),对FLASH等器件进行编程。,即常说的在线调试和在线烧录Flash

JTAGHOST端通常用并口与之相连.也有与USB接口相连的(U-Link产品),我们教学是采用并口与开发板上的JTAG相连.

 

H-Jtag简介

市面上硬件仿真器(ICE)的成本都太高,有多达几千一个. 。而简易仿真器的出现,使得大家可以使用甚至自制ARM仿真器硬件。

有了调试器的硬件,还要加上调试代理软件,作为中介,将调试器前端软件(比如AXD)的调试信息与目标板上的目标芯片交互,才能最终完成仿真的任务。目前,可以免费使用的简易ARM仿真器的代理软件很多,差别也比较大,主要表现在易用程度,目标器件支持,调试速度等方面。

H-JTAG 作为近来新推出的简易ARM 仿真器调试代理,其支持器件比较多,支持的调试器前端软件也比较多,特别是支持keilADS,其调试速度也很有优势。

n         1。支持 RDI 1.5.0 1.5.1;

n         2. 支持ARM7 ARM9(包括ARM9E-S ARM9EJ-S;

n         3. 支持 thumb arm 指令集;

n         4. 支持 little-endian big-endian;

n         5. 支持 semihosting;

n         6. 支持 wiggler, sdt-jtag 以及用户自定义的简易调试器硬件接口;

n         7. 支持 WINDOWS 9.X/NT/2000/XP;

n         8. 支持flash器件的编程

 

简易调试器的意思就是指利用一个低成本并口转JTAG的硬件就能直接进行调试,优点是成本低,缺点也很明显,在调试较大的程序里(超过1M),速度很慢。这里可能使用较昂贵的ICE比较合适

 

 

基于AXD-H-Jtag的调试环境

 

 

注意在这个调试环境中,在target端不是需要运行软件的,全部的响应是硬件来支持的。

1.连线

这里不需要安装特殊的并口驱动。H-Jtag能直接驱动并口。将JTAG->并口转换头分别接入板上JTAG口和PC机上并口.

一般的ARM设备往往运行相应Linux操作系统,这时可能会与正在调试的ADS起冲突。为了防止冲突,要求一开始进行bootloader控制台。

QQ2440在超级终端下,长按空格键的同时按reset进入Bootloader(VIVI)的控制台(出现下图表示进行VIVI)

mini2440下可以直接用Nor Flash启动,这样可以有效避免内存的中的LinuxADS调试程序的冲突.

 

2.配置H-jtag参数

接下来配置H-jtag的线序,不同公司的开发板有不同线序,而QQ2440要用特定的线序,参考如下设置自己的H-Jtag。注意只需要配置一次即可。

 

 

3.连接ARM设备

配置完后,开始跟开发板相连, 选择菜单栏OPERATIONS->DETECT TARGET 如果界面上出现蓝色的CPU 类型和CPU ID表示连接成功

 

 

3.AXD中注册H-Jtag这个代理

运行AXD,首先要添加H-JTAG为新的target。点击Option Config Target->选择add

添加H-JTAG 安装目录下的H-JTAG.dll为新的target

 

点击打开H-JTAG即会被添加为一个新的target,效果如图:

AXD 连接上H-JTAG 之后,H-JTAG 下方的状态栏会有详细的显示,包括调试器前端软件的名称,RDI版本等

此时AXD也处于就绪状态,通过点击File Load Image…载入欲调试的axf文件即可

 

当出现这一步,表示整个调试环境创建成功,可以进行调试了。

 

AXD调试MyLed实例

我们以MyLed测试为例,作一个AXD调试实例.将开发板上电,进入超级终端的VIVI状态.首先将H-jtagDiscable Vector Catch去掉 ,这样才可以设置断点.运行H-jtag 检测到开发板

   

首先在AXD选择Options->configure Target ,H-jtag作调试代理

 

选择target ,AXD处理就绪状态,并能检测到H-jtag的信息

 

第一次装入Image,AXD提示要找到s3c2410init.s ,可在项目目录找到这一文件并装入用open->files…菜单打开主执行函数main.C

一般单步调试,都要设置断点. AXD会自动在主函数第一句设置断点

 

如果没有设上,可以手工设置断点,可以按文件和行来设置断点

 

 

开始调试

lRUN菜单进行调试.这时主函数有断点话,会在第一个断点停住,这里可以用单步调试一步一步执行.

l当运行如图语句时,超级终端会有相应提示

 

ADS查看内存

 

保存当前设置

l你可以选择 Save Session …将当前状态保存下来,target,断点设置.寄存器值等保存下.

l在下次调试时用 Load Session 把保存状态恢复

 

ADS对中文路径BUG

l如果项目文件路径包含中文路径.

                         双击或拖拽MCP文件将会报错

l                                                全英文路径无此问题

                         只能先打开ADS,open对话框打开

lADS调试按钮调用AXD

                         如果包含中文路径,每次都报打不开default-1-2-3.ses文件,这样每次都要手工重配一次AXD

                         如果在中文路径下创建项目,在移动到全英文路径仍然会报同样错误

                         全英文路径创建项目,只需配置一次,每次都自动打开相应Session文件.

l因此推荐在英文目录下编译

阅读(4125) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~