关于Contiki中Rime代码的一些分析记录

来源:互联网 发布:c语言新建项目 编辑:程序博客网 时间:2024/06/05 19:59
/*------------------------------------------------------------------------------------------------------*/
2013-02-01
1、
在Contiki中有一个自己的内存管理,方式是预先分配,使用时调用其中的一块。

/*------------------------------------------------------------------------------------------------------*/
2013-01-31
1、
这里选择查看List因为链表是编程中,最常用的一种方式。

函数中,使用二级指针来返回链表头,因为链表头,既是一个指针。
链表头,指向链表的首元素。
这里用的是单向链表。

这里明白为什么是这样做了。
并不是像以前我们自己做的那样,其实就是将链表当做一个线性数组来使用。而这里就是当做一个来管理数据的方式,
因此,是根据各个元素来使用的。
这里以后要慢慢习惯这样的方法。

明白了这里为什么将next指针,放在首位,因为在指针转换时,和转换后的list_t 结构的next指针对应,这样就忽略了具体的结构形式。

应该说在这一点,Contiki做的应该是很好的了。
使用一个公用的链表操作所有的结构体链表。
这里算是一个比较高明的地方。

之前在《系统程序员成长计划》中开篇也是以一个共用链表开始,感觉两个各有优劣。

/*------------------------------------------------------------------------------------------------------*/
2013-01-29
1、
关于stunicast.c中,感觉比unicast.c中多的是多了一层ctimer。有了超时控制。这个可能会使链路的稳定性更好,
超时会有一些处理。
之于stbroadcast.c比于broadcast.c也是这样。多了ctimer控制里边的帧发送。

照此而言,稳定与非稳定,的差异在于时间的控制上。

1.1同时,置于其上的rmh,是使用stunicast等加上了ctimer的函数实现的一组函数调用。

2、
同时,由于Rime并不提供路由等支持,如果要通过Rime实现组网,就需要在实现mesh,route等一些算法的东西。

Rime下的几个文件
| | | |-broadcast.c
| | | |-broadcast.h
| | | |-mesh.c
| | | |-mesh.h
| | | |-rmh.c
| | | |-rmh.h
| | | |-route.c
| | | |-route.h
| | | |-stbroadcast.c
| | | |-stbroadcast.h
| | | |-stunicast.c
| | | |-stunicast.h
| | | |-unicast.c
| | | `-unicast.h

注:
原理见《Rime&Contiki Chameleon》
原创粉丝点击