Contiki中Ctimer遗留的问题

来源:互联网 发布:c语言新建项目 编辑:程序博客网 时间:2024/06/05 16:53
在Contiki中,
Ctimer
中使用的是etimer,
而etimer涉及到System_trick
其中,
这里的时钟,也是有
system_trick终端产生的。

到最后,
可能是对于M3的寄存器不熟悉,
没有找到,
具体设置时间的地方。

有几个问题
1、ctimer判断expire的方式,没有找到,
2、在ctimer中的几个函数指针,找不到源头,这个要留心。看看。
3、对于当前process的使用方式,没有理清楚。

关于问题1:
ctimer_expire()       //core/sys/ctimer.c
--etimer_expire()    //core/sys/etimer.c
----timer_expire()   //core/sys/timer.c

update_time(void)(//core/sys/etimer.c)函数寻找下一个将要expire的时间。

ctimer.c-->etimer.c-->timer.c-->clock.c

依次组成了Contiki中的时钟及时间函数的使用。

在etimer.c中的PT调用timer_expire()判断时间是否expire。

如果expire,则通过事件告知ctimer.c中的PT此etimer已经expire,

则ctimer.c中的PT找到包含相应的etimer的ctimer然后执行设置的回调函数。


关于问题3:

是以前没有弄清楚PT在Contiki中的机制,

现在明白了很多。

这里是在ctimer在使用前需要先初始化。这里的初始化,就在Contiki里添加了ctimer的PT。

etimer的PT是在系统启动时就已经添加的。

PT的调用机制参见《Protothread机制文档(contiki-2.6\doc\pt-doc.txt)》,

《Contiki:Protothread切换机制理解》


原创粉丝点击