CentOS-5.5中安装TinyOS 2.1.1

来源:互联网 发布:mysql 用户权限 编辑:程序博客网 时间:2024/05/30 04:23

寒假回来后,闲着没事,把TinyOS 2.1.0又在本本中装了下。结合以前的几次安装经历,把一些问题和解决办法总结归纳了下,希望TinyOS的安装不再困扰你我。

 

 

声明软件包的下载地址:

http://webs.cs.berkeley.edu/tos/dist-2.1.0/tinyos/linux/

 

http://webs.cs.berkeley.edu/tos/dist-1.1.0/tinyos/linux/

 

http://webs.cs.berkeley.edu/tos/dist-2.1.0/tools/linux/

 

http://webs.cs.berkeley.edu/tos/dist-1.1.0/tools/linux/

 

 

还希望你多多比较这几个网址,哈哈,找了好久终于找到了!!!!!!!

 

 

安装环境:
操作系统:CentOS 5.2
TinyOS版本:2.1.0

安装准备:
这次安装主要是根据TinyOS官方网站推荐的手动安装方法:Manual installation on your host OS with RPMs
不过,我在安装过程中有几个软件包没安装成功,换成TinyOS 2.0.2里的软件包就没有问题了。还有就是tinyos-deputy这个软件包在我的CentOS中因缺乏依赖软件包没装成,不过好像不影响后面的安装。这些问题可能是CentOS的问题,其它Redhat系列的Linux系统可能不会出现。具体情况,后面有详细的说明。

安装过程:TinyOS-2.1.0 Installation


============================
Step 1: Install Java 1.6 JDK
============================

[root@Micle tinyos-2.1.0]# ./jdk-6u10-linux-i586-rpm.bin
Sun Microsystems, Inc. Binary Code License Agreement

for the JAVA SE DEVELOPMENT KIT (JDK), VERSION 6


Do you agree to the above license terms? [yes or no]
yes
Unpacking…
Checksumming…
Extracting…
UnZipSFX 5.50 of 17 February 2002, by Info-ZIP (Zip-Bugs@lists.wku.edu).
inflating: jdk-6u10-linux-i586.rpm
inflating: sun-javadb-common-10.4.1-3.1.i386.rpm
inflating: sun-javadb-core-10.4.1-3.1.i386.rpm
inflating: sun-javadb-client-10.4.1-3.1.i386.rpm
inflating: sun-javadb-demo-10.4.1-3.1.i386.rpm
inflating: sun-javadb-docs-10.4.1-3.1.i386.rpm
inflating: sun-javadb-javadoc-10.4.1-3.1.i386.rpm
Preparing…                ########################################### [100%]
1:jdk                    ########################################### [100%]
Unpacking JAR files…
rt.jar…
jsse.jar…
charsets.jar…
tools.jar…
localedata.jar…
plugin.jar…
javaws.jar…
deploy.jar…
Installing JavaDB
Preparing…                ########################################### [100%]
1:sun-javadb-common      ########################################### [ 17%]
2:sun-javadb-core        ########################################### [ 33%]
3:sun-javadb-client      ########################################### [ 50%]
4:sun-javadb-demo        ########################################### [ 67%]
5:sun-javadb-docs        ########################################### [ 83%]
6:sun-javadb-javadoc     ########################################### [100%]

Java(TM) SE Development Kit 6 successfully installed.

Product Registration is FREE and includes many benefits:
* Notification of new versions, patches, and updates
* Special offers on Sun products, services and training
* Access to early releases and documentation

Product and system data will be collected. If your configuration
supports a browser, the Sun Product Registration form for
the JDK will be presented. If you do not register, none of
this information will be saved. You may also register your
JDK later by opening the register.html file (located in
the JDK installation directory) in a browser.

For more information on what data Registration collects and
how it is managed and used, see:

http://java.sun.com/javase/registration/JDKRegistrationPrivacy.html

Press Enter to continue…..

Done.

Java environment variable setting…


+++++++++++++++++++++++++++++++++++++++++++++++++++

现在用linux的朋友越来越多了,前几天就有两个朋友问我linux下怎么配置java环境,我想还有很多朋友想了解学习这方面的东西,就写一个完全一点的linux java环境配置吧,希望对大家有帮助。
一. 下载jdk5.0 for linux
现在用linux的朋友越来越多了,前几天就有两个朋友问我linux下怎么配置java环境,我想还有很多朋友想了解学习这方面的东西,就写一个完全一点的linux java环境配置吧,希望对大家有帮助。

一. 下载jdk5.0 for linux

  到sun的主页 http://java.sun.com/j2se/1.5.0/download.jsp 下载jdk安装文件jdk-1_5_0_05-linux-i586.bin

二. 解压安装jdk

   在shell终端下进入jdk-1_5_0_05-linux-i586.bin文件所在目录,执行命令 ./jdk-1_5_0_05-linux-i586.bin 这时会出现一段协议,连继敲回车,当询问是否同意的时候,输入yes,回车。之后会在当前目录下生成一个jdk-1.5.0_05目录,你可以将它复制到任何一个目录下。

三. 需要配置的环境变量

  1. PATH环境变量。作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把 jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好 PATH变量后,就可以在任何目录下执行javac/java等工具了。

  2. CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。

  3. JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。

四. 三种配置环境变量的方法

  1. 修改/etc/profile文件

    如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。

    ·用文本编辑器打开/etc/profile
·在profile文件末尾加入:

export JAVA_HOME=/usr/java/jdk1.6.0_24
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

此时使用  . /etc/profile 让 /etc/profile生效,注意, "."和"/etc/profile" 之间有空格!

或者就是     

·重新登录
·注解
a. 你要将 /usr/share/jdk1.5.0_05jdk 改为你的jdk安装目录
b. linux下用冒号“:”来分隔路径
c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值
在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种
常见的错误。
d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。
e. export是把这三个变量导出为全局变量。
f. 大小写必须严格区分。

  2. 修改.bashrc文件

这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc文件就可以了。

    ·用文本编辑器打开用户目录下的.bashrc文件
·在.bashrc文件末尾加入:
export JAVA_HOME=/usr/java/jdk1.6.0_24
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    ·重新登录

  3. 直接在shell下设置变量

    不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时候又要重新设置,比较麻烦。

    只需在shell终端执行下列命令:

 export JAVA_HOME=/usr/java/jdk1.6.0_24
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

五. 测试jdk

  1. 用文本编辑器新建一个Test.java文件,在其中输入以下代码并保存:

    public class test {
public static void main(String args[]) {
System.out.println("A new jdk test !");
}
}

  2. 编译:在shell终端执行命令 javac Test.java

  3. 运行:在shell终端执行命令 java Test

    当shell下出现“A new jdk test !”字样则jdk运行正常。

六. 卸载jdk

·找到jdk安装目录的_uninst子目录
·在shell终端执行命令./uninstall.sh即可卸载jdk

++++++++++++++++++++++++++++++++++++++++++++++++++++

 当然也可以安装jdk1.5 :http://www.oracle.com/technetwork/java/javase/downloads/index-jdk5-jsp-142662.html

================================
Step 2: Install native compilers
================================

Atmel AVR Tools:

[root@Micle tools]# rpm -ivh avr-binutils-2.17tinyos-3.i386.rpm
Preparing…                ########################################### [100%]
1:avr-binutils           ########################################### [100%]
[root@Micle tools]# rpm -ivh avr-gcc-4.1.2-1.i386.rpm
Preparing…                ########################################### [100%]
1:avr-gcc                ########################################### [100%]
[root@Micle tools]# rpm -ivh avr-libc-1.4.7-1.i386.rpm
Preparing…                ########################################### [100%]
1:avr-libc               ########################################### [100%]
[root@Micle tools]# rpm -ivh avarice-2.6-2.fc9.i386.rpm
warning: avarice-2.6-2.fc9.i386.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Preparing…                ########################################### [100%]
1:avarice                ########################################### [100%]
[root@Micle tools]# rpm -ivh avr-insight-6.3-1.i386.rpm
Preparing…                ########################################### [100%]
1:avr-insight            ########################################### [100%]
[root@Micle tools]# rpm -ivh avrdude-tinyos-5.6cvs-1.i386.rpm
Preparing…                ########################################### [100%]
1:avrdude-tinyos         ########################################### [100%]

TI MSP430 Tools:
[root@Micle tools]# rpm -ivh msp430tools-*
Preparing…                ########################################### [100%]
1:msp430tools-base       ########################################### [ 14%]
2:msp430tools-binutils   ########################################### [ 29%]
3:msp430tools-gcc        ########################################### [ 43%]
4:msp430tools-libc       ########################################### [ 57%]
5:msp430tools-jtag-lib   ########################################### [ 71%]
6:msp430tools-gdb        ########################################### [ 86%]
7:msp430tools-python-tool########################################### [100%]

注意使用包http://www.tinyos.net/dist-2.0.0/tools/linux/msp430tools-libc-20050308cvs-20050608.i386.rpm   或者是 http://hi.baidu.com/jerry_916/blog/item/82a4d932ec6fc0f31a4cff99.html

这个包是必须的。

================================
Step 3: Install TinyOS toolchain
================================

[root@Micle tinyos]# rpm -ivh nesc-1.3.0-1.fc9.i386.rpm
Preparing…                ########################################### [100%]
1:nesc                   ########################################### [100%]
[root@Micle tinyos]# rpm -ivh tinyos-deputy-1.1-1.fc9.i386.rpm
error: Failed dependencies:
perl(CilConfig) is needed by tinyos-deputy-1.1-1.fc9.i386
[root@Micle tinyos]# rpm -ivh tinyos-tools-1.3.0-1.fc9.i386.rpm
Preparing…                ########################################### [100%]
1:tinyos-tools           ########################################### [100%]
Installing 32-bit Java JNI code in /usr/java/default/jre/lib/i386 …
done.

==========================================
Step 4: Install the TinyOS 2.x source tree
==========================================

[root@Micle tinyos]# rpm -ivh tinyos-2.1.0-1.fc9.noarch.rpm
Preparing…                ########################################### [100%]
1:tinyos                 ########################################### [100%]

[root@Micle tinyos-2.1.0]# rpm -ivh libpng10-1.0.41-1.fc9.i386.rpm
warning: libpng10-1.0.41-1.fc9.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6df2196f
Preparing…                ########################################### [100%]
1:libpng10               ########################################### [100%]
[root@Micle tinyos-2.1.0]# rpm -ivh graphviz-1.10-1.i386.rpm
Preparing…                ########################################### [100%]
1:graphviz               ########################################### [100%]

====================================
Step 5: Environment Variable Setting
====================================

在/etc/profile中添加以下内容

export TOSROOT=/opt/tinyos-2.x
export TOSDIR=$TOSROOT/tos
export CLASSPATH=$TOSROOT/support/sdk/java/tinyos.jar:.
export MAKERULES=$TOSROOT/support/make/Makerules

Now we can check the setting

[root@Micle tinyos-2.1.0]# source /etc/profile
[root@Micle tinyos-2.1.0]# tos-check-env

如果打印出 tos-check-env completed without error. 就说明安装成功。

========================
Step 6: Application Test
========================

[root@Micle Blink]# make sim micaz
mkdir -p simbuild/micaz
placing object files in simbuild/micaz
writing XML schema to app.xml
compiling BlinkAppC to object file sim.o
ncc -c -shared -fPIC -o simbuild/micaz/sim.o -g -O0 -tossim -fnesc-nido-tosnodes=1000 -fnesc-simulate -fnesc-nido-motenumber=sim_node\(\)   -Wall -Wshadow -Wnesc-all -target=micaz -fnesc-cfile=simbuild/micaz/app.c -board=micasb -DDEFINED_TOS_AM_GROUP=0×22 –param max-inline-insns-single=100000 -DIDENT_APPNAME=\”BlinkAppC\” -DIDENT_USERNAME=\”root\” -DIDENT_HOSTNAME=\”Micle\” -DIDENT_USERHASH=0xe2d9fbc0L -DIDENT_TIMESTAMP=0×498d5d41L -DIDENT_UIDHASH=0xc57da707L -Wno-nesc-data-race BlinkAppC.nc   -fnesc-dump=components -fnesc-dump=variables -fnesc-dump=constants -fnesc-dump=typedefs -fnesc-dump=interfacedefs -fnesc-dump=tags -fnesc-dumpfile=app.xml
compiling Python support and C libraries into pytossim.o, tossim.o, and c-support.o
g++ -c  -shared -fPIC -o simbuild/micaz/pytossim.o -g -O0 -DIDENT_APPNAME=\”BlinkAppC\” -DIDENT_USERNAME=\”root\” -DIDENT_HOSTNAME=\”Micle\” -DIDENT_USERHASH=0xe2d9fbc0L -DIDENT_TIMESTAMP=0×498d5d41L -DIDENT_UIDHASH=0xc57da707L /opt/tinyos-2.x/tos/lib/tossim/tossim_wrap.cxx -I/usr/include/python2.5 -I/opt/tinyos-2.x/tos/lib/tossim -DHAVE_CONFIG_H
/opt/tinyos-2.x/tos/lib/tossim/tossim_wrap.cxx:26:20: error: Python.h: No such file or directory
/opt/tinyos-2.x/tos/lib/tossim/tossim_wrap.cxx:296: error: ISO C++ forbids declaration of ‘PyObject’ with no type
/opt/tinyos-2.x/tos/lib/tossim/tossim_wrap.cxx:296: error: expected ‘;’ before ‘*’ token
/opt/tinyos-2.x/tos/lib/tossim/tossim_wrap.cxx:297: error: ‘PyObject’ has not been declared
/opt/tinyos-2.x/tos/lib/tossim/tossim_wrap.cxx:302: error: ‘PyObject_HEAD’ does not name a type
/opt/tinyos-2.x/tos/lib/tossim/tossim_wrap.cxx:306: error: expected initializer before ‘*’ token
/opt/tinyos-2.x/tos/lib/tossim/tossim_wrap.cxx:313: error: ‘FILE’ has not been declared
/opt/tinyos-2.x/tos/lib/tossim/tossim_wrap.cxx: In function ‘int swig_varlink_print(swig_varlinkobject*, int*, int)’:
/opt/tinyos-2.x/tos/lib/tossim/tossim_wrap.cxx:316: error: ‘fprintf’ was not declared in this scope
/opt/tinyos-2.x/tos/lib/tossim/tossim_wrap.cxx:317: error: ‘struct swig_varlinkobject’ has no member named ‘vars’
/opt/tinyos-2.x/tos/lib/tossim/tossim_wrap.cxx: At global scope:
/opt/tinyos-2.x/tos/lib/tossim/tossim_wrap.cxx:325: error: expected initializer before ‘*’ token
/opt/tinyos-2.x/tos/lib/tossim/tossim_wrap.cxx:3496: error: expected `}’ at end of input
make: *** [sim-exe] Error 1

The reason is that the version of python in my Centos 5.2 is 2.4, so we edit /opt/tinyos-2.x/support/make/sim.extra, and set PYTHON_VERSION to 2.4. The compiling is ok.

 

在我的电脑上还是不行,同样的错误总是出现,经过我的多次的测试,终于得知,我的Centos上python版本是2.4,此环境下是不行的,很多的头文件根本就没有,于是升级了python到了2.5,由于暂时没有找到python2.5的rpm包,于是就用tgz包来安装,如

 

http://www.python.org/ftp/python/


 

我使用的是2.5.4版本,然后执行./configure -> make-> make install 都没有问题,参照sim.extra。又由于python在Centos中默认的安装路径是/usr/local/lib/和/usr/local/include,我们知道这几个路径,就将/usr/local/lib/python2.5复制为/usr/lib/python2.5,将/usr/local/include/python2.5复制为/usr/include/python2.5,问题得以解决.

我们同样可以修改/opt/tinyos-2.x/support/make里面的sim.extra、sim-fast.extra和sim-sf.extra文件,查找(ctrl+f)PYTHON_VERSION,然后将每个PYTHON_VERSION前面的/usr/bin修改为/usr/local/bin,/usr/include修改为/usr/local/include,全部修改,保存。问题也会得以解决。

=======================================================

经过上面不论哪个方法,我们发现yum会变得不能使用,因为yum是基于2.4的,必须改正。参考网上的方法,我们打开 #vim /usr/bin/yum 修改#!/usr/bin/python为#!/usr/bin/python2.4,yum还是不能用啊,我在思考中……

=========================================================

[root@Micle Blink]# make sim micaz
mkdir -p simbuild/micaz
placing object files in simbuild/micaz
writing XML schema to app.xml
compiling BlinkAppC to object file sim.o
ncc -c -shared -fPIC -o simbuild/micaz/sim.o -g -O0 -tossim -fnesc-nido-tosnodes=1000 -fnesc-simulate -fnesc-nido-motenumber=sim_node\(\)   -Wall -Wshadow -Wnesc-all -target=micaz -fnesc-cfile=simbuild/micaz/app.c -board=micasb -DDEFINED_TOS_AM_GROUP=0×22 –param max-inline-insns-single=100000 -DIDENT_APPNAME=\”BlinkAppC\” -DIDENT_USERNAME=\”root\” -DIDENT_HOSTNAME=\”Micle\” -DIDENT_USERHASH=0xe2d9fbc0L -DIDENT_TIMESTAMP=0×498d5e29L -DIDENT_UIDHASH=0×29bbff79L -Wno-nesc-data-race BlinkAppC.nc   -fnesc-dump=components -fnesc-dump=variables -fnesc-dump=constants -fnesc-dump=typedefs -fnesc-dump=interfacedefs -fnesc-dump=tags -fnesc-dumpfile=app.xml
compiling Python support and C libraries into pytossim.o, tossim.o, and c-support.o
g++ -c  -shared -fPIC -o simbuild/micaz/pytossim.o -g -O0 -DIDENT_APPNAME=\”BlinkAppC\” -DIDENT_USERNAME=\”root\” -DIDENT_HOSTNAME=\”Micle\” -DIDENT_USERHASH=0xe2d9fbc0L -DIDENT_TIMESTAMP=0×498d5e29L -DIDENT_UIDHASH=0×29bbff79L /opt/tinyos-2.x/tos/lib/tossim/tossim_wrap.cxx -I/usr/include/python2.4 -I/opt/tinyos-2.x/tos/lib/tossim -DHAVE_CONFIG_H
g++ -c  -shared -fPIC -o simbuild/micaz/tossim.o -g -O0 -DIDENT_APPNAME=\”BlinkAppC\” -DIDENT_USERNAME=\”root\” -DIDENT_HOSTNAME=\”Micle\” -DIDENT_USERHASH=0xe2d9fbc0L -DIDENT_TIMESTAMP=0×498d5e29L -DIDENT_UIDHASH=0×29bbff79L /opt/tinyos-2.x/tos/lib/tossim/tossim.c -I/usr/include/python2.4 -I/opt/tinyos-2.x/tos/lib/tossim
g++ -c  -shared -fPIC -o simbuild/micaz/c-support.o -g -O0 -DIDENT_APPNAME=\”BlinkAppC\” -DIDENT_USERNAME=\”root\” -DIDENT_HOSTNAME=\”Micle\” -DIDENT_USERHASH=0xe2d9fbc0L -DIDENT_TIMESTAMP=0×498d5e29L -DIDENT_UIDHASH=0×29bbff79L /opt/tinyos-2.x/tos/lib/tossim/hashtable.c -I/usr/include/python2.4 -I/opt/tinyos-2.x/tos/lib/tossim
linking into shared object ./_TOSSIMmodule.so
g++ -shared -fPIC  simbuild/micaz/pytossim.o simbuild/micaz/sim.o simbuild/micaz/tossim.o simbuild/micaz/c-support.o -lstdc++  -o _TOSSIMmodule.so
copying Python script interface TOSSIM.py from lib/tossim to local directory

*** Successfully built micaz TOSSIM library.

======================
run the TOSSIM program
======================
In TinyOS 2.1.0, the TOSSIM rograms are run via a python script.

Create a python script with a name of run.py, and include the following code.

————————————

from TOSSIM import *
import sys

t = Tossim([])

t.getNode(1).bootAtTime(1000);
t.getNode(2).bootAtTime(500);
t.getNode(3).bootAtTime(100);
t.addChannel(“BlinkC”, sys.stdout);

while (1):
t.runNextEvent()

————————————

Type ‘python run.py’ in command line, the program will be started, and generates the output like following:

DEBUG (1): Timer 0 fired @ 0:4:13.662109485.
DEBUG (3): Timer 0 fired @ 0:4:13.906250020.
DEBUG (3): Timer 1 fired @ 0:4:13.906250030
DEBUG (3): Timer 2 fired @ 0:4:13.906250040.
DEBUG (2): Timer 0 fired @ 0:4:13.906250060.
DEBUG (2): Timer 1 fired @ 0:4:13.906250070
DEBUG (2): Timer 2 fired @ 0:4:13.906250080.
DEBUG (1): Timer 0 fired @ 0:4:13.906250110.
DEBUG (1): Timer 1 fired @ 0:4:13.906250120
DEBUG (1): Timer 2 fired @ 0:4:13.906250130.
DEBUG (3): Timer 0 fired @ 0:4:14.150390645.
DEBUG (2): Timer 0 fired @ 0:4:14.150390685.

0 0
原创粉丝点击