• IIANews微官网
    扫描二维码 进入微官网
    IIANews微信
    扫描二维码 关注微信
    移动客户端
  • English
IMS2024中国智能制造发展论坛
I/O 设备

ARM内核目标系统中的代码运行时间测试

  2008年03月11日  

  摘要 很多测量时间的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的精度无法满足的应用,这种处理都不失为一种准确、高效的方法。

最新视频
SAP赋能企业数字化转型,实现高质量发展   
再临 AUTOMATE,仙工智能明星产品齐上分   
魏德米勒30周年
剑维软件-重构传统人机界面(HMI)
《边缘计算助推IT/OT融合,加速共享数字计划》白皮书
施耐德电气:中压配电和电网自动化
大族机器人
专题报道
第三届EESA储能展
第三届EESA储能展为加快适应储能规模化发展的步伐,促进储能行业进一步良性发展,共促新能源产业的融合,第三届EESA储能展将于2024年9月2-4日在国家会展中心(上海)举办。
企业通讯
图尔克智能数据解决方案
图尔克智能数据解决方案

资源保护、可持续发展和工业数字化转型是机器和设备制造商以及像图尔克这样的自动化专家和解决方案提供商同样关注的三大趋势。在

魏德米勒开放式自动化平台u-OS
魏德米勒开放式自动化平台u-OS

作为工业物联网领域的重要供应商,魏德米勒持续为客户提供专业的数字化解决方案,产品广泛应用于各种行业,满足工业环境下的各种

在线会议
热门标签

社区

ABB 菲尼克斯电气 威图 三菱电机社区 西门子社区 罗克韦尔自动化社区 恩德斯豪斯自动化
施耐德电气 图尔克 伊玛 欧姆龙 巴鲁夫 魏德米勒 唯恩电气
西克 堡盟 ifm 纳博特斯克 万可 凯本隆 山洋电气
施迈赛 皮尔磁 菲力尔 浩亭 劳易测 伦茨 英威腾
海格电气 威琅电气 VEGA 康耐视 item 仙工智能 KUKA
ODU 雄克社区 天机机器人 倍福 MiR 海康机器人 优傲机器人
SRT软体机器人 灵动科技 科尔摩根 快仓智能 ATI 艾利特机器人 安歌科技
大族机器人 奥托尼克斯 研祥金码 雷尼绍 Nidec CT FDT 威强电
霍尼韦尔 迦智科技 Basler社区 史陶比尔连接器 湾测 节卡机器人 研祥智能
Baidu
map