一.系统层次结构
一个基于Contiki嵌入式系统的层次结构如图1所示,很明显,移植Contiki主要的工作是开发对应硬件的“板级层”软件包,同时解决Make工程的各种错误。
图1 Contiki系统层次结构
二.移植思路
移植一个嵌入式操作系统的大致流程如下,Contiki也不例外:
1. 阅读该系统的原理论文和说明手册,建立整体概念;
2. 下载该系统的源代码,理清各文件的组织结构;
3. 先移植该系统的kernel部分,将来按需移植其他功能模块;
4. 列出移植所需功能模块的源文件和详细步骤;
5. 建立(或加入)工程,将移植文件并入该工程之中;
6. 开发一个最简单的测试该移植功能模块的进程(或线程);
7. 边Make边修改,直到上述工程Make成功;
8. 调试测试进程,确认移植任务成功。
三.工程文件
如图2所示,文件夹包括了基于Contiki无线通信模块系统的软件代码:
Project IAR环境下所有工程文档
Contiki Contiki操作系统
RF SX1278射频芯片驱动代码
Driver 驱动:CMSIS和MCU外设驱动文件
Application 应用程序,以Contiki系统的protothread方式组织
main.c 基于C语言系统的入口函数
main.h 系统的全局配置文件
图2 Contiki系统文件组织
考虑2种情况,首先需要升级Contiki更高版本的软件,其次需要将Contiki移植到不同的硬件平台。为了尽可能地减少升级和移植的工作量,增加了ports文件夹,ports目录中文件与core目录中文件低耦合。
四.移植内核
如果仅仅只移植Contiki的内核,那么还是比较容易的,一般说来只需要修改2个文件:clock.c和contiki-conf.h。
clock.c有2个函数需要适配对应硬件平台:
void clock_init(void);设置一定时器,每秒产生CLOCK_SECOND个tick;
void SysTick_handler(void); tick中断时递增时间,检测是否有超时事件;
contiki-conf.h:设置contiki系统的一些参数,如:CLOCK_CONF_SECOND=100;
作者简介:
蒋俊,男,硕士研究生,现任长沙市锐米通信科技有限公司CEO。
从事通信研究与嵌入式开发10年,主攻微功率无线网络。
精通LoRa无线扩频通信,无线星型/树型/MESH网络设计;
通晓Contiki,Linux,uC/OS-II,OSAL等操作系统;
熟悉ARM,DSP,STM8,PIC,PC104等处理器;
擅长AD,RF等集成IC开发。
Web: www.rimelink.com
EMail: jiangjunjie_2005@126.com
QQ群:35212129