引言:
在无线传感器的领域之中,Contiki是一个很好的开源框架。在IAR工作环境当中,利用Contiki框架对无线传感器模块进行烧写。接下来,就让笔者粗略分析一下Contiki框架的内容以及工作原理。
- 1)以下是在IAR工作环境中的一段简易的利用Contiki编写的部分源码。
大致过程是:将编写的程序以单个进程为载体调用Contiki框架中的库文件,依次调用库文件执行相应的操作。
- 2)接下来分析一下Contiki进程头文件process.h以及源文件process.c:
头文件process.h当中是对源文件process.h的一些宏定义,故在此不加以叙述,重点分析一下进程的源文件process.c
源码如下(版权问题,仅供参考):
内核进程代码部分:
//版权所有,仅供读者学习参考
/*
* Copyright (c) 2005, Swedish Institute of Computer Science
* All rights reserved.
* /
#include <stdio.h>
#include "sys/process.h"
#include "sys/arg.h"
/*
* Pointer to the currently running process structure.
*/
struct process *process_list = NULL;
struct process *process_current = NULL;
static process_event_t lastevent;
/*
* Structure used for keeping the queue of active events.
*/
struct event_data {
process_event_t ev;
process_data_t data;
struct process *p;
};
static process_num_events_t nevents, fevent;
static struct event_data events[PROCESS_CONF_NUMEVENTS];
#if PROCESS_CONF_STATS
process_num_events_t process_maxevents;
#endif
static volatile unsigned char poll_requested;
#define PROCESS_STATE_NONE 0
#define PROCESS_STATE_RUNNING 1
#define PROCESS_STATE_CALLED 2
static void call_process(struct process *p, process_event_t ev, process_data_t data);
#define DEBUG 0
#if DEBUG
#include <stdio.h>
#define PRINTF(...) printf(__VA_ARGS__)
#else
#define PRINTF(...)
#endif
process_event_t
pro