4973|1

4

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

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

【原创】跟我学IARforARM之EventLog的应用
IAR Embedded Workbench 是瑞典 IAR Systems 公司为微处理器开发的一个集成开发环境(下面简称IAR EW),支持ARMAVRMSP430等芯片内核平台。
EWARM 中包含一个全软件的模拟程序(simulator)。用户不需要任何硬件支持就可以模拟各种ARM 内核、外部设备甚至中断的软件运行环境。从中可以了解和评估IAR EWARM 的功能和使用方法。本文将以实际操作的方式介绍其中的EventLog的应用方法。
一、EventLog的作用
IARforARM提供了4TimerEventLog,一方面可以用来测试程序执行时间,另一方面用来在程序运行过程中输出一些变量值。当发生BUG的时候,这是一种非常好的调查手段。
二、EventLog的设置方法
实例1:用EventLog测试程序执行时间
首先,include必须的头文件:
#include
然后,假设要测试Log_Init()函数的执行时间,则我们可以这样改造:
//第一个参数表示TimerID,第二个参数是数值标识
ITM_EVENT8_WITH_PC(1,0x10);
Log_Init(); //调用Log_Init()函数
ITM_EVENT8_WITH_PC(1,0x11);
接着打开IAR->I-jet/JTAGjet->EventLog界面:

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







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


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







由上图可以看出,Log_Init()函数执行时间大概是18.5毫秒。
在时间敏感的系统中,这个时间测试对于定位问题是非常关键的。


实例2:用EventLog监视变量的值

前面的例子介绍的是测量某段程序的执行时间,本例是监视变量在运行过程中的值。
首先,include必须的头文件:
#include
然后,假设要在Log_Init()函数中监视变量g_DbgPrintLvlg_DbgPrintOutput的值,则我们可以这样改造:
//第一个参数表示Timer ID,第二个参数是变量值
ITM_EVENT8_WITH_PC(1,g_DbgPrintLvl);
ITM_EVENT8_WITH_PC(2,g_DbgPrintOutput);
g_DbgPrintLvl = DBG_PRINT_LVL;
g_DbgPrintOutput = DEBUG_PRINT_OUTPUT;
ITM_EVENT8_WITH_PC(3,g_DbgPrintLvl);
ITM_EVENT8_WITH_PC(4,g_DbgPrintOutput);
    然后,单击IAR->GO运行程序,得到类似如下结果:

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








   通过上图可以很清楚的看到在设置前,g_DbgPrintLvl=0g_DbgPrintOutput=0,而设置后g_DbgPrintLvl=2g_DbgPrintOutput=1
   虽然也可以通过printf打印运行时变量的值,但是printf会用到IO,输出速度慢,在时间敏感的系统是不能使用prinf来调试的。因此,当发生问题的时候,上述方法就是非常好的调试手段。
    以上看似非常简单的例子,但是在发生问题的时候却是非常有效的调查手段,特别是对于多线程、多中断的复杂程序环境时,非常有用。


最新回复

谢谢楼主分享,不过貌似图片加载不出来,不知道是服务器的问题还是我的网的问题。  详情 回复 发表于 2016-12-15 09:06
点赞 关注

回复
举报

732

帖子

2

TA的资源

纯净的硅(中级)

沙发
 
谢谢楼主分享,不过貌似图片加载不出来,不知道是服务器的问题还是我的网的问题。
 
个人签名亚里士缺德
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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