1、编写helloworld源代码
Contiki中每一个应用程序都需要一个单独的文件夹,我们为helloworld!建立一个名为helloworld的文件夹,并在其中创建 helloworld.c和Makefile文件。为了方便,建议将文件夹放在Contiki的examples目录下。
命令 vim helloworld.c
#include "contiki.h"
#include <stdio.h>
/* 声明一个名为 HW 进程 */
PROCESS(HW, "HWP");
/* 这个进程需要自动启动,即当节点启动时启动本进程 */
AUTOSTART_PROCESSES(&HW);
/* HW进程的主体部分 */
PROCESS_THREAD(HW, ev, data)
{
PROCESS_BEGIN();
printf("Hello world!\n"); //此处放自己的代码
PROCESS_END();
}
简单的说就是声明一个进程并声明为自动启动,定义进程主体。
2、编写Makefile文件
创建语句,vim Makefile
CONTIKI_PROJECT = hello-world
all: $(CONTIKI_PROJECT)
/* Contiki源文件根目录,看情况进行修改*/
CONTIKI = /home/user/contiki
include $(CONTIKI)/Makefile.include
3、编译项目
在helloword项目在同一个目录下,命令行中输入
make
输入ls
查看到多出了很多的文件,其中以.native
为结尾的就是我们需要运行的文件
./helloworld.native
运行结果如下所示:(由于Contiki还在运行,需要按Ctrl+C退出程序)
总结一下,Contiki程序开发是以进程的方式实现。创建一个Contiki进程包含两个步骤,声明和定义,由两个宏分别完成。 PROCESS(process_name, “process description”)宏用于声明一个进程;PROCESS_THREAD(process_name, event, data)宏用于定义进程执行主体。
如果进程需要在系统启动时被自动执行,则可以使用AUTOSTART_PROCESSES(&process_name)宏。该宏可以指定 多个进程,如AUTOSTART_PROCESSES(&process_1, &process_2),表示process_1和process_2都会在系统启动时被启动。
进程执行主体代码中,必须以PROCESS_BEGIN()宏开始,以PROCESS_END()宏结束。这是由于Contiki特殊的进程模型导 致的。此外,在进程中不能使用switch语句,慎重使用局部变量,同样也是因为Contiki进程模型的原因。在以后的文章中会详细地说明。