您的位置:首页 > 其它

Learn lumit Step 9 : 使用 JTAG 调试

2007-05-20 21:04 337 查看
Learn lumit Step 9 : 使用 JTAG 调试
++++++++++++++++++++++++++++++++++++++++++++++++++++++

在嵌入式程序开发过程中,使用 JTAG 调试是最常用的调试方法。此前我们一直
没有提到 JTAG ,并不是不推荐大家用 JTAG 来调试开发,而只是因为我个人的习惯。
如果是在中断或者是对时序要求比较严格的程序中,我比较喜欢用点灯的办法来调试;
对于在程序各个接口执行流程上,对系统进行跟踪和观察,我比较喜欢用 DPRINT 来
实现控制输出调试信息的开关;如果是有很多计算公式或者是逻辑分支比较多的代码,
我想通过 JTAG 配合上层的调试软件应该是最好的选择。

举个例子,在写 led_api 中led_set_value( int value ) 接口时,我曾经犯了
一个小错误,我把左移指令 << 写出了 < ,结果这段代码在执行中就变成了

// set the i bit value to buf[i]
for( i = 0; i < LED_NUM; i++ )
buf[i] = (value & (1 < i)) ? 1 : 0 ;

这个错误是一个比较好的例子,通过 JTAG 设置断点,然后观察 buf[i] 变量的值,
很快就能定位出这个 bug 所在,所以这一节我觉得有必要先说说 JTAG 调试。

在 ADS 出来之前,大家都基本上是用 SDT 配合一个 JTAG.exe 的后台程序来实现
调试功能的。随着 SDT 基本上被 ADS 所替代,JTAG.exe 也不能继续用了,比较贵的
仿真器大家基本都买不起,所以 wiggler jtag + jtag.exe + SDT 的搭配还延续了很长
一段时间。

现在我们推荐一种 wiggler jtag + banyan.dll + ADS 的调试方案,从硬件成本上,
无需购买价格上千的 ARM 仿真器,而只需要一块价格几十的 wiggler jtag 小板子,
配合飞雁软件工作室提供的 Banyan Daemon 仿真器,上层使用 ADS 和 AXD 就可以实现
对 lumit4510 学习板的在线调试。这里特别感谢 飞雁软件工作室 为大家写出这么好的
软件,虽然从未认识,但却充满敬意。我想表达敬意的最好方式就是宣传它,让更多的人
认识了解它并使用它。请大家直接去他们的网站下载 “简易JTAG版软件”。

这里把整个使用 ADS + AXD + Wiggler Jtag + Banyan.dll 的调试过程步骤写出来。

一、Banyan 的下载和安装
下载地址: http://armdebug.27h.com/index.htm
http://armdebug.27h.com/soft/BanyanT-1.5.6.zip ( 无需注册,直接安装即可 )
缺省安装的目录为: C:/Banyan
目录下面有这几个文件:
驱动器 C 中的卷是 ORIGINAL
卷的序列号是 807F-76E5

C:/Banyan 的目录

2005-06-07 08:49a <DIR> .
2005-06-07 08:49a <DIR> ..
2003-10-18 05:58p 64,512 uninstall.exe
2005-04-12 09:30p 552,960 Banyan.dll
2004-01-05 02:11p 2,186 Banyan.sys
2004-02-26 11:40p 69,632 configure.exe
2005-04-12 12:31a 704,512 Daemon.exe
2005-06-07 08:49a 1,661 setup.log
6 个文件 1,395,463 字节
2 个目录 432,119,808 可用字节

二、ADS 工程文件的建立
1) 打开 ADS 1.2 ,选择 File -> New 创建一个新项目。
2) 在 Project 下,选择 ARM Executable Image 。
3) 在 Location 右侧点击按钮,选择工程文件所在目录。
4) 在 Project Name 输入框内,输入 ADS_demo_jtag 作为项目名称。
5) 此时,在 ADS 右上侧出现一个小窗口,窗口名称 ADS_demo_jtag.mcp。
6) 同时在刚才的目录下出现一个 ADS_demo_jtag 子目录,其中包含一个
名为 ADS_demo_jtag.mcp 的项目工程文件。

三、建立/编译整个工程
1) 在 ADS_demo_jtag.mcp 窗口中,点击鼠标右键,出现弹出菜单。
2) 选择弹出菜单中的 Add Files
3) 选择 src 目录下的所有源码文件 main.c led_driver.c[.h] led_api.c[.h]
4) 在 Add Files 对话框中点击 ok 即可。
5) 选择 ADS 菜单 -> Project -> make ,编译整个项目工程。
6) 此时会弹出一个 Errors & Warnings 窗口,显示编译链接过程正确无误。
7) 选择 ADS 菜单 -> Project -> debug ,开始进入 JTAG 调试。

四、准备调试
1) 进入 AXD 调试软件后,选择 AXD 菜单 -> Options -> Configure Target
2) 出现 Choose Target 对话框,点击 ADD 按钮,准备添加新的 dll
3) 找到刚才 Banyan 的安装目录,选择 Banyan.dll 文件,点击打开。
4) 此时可以看到在 Choose Target 对话框中,出现了 Banyan-TRI 行。
5) 选中这一行,点击 ok 即可。

五、使用 Banyan 调试
1) 此时可能会出现一个 Fatal AXD Error 的错误,信息如下:
RDI Servere Error 00261: Banyan Daemon Not Found
2) 这个时候,首先找到刚才 Banyan 的安装目录,执行 Daemon.exe
3) 如果板子没有加电,或者开发板没有通过 wiggler jtag 板连接到
主机的并口,则还会出现 Fatal AXD Error 的错误,信息如下:
RDI Servere Error 00261: Banyan Daemon Not Ready
4) 此时,给板子加电,连接开发主机并口和 wiggler jtag 板到开发板上。
5) 切换到 Banyan Deamon 主程序界面,选择菜单 Detect
6) 此时,正常情况下应该出现识别出 S3C4510 Samsung 的标识。
7) 切换到 AXD 中,选择刚才 Fatal AXD Error 错误对话框中 Restart
<!--[if !vml]--><!--[endif]-->此时 AXD 中 RDI Log 信息栏中会出现:
ARM RDI Module Server ADS v1.2 [Build number 805]: Attaching to S3C4510B and EmbeddedICE
ARM RDI Module Server ADS v1.2 [Build number 805]: 'EICE'
ARM RDI 1.5.1 -> ASYNC RDI Protocol Converter ADS v1.2 [Build number 805]. Copyright (c) ARM Limited 2001.

Banyan V 1.5.6. Copyright(C) 2003-2005, Pure Feeling Studio.
Connected to TAP 0, S3C4510B, Little-Endian.
9) 这时,整个准备调试工作完毕,接下来就可以开始调试了。

六、调试 axf 文件
1) 在 AXD 菜单下,选择 File -> Load Image
2) 选择打开目录 src/ADS_demo_wiggler/ADS_demo_wiggler_Data/DebugRel 下的
ADS_demo_jtag.axf 文件。
3) 此时可以看到程序停在 __main 入口,等待开始执行。
4) 选择 AXD 菜单 -> Execute -> Go 。 此时会提示需要定位 main.c 文件,找到
并选择 main.c 文件即可。
5) 此时可以看到程序停在 int main( void ) 入口,等待继续执行。
6) 可以选择 AXD 菜单 -> Execute -> Step In 单步调试,观察单步执行的点灯效果。
7) 也可以在适当的位置设置断点,直接执行到断点处,停下来观察变量和点灯状态。

有了 AXD 的强大调试功能,会使得今后的开发更加容易,更接近我们以前的编程习惯。
下面我们就可以开始真正介绍硬件驱动实验了。 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: