对于嵌入式的操作系统在硬件平台上的移植,一直以来让很多新手望而却步,因为移植一个操 作系统比写一个 c 程序复杂多了,移植过 uCOS-II 的人都知道,要成功移植 uCOS-II 系统到单片机 或者 ARM 中,不是一件容易的事,但是移植 Contiki 系统却很简单,只需要更改一小部分源码即可。 那么究竟怎样移植 contiki 系统到 STM32 上呢?移植过程中需要修改源码的哪一个部分呢?通 过下列的分析,读者就知道了。 Contiki 采用事件驱动机制,那么怎样才能够产生“事件”呢?
#include <stdio.h>
#include <contiki.h>
#include <contiki-net.h>
#include "uart.h"
unsigned int idle_count = 0;
void main(void)
{
clock_init(); //系统时钟初始化
process_init(); //进程初始化
uart1_init(115200); //串口初始化
process_start(&etimer_process, NULL); //启动etimer 进程
printf("success started on STM32F407\r\n"); //串口输出
#if AUTOSTART_ENABLE
autostart_start(autostart_processes); //启动自启进程
#endif
while(1) {
do {
} while(process_run() > 0);
idle_count++;
}
}
程序成功运行后,此时在原理机可观察到 LED 进行有规则的点亮,同时在串口显示区有如下显示
总结
在添加完组目录之后,往组里面添加.c 等文件,添加 contiki 系统文件。在工程 sys 目录名上右击选择“Add->Add Files...” 在工程的 sys 组目录下添加 Contiki 的系统文件:autostart.c、ctimer.c、etimer.c、process.c、timer.c,这几个文件在 Contiki 系统源码的 contiki-2.7\core\sys 目录下。添加 STM32 官方库文件。将 STM32F4xx_StdPeriph_Lib_V3.5.放在 Contiki 系统源码的 contiki-2.7\cpu\arm\stm32f407 目录下。5.创建 contiki-main.c 文件 通过上述的步骤,移植 contiki 系统所需要的 contiki 系统文件、stm32 官方库所需文件都添加完毕,若想让程序要执行就必须要有 main 函数,上面添加的都是一些相应的支持文件,下面在工程的 zonesion\proj 组目录下新建一个 contiki-main.c 文件,添加完.c 文件后,就可以配置工程了。Contiki既利用了事件驱动系统节省内存和高效使用CPU的优势,又实现了多进程系统的阻塞机制从而带来开发便利性。Contiki系统运行在一个无限循环之中,通过查询POLL或EVENT标识调用对应进程的主体函数,充分体现了它建立在事件驱动的基础上。