博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Learn lumit Step 9 : 使用 JTAG 调试
阅读量:2220 次
发布时间:2019-05-08

本文共 3670 字,大约阅读时间需要 12 分钟。

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 的下载和安装
下载地址:
(
无需注册,直接安装即可 )
缺省安装的目录为: 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]-->Cool<!--[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 的强大调试功能,会使得今后的开发更加容易,更接近我们以前的编程习惯。
下面我们就可以开始真正介绍硬件驱动实验了。 

 

转载地址:http://aknfb.baihongyu.com/

你可能感兴趣的文章
java面试中常考的一些面试sql语句
查看>>
一个字节等于多少位?
查看>>
帧框架frameset的用法总结
查看>>
java1.8中创建hashmap的初始化大小设置标准
查看>>
mark一下,service的实现层没有加@service注解。
查看>>
jq对象转换成js对象。已经jq的复合选择器。
查看>>
(一)alin‘s mysql学习笔记----概述
查看>>
(二)alin’s mysql学习笔记----mysql的存储引擎
查看>>
(三)alin’s mysql学习笔记----常用的join连接查询
查看>>
(四)alin’s mysql学习笔记----索引简介
查看>>
分布式系统中的幂等性的理解
查看>>
spring的注解开发中的常用注解(一)------@bean @Configuration @ComponentScan @Import @Scope @Lazy
查看>>
(五)alin’s mysql学习笔记----索引性能分析
查看>>
Spring中使用@Transactional注解进行事务管理的时候只有应用到 public 方法才有效
查看>>
springboot整合rabbitmq及rabbitmq的简单入门
查看>>
mysql事务和隔离级别笔记
查看>>
事务的传播属性(有坑点)自调用失效学习笔记
查看>>
REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案
查看>>
动态代理实现AOP
查看>>
23种常见的java设计模式
查看>>