1. 自己曾经有一个月都在关注安装问题,必须在WIN XP32位下安装,中英文都可以。经过测试,在win vista和win7 64位(24G内存,必须用64位系统)下都失败了。其实主要是cygwin的原因。我使用的平台:
软件平台是Window 7 64bit 下挂VM模拟xp 32位,在xp 下挂Cygwin运行TinyOS 1.x.
同时安装了双系统,也有ubuntu,但一直没安装成功。
手头没有64位的xp,所以其实给虚拟机我也只是分配3G内存,分多了也没有意义(可惜了我的24G内存和X58的主板啊!)。我没有在4G以上的内存上运行过tinyos1.3,不知道在64位系统上,是否能有改观?或者tinyos1.x能不能支持64位?
我正在学习使用ubuntu10.04 64bit 去运行 tinyos1.x,但安装是个问题:
第一, 没有教程在linux 64位系统下安装tinyos1.x
第二, 在linux 64位下安装java都很痛苦
第三, Sourceforge的CVS登录不上去,非常的痛苦。
有解决了的同学请不吝赐教,谢谢!
所以本blog当中,所有的实验,仿真,讨论都是基于xp 下Cygwin运行中TinyOS 1.x。
2. 安装完成以后必须设置Java的path和classpath。
Path 设置方法:在Path变量的“编辑系统变量”对话框中,在“变量值”文本框中先输入一个“;”,接着输入JDK bin目录的路径(这里假设是C:/Program Files/Java/jdk1.5.0_06/bin),然后单击“确定”按钮即可完成设置。
Classpath设置方法:有几个方法可以设置Classpath,最简单的方法是在系统变量中新增Classpath环境变量。在“系统变量”下单击“新建”按钮,在“变量名”文本框中输入Classpath,在“变量值”文本框中输入Java类文件的位置。例如可以输入“.;C:/Program Files/Java/jdk1.5.0_06/lib/tools.jar; C:/Program Files/Java/jdk1.5.0_06/lib/rt.jar”(jar文件是zip压缩格式,其中包括.class文件和jar中的Classpath设置),每一路径中间必须以;作为分隔。
3. 用如下命令来测试安装:
$ cd /opt/tinyos-1.x/tools/scripts
$ ./toscheck
在这里多说一句:
使用toscheck检查,最常见的问题是会出现没法使用其自带的Java编译环境的情况。一般来说是Java编译环境的问题,会提示一个Warning,说java编译版本不对之类的。你电脑本身已经安装过java或者已经有了别的版本的java编译器。如果你烦这个warning,可以按照如下步骤解决:第一,删掉所有Windows平台上已经安装的Java编译环境的环境变量设置,第二,在Path里添加Cygwin自带的Java编译环境的路径,如C:/Program Files/UCB/jdk1.4.1_02/j2sdk1.4.1_02/bin,添加时注意将它添加在Path所有变量值的最开始。 不过根据我的经验来说,没有必要。我的java1.5和tinyos1.x在一起工作的好好的,没什么问题。不过听说java1.6就不是那么好了,但是具体到兼容性错误,我还没遇到过。
4. 测试blink
在1号窗口中输入
进入blink的目录 cd opt/tinyos-1.x/apps/blink
编译在pc平台上 make pc
使用该命令让debug的结果显示在LED上 export DBG=led
进入该目录,并执行main.exe开始模拟程序 ./build/pc/main.exe –gui 2
在2号窗口中输入
找到tinyviz程序的位置cd opt/tinyos-1.x/tools/Java/net/tinyos/sim
编译一下tinyviz make
执行./tinyviz 就可以看到运行结果了。
5. tinyviz可能会出现 TOSmag 找不到的情况(从而出现tinyviz能显示节点,但是不会闪动)对于tinyviz中无法显示节点的变化的问题:采用如下方式解决
修改C:/Program Files/UCB/cygwin/opt/tinyos-1.x/tools/java/net/tinyos/sim下的makefile文件,建议用UltraEdit打开。
net/tinyos/packet/*.class /
net/tinyos/message/*.class /
net/tinyos/message/avrmote/*.class / 新加入行!
org/apache/oro/text/regex/*.class /
org/python/compiler/*.class /
不然在tinyviz中无法显示接点的变化!!!
个人的一点感触!!!
选择系统版本的艰难抉择:
当然,学习和使用新软件和新语言, 一般都是选取最新的语言版本。学会了新的,自然老的也就是明白。毕竟新版本是在老版本上面发展而来,只会的对老的进行改进和修正,并给予强化。但是tinyos却彻底颠覆我的这个传统观念,tinyos1.x和2.0编译方式和代码使用方式都是不兼容的!也就是说tinyos1.x和2.x的代码是绝对不能混用的。说难听点,可以认为这是两种不同的语言。
在初学tinyos的时候,选择的是2.0。 两个重要的原因, 第一是导师推荐,第二是相对1.x而言,tinyos2.0有官方正式出版的教材。但是由于tinyos本身非常难上手,加上2.0中运行TOSSIM的时候非常的痛苦,需要使用Python(当时还不知道这个是什么,以为是另外一种专门的语言)去定义很多实验参数,撰写实验脚本,更重要的是没有图形界面(tinyviz),即使模拟成功也是没有什么可见的成果。当时的我,连nesc源程序都看不懂,更不要说去编写python的脚本程序来控制模拟。浑浑噩噩的花了半个多学期去熟悉tinyos2.0 发现自己什么都没有学会,而且什么都没有做出来,挫败感极强。甚至开始怀疑自己的能力,还有考虑自己能不能毕业。压力极大。
在不得已的情况下,转回到tinyos1.x,发现1.x比较容易上手,而且相对来说入门,安装也比较容易(虽然其实还是极难),但至少有all in one 的install包。安装成功以后,轻松就成功模拟出blink,看着图形界面中节点上红色闪烁,心中的满足感由生。所以选择从tinyos-1.x学起。注意:这里说的是“学起”,换句话说,以后可能还是逃不了tinyos2.0的折磨。