1. Hello World 入门
任务目标
在Contiki OS环境中创建、编译并烧录第一个程序,使其通过串口输出Hello World,以此验证开发工具链与硬件连接正常,熟悉Contiki项目的基本结构。
环境准备
- 硬件:支持Contiki的节点(如Zolertia Z1、CC2538DK或native模拟平台)
- 工具链:GCC ARM交叉编译器(针对真实硬件)或本机GCC(native模式)
- Contiki源码:从GitHub克隆(
git clone https://github.com/contiki-os/contiki.git) - 烧录工具:
make+ 对应平台的烧录脚本(如z1-reset、cc2538-bsl)
项目结构与核心代码
在Contiki的examples/hello-world/目录下创建项目。核心文件为hello-world.c,实现进程初始化与串口输出:
#include "contiki.h"
#include "dev/serial-line.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();
}
同时需要Makefile(若目录中不存在):
CONTIKI = ../..
all: hello-world
include $(CONTIKI)/Makefile.include
编译与运行
根据目标平台执行编译。以native模拟为例(无需硬件,直接在本机运行):
cd examples/hello-world
make TARGET=native
./hello-world.native
若使用真实硬件(如Z1),则执行:
make TARGET=z1
make TARGET=z1 upload
烧录后打开串口终端(如screen /dev/ttyUSB0 115200),观察输出。
验证方法
- native模式:运行程序后,终端应直接打印
Hello World并退出。 - 真实硬件:串口助手或终端收到
Hello World字符串,且无乱码,说明波特率(默认115200)与程序运行正常。
判定通过条件:程序编译无错误,串口输出与预期完全一致。
常见问题
- 编译报错找不到头文件:确认
CONTIKI路径指向Contiki根目录。 - 串口无输出:检查串口设备权限(
sudo chmod 666 /dev/ttyUSB0)及波特率设置。 - native模式无输出:确认使用
printf而非PRINTF宏(后者在native下默认不输出)。