当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]ARM内核目标系统中的代码运行时间测试

摘要 很多测量时间的C函数在ARM中都不能使用。某些能使用的,也是基于系统实时时钟(RTC),故最短时间单位只能达到10-2s。作为一种通用的精密计时方法,为了取得更精细的时间度量,可以考虑启用ARM芯片内置的WatchDog实现扩展了的实时时钟功能,并推广到程序精确延时的用途,弥补现有C函数的不足。本文对此作出分析,并给出了具体的实验描述。
关键词 精确时间测量精密计时 ARM实时时钟扩展 看门狗


    在ARM系统中.有时需要精确的时间测量。通常,取时间的C函数(如gettime()等)不仅通用性差(必须包含头文件DOS.H,且不支持Unix、Linux和标准C),明显不适用于ARM系统;更成问题的是,其最短时间只能到10-2秒级,不能提供更短的时间分度。根本原因在于:这类函数是基于系统实时时钟(RTC)的,而RTC通常采用标准化钟表晶振,频率只有32.768 kHz而已。
    然而很多应用涉及μs级的时间计量,这是标准化了的RTC以及基于它的时间函数所无能为力的。笔者在移植DES算法到ARM系统的实验过程中,便遇到过要定量评估加密算法耗时多少的问题,发现的确不能用上述常规的C函数解决。经对ARM芯片结构的考察,发现其内置的WatchDog系统是以系统时钟驱动的,定量性能应该很好,区分时间间隔的精细程度也应该足够。于是根据所用ARM芯片的原厂家数据手册中的说明,借用WatchDog编写了自己的计时函数,使用起来也比较方便。考虑到ARM芯片都带有内置看门狗,笔者觉得这种方法可算是一个不错的“过渡性”解决方案,故在此加以介绍,供同行们参考并指正。


1 测量原理
    ARM芯片中的看门狗,其原始功能是监视CPU核心运行的某些超时。这些超时的发生,通常是因为干扰和系统错误等造成的程序运行混乱。一旦发生这类情形,看门狗便请求中断服务或发出复位脉冲重启系统。为了达到这样的目的,其计时原理必须独立于系统中的任何进程。实际上,WatchDog是独立的硬件逻辑,其计时脉冲直接取自系统主时钟,因此它与RTC一样具备实时性和独立性,借用看门狗的计时体系来实现高精度时间测量是合理的。
    先以实验中用到的S3C4480X为例(该实验所用的ARM开发板型号为NETARM300),具体谈谈看门狗的工作原理。其原理框图如图1所示,图中MCLK即系统主时钟。

    从图中可以看出,系统主时钟MCLK经过可编程预分频、可选固定分频后,进入WTCNT(硬件系统的计时计数器,16位)计数。根据器件手册,计数时间间隔t_watchdog=l/(MCLK/(Prescaler value+1)/Division_factor)。式中,参数Prescakr value的取值为O~28-l;Division_factor有16、32、64、128四种取值。如果复位信号输出允许(即WTCON的位0置1),那么一旦计数器WTCNT的计数超过WTDAT允许的范围,看门狗就会将CPU复位。本实验过程中屏蔽掉了这种复位和中断请求功能,仅让它对脉冲计数。
    控制寄存器WTCON的有关各位定义图中已给出(如需详细解释可查阅器件手册,如参考文献[3]),其他全为保留位,可全置为O。
    至于MCLK具体值的计算,可以查验系统中的晶振参数(频率),读取系统时钟的PLL寄存器(如S3C44BOX的PLLCON)后算得。计算的方法都已在具体ARM芯片手册中给出。

2 测量算法实现和实验结果
   
按照所需参数设置的看门狗定时器控制寄存器WT-CON的值(如前所述),在待测代码段执行之前开启看门狗定时器;等其执行完毕则关闭看门狗定时器,读取WTCNT的值即可算得运行时间。作为一个具体示例,笔者实验中所实现的算法如下:
(1)计时算法


(2)应用

 

    需要指出:在改变WTCON的值之前应将原有值保存,待测量完成后再复原WTCON。之所以强调这一点,是因为系统别处很可能在使用看门狗功能。
    实验当中,对长度为189字节的字符串采用3次DES加密。密钥长度为15位,测得的加密时间为28832μs,解密时间为28 896μs。缩短字符串长度,测得的加密时间基本呈线性变化:字符串长度为107字节而其他地方不变时,加密耗时16 928μs,解密耗时16 948μs;字符串长度为41字节而其他地方不变时,加密耗时7 424μs,解密耗时7 424μs。对于相同长度的字符串,密钥长度的改变对加密/解密时间的影响不是很大。
    值得一提的是,刚开始实验时,被加密字符串分别取为190字节和75字节,测得耗时分别是34 032μs和16 928μs,显然与倍增的关系相差很远。分析程序后发现,原来问题出在加密算法中间的打印语句“Uan_Printf(“\ncounting begin...!!!”)”上。原来以为它耗时很少,故没有将它从加密算法中移走;移走后再试,耗时大减,分别为29 600 μs和12 496μs,与字符数倍增、时间倍增的预期基本相符。上面的实验,还使笔者得知该打印语句占用了4432μs。稍微修改条件,继续实验:当上述打印语句的字节数扩充为原来的4倍时,测得该语句耗时17728μs。可见,耗时与打印内容的字节数基本上成正比;另外,这种打印语句与加密/解密算法本身相比,并不是想当然地只占用一点点时间。(上述数据与PC机串口通信波特率的设置无明显关系。实际测试结果为:波特率由115 200bps下降到57 600 bps,没有可以察觉到的差别。)

3 测量方法讨论
    ARM内置看门狗用作时间度量的适用范围,大体以μs数量级为界。比如,从S3C44BOX的器件特性说明中可知,MCLK在看门狗计时器里的分频比至少是1/16。典型情况下,MCLK=60MHz,则看门狗能够分辨的最短时间单元t=l/(60 MHz/16)=0.27μs。统计误差约为t/2,即O.1μs数量级。就μs级的时间测量精度而言,相对误差有可能达到1%~10%;不过,这对很多速度估算的场合来说还是可以接受的。如果被测时间在10μs以上,那就没有任何问题,可以认为是相当精确的了。
    这种思路还可用来实现精确延时,因为它的定时不依赖于指令执行时间(指令执行要受到系统调度等的影响,因而有很多不确定因素),而取决于对主时钟的硬件分频计数。
    由此实验推广,ARM内置看门狗可以作为此类系统中的第二时钟存在。对于那些时间要求精确到μs、RTC的精度无法满足的应用,这种处理都不失为一种准确、高效的方法。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭