Symbian OS的硬件——计时器

在第五章,内核服务,我将解释EKA2的毫秒计时器的使用。EKA2使用11毫秒滴答计时器驱动时间分片和计时器队列,并追踪挂钟时间(wall clock time)

产生规则的不带漂移的1毫秒中断的高速计时器,提出了最小的硬件需求。计时器计数器必须是可读写的,最大的周期时间必须有数秒之长。

计时器时钟源的速度对Symbian OS而言并不重要,但是通常介于32kHz1MHz。时钟源越慢,消耗的电量就越少,而快速率的时钟,又可以在内核的毫秒滴答之外提高计时器的灵活性(参见图2.5)

与一系列32位匹配寄存器(match register)相结合的32位自由运转(free-running)计数器,是首选的硬件实现,这些匹配寄存器可产生计时器中断。这样的实现使得可以用简单的软件方案来解决抗抖动,抑制空闲滴答和仿形。自动再装载倒数计秒计时器是一个可选的硬件选项,但它们的灵活性很小。

 

2.5 带有三个匹配寄存器的高速计时器

 

带有匹配寄存器的毫秒计时器的普通操作很简单。外部时钟源驱动计数器,在每个增量上,都要检验匹配寄存器。如果它们相匹配,就产生它们的中断行,毫秒计时器ISR将执行,接着将发生内核毫秒滴答处理,然后ISR通过往匹配寄存器上加1ms时钟滴答把中断重新排队。

计数器总是允许自由运转(free-running)的,同时匹配寄存器总是在前一个匹配值上产生增量。这个过程引起一个自由漂移的毫秒中断。如果输入时钟频率不是1Hz的精确倍数,通过在每毫秒中断上增加或移除少量额外的时钟周期,抗抖动软件将驱动一个一般为1ms的计时器。

为了让内核在CPU睡眠的时候也能精确地跟踪时间,计时器输入时钟和计数器电路必须从一个独立于核心的电源中被加电。

要调试运行在高速计时器系统上的软件,JTAG调试器硬件必须在中断CPU的时候挂起计时器。JTAG调试器通过往计时器时钟里输入一个DEBUG_HALT信号来完成这个工作。在进行单步调试时,停止计时器保证了OS不会被计时器中断所淹没,也保证了内核计时器队列不会因为太多不可预测的时间流逝而遭到破坏。

实时系统里需要多个计时器,即使EKA2本身只需要一个。对于有亚毫秒级定时需求的外设,比如那些为写完成轮询NOR闪存的外设,要使用一个额外的计时器。剩下的计时器可以用于精确的性能剖析。

=====================================================================================

说明: 本文由Bequan翻译自Symbian Press的Symbian OS Internals: Real-time Kernal Programming一书。任何人需要转载或引用,请先通过Email(a-pangu@163.comsymbianchn@gmail.com)与Bequan联系,在获得许可后方可转载或引用,否则视为侵权行为。转载或引用时,请在文章中注明上述翻译信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值