3.1 Instant Contiki
安装Contiki的方法有很多种,你可以根据自己的喜好从源码安装,或者直接使用虚拟机。
为了使用Contiki,你需要下面三项:
- Contiki源码
- 目标平台(虚拟平台或真实邮件平台)
- 工具链,编译运行于目标平台上的程序
本书剩下的部分假设Contiki运行在一个Unix环境,比如运行在Ubuntu上的虚拟环境。
3.1.1从源码安装
许多来自大学、研究中心、世界各地的开发者都对Contiki的源码积极贡献自己的力量。Contiki的源码保存在Contiki GitHub仓库:
为了获取源码,你需要打开终端并执行下面的命令:
sudo apt-get -y install git
git clone --recursive https://github.com/contiki-os/contiki.git
什么是git?
Git是为提高开发速度和效率而提供的免费、开源的分布式版本控制系统。
与其它常见版本控制工具不同的是,Git在本地保留有一份仓库拷贝,允许你在本地工作并提交到服务器。
下面是一些学习Git的在线教程:
Code School & Github “try Git”[6]
Roger Dudler’s Git simple guide[7]
Github是一个基于web主机服务器的GIT仓库,提供Git的分布式版本控制和源代码管理功能,以及该网站自身的特性。Github提供了基于web的图像化接口和桌面,访问权限控制,移动集成,以及一些协作特性,比如维基、任务管理、bug跟踪、特征请求。
使用GIT并将代码托管到Github的优点是允许大家fork代码,然后深入开发,最后再将代码贡献回去。
安装工具链和依赖:
sudo echo "deb http://ppa.launchpad.net/terry.guo/gcc-arm-embedded/ubuntu trusty main" > /etc/apt/sources.list.d/gcc-arm-embedded.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key FE324A81C208C89497EFC6246D1D8367A3421AFB
sudo apt-get update
sudo apt-get -y install build-essential automake gettext
sudo apt-get -y install gcc-arm-none-eabi curl graphviz unzip wget
sudo apt-get -y install gcc gcc-msp430
sudo apt-get -y install openjdk-7-jdk openjdk-7-jre ant
上面的命令用于支持ARM Cortex-M3、MSP430平台,支持Cooja。下一节将讨论讨论Contiki的仿真。
3.1.2Instant虚拟机
Instant Contiki是一个完整的Contiki开发环境。它是一个Linux Ubuntu虚拟机,且预装了需要的ContikiOS、开发工具、编译器、仿真器。
从Contiki站点现在Instant Contiki:
最新的版本是基于Contiki源码3.0发布的Instant Contiki 3.0。本书主要依赖于该版本,且不推荐大家使用老版本。
发布标签(tag):
不仅如此,你还应该总是使用Contiki的最新提交的代码,因为Contiki每年都会发布新版本。在最新的master分支上,修复了很多bug,添加了新特性。
下载免费的、被广泛使用的Windows和LInux的VMware Player[8]就可以运行Contiki虚拟机了。在OSX中,你可以下载 VMWare Fusion[9]。
直接使用VMware打开文件Instant_Contiki_Ubuntu_12.04_32-bit.vmx。如果有关于VM源码的提示,直接选择“I copied it”,然后就等待Ubuntu启动吧。
登录Instant Contiki。用户名和密码是“user”。
不要忘记更新Contiki仓库、获取最新源码:
cd /home/user/contiki
git fetch origin
git pull origin master
[6]:https://try.github.io/levels/1/challenges/1
[7]:http://rogerdudler.github.io/git-guide/
[8]:https://my.vmware.com/web/vmware/free#desktop_end_user_computing/vmware_player/6_0