Contiki 系统rtimer 库提供了对实时任务(可预测执行时间)的调度和执行,为了允许更高的时钟分辨率,rtimer 库使用自己的时钟模块调度。函数RTIMER_NOW() 以时钟滴答的形式获取当前系统时间, 函数RTIMER_SECOND 指定每秒时钟滴答数。
与其他的Contiki 系统定时器库不同,为了立即执行任务,实时任务会抢占正常执行进程的控制权,这需要对实时任务中能做什么加以限制,因为大多数函数不处理抢占执行。中断安全函数,例如process_poll()在实时任务中总是安全的,但是任何与正常执行可能冲突的进程必须实现同步。实时任务可以使用函数RTIMER_TIME(struct rtimer *t)检索任务上次执行时所需的时间。(www.xing528.com)
rtimer 库在core/sys/rtimer.c 中实现,它是平台独立的并且依赖于程序rtimer⁃arch.c 处理与平台相关的功能,如调度。当移植rtimer 库时需要实现三个函数,如上所示。rtimer 库调用rtimer_arch_init()函数初始化rtimer 库架构代码,rtimer_arch_now()函数用于获取当前rtimer系统时间,rtimer_arch_schedule()函数用于在指定时间安排调用函数rtimer_run_next()、rtimer_arch_schedule(),函数的参数wakeup_time 是唤醒回调的请求时间。除了这三个函数,rtimer 库架构代码需要定义宏RTIMER_ARCH_SECOND 作为每秒的时钟滴答数以及用于rtimer 时间的数据类型rtimer_clock_t,这些都是在rtimer-arch.h 文件中声明的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。