TinyOS的安装

TinyOS的安装是一件麻烦的事情,它不像其他的开发环境那样配置简单。要想成功安装好TinyOS,需要选择好PC操作系统,TinyOS安装文件的版本,工具链的版本……。总之,安装过程中很容易失败,而且失败原因是无法得知的。因为就算出错了,你也很少有机会可以搜索得到相关资料。

准备工作

对于1.x:

成功的安装经验是:选择Windows XP作为PC操作系统,Cygwin模拟环境,TinyOS 1.1.14nesc 1.1.1JDK 1.4.x

说明:(1)或许Windows 7也是可以的,因为网上看到有人在Windows 7上装过。但是本人是在XP英文版纯净系统上安装成功的。

(2)Cygwin是必不可少的。这里的建议是到官网下载一个离线安装包(tinyos-cygwin-1.1.zip)。这是一个压缩文件,解压之后运行install.bat文件,就可以完成Cygwin的安装。

(3)TinyOS 1.1.14及以上的版本才包含Deluge协议,因此这是个值得注意的地方。版本要选择对。

(4)选择Nesc 1.1.1-2.cygwin.i386.rpm这个安装包,因为TinyOS 1.1.14要求依赖的nesc版本高于1.1.0。

(5)JDK 1.4。这是一个古老的版本,在CSDN上面有下载。为什么依赖于1.4呢?事实上本人也试过1.5,但是编译TinyViz的时候不通过。因为在JDK 1.4中enum这个单词可以作为变量标识符,而在JDK 1.5中enum已经变成关键字了……

(6)安装包下载:

安装步骤(详细步骤在这里):

(1)安装JDK,配置好环境变量,注意将当前目录“.”加入到CLASSPATH中去。

(2)安装Cygwin,解压文件直接运行install.bat文件。

(3)安装graphviz-1.10.exe,TinyViz需要这个工具提供可视化绘图

(4)打开Cygwin shell,进入到工具安装包所在目录,运行命令:

$ rpm –-ignoreos –ivh *.rpm

这条命令将先后安装所有的工具链,--ignoreos选项指明安装的时候忽略操作系统类型。

(5)检查环境:toscheck。得到的结果是complete without errors最好,一些警告也是无伤大雅的。

(6)编译TinyViz工具:make。这里有个问题,要在(/opt/tinyos-1.x/tools/java/net/tinyos/sim/Makefile)中添加net/tinyos/message/avrmote/*.class,否则TinyViz中显示的传感器节点指示灯是不会闪的。有可能需要先进入message/avrmote文件夹下运行make命令编译好.class文件,不然编译TinyViz会以失败告终。

对于2.x:

成功的安装经验是:选择Ubuntu 13.04 Server版本,增加TinyOS官方源

说明:(1)刚开始选择的是ubuntu 13.04 desktop版本,在安装的时候总会出现各种各样的依赖错误。无法正常完成安装步骤,更换到Server版本之后,世界清静了。

(2)添加TinyOS官方源。然后更新源列表信息,安装需要的软件。

$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get install tinyos-*   // 选择具体的TinyOS版本

(3)到这里貌似完事了,跑了几个自带例子,也能正常运行。2.x不需要安装JDK,其工具链是采用Python编写的。

安装步骤:

具体的安装步骤,在后面的参考链接中给出。Debian系操作系统的安装还是比较简单,其他的操作系统看官方教程就知道有多麻烦了。

可能出现的问题

(1)toscheck/tos-check-env

这个命令用于检查TinyOS的环境是否已经安装成功。一般如果出现GraphViz和JDK相关的警告,关系不大。本人在Cygwin下安装TinyOS 1.x的时候,配置好环境后toscheck检查无错误无警告。注意:toscheck这个命令是针对TinyOS 1.x而言的,在2.x下已经变成tos-check-env了。

(2)printenv

printenv命令查看环境变量。常常检查的一个命令是MAKERULES。一般情况下,MAKERULES的值是指向一个makerules文件,通常可以通过export MAKERULES = /opt/tinyos-1.x/apps/Makerules来指定。编译的时候需要这个东西,以便让TinyOS的make系统搜索相关的库文件。

(3)可能由Python.h头文件带来的错误,网上都可以搜得到。如果在/usr/include/pythonx.x/下面找不到这个头文件,那么需要安装一下Python开发包:

$ sudo apt-get install python-dev

然后在sim.extra文件中添加一条:CFLAGS += /usr/include/pythonx.x/,另外还得将PYTHON_VERSION这个变量改成系统中对应的版本。如此一来,编译应该是没问题了。

(4)由于本人是利用TinyOS来进行仿真实验,因此并没有遇到Mote硬件相关的问题。

参考链接:

1. http://www.tinyos.net/dist-1.1.0/

2. http://sing.stanford.edu/tinyos-wiki/index.php/Main_Page

3. http://blog.csdn.net/smartxxyx/article/details/7798889

4. http://blog.csdn.net/utnewbear/article/details/6233475 推荐博客

5. http://www.tinyosstudy.com/

TinyOS和Deluge的安装模拟(二)的更多相关文章

  1. TinyOS和Deluge的安装模拟(一)

    介绍 TinyOS是一款嵌入式操作系统,相信做无线传感器网络开发的同志们都不陌生.同类型的系统有不少,但是TinyOS的应用较之其他系统更为广泛.TinyOS 1.x版本和2.x版本是目前主要的两个分 ...

  2. zookeeper+kafka集群安装之二

    zookeeper+kafka集群安装之二 此为上一篇文章的续篇, kafka安装需要依赖zookeeper, 本文与上一篇文章都是真正分布式安装配置, 可以直接用于生产环境. zookeeper安装 ...

  3. 云计算之KVM安装(二)

    云计算之KVM安装(二) 调整虚拟机 虚拟化Intel使用的是intel VT-X AMD使用的是AMD-V 创建虚拟机步骤 1.准备虚拟机硬盘 2.需要系统iso镜像 3.需要安装一个vnc的客户端 ...

  4. 从源码(编译)安装golang 二

    h1 { margin-top: 0.6cm; margin-bottom: 0.58cm; direction: ltr; color: #000000; line-height: 200%; te ...

  5. MySql5.7.11 for Windows 安装(二)

    原文:MySql5.7.11 for Windows 安装(二) 安装之后,首先创建data文件夹(旧版本本来就有),管理员打开cmd,cd到bin文件夹,输入 mysqld –initialize- ...

  6. 国内不fq安装K8S二: 安装kubernet

    目录 2 安装kubelet 2.1 环境准备 2.2 设置国内的源 2.3 重要的设置 2.4 获取镜像 2.5 使用kubeadm init初始化集群 2.6 安装Pod Network 2.7 ...

  7. Oracle 12cR1 RAC集群安装(二)--使用图形界面安装

    Oracle 12cR1 RAC集群安装文档:Oracle 12cR1 RAC集群安装(一)--环境准备Oracle 12cR1 RAC集群安装(二)--使用图形界面安装Oracle 12cR1 RA ...

  8. Apache Hadoop集群离线安装部署(二)——Spark-2.1.0 on Yarn安装

    Apache Hadoop集群离线安装部署(一)——Hadoop(HDFS.YARN.MR)安装:http://www.cnblogs.com/pojishou/p/6366542.html Apac ...

  9. 牛客新年AK场之模拟二维数组

    链接:https://ac.nowcoder.com/acm/contest/3800/D来源:牛客网 题目描述 Rinne 喜欢使用一种奇怪的方法背单词,现在这些单词被放在了一个 n×mn \tim ...

随机推荐

  1. centos7 memcached+memagent 集群

    1. 安装libevent wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libe ...

  2. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.2,增加离线消息、离线文件功能(源码)

    (几句题外话:虽然就如何将GG发展为一个有商业价值的产品,我还没有很清晰明确的思路,但是从GG发布以来,通过GG认识了一些朋友,也接了一些小单子,赚了一点小钱.有了一点甜头,目前和2.3个好朋友一起做 ...

  3. 作业七:团队项目——Alpha版本冲刺阶段-13

    对项目最后进行了完善. 代码如下: public void chapRule(int Man ,JLabel play,JLabel playTake,JLabel playQ[]){ //当前状态 ...

  4. 解决Win7 软件图标不显示--Win7图标异常,快捷方式不显示解决方法

    电脑症状:WIN7的系统,桌面上的图标显示的不正常,快捷方式显示的是未知程序.看不到程序默认图标,快捷方式图标不显示. 解决方法:删除程序图标缓存即可.   将下面的内容复制到记事本保存为“Repai ...

  5. 两段for循环代码的区别

    第一段: #include<iostream>using namespace std;int main(){ int a; int x; for(a=0,x=0;a<=1&& ...

  6. JavaScript包装对象

    JavaScript是面向对象的语言,使用”.”操作符可以访问对象的属性和方法,而对于基本类型(null, undefined, bool, number, string)应该是值类型,没有属性和方法 ...

  7. C++ static

    本文主要记录的C++中static的一些内容,内容简单,仅仅作为梳理一下知识,如有错误请留言指出. static的作用 在函数体,一个被声明为static的变量,在这一函数被调用的过程里,其数值维持不 ...

  8. Java生成验证码原理(jsp)

     验证码的作用: 验证码是Completely Automated Public Turing test to tell Computers and Humans Apart(全自动区分计算机和人类的 ...

  9. 知方可补不足~SQL2008中的发布与订阅模式

    回到目录 作用:完成数据库与数据库的数据同步 原理:源数据库发布需要同时的表,存储过程,或者函数:目标数据库去订阅它,当源发生变化时,目标数据库自己同步,注意,由于这个过程是SQL自动完成的,所以要求 ...

  10. Java程序员的日常 —— Java类加载中的顺序

    之前说过Java中类的加载顺序,这次看完继承部分,就结合继承再来说说类的加载顺序. 继承的加载顺序 由于static块会在首次加载类的时候执行,因此下面的例子就是用static块来测试类的加载顺序. ...