IoT开发实战:CoAP卷【3.0】

10.3.2 native入门示例

下面我们在Instant Contiki中实现一个最为简单的“hello world”示例,该示例位于examples/hello-world目录中,通过cd指令进入该目录后运行“make TARGET=native”便可生成可执行文件,具体操作步骤如下:

# 进入hello-world目录cd ~/contiki/exapmples/hello-world # 使用native平台

make TARGET=native

TARGET参数用于指定平台,native平台是Contiki所支持的平台中较为特殊的平台,native平台一般特指Linux平台,该平台在Linux系统内仿真Contiki系统所需的运行环境。此时经make编译获得的可执行文件为hello-world.native,该文件可在Linux系统中直接运行。在控制台中输入“./hello-world.native”可获得类似输出。

# 运行可执行文件./hello-world.native
./hello-world.native
# contiki-main.c中输出
Contiki-3.x-2906-g14bfaff started with IPV6, RPL
Rime started with address 1.2.3.4.5.6.7.8
MAC nullmac RDC nullrdc NETWORK sicslowpan
Tentative link-local IPv6 address fe80:0000:0000:0000:0302:0304:0506:0708
# hello world.c中输出
Hello, world
# 使用Ctrl+c 退出

控制台中除了输出“Hello,world”之外,还给出了很多提示信息,这些提示信息由native平台下的contiki-main.c中输出,而hello-world.c中仅输出“Hello,world”。下面我们再来分析helloworld.c文件,hello-world.c的具体实现如下:

代码清单10-1 native hello-world.c

#include "contiki.h"
#include <stdio.h>
PROCESS(hello_world_process, "Hello world process");
AUTOSTART_PROCESSES(&hello_world_process);
PROCESS_THREAD(hello_world_process, ev, data)
{
PROCESS_BEGIN();
printf("Hello, world\n");
PROCESS_END();
}

虽然hello-world.c示例非常简单,但已经包括了protothread机制涉及的常用宏定义——PROCESS(…)、PROCESS_THREAD(…)、PROCESS_BEGIN()、PROCESS_END()和AUTOSTART_PROCESSES(…)。

·PROCESS(hello_world_process,"Hello world process"):PROCESS宏用于任务声明,此处声明一个hello_world_process任务。

·AUTOSTART_PROCESSES(&hello_world_process):AUTOSTART_PROCESSES宏用于设置“自启动”任务,hello_world_process任务加入到自启动任务列表中,Contiki操作系统完成初始化工作之后便会启动该任务。

·PROCESS_THREAD(hello_world_process,ev,data){}:在任务主体中,任务主体总是以PROCESS_BEGIN()开始并以PROCESS_END()结束,此处hello_world_process任务中并没有while(1)循环结构,所以任务运行一次。

10.3.3 安装交叉工具链

一个入门级别的“Hello World”示例虽然并没有太多的使用价值,但

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinaryStarXin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值