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
此时 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 的强大调试功能,会使得今后的开发更加容易,更接近我们以前的编程习惯。
下面我们就可以开始真正介绍硬件驱动实验了。
Learn lumit Step 9 : 使用 JTAG 调试
最新推荐文章于 2019-05-14 11:06:00 发布