蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88
全部博文(311)
分类: 嵌入式
2010-11-08 00:30:14
ADS的调试全部是通过AXD来调试,一种是使用模拟器在本机运行,但这一般只能用于ARM指令的测试。并不能控制外设。并通过外设反应来验证程序正确。跟真正的ARM设备进行在线调试了,则需要外部设备
AXD为了与各种不同ARM设备互联,制定一个RDI(Remote Debug Interface)标准接口,通过标准接口.去调用一个特定还需通过一个调试代理软件(Debug Agent)来进行访问设备。这样可以让AXD无需了解各种硬件的细节.不论如是用并口,还是USB的接口,都可以通过统一的RDI接口与Debug Agent相连.这样结构比较灵活.
常用的Debug Agent软件有BANYANG ,ARM7,H-jtag.这一些软件都通过一定标准JTAG口与ARM设备进行通讯。
与QQ2440通讯都是采用H-Jtag这个免费的代理软件。并且需要PC机上有并口。这个方案的特点是硬件极为简单。代理软件也是免费使用,因此有成本低的优点。但缺点下载速度慢,超过几十K的程序下载极为缓慢.
但现在很多PC机都取消并口,特别是笔记本,基本都没有并口。因此可以有如下代替方案。
PCMIA转并口
现在大量的机器,特别是笔记本已经取消串口和并口。市面上还有支持USB转JTAG的产品—U-Link.但这一只能用在Keil for ARM上,ADS无法使用。并价格比较贵。
我们在市场上发现了一种PCI-Express卡能比较好解决没有并口和串口的问题,如果是笔记本并有PCMIA接口(一般这是标准接口)。可以使用PCI Express转并/串口.以下是在笔记本成功使用并口的转接卡。
它可以通过不同的转换线,转换成串口或并口。并且我们已经成功用H-Jtag进行调试。在安装额外的驱动后。在WINDOWS下会显示.而且市面上常见的USB转并口线只合适于并口打印机,并不能进行调试。而且这个转换卡价格不贵。因此是嵌入式开发人员首选的转换设备
JTAG接口
JTAG(Joint Test Action Group )是1985年制定的检测PCB和IC芯片的一个标准,是芯片厂商是用于在线芯片检测的接口. JTAG的基本原理是在器件内部定义一个TAP(Test 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接口还常用于实现ISP(In-System Programmable在线编程),对FLASH等器件进行编程。,即常说的在线调试和在线烧录Flash
JTAG在HOST端通常用并口与之相连.也有与USB接口相连的(如U-Link产品),我们教学是采用并口与开发板上的JTAG相连.
H-Jtag简介
市面上硬件仿真器(ICE)的成本都太高,有多达几千一个. 。而简易仿真器的出现,使得大家可以使用甚至自制ARM仿真器硬件。
有了调试器的硬件,还要加上调试代理软件,作为中介,将调试器前端软件(比如AXD)的调试信息与目标板上的目标芯片交互,才能最终完成仿真的任务。目前,可以免费使用的简易ARM仿真器的代理软件很多,差别也比较大,主要表现在易用程度,目标器件支持,调试速度等方面。
H-JTAG 作为近来新推出的简易ARM 仿真器调试代理,其支持器件比较多,支持的调试器前端软件也比较多,特别是支持keil,ADS,其调试速度也很有优势。
n 1。支持 RDI
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的硬件就能直接进行调试,优点是成本低,缺点也很明显,在调试较大的程序里(超过
基于AXD-H-Jtag的调试环境
注意在这个调试环境中,在target端不是需要运行软件的,全部的响应是硬件来支持的。
1.连线
这里不需要安装特殊的并口驱动。H-Jtag能直接驱动并口。将JTAG->并口转换头分别接入板上JTAG口和PC机上并口.
一般的ARM设备往往运行相应Linux操作系统,这时可能会与正在调试的ADS起冲突。为了防止冲突,要求一开始进行bootloader控制台。
QQ2440在超级终端下,长按空格键的同时按reset进入Bootloader(VIVI)的控制台(出现下图表示进行VIVI)
在mini2440下可以直接用Nor Flash启动,这样可以有效避免内存的中的Linux与ADS调试程序的冲突.
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-jtag的Discable Vector Catch去掉 ,这样才可以设置断点.运行H-jtag 检测到开发板
首先在AXD选择Options->configure Target 中,H-jtag作调试代理
选择target 后,AXD处理就绪状态,并能检测到H-jtag的信息
第一次装入Image时,AXD提示要找到s
一般单步调试,都要设置断点. AXD会自动在主函数第一句设置断点
如果没有设上,可以手工设置断点,可以按文件和行来设置断点
开始调试
l按RUN菜单进行调试.这时主函数有断点话,会在第一个断点停住,这里可以用单步调试一步一步执行.
l当运行如图语句时,超级终端会有相应提示
ADS查看内存
保存当前设置
l你可以选择 Save Session …将当前状态保存下来,如target,断点设置.寄存器值等保存下.
l在下次调试时用 Load Session 把保存状态恢复
ADS对中文路径BUG
l如果项目文件路径包含中文路径.
– 双击或拖拽MCP文件将会报错
l 全英文路径无此问题
– 只能先打开ADS,用open对话框打开
l在ADS调试按钮调用AXD
– 如果包含中文路径,每次都报打不开default-1-2-3.ses文件,这样每次都要手工重配一次AXD
– 如果在中文路径下创建项目,在移动到全英文路径仍然会报同样错误
– 全英文路径创建项目,只需配置一次,每次都自动打开相应Session文件.
l因此推荐在英文目录下编译