6546|0

4

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

【原创】跟我学IARforARM之DataLog的应用 [复制链接]


【原创】跟我学IARforARM之DataLog的应用


IAR Embedded Workbench 是瑞典 IAR Systems 公司为微处理器开发的一个集成开发环境(下面简称IAR EW),支持ARMAVRMSP430等芯片内核平台。
EWARM 中包含一个全软件的模拟程序(simulator)。用户不需要任何硬件支持就可以模拟各种ARM 内核、外部设备甚至中断的软件运行环境。从中可以了解和评估IAR EWARM 的功能和使用方法。本文将以实际操作的方式介绍其中的DataLog的应用方法。
一、DataLog的作用
DataLog可以用来监视哪些程序对某块地址空间进行了读、写操作。当发生BUG的时候,这是一种非常好的调查手段。
二、DataLog的设置方法
实例1:定位对全局变量的读写操作的DataLog
首先,定义一个全局变量:
unsigned char    g_DbgPrintLvl;
然后,在某个函数中对这个全局变量赋值:
g_DbgPrintLvl = DBG_PRINT_LVL;
接着进行编译,从*.map文件中找到该全局变量的地址:
g_DbgPrintLvl   0x9041f49b      0x1  Data  Gb  logcom.o [1]
接着,通过IAR->View->Memory菜单,打开Memory界面,输入0x9041F49B的地址:


image001.png (4.06 KB, 下载次数: 0)
下载附件
2016-11-29 19:28 上传






在该地址上右击->Set Data Log Breakpoint,然后单击IAR->View->Breakpoint查看断点,选择双击刚才设置的断点,可以进行编辑。


image002.png (24.81 KB, 下载次数: 0)
下载附件
2016-11-29 19:28 上传






接着打开IAR->I-jet/JTAGjet->DataLog界面:


image003.png (3.7 KB, 下载次数: 0)
下载附件
2016-11-29 19:28 上传






把上面的Disabled改成Enabled
最后单击IAR->GO运行程序,得到类似如下结果:


image004.png (8.59 KB, 下载次数: 0)
下载附件
2016-11-29 19:28 上传






由上图可以看出有一系列的PC0x9041F49B的地址进行WR操作,那么如何知道是哪个程序呢?这个很简单,只要打开*.map文件,查找与PC值相近的文件,然后打开该文件的*.lst文件,查看里面的PC就知道是哪个函数执行的操作了。比如:上面的PC=0x000092FC进行了W 0x02的操作。
查看*.map文件,与上述PC相近的文件是logcom.o
Log_Init  0x000092f1    0x110  Code  Gb  logcom.o [1]
因此,打开logcom.lst文件:
从偏移量0x0000000C的地方可以看出对g_DbgPrintLvl进行了写入操作。


image005.png (14.35 KB, 下载次数: 0)
下载附件
2016-11-29 19:28 上传






实例2:定位对全局变量的读写操作的Data Breakpoint
    前面的例子介绍的是对某个变量读写操作时记录下PC值的LOG,本例是直接让CPU停在读写操作的地方。
    0x9041F49B地址上右击->Set Data Breakpoint,然后,单击IAR->GO运行程序,得到类似如下结果:



image006.png (29.69 KB, 下载次数: 0)
下载附件
2016-11-29 19:28 上传






DataLog不同的是,程序直接停在对0x9041F49B地址进行读写操作之后的指令上。
    以上看似非常简单的例子,但是在发生问题的时候却是非常有效的调查手段,特别是对于多线程、多中断的复杂程序环境时,非常有用。








点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表