推荐官网:http://www.contiki-os.org/
在官网的Get Started页面下,有关于instant contiki的介绍和安装过程,如果英文不是太差,可以进去看原版。
下面是全文翻译(截图参见官网)
一、安装Instant Contiki
1、关于Instant Contiki
Instant Contiki是一个完整的Contiki开发环境。它就是一款运行在VMWare player上的Ubuntu Linux虚拟机,并且拥有Contiki和所有开发该Contiki系统的开发工具、编译器和仿真器。
Instant Contiki如此方便以至于Contiki开发的中坚分子都使用它。
我们就从下载Instant Contiki、安装VMWare Player和启动Instant Contiki开始。
2、下载Instant Contiki
这是一个超过1GB的大文件,在下载时请勿解压。(建议用下载工具)
下载页面:http://sourceforge.net/projects/contiki/files/Instant%20Contiki/
3、安装VMWare Player
下载和安装VMWare Player。它是免费下载但需要注册,要让它的网络正常工作,或许需要重启计算机。
下载页面:https://my.vmware.com/web/vmware/free#desktop_end_user_computing/vmware_player/7_0
4、运行Instant Contiki
a)启动Ubuntu
通过运行InstantContiki2.6.vmx来启动Instant Contiki。等待虚拟Ubuntu Linux的启动。
b)登陆
登录Instant Contiki 系统,密码是user。
二、开始Cooja
1、关于Cooja
Cooja是Contiki网络模拟器。它可以仿真大型和小型contiki模型(motes 暂译为模型)的网络。这些模型可以做硬件级的模拟,虽然慢但可以详细检查系统行为;也可以在一个相对不是很详细的仿真,这样速度可以更快,也更适合大型网络。
2、打开终端窗口
运行Cooja,首先要打开一个终端命令窗口。
3、开始Cooja
在命令窗口,进入Cooja目录:
cd contiki/tools/cooja
用下面的命令运行Cooja:
ant run
4、等待Cooja的启动
首次启动,它首先要编译自身,这需要一些时间。
当Cooja完成编译,会显示一个蓝色的空窗口,这表明Cooja启动并运行了,我们可以尝试一个仿真例程。
三、仿真运行Contiki
1、关于Cooja仿真
Cooja是一款非常好用的Contiki开发工具,允许开发者在进行硬件移植前进行代码和系统的测试。开发者可以建立新的仿真去调试软件程序,检查系统的运行。
2、创建新的仿真
a)创建新的仿真
点击File菜单下的New simulation
b)设置仿真选项
Cooja会打开Create new simulation对话框。我们要输入进行仿真的名称
c)Simulatioin窗口
Cooja开始新的仿真。network子窗口展示仿真网络中的所有模型,一开始它是空的,因为在我们的仿真中还没有模型。Timeline子窗口展示了仿真中的所有通信时间,非常方便我们理解网络中所进行的事务。Mote output子窗口展示了所有模型的串口输出。Notes子窗口我们可以对仿真进行记录。Simulation control子窗口可以对仿真进行控制,如开始、暂停和重载等。
3、添加仿真模型
a)添加模型
在开始仿真之前,我们必须添加一个或多个模型。在Motes菜单的Add motes。在第一次添加模型时,我们必须创建一个模型类型,点击Create new mote type,选择一种可用的模型类型。在该例子中,我们选择Sky mote创建一个Tmote Sky仿真模型类型。
b)创建一个新的模型类型
Cooja打开Create Mote Type对话框,为我们的模型类型及其所要运行的Contiki应用取名。
c)寻找Contiki application例程
可以在/home/user/contiki/examples/ipv6/simple-udp-rpl目录下找到大量的Contiki应用,这些应用向我们展示了如何基于IPv6如何进行简单UDP通信。
d)应用程序的C源文件说明
选择broadcast-example.c文件,该文件包括了一个简单的Contiki应用,随机向邻居广播UDP包。点击Open选择该文件。
e)编译Contiki和应用
现在,Cooja将在我们所选择的平台上编译我们选择的Contiki 应用。点击Compile按钮,首次编译会花费至少一分钟的时间。编译输出将展示在窗口底部的白色面板中。
f)创建模型类型
点击Create按钮创建模型类型,窗口将会关闭。
g)添加仿真模型
Cooja会询问我们是否想从新创建的模型类型中添加模型进行仿真。我们在Number of motes 中改变模型的编号为8来进行添加。8
h)添加模型
点击Add motes按钮来添加模型进行仿真。
i)开始仿真
现在我们可以在Network子窗口看到八个我们所添加的模型。点击Start按钮开始仿真。
j)暂停仿真
我们从Mote output子窗口看到仿真模型的输出。Network子窗口展示了网络间的通信情况;Timeline子窗口展示了随时间的通信和无线收发机事件,灰色线条表示ContikiMAC周期性的唤醒无线收发机。点击Pause按钮暂停仿真。
4、完成
现在我们已经创建了基于Contiki节点的第一个Cooja仿真,使用ContikiMAC休眠路由器的功能进行周期性发送IPv6/UDP数据包的仿真(send periodic IPv6/UDP packets with ContikiMAC sleepy router functionaliy)。
四、在硬件上运行Contiki
1、关于Contiki硬件
Contiki拥有一套生成系统,可以让Contiki直接在硬件上运行变得容易。为了转换平台时,开发者对于生成命令仍然熟悉,该生成系统可以兼容不同的硬件平台。该系统由一套makefiles(编译文件)文件组成。基本的编译文件是contiki/Makefile.include,平台编译文件是contiki/platform/*/Makefile.platform 和contiki/cpu/*/Makefile.cpu。
2、连接硬件
在该例程中,我们假设有一个Zolertia Z1模型连接到PC的USB端口。为了Instant Contiki能够和该硬件通信,我们首先需要在Instant Contiki中使能该Z1。这是通过VMWare Player中的Virtual Machine菜单,然后是Removable Devices菜单。
3、打开一个终端,到代码目录
打开一个终端窗口,切换到Hello world例程目录
cd contiki/examples/hello-world
4、编译Contiki和应用程序
为硬件平台编译Hello World应用。这会编译整个Contiki系统,需要花费一些时间。
make TARGET=z1 hello-world
如果打算在选择的平台上进行多次编译,可以让Contiki记下所选硬件:
make TARGET=z1 savetarget
5、下载Contiki到硬件
现在,可以下载编译好的代码到硬件了:
make hello-world.upload
6、注意:
如果看到这样的输出信息,表明Z1没有连接到instant contiki:
make z1-reset z1-upload
make[1]: Entering directory `/home/user/contiki/examples/hello-world'
make -k -j 20 z1-reset-sequence
make[2]: Entering directory `/home/user/contiki/examples/hello-world'
Done
make[2]: Leaving directory `/home/user/contiki/examples/hello-world'
make -j 20 z1-upload-sequence
make[2]: Entering directory `/home/user/contiki/examples/hello-world'
Done
make[2]: Leaving directory `/home/user/contiki/examples/hello-world'
make[1]: Leaving directory `/home/user/contiki/examples/hello-world'
rm hello-world.ihex
此时,检查和PC以及虚拟机的连接,重试。
注意到,我们本来可以用一个步骤完成编译和下载:make hello-world.upload target ,这样在下载到硬件之前,会自动完成应用和Contiki的编译。
7、查看输出
现在已经把代码烧录到硬件设备,我们可以通过串口检查程序的输出。我们运行下面的命令,可以看到我们所连接模型的串口输出。
make login
这样并不会看到任何输出,因为Hello World程序已经运行完毕了。为了去看到输出,按下mote上的复位键。会有以下的输出信息:
Rime started with address 1.1
MAC 01:01:00:00:00:00:00:00 Contiki-2.6 started. Node id is set to 257.
CSMA ContikiMAC, channel check rate 8 Hz, radio channel 26
Starting 'Hello world process'
Hello, world
至此,已经完成了Contiki的仿真和硬件上的运行。
我们可以再仿真和烧录contiki/examples/ipv6/simple-udp-rpl/目录下的broadcast-example 程序,这需要两台硬件设备,它们相互发送低功耗无线IPv6/UDP消息。