热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Debian上装TinyOS

Debian上装TinyOS--Linux发行版技术-Debian信息,下面是详情阅读。
Filed under: Work

装的是 1.x 的 TinyOS。就说几点要紧的

1.先装编译 AVR 所要的 tool chain

aptitude install gcc-avr binutils-avr avr-libc 可能还附带着装上画图的 graphviz。

2.从 sf 下 nesc

wget http://kent.dl.sourceforge.net/s ... c/nesc-1.2.7.tar.gz

./configure --prefix=/opt/tos; make; make install

3.当然还有 sun-java5-jdk

aptitude install sun-java5-jdk加上 SUN Java Communication API version 3.0

unzip comm3.0_u1_linux.zip

cp commapi/lib/*.so $JAVA_HOME/jre/lib/i386/

cp commapi/jar/comm.jar $JAVA_HOME/jre/lib/ext/

cp commapi/docs/javax.comm.properties $JAVA_HOME/jre/lib/

4.最后从 CVS 抓 TinyOS

cvs -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos login

cvs -z9 -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos co tinyos-1.x

4.1.确定 TOS 的安装目录之后,可以在 .bashrc 里加一个函数,以后想干活只要敲tos就可以了:

tos()

{

export TOSROOT=/home/save/dev/tinyos/tinyos-1.x

export TOSDIR=\"$TOSROOT/tos\"

export PATH=$PATH:/opt/tos/bin

export CLASSPATH=`$TOSROOT/tools/java/javapath`

cd $TOSROOT

}

4.2.现在 ncc 从 nesc 移到了 TinyOS 里,现在编译 ncc:

cd $TOSROOT/tools/src/ncc

./Bootstrap; ./configure --prefix=/opt/tos; make; make install

看一下是不是所有东西都各就各位了:

./tools/scripts/toscheck可能 toscheck 认为有的版本不对,这会导致一些问题。在 nesc 生成的汇编程序里,会有许多变量名中间有$符号,gcc-avr 看到这个会不爽。make mica2的时候,会疯狂地报错,类似这样的:

/tmp/cch3uzvj.s:1743: Error: unknown opcode `timertask'

/tmp/cch3uzvj.s:1743: Error: unknown opcode `timertask'

/tmp/cch3uzvj.s:1744: Error: unrecognized symbol type

/tmp/cch3uzvj.s:1744: Error: unknown opcode `packetsent'

/tmp/cch3uzvj.s:1745: Error: unknown opcode `cc1000radi'

/tmp/cch3uzvj.s:1753: Error: unknown opcode `txbufptr'

这位朋友把这看作不听话的后果,其实在$TOSROOT/apps/Makeruls里改改就行:

-OPTFLAGS := -Os

+OPTFLAGS := -Os -Wa,--allow-dollars 让 gcc-avr 看到刀乐不要慌。

4.3.编译 uisp

用 Debian 自带的 uisp 烧写程序时会报错,说:

/usr/bin/uisp -dprog=mib510 -dserial=/dev/ttyUSB0 -dpart=ATmega128 --wr_fuse_e=ff --erase --upload if=build/mica2/main.srec

Direct Parallel Access not defined.

得使 TinyOS 自己的。

cd $TOSROOT/tools/src/uisp

./set-dates

./configure --prefix=/opt/tos && make install

4.4.编译 libgetenv

有的 TinyOS 的 Java 程序会用到 JNI 的 libgetenv。因此需要……编译:

cd $TOSROOT/tools/java/jni make

在 make 之前,还需要修改一个脚本$TOSROOT/tools/scripts/locate-jre。把从37行到47行的程序都注释掉,紧接着加上:

j=\"$JAVA_HOME\"/bin/javac

当然,前提是你设置好了$JAVA_HOME的环境变量。在修改后的第70行,改之:

-dir=\"$jhome/jre/bin

+dir=\"$jhome/jre/lib/i386

这些问题是没有使用 IBM JDK,以及 Debian 没有安装 rpm db 造成的。

5.现在设置一下编程板使用的口,以及 mica2 使用的频段和功率等

写一个文件 $TOSROOT/apps/Makelocal,

DEFAULT_PROGRAM=mib510 # 编程板用的型号

MIB510=/dev/ttyUSB0 # USB to serial 在 GNU/Linux 里就是这样的

DEFAULT_LOCAL_GROUP=0x88 # group id

FLAGS = -DCC1K_DEFAULT_FREQ=CC1K_433_002_MHZ # 无线通信使用的频段

CFLAGS += -DRADIO_XMIT_POWER=0xFF # 用最大的功率

6.看看硬件是否正常

cd $TOSROOT/apps/MicaHWVerify make mica2 如果一切正常的话,说明 TinyOS 差不多装好了。之所以说“差不多”,是因为 TinyOS 还附带了相当多的工具,和 Java 库,这些东西我们都还没有编译过呢。接下来,把编译好的程序烧到板子上:

make reinstall mica2 接下来,跟着Tutorial检查 通信等功能。 到现在,就差不多完成了 TinyOS 在 Debian GNU/Linux 平台上的安装。另外,如果要用 deluge 的话,需要改一下 deluge 的 Makefile:

sed -i -e \"s/DELUGE_PLATFORM=telosb/DELUGE_PLATFORM=mica2/\" \

-e \"s/CC2420Radio/CC1000Radio/\" $TOSROOT/tools/java/net/tinyos/deluge/Makefile

6.最后有一点,是使用 USB to serial 转接线造成的。

6.1.让 Java 程序认识/dev/ttyUSB0

要修改$JAVA_HOME/jre/lib/javax.comm.properties文件,加一行:

serpath2 = /dev/ttyUSB06.2.让 Java 程序设置波特率时不会退出

这只是一个 workaround,就是在 $TOSROOT/tools/java目录下 grep 所有的 java 文件,找出setSerialPortParams的地方,改成这样的:

try {

serialPort.setSerialPortParams(sf.BAUD_RATE, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

} catch (Exception e) {}

serialPort.setSerialPortParams (sf.BAUD_RATE,

SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

就是让它执行两次,第一次一定会出错:

Exception in thread \"AWT-EventQueue-0\" java.io.IOException: Not all params are supported by kernel

at com.sun.comm.LinuxSerial.nativeSetSerialPortParams(Native Method)

at com.sun.comm.LinuxSerial.setSerialPortParams(LinuxSerial.java:346)

at SerialConnection.setConnectionParameters(Unknown Source)

at SerialConnection.openConnection(Unknown Source)

at SerialDemo.actionPerformed(Unknown Source)

at java.awt.Button.processActionEvent(Button.java:388)

at java.awt.Button.processEvent(Button.java:356)

at java.awt.Component.dispatchEventImpl(Component.java:3955)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

但是这一定不是内核的问题,因为C程序对串口的设置波特率操作是可以的。在这里也有人碰到相同的问题。我在这里用的是第二种办法。
推荐阅读
  • systemd-nspawn可以创建最轻量级的容器(ns的意思就是namespace),本文的实验平台是Ubuntu16.04,x86_64机器。本文的目的是:在Ubuntu中用syst ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • Kali Linux 简介
    KaliLinux是世界渗透测试行业公认的优秀的网络安全审计工具集合,它可以通过对设备的探测来审计其安全性,而且功能完备,几乎包含了目前所 ... [详细]
  • 如何将CentOS8转换为CentOSStream
    CentOS Stream是一个持续交付的Linux发行版,它在RHEL之前处于领先地位。它将具有滚动发布,即不断进行更改。CentOS将成为一个上游版本,它将具有测试补丁和更新。 ... [详细]
  • 对于一般的扩展包,我们一般直接pipinstallxxx即可安装,但是unrar直接安装后,发现并不能通过Python程序实现解压的功能& ... [详细]
  • Linux神奇漏洞:长按回车键70秒 即可轻松拿到Root权限
    一般来说获取系统root权限是很困难的,尤其是加密系统中,但西班牙安全研究员hectormarco、ismaelripoll发现,linux系统下只需按住回车键70秒钟,就能轻 ... [详细]
author-avatar
小花姐姐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有