TinyECC是TinyOS上有名的加密軟體,
不過以往他只支援TinyOS 1,
所以,我一直在等他支援TinyOS 2,甚至是找人幫忙將他Port到TinyOS 2,
沒想到,總算在2011的二月,官方釋出了TinyECC 2.0,並且支援TinyOS 2。
等這個消息等了快三年,總算是讓我等到啦,有需要研究的朋友,快去下載來試試吧!!
http://discovery.csc.ncsu.edu/software/TinyECC/
2011年5月23日 星期一
2010年5月23日 星期日
Yeti 2 讓你用eclipse開發TinyOS2
本來是想找看看有沒有什麼其它工具可以用來Debug Nesc的,
結果讓我找到了Yeti 2這個eclipse上的外掛。
Yeti 2非常的強大,除了可以顯示Nesc的特殊字元,
還可以自動呈現出component之間的關係,
而且可以隨時查看各函式的內容,相當的方便。
官方網站如下:
http://tos-ide.ethz.ch/wiki/pmwiki.php
底下紀錄我自己安裝的過程和一些使用上的心得:
Yeti 2的安裝還滿簡單的,只需要按照官網的說明安裝,
請參考http://tos-ide.ethz.ch/wiki/pmwiki.php?n=Site.Installation
要注意的是eclipse的版本要3.5以上會比較穩一點,
所以,我在安裝Yeti 2之前有先行將eclipse更新到最新的版本。
因為官網有提到不確定在MAC OSX下可不可以正常執行,
所以我想有必要在作一份紀錄供MAC的使用者參考。
簡略的步驟如下:
Step 1 下載Yeti 2
首先開啟eclipse,點選"Help" > "Install new software" 。
如下圖所示:

接著新增一個來源位置: http://tos-ide.ethz.ch/update/site.xml,如下圖所示:

新增完之後,eclipse會自動取得套件列表,如下圖所示:

方框中的套件是我有安裝的,因為我是用snow leopard,所以我選擇的環境是TinyOS 2.x on Unix,
接著按下“next“,Yeti就會自動安裝了。
Step 2 設定環境參數
原則上,因為我是先安裝好TinyOS2.x的,所以,eclipse會自行找到TinyOS的環境變數如TOSDIR和TOSROOT,
個人的猜測是eclipse自行去讀bash的環境設定,
不過我發現CLASSPATH和PATH還是沒有設定完善,
所以還是要自行確認,請開啟“偏好設定“,
並且在"TinyOS" > "Environments" > "TinyOS 2.x Unix-environment" > "environment Variables"中,
自行新增環境變數。
如下圖所示:

如果環境變數都沒有什麼問題,現在就可以使用eclipse開啟TinyOS的專案了。
要檢查安裝有沒有成功,最簡單的方法就是新增一個example project。
可以參考官網的說明:
http://tos-ide.ethz.ch/wiki/pmwiki.php?n=Site.NewExampleProject
不過,我自己也不免俗的開了一個Base station專案來測試,
他會自動幫你新增相對應的原始碼和makefile,感覺就好像copy了一份apps/Basestation/給你。
個人覺得最貼心的地方是它會自動產生程式的component連結圖,
如下圖所示:

可以馬上看到現在各component連結的狀況。
如果要編譯,就按下run就可以了,感覺還算容易上手的。
以上就是目前的使用心得,有進一步有趣的東西,我會再補充。
結果讓我找到了Yeti 2這個eclipse上的外掛。
Yeti 2非常的強大,除了可以顯示Nesc的特殊字元,
還可以自動呈現出component之間的關係,
而且可以隨時查看各函式的內容,相當的方便。
官方網站如下:
http://tos-ide.ethz.ch/wiki/pmwiki.php
底下紀錄我自己安裝的過程和一些使用上的心得:
Yeti 2 安裝步驟
Yeti 2的安裝還滿簡單的,只需要按照官網的說明安裝,
請參考http://tos-ide.ethz.ch/wiki/pmwiki.php?n=Site.Installation
要注意的是eclipse的版本要3.5以上會比較穩一點,
所以,我在安裝Yeti 2之前有先行將eclipse更新到最新的版本。
因為官網有提到不確定在MAC OSX下可不可以正常執行,
所以我想有必要在作一份紀錄供MAC的使用者參考。
簡略的步驟如下:
Step 1 下載Yeti 2
首先開啟eclipse,點選"Help" > "Install new software" 。
如下圖所示:
接著新增一個來源位置: http://tos-ide.ethz.ch/update/site.xml,如下圖所示:
新增完之後,eclipse會自動取得套件列表,如下圖所示:
方框中的套件是我有安裝的,因為我是用snow leopard,所以我選擇的環境是TinyOS 2.x on Unix,
接著按下“next“,Yeti就會自動安裝了。
Step 2 設定環境參數
原則上,因為我是先安裝好TinyOS2.x的,所以,eclipse會自行找到TinyOS的環境變數如TOSDIR和TOSROOT,
個人的猜測是eclipse自行去讀bash的環境設定,
不過我發現CLASSPATH和PATH還是沒有設定完善,
所以還是要自行確認,請開啟“偏好設定“,
並且在"TinyOS" > "Environments" > "TinyOS 2.x Unix-environment" > "environment Variables"中,
自行新增環境變數。
如下圖所示:
如果環境變數都沒有什麼問題,現在就可以使用eclipse開啟TinyOS的專案了。
新增TinyOS範例專案
要檢查安裝有沒有成功,最簡單的方法就是新增一個example project。
可以參考官網的說明:
http://tos-ide.ethz.ch/wiki/pmwiki.php?n=Site.NewExampleProject
不過,我自己也不免俗的開了一個Base station專案來測試,
他會自動幫你新增相對應的原始碼和makefile,感覺就好像copy了一份apps/Basestation/給你。
個人覺得最貼心的地方是它會自動產生程式的component連結圖,
如下圖所示:
可以馬上看到現在各component連結的狀況。
如果要編譯,就按下run就可以了,感覺還算容易上手的。
以上就是目前的使用心得,有進一步有趣的東西,我會再補充。
2010年5月2日 星期日
在Mac osx 10.6.3(Snow leopard)中灌TinyOS2.x
好久沒寫有關TinyOS的文章了,最近又要開始動手改code了,
看來不在自己的MBA上灌TinysOS不行啦,
近期之內,應該會寫幾篇有關TinyOS的文章,
也算是對TinyOS社群有所貢獻。
所以廢話不多說,在Mac osx 10.6.3灌TinyOS2.x的安裝步驟如下:
我的安裝環境是OSX 10.6.3,現在要安裝TinyOS已經變的很簡單了,
只要先行安裝必要的工具,就可以無痛安裝,需要的工具如下:
1. Xcode
由於我本身就已經安裝了Xcode ,所以我不確定如果沒有Xcode,會不會在安裝的過程中出現問題。
下載位置:
http://developer.apple.com/tools/xcode/
2.MacPorts
因為已經有熱心的朋友將TinyOS所需要的軟體發佈在Ports上,所以只要安裝MacPorts,
一些TinyOS必要的軟體像是NesC、AVR GCC,就不用自己手動去抓下來安裝了。
下載位置:
http://www.macports.org/
3.Git
Git為版本控制軟體,因為我希望能下載到TinyOS的程式,
所以需要透過版本控制軟體來下載,其實用CVS也可以下載最新的code回來,
但是,我發現用Git速度快上好幾倍,所以,當然要用Git啦。
您可以使用port安裝Git,不過我自己是到google code上抓git的installer,因為我有搜集dmg的習慣。
下載位置:
http://code.google.com/p/git-osx-installer/
安裝完基本的工具之後,現在我們要正式開始安裝TinyOS了,
首先,我們必須修改並新增一個Port的來源,並且增修port的設定,方法如下:
到你的家目錄底下,用Git下載Razvan包好的port來源。
接著修改macports的sources.conf,在裡面加入剛才下載回來的檔案位置:
加入
設定完port之後,我們可以開始安裝NesC和avr/msp430 tools
這裡我們到家目錄,用Git將最新版的TinyOS下載回來:
下載回來之後,我們必需要設定一些環境變數,才能讓TinyOS正確的運行,
這裡通常是最難搞的地方,因為只要有環境變數設定錯誤,TinyOS就無法正常編譯成功。
還好TinyOS官方有提供一個環境設定檔tinyos.sh,但是我覺得並不好用,還是有一些參數沒有設定完整,所以,參考了我之前下載的script,改了一份新的設定檔,加入了一些常用的指令和java的設定,大家可以參考看看。
請記得修改.bashrc,並加入
接著將TinyOS的一些Tool安裝起來:
安裝完所有的tool之後,可以輸入以下指令確認是否有TinyOS的工具可以使用:
或者也可以檢查一下有沒有什麼設定或是軟體還沒安裝:
原則上,到這一步,如果環境設定都沒有問題的話,就算是安裝完成了,
有任何的問題,一定是環境設定沒有設定好,就必須檢查有那一個步驟遺漏掉了。
為了要讓motelist可以正常讀取到Mote的資訊,請下載安裝FTDI driver
下載位置:
http://www.ftdichip.com/Drivers/VCP.htm
如果需要不需要重編java tool的朋友,這個步驟可以跳過。
由於官方建議使用gcc44來編繹程式,所以我使用port下載,不過安裝gcc44需要很多時間,好幾個小時吧,我是放給他跑,睡一覺起來才安裝好的,安裝指㐴如下:
gcc_select是用來切換所需要的gcc,可用gcc_select -l察看主機上有灌了什麼版本的GCC,
如果要切換成gcc44,可輸入以下指令:
如果要切回原來的gcc42,指令如下:
目前我自己測試是沒有需要用到gcc44,因為我沒有重新編譯TinyOS的java tool,
如果有需要重新編譯java tool的朋友,才會需要使用到gcc44
重頭戲來了,讓我們來編譯一個程式看看:
如果沒有error,而且看到以下訊息,就表示TinyOS已經安裝成功:
恭喜啦,您可以開始編寫TinyOS的程式了~~
例如,如果在編譯estSerial過程中,出現了以下的錯誤訊息:
這表示你的mig工具設定有問題,請使用以下指令解決:
這裡主要是因為mig的權限問題,所以,只要讓mig可執行問題就可以解決。
但是,修改完權限之後,在MAC OSX上還會出現另外一個問題,如下所示:
這個問題的解法有兩種:
第一種解法--
這是因為Makefile的問題,請將你的Makefile中,
編譯java欄位裡的target值,從null改為$(PLATFORM),
如下所示:
這樣就能夠正常compile了。
參考來源:
http://old.nabble.com/Re:-Build-errors-for-TestSerial----resolved-td26123725.html
第二種解法--
剛才我們有提到是Makefile的問題,
但是追根究底,主要還是因為Snow leopard上的gcc42對null語法的解讀錯誤,
所以,如果不想改Makefile,而且在之前Step 5有安裝gcc_select的朋友,
可以使用以下指令,在每次compile java程式之前,先將預設的gcc版本改為gcc44。
感覺在ubuntu上安裝TinyOS2比在OSX上安裝方便而且快速,
果然有編譯的執行檔還是比較方便,可惜MAC上還沒有人將TinyOS包成DMG檔,
有空再來研究看看好了。
此外,本篇文件主要是參考這篇文章,如有需要可以前往參考。
參考來源:
http://research-machine.blogspot.com/2010/01/how-to-install-tinyos-2-on-macosx-106.html
http://docs.tinyos.net/index.php/Installing_from_CVS/GIT
http://www.mail-archive.com/tinyos-help@millennium.berkeley.edu/msg31149.html
http://www.mobilab.unina.it/TinyOSMAC.htm
看來不在自己的MBA上灌TinysOS不行啦,
近期之內,應該會寫幾篇有關TinyOS的文章,
也算是對TinyOS社群有所貢獻。
所以廢話不多說,在Mac osx 10.6.3灌TinyOS2.x的安裝步驟如下:
Step 1 安裝之前需要的工具
我的安裝環境是OSX 10.6.3,現在要安裝TinyOS已經變的很簡單了,
只要先行安裝必要的工具,就可以無痛安裝,需要的工具如下:
1. Xcode
由於我本身就已經安裝了Xcode ,所以我不確定如果沒有Xcode,會不會在安裝的過程中出現問題。
下載位置:
http://developer.apple.com/tools/xcode/
2.MacPorts
因為已經有熱心的朋友將TinyOS所需要的軟體發佈在Ports上,所以只要安裝MacPorts,
一些TinyOS必要的軟體像是NesC、AVR GCC,就不用自己手動去抓下來安裝了。
下載位置:
http://www.macports.org/
3.Git
Git為版本控制軟體,因為我希望能下載到TinyOS的程式,
所以需要透過版本控制軟體來下載,其實用CVS也可以下載最新的code回來,
但是,我發現用Git速度快上好幾倍,所以,當然要用Git啦。
您可以使用port安裝Git,不過我自己是到google code上抓git的installer,因為我有搜集dmg的習慣。
下載位置:
http://code.google.com/p/git-osx-installer/
Step 2 安裝NesC、 AVR GCC compiler 和MSP GCC
安裝完基本的工具之後,現在我們要正式開始安裝TinyOS了,
首先,我們必須修改並新增一個Port的來源,並且增修port的設定,方法如下:
cd /Users/user git clone git://hinrg.cs.jhu.edu/git/ports.git
到你的家目錄底下,用Git下載Razvan包好的port來源。
接著修改macports的sources.conf,在裡面加入剛才下載回來的檔案位置:
sudo vi /opt/local/etc/macports/sources.conf
加入
#在rsync之前加入以下這行,記得一定要放在rsync之前,不然會發生錯誤,如下所示 file:///Users/hdj/ports rsync://rsync.macports.org/release/ports/ [default]
設定完port之後,我們可以開始安裝NesC和avr/msp430 tools
sudo port install msp430-binutils-tinyos msp430-gcc-tinyos msp430-libc-tinyos (for MSP430) sudo port install avr-binutils-tinyos avr-gcc-tinyos avr-libc-tinyos avrdude-tinyos (for AVR) sudo port install nesc
Step 3 下載TinyOS source code並且安裝相關的程式
這裡我們到家目錄,用Git將最新版的TinyOS下載回來:
cd /Users/user git clone git://hinrg.cs.jhu.edu/git/tinyos-2.x.git
下載回來之後,我們必需要設定一些環境變數,才能讓TinyOS正確的運行,
這裡通常是最難搞的地方,因為只要有環境變數設定錯誤,TinyOS就無法正常編譯成功。
還好TinyOS官方有提供一個環境設定檔tinyos.sh,但是我覺得並不好用,還是有一些參數沒有設定完整,所以,參考了我之前下載的script,改了一份新的設定檔,加入了一些常用的指令和java的設定,大家可以參考看看。
請記得修改.bashrc,並加入
source ~/Documents/tinyos/tinyos.sh其中,~/Documents/tinyos/是你下載tinyos.sh的存放位置。
接著將TinyOS的一些Tool安裝起來:
cd $TOSROOT/tools ./Bootstrap ./configure make sudo make install sudo tos-install-jni
安裝完所有的tool之後,可以輸入以下指令確認是否有TinyOS的工具可以使用:
motelist
或者也可以檢查一下有沒有什麼設定或是軟體還沒安裝:
tos-check-env
原則上,到這一步,如果環境設定都沒有問題的話,就算是安裝完成了,
有任何的問題,一定是環境設定沒有設定好,就必須檢查有那一個步驟遺漏掉了。
Step 4 安裝 FTDI Drivers
為了要讓motelist可以正常讀取到Mote的資訊,請下載安裝FTDI driver
下載位置:
http://www.ftdichip.com/Drivers/VCP.htm
Step 5 重編java tool
如果需要不需要重編java tool的朋友,這個步驟可以跳過。
由於官方建議使用gcc44來編繹程式,所以我使用port下載,不過安裝gcc44需要很多時間,好幾個小時吧,我是放給他跑,睡一覺起來才安裝好的,安裝指㐴如下:
sudo port install gcc44 sudo port install gcc_select
gcc_select是用來切換所需要的gcc,可用gcc_select -l察看主機上有灌了什麼版本的GCC,
如果要切換成gcc44,可輸入以下指令:
gcc_select mp-gcc44
如果要切回原來的gcc42,指令如下:
gcc_select gcc42
目前我自己測試是沒有需要用到gcc44,因為我沒有重新編譯TinyOS的java tool,
如果有需要重新編譯java tool的朋友,才會需要使用到gcc44
Step 6 試著編譯應用程式
重頭戲來了,讓我們來編譯一個程式看看:
cd $TOSROOT/apps/Blink make telosb
如果沒有error,而且看到以下訊息,就表示TinyOS已經安裝成功:
compiled BlinkAppC to build/telosb/main.exe
2648 bytes in ROM
54 bytes in RAM
msp430-objcopy --output-target=ihex build/telosb/main.exe build/telosb/main.ihex
writing TOS image
恭喜啦,您可以開始編寫TinyOS的程式了~~
疑難雜症
Problem 1 Compile 含有Java的程式
例如,如果在編譯estSerial過程中,出現了以下的錯誤訊息:
hdj@MBA:~/tinyos-2.x/apps/tests/TestSerial$ make telosb
mkdir -p build/telosb
mig java -target=null -I/Users/hdj/Documents/tinyos/tinyos-2.x/tos/lib/T2Hack -DIDENT_APPNAME=\"TestSerialAppC\" -DIDENT_USERNAME=\"hdj\" -DIDENT_HOSTNAME=\"Huang-Ding-jiet\" -DIDENT_USERHASH=0x8527c6dbL -DIDENT_TIMESTAMP=0x4bfc99feL -DIDENT_UIDHASH=0x69b76063L -java-classname=TestSerialMsg TestSerial.h test_serial_msg -o TestSerialMsg.java
cat: java: No such file or directory
mig: fatal: "java", line 1: no SubSystem declaration
warning: option "-target=null" after filename(s) ignored
warning: option "-I/Users/hdj/Documents/tinyos/tinyos-2.x/tos/lib/T2Hack" after filename(s) ignored
warning: option "-DIDENT_APPNAME="TestSerialAppC"" after filename(s) ignored
warning: option "-DIDENT_USERNAME="hdj"" after filename(s) ignored
warning: option "-DIDENT_HOSTNAME="Huang-Ding-jiet"" after filename(s) ignored
warning: option "-DIDENT_USERHASH=0x8527c6dbL" after filename(s) ignored
warning: option "-DIDENT_TIMESTAMP=0x4bfc99feL" after filename(s) ignored
warning: option "-DIDENT_UIDHASH=0x69b76063L" after filename(s) ignored
warning: option "-java-classname=TestSerialMsg" after filename(s) ignored
/usr/bin/mig: line 207: /var/folders/5W/5WdvGkinHMGZ7JuCEC53Pk+++TI/-Tmp-//mig.YPmOow/TestSerial.h.19983.c: No such file or directory
i686-apple-darwin10-gcc-4.2.1: /var/folders/5W/5WdvGkinHMGZ7JuCEC53Pk+++TI/-Tmp-//mig.YPmOow/TestSerial.h.19983.c: No such file or directory
i686-apple-darwin10-gcc-4.2.1: no input files
mig: fatal: "<no name yet>", line -1: no SubSystem declaration
/usr/bin/mig: line 207: /var/folders/5W/5WdvGkinHMGZ7JuCEC53Pk+++TI/-Tmp-//mig.YPmOow/test_serial_msg.19983.c: No such file or directory
i686-apple-darwin10-gcc-4.2.1: /var/folders/5W/5WdvGkinHMGZ7JuCEC53Pk+++TI/-Tmp-//mig.YPmOow/test_serial_msg.19983.c: No such file or directory
i686-apple-darwin10-gcc-4.2.1: no input files
mig: fatal: "<no name yet>", line -1: no SubSystem declaration
warning: option "-o" after filename(s) ignored
/usr/bin/mig: line 207: /var/folders/5W/5WdvGkinHMGZ7JuCEC53Pk+++TI/-Tmp-//mig.YPmOow/TestSerialMsg.java.19983.c: No such file or directory
i686-apple-darwin10-gcc-4.2.1: /var/folders/5W/5WdvGkinHMGZ7JuCEC53Pk+++TI/-Tmp-//mig.YPmOow/TestSerialMsg.java.19983.c: No such file or directory
i686-apple-darwin10-gcc-4.2.1: no input files
mig: fatal: "<no name yet>", line -1: no SubSystem declaration
rmdir: /var/folders/5W/5WdvGkinHMGZ7JuCEC53Pk+++TI/-Tmp-//mig.YPmOow: No such file or directory
javac -target 1.4 -source 1.4 *.java
TestSerial.java:45: cannot find symbol
symbol : class TestSerialMsg
location: class TestSerial
this.moteIF.registerListener(new TestSerialMsg(), this);
^
TestSerial.java:50: cannot find symbol
symbol : class TestSerialMsg
location: class TestSerial
TestSerialMsg payload = new TestSerialMsg();
^
TestSerial.java:50: cannot find symbol
symbol : class TestSerialMsg
location: class TestSerial
TestSerialMsg payload = new TestSerialMsg();
^
TestSerial.java:69: cannot find symbol
symbol : class TestSerialMsg
location: class TestSerial
TestSerialMsg msg = (TestSerialMsg)message;
^
TestSerial.java:69: cannot find symbol
symbol : class TestSerialMsg
location: class TestSerial
TestSerialMsg msg = (TestSerialMsg)message;
^
5 errors
make: *** [TestSerial.class] Error 1
這表示你的mig工具設定有問題,請使用以下指令解決:
export PATH=$TOSROOT/tools/tinyos/ncc/:$PATH chmod a+x $TOSROOT/tools/tinyos/ncc/mig
這裡主要是因為mig的權限問題,所以,只要讓mig可執行問題就可以解決。
Problem 2
但是,修改完權限之後,在MAC OSX上還會出現另外一個問題,如下所示:
hdj@MBA:~/tinyos-2.x/apps/tests/TestSerial$ make telosb
mkdir -p build/telosb
mig java -target=null -I/Users/hdj/Documents/tinyos/tinyos-2.x/tos/lib/T2Hack -DIDENT_APPNAME=\"TestSerialAppC\" -DIDENT_USERNAME=\"hdj\" -DIDENT_HOSTNAME=\"Huang-Ding-jiet\" -DIDENT_USERHASH=0x8527c6dbL -DIDENT_TIMESTAMP=0x4bfc9a4fL -DIDENT_UIDHASH=0x1795bab5L -java-classname=TestSerialMsg TestSerial.h test_serial_msg -o TestSerialMsg.java
In file included from /usr/include/string.h:148,
from /Users/hdj/Documents/tinyos/tinyos-2.x/tos/system/tos.h:13:
/usr/include/secure/_string.h: In function `__inline_memcpy_chk':
/usr/include/secure/_string.h:58: warning: return makes pointer from integer without a cast
/usr/include/secure/_string.h: In function `__inline_memmove_chk':
/usr/include/secure/_string.h:69: warning: return makes pointer from integer without a cast
/usr/include/secure/_string.h: In function `__inline_memset_chk':
/usr/include/secure/_string.h:80: warning: return makes pointer from integer without a cast
/usr/include/secure/_string.h: In function `__inline_strcpy_chk':
/usr/include/secure/_string.h:91: warning: return makes pointer from integer without a cast
/usr/include/secure/_string.h: In function `__inline_stpcpy_chk':
/usr/include/secure/_string.h:103: warning: return makes pointer from integer without a cast
/usr/include/secure/_string.h: In function `__inline_strncpy_chk':
/usr/include/secure/_string.h:116: warning: return makes pointer from integer without a cast
/usr/include/secure/_string.h: In function `__inline_strcat_chk':
/usr/include/secure/_string.h:127: warning: return makes pointer from integer without a cast
/usr/include/secure/_string.h: In function `__inline_strncat_chk':
/usr/include/secure/_string.h:139: warning: return makes pointer from integer without a cast
In file included from /Users/hdj/Documents/tinyos/tinyos-2.x/tos/system/tos.h:14:
/usr/include/stdlib.h: At top level:
/usr/include/stdlib.h:272: syntax error before `^'
/usr/include/stdlib.h:272: `type name' declared as function returning a function
/usr/include/stdlib.h:274: syntax error before `^'
/usr/include/stdlib.h:274: `type name' declared as function returning a function
/usr/include/stdlib.h:301: syntax error before `^'
/usr/include/stdlib.h:301: `type name' declared as function returning a function
/usr/include/stdlib.h:307: syntax error before `^'
/usr/include/stdlib.h:307: `type name' declared as function returning a function
/usr/include/stdlib.h:313: syntax error before `^'
/usr/include/stdlib.h:313: `type name' declared as function returning a function
/usr/include/stdlib.h:319: syntax error before `^'
/usr/include/stdlib.h:319: `type name' declared as function returning a function
In file included from /Users/hdj/Documents/tinyos/tinyos-2.x/tos/system/SchedulerBasicP.nc:41,
from /Users/hdj/Documents/tinyos/tinyos-2.x/tos/system/TinySchedulerC.nc:40:
/Users/hdj/Documents/tinyos/tinyos-2.x/tos/platforms/null/hardware.h: In function `__nesc_ntoh_afloat':
/Users/hdj/Documents/tinyos/tinyos-2.x/tos/platforms/null/hardware.h:22: warning: pointer/integer type mismatch in conditional expression
/Users/hdj/Documents/tinyos/tinyos-2.x/tos/platforms/null/hardware.h: In function `__nesc_hton_afloat':
/Users/hdj/Documents/tinyos/tinyos-2.x/tos/platforms/null/hardware.h:27: warning: pointer/integer type mismatch in conditional expression
In file included from /Users/hdj/Documents/tinyos/tinyos-2.x/tos/system/TinySchedulerC.nc:40:
In component `SchedulerBasicP':
/Users/hdj/Documents/tinyos/tinyos-2.x/tos/system/SchedulerBasicP.nc: In function `Scheduler.init':
/Users/hdj/Documents/tinyos/tinyos-2.x/tos/system/SchedulerBasicP.nc:117: warning: pointer/integer type mismatch in conditional expression
failed to parse message file TestSerial.h
make: *** [TestSerialMsg.java] Error 1
這個問題的解法有兩種:
第一種解法--
這是因為Makefile的問題,請將你的Makefile中,
編譯java欄位裡的target值,從null改為$(PLATFORM),
如下所示:
mig java -target=$(PLATFORM) $(CFLAGS) -java-classname=TestSerialMsg TestSerial.h test_serial_msg -o $@
這樣就能夠正常compile了。
參考來源:
http://old.nabble.com/Re:-Build-errors-for-TestSerial----resolved-td26123725.html
第二種解法--
剛才我們有提到是Makefile的問題,
但是追根究底,主要還是因為Snow leopard上的gcc42對null語法的解讀錯誤,
所以,如果不想改Makefile,而且在之前Step 5有安裝gcc_select的朋友,
可以使用以下指令,在每次compile java程式之前,先將預設的gcc版本改為gcc44。
sudo gcc_select mp-gcc44
後話
感覺在ubuntu上安裝TinyOS2比在OSX上安裝方便而且快速,
果然有編譯的執行檔還是比較方便,可惜MAC上還沒有人將TinyOS包成DMG檔,
有空再來研究看看好了。
此外,本篇文件主要是參考這篇文章,如有需要可以前往參考。
參考來源:
http://research-machine.blogspot.com/2010/01/how-to-install-tinyos-2-on-macosx-106.html
http://docs.tinyos.net/index.php/Installing_from_CVS/GIT
http://www.mail-archive.com/tinyos-help@millennium.berkeley.edu/msg31149.html
http://www.mobilab.unina.it/TinyOSMAC.htm
2009年6月23日 星期二
Crossbow TelosB 硬體測試 by using Oscilloscope
很久沒有紀錄和TinyOS相關的文章了
上個星期收到了幾顆Crossbow的mote
所以一時手癢拿來跑Oscilloscope的範例程式
順便復習一下TinyOS
不然人老了,很容易忘東忘西的
首先要跑Oscilloscope
可以先到官網的wiki看一下說明
http://docs.tinyos.net/index.php/Sensing
底下為大家一一介紹燒錄和觀看結果的步驟:
Step1 燒錄程式
要燒錄的程式有兩種:
1.BaseStation
2.Oscilloscope
第一份BaseStation主要是將收到的封包,透過serialforwarder傳回PC端
第二份Oscilloscope是將mote上收集的sensing data 傳送出去
由此可見,至少要二個mote才能跑起這個範例
所以我準備了兩個mote
在第一個mote上燒BaseStation
接著在第二個mote上燒Oscilloscope
在install之後的2是用來設定mote id用的,單純為了待會辨視之用
Step2 顯示資料結果
我們透過內建的java程式,觀測感測的資料
這樣就可以看到感測資料的結果了
上個星期收到了幾顆Crossbow的mote
所以一時手癢拿來跑Oscilloscope的範例程式
順便復習一下TinyOS
不然人老了,很容易忘東忘西的
首先要跑Oscilloscope
可以先到官網的wiki看一下說明
http://docs.tinyos.net/index.php/Sensing
底下為大家一一介紹燒錄和觀看結果的步驟:
Step1 燒錄程式
要燒錄的程式有兩種:
1.BaseStation
2.Oscilloscope
第一份BaseStation主要是將收到的封包,透過serialforwarder傳回PC端
第二份Oscilloscope是將mote上收集的sensing data 傳送出去
由此可見,至少要二個mote才能跑起這個範例
所以我準備了兩個mote
在第一個mote上燒BaseStation
cd /opt/tinyos-2.1.0/BaseStation/
make telosb install,1 bsl,/dev/ttyUSB0
接著在第二個mote上燒Oscilloscope
cd /opt/tinyos-2.1.0/Oscilloscope/
make telosb install,2 bsl,/dev/ttyUSB1
在install之後的2是用來設定mote id用的,單純為了待會辨視之用
Step2 顯示資料結果
我們透過內建的java程式,觀測感測的資料
export MOTECOM=serial@/dev/ttyUSB0:telosb
cd /opt/tinyos-2.1.0/Oscilloscope/java/
./run
這樣就可以看到感測資料的結果了
2008年6月3日 星期二
[賀] TinyOS 教學文件被收入TinyOS Docs
一陣子沒寫跟TinyOS相關的文章啦
今天隔壁實驗室的學弟跟來跟我說
"你的TinyOS安裝教學被人放在TinyOS的docs啦"
聽到這個消息,我嚇了一大跳
馬上到
http://docs.tinyos.net/index.php/Main_Page#Installing_TinyOS
看看這個小道消息是不是真的
果然這個頁面裡真的有個chinese version
但是點開來居然是簡體的
http://hi.baidu.com/vvfang/blog/item/e2dfa4126bd9adcdc3fd789c.html
不知是該開心還是該憂心
開心的是自己的文章可以被人家認可
憂心的是自己的文章看的人不多
反而是被人翻成簡體中文才變的比較多人看
大概是台灣做WSN人太少了
所以我自己寫的文章沒什麼人看
或許我該感謝weiwei(轉錄我文章的朋友)
他讓我的文章受到大家的重視
也讓我知道我的文章還是有人在看..哈哈
(有點沒動力去更新ubuntu 8.04上灌tinyos了..囧)
今天隔壁實驗室的學弟跟來跟我說
"你的TinyOS安裝教學被人放在TinyOS的docs啦"
聽到這個消息,我嚇了一大跳
馬上到
http://docs.tinyos.net/index.php/Main_Page#Installing_TinyOS
看看這個小道消息是不是真的
果然這個頁面裡真的有個chinese version
但是點開來居然是簡體的
http://hi.baidu.com/vvfang/blog/item/e2dfa4126bd9adcdc3fd789c.html
不知是該開心還是該憂心
開心的是自己的文章可以被人家認可
憂心的是自己的文章看的人不多
反而是被人翻成簡體中文才變的比較多人看
大概是台灣做WSN人太少了
所以我自己寫的文章沒什麼人看
或許我該感謝weiwei(轉錄我文章的朋友)
他讓我的文章受到大家的重視
也讓我知道我的文章還是有人在看..哈哈
(有點沒動力去更新ubuntu 8.04上灌tinyos了..囧)
2007年10月20日 星期六
Octopus使用心得
Octopus為TinyOS2.x上的圖形化控制介面
它比MViz功能還要多
可以把傳回來的資料記錄下來
存成csv檔以便之後觀察
官方網址:
http://csserver.ucd.ie/~rjurdak/Octopus.htm
底下稍微簡述使用的心得
首先至官網下載程式並解開
開始正始燒錄的工作
==燒錄程式==
進入octopus的motes資料夾中
輸入以下指令將程式編譯並燒至mote中
==讀取資料==
在Octopus上讀取資料和Surge類似
可以參考
http://hdj-berkeley.blogspot.com/2007/10/surge-on-tinyos1x.html
這裡我只使用serialforwader 的方法
首先先設定好SerialForwarder:
如果是第一次使用Octopus的java程式
請記得至Octopus的java資料夾下執行make
所以我們將環境變數改成
參考來源:
http://csserver.ucd.ie/~rjurdak/User%20Documentation.pdf
它比MViz功能還要多
可以把傳回來的資料記錄下來
存成csv檔以便之後觀察
官方網址:
http://csserver.ucd.ie/~rjurdak/Octopus.htm
底下稍微簡述使用的心得
首先至官網下載程式並解開
$ wget http://csserver.ucd.ie/~rjurdak/Octopus%20Code.zip接著將解開的檔案改名並移至便於管理的地方
$ unzip Octopus\ Code.zip
$ mv Octopus\ Code octopus完成下載和解壓縮後
$ mv octopus /opt/
開始正始燒錄的工作
==燒錄程式==
進入octopus的motes資料夾中
輸入以下指令將程式編譯並燒至mote中
$ cd /opt/octopus/motes/這樣就燒錄完成了
$ make telosb
$ make telosb reinstall,0 bsl,/ttyUSB0
$ make telosb reinstall,1 bsl,/ttyUSB1
.....
==讀取資料==
在Octopus上讀取資料和Surge類似
可以參考
http://hdj-berkeley.blogspot.com/2007/10/surge-on-tinyos1x.html
這裡我只使用serialforwader 的方法
首先先設定好SerialForwarder:
$ java net.tinyos.sf.SerialForwarder -comm serial@/dev/ttyUSB0:telos -no-gui接著再開另一個commend line執行Octopus的java程式
如果是第一次使用Octopus的java程式
請記得至Octopus的java資料夾下執行make
$ cd /opt/octopus/java/而且因為SerialForwarder 在TinyOS2.x上預設的port為9002
$ make
所以我們將環境變數改成
$ export MOTECOM=sf@localhost:9002之後再執行Octopus主程式
$ java OctopusGui就會看到Octopus的GUI畫面了
http://csserver.ucd.ie/~rjurdak/User%20Documentation.pdf
2007年10月4日 星期四
MViz
MViz 為Tinyos 2.x上的圖型化介面的工具
有點像1.x上的Surge
不過根據個人使用的結果
並沒有Surge好用
而且功能也滿陽春的
如果要我選擇的話
我會用另一款圖型化介面 Octopus
而且Octopus才剛release出來
感覺上比較會有人維護
底下附上一張MViz run起來的圖型

CVS 來源:
http://www.tinyos.net/dist-2.0.0/tinyos-2.0.0/apps/MViz/
有點像1.x上的Surge
不過根據個人使用的結果
並沒有Surge好用
而且功能也滿陽春的
如果要我選擇的話
我會用另一款圖型化介面 Octopus
而且Octopus才剛release出來
感覺上比較會有人維護
底下附上一張MViz run起來的圖型

CVS 來源:
http://www.tinyos.net/dist-2.0.0/tinyos-2.0.0/apps/MViz/
2007年10月2日 星期二
Surge on TinyOS1.x
Surge 為TinyOS1.x上用作測試mutlihop的應用程式
它可以GUI的方式將整個Topology呈現出來
只要到apps/SurgeTelos 底下就可以找到其原始碼
下面記載我自己測試時遇到的問題和需要注意的地方
Step1 燒錄程式
因為我目前用的mote是Tmote sky
所以首先到apps/SurgeTelos
並輸入以下指令將程式碼燒到mote裡面
因為編號為0的節點在surge中為base station
可以透過這個節點收集資料
第二行是將第二個mote編號設定為1
這個節點會將資料一直傳送出去
此外,預設的Group ID 為0x7D
如果要更改Group ID的話
可以先修改環境變數之後再重新編譯程式
例如
Step2 讀取資料
將程式燒好之後,我們有兩種方式將basestation 收集的資料以GUI的方式秀出
法一 直接使用Surge的java程式
先確認tools/java/net/tinyos/surge/底下的java程式是否已經編譯完成
而且必須為telos重新編譯surge,否則可能會遇到資料格式不符的問題
必須修改環境變數,讓java程式知道需要透過哪個device讀取資料和所用到的baud rate
如果設為57600會一直出現 TOS_Msg ngth is invalid
我在這邊卡很久,還以為surge不會自動判斷封包的格式,重新編譯surge了好多次
後來才發現只要在":"之後設定為telos,surge會自己去找相對應的格式
接著執行surge程式
法二 透過SerialForwarder傳送資料
透過SerialForwarder的好處是可以讓多台電腦同時觀看目前basestation的狀況
所以首先先設定好SerialForwarder:
我們必須確認device和baud rate是否都設定妥當
"-no-gui"是讓SerialForwarder在commend line下執行
接著再開另一個commend line執行surge 程式
而且因為SerialForwarder 預設的port為9001
所以我們將環境變數改成
只要將環境變數中的localhost改成IP
就可以在其它的電腦上觀看整個網路的狀況
參考來源:
http://www.tinyos.net/tinyos-1.x/doc/multihop/multihop_routing.html
SurgeTelos README
目前測試結果:
可以在server上啟用SF
並在遠端的cliet上看到 1個basestation和8個node的連接狀況
如圖所示:

遇到狀況:
它可以GUI的方式將整個Topology呈現出來
只要到apps/SurgeTelos 底下就可以找到其原始碼
下面記載我自己測試時遇到的問題和需要注意的地方
Step1 燒錄程式
因為我目前用的mote是Tmote sky
所以首先到apps/SurgeTelos
並輸入以下指令將程式碼燒到mote裡面
$ make telosb install,0 bsl,/dev/ttyUSB0第一行是將第一個mote編號設定為0
$ make telosb install,1 bsl,/dev/ttyUSB1
因為編號為0的節點在surge中為base station
可以透過這個節點收集資料
第二行是將第二個mote編號設定為1
這個節點會將資料一直傳送出去
此外,預設的Group ID 為0x7D
如果要更改Group ID的話
可以先修改環境變數之後再重新編譯程式
例如
$ export DEFAULT_LOCAL_GROUP=0x0a這樣就可以將Group ID改成0x0a
$ make telosb install,0 bsl,/dev/ttyUSB0
......
Step2 讀取資料
將程式燒好之後,我們有兩種方式將basestation 收集的資料以GUI的方式秀出
法一 直接使用Surge的java程式
先確認tools/java/net/tinyos/surge/底下的java程式是否已經編譯完成
而且必須為telos重新編譯surge,否則可能會遇到資料格式不符的問題
$ cd $TOSROOT/tools/java/net/tinyos/surge在確認surge已經編譯完成之後
$ make clean
$ SURGE_PLATFORM=telos make
必須修改環境變數,讓java程式知道需要透過哪個device讀取資料和所用到的baud rate
$ export MOTECOM=serial@/dev/ttyUSB0:telos請特別注意":"之後為telos,不要設定為一般telos用的57600
如果設為57600會一直出現 TOS_Msg ngth is invalid
我在這邊卡很久,還以為surge不會自動判斷封包的格式,重新編譯surge了好多次
後來才發現只要在":"之後設定為telos,surge會自己去找相對應的格式
接著執行surge程式
$ java net.tinyos.surge.MainClass 0x7D這樣就會有GUI的畫面跑出來了
法二 透過SerialForwarder傳送資料
透過SerialForwarder的好處是可以讓多台電腦同時觀看目前basestation的狀況
所以首先先設定好SerialForwarder:
$ java net.tinyos.sf.SerialForwarder -comm serial@/dev/ttyUSB0:telos -no-gui類似剛才"法一"的環境變數設定
我們必須確認device和baud rate是否都設定妥當
"-no-gui"是讓SerialForwarder在commend line下執行
接著再開另一個commend line執行surge 程式
而且因為SerialForwarder 預設的port為9001
所以我們將環境變數改成
$ export MOTECOM=sf@localhost:9001之後再執行surge主程式
$ java net.tinyos.surge.MainClass 0x7D使用法二的好處是可以讓多個使用者同時都可以觀察目前basestation的情況
只要將環境變數中的localhost改成IP
就可以在其它的電腦上觀看整個網路的狀況
參考來源:
http://www.tinyos.net/tinyos-1.x/doc/multihop/multihop_routing.html
SurgeTelos README
目前測試結果:
可以在server上啟用SF
並在遠端的cliet上看到 1個basestation和8個node的連接狀況
如圖所示:

遇到狀況:
- client每隔幾分鐘會斷線一次,GUI就會消失
- server端收到四千多個packet後會crash
2007年9月28日 星期五
SerialForwarder without GUI
SerialForwarder 主要是用來將BaseStation收集到的資料傳送出去
收集的方式可以透過serial port或是從網路收集
一般在使用SerialForwarder的時候都會有一個java GUI跑出來
如果在command line的模式下直接執行的話
就會出現error
必須加上-no-gui參數
SerialForwarder才能在command line下正常執行
例如:
http://stevenylai.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=amonth%3D4%26ayear%3D2007
收集的方式可以透過serial port或是從網路收集
一般在使用SerialForwarder的時候都會有一個java GUI跑出來
如果在command line的模式下直接執行的話
就會出現error
必須加上-no-gui參數
SerialForwarder才能在command line下正常執行
例如:
java net.tinyos.sf.SerialForwarder -no-gui參考網址:
java net.tinyos.sf.SerialForwarder -comm serial@/dev/ttyUSB11:57600 -no-gui
http://stevenylai.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=amonth%3D4%26ayear%3D2007
2007年9月20日 星期四
在Ubuntu 中灌 TinyOS2.x 和TinyOS1.x
Step1 安裝Ubuntu 7.04
安裝Ubuntu的過程約半個小時~一個小時
可以至
http://www.ubuntu.com/getubuntu/download
下載最新live CD並燒錄至光碟
詳細安裝步驟省略
Step2 安裝TinyOS2.x
安裝完Ubuntu之後
先裝TinyOS2.x
因為目前己經有人為Ubuntu打包好TinyOS2.x
只要先修改/etc/apt/sources.list
接著在command line中輸入以下指令安裝TinyOS2.x
請按"Y"或是"確認"完成安裝
在安裝Java時,可能會花費一段時間
而且安裝過程中可能會出現藍色畫面告知一些使用權限的資訊
直接按下"tab"到"確認"完成安裝
安裝完TinyOS2.x之後
可以輸入
如果沒有將mote連接到電腦上
會出現"No devices found."
但是因為Ubuntu 7.04 USB driver 的問題
導致tmote 插上NB之後,居然找不到硬體
目前可以用以下方法解法
不過我沒有reboot,只是把mote重新plugin一次就可以找到了
Step3 安裝TinyOS1.x
安裝完TinyOS2.x
接著使用CVS安裝TinyOS1.x
如果系統中還沒有安裝CVS
請記得安裝
然後按照下列步驟安裝TinyOS1.x
直接按下Enter鍵跳過
而且下載TinyOS1.x大約需要半個小時
請耐心等候
Step4 環境設定
環境的設定非常重要
尤其是TinyOS和JAVA安裝的路徑一定要設定正確才行
還 有高手已寫好方便的設定檔供人下載
請至這裡下載設定檔並儲存在家目錄~/底下
請記得將終端機重開才能看到正常切換
如下所示:
http://www.5secondfuse.com/tinyos/install.html
http://www.tinyos.net/scoop/story/2007/8/15/234856/990
Step5 安裝Javax.com
若要讓mote能和電腦溝通
也就是傳資料回電腦
就一定要使用Javax.com
不過預設是沒有安裝在電腦中的
請先至
http://javashoplm.sun.com/ECom/docs/Welcome.jsp
下載javax_comm-2_0_3-solsparc.tar.Z 並安裝
將最後一行改為
參考來源:
http://www.comnets.uni-bremen.de/typo3site/index.php?id=48
Step6 解決Java Serial Communications在TinyOS1.x的問題
在TinyOS1.x中需要安裝TOSComm
請先切換至TinyOS1.x的環境
加入
到/opt/tinos-1.x/tools/java底下執行
如果執行java的GUI程式出現空白畫面的情行
可能是因為java和compiz相衝
請修改環境變數
安裝Ubuntu的過程約半個小時~一個小時
可以至
http://www.ubuntu.com/getubuntu/download
下載最新live CD並燒錄至光碟
詳細安裝步驟省略
Step2 安裝TinyOS2.x
安裝完Ubuntu之後
先裝TinyOS2.x
因為目前己經有人為Ubuntu打包好TinyOS2.x
只要先修改/etc/apt/sources.list
$ sudo gedit /etc/apt/sources.list並且加入下列檔案來源至sources.list中
deb http://tinyos.stanford.edu/tinyos/dists/ubuntu feisty main修改完sources.list,請儲存並關閉視窗
接著在command line中輸入以下指令安裝TinyOS2.x
$ sudo apt-get update如果在安裝TinyOS2.x的時候有遇到任何詢問安裝相關程式的畫面時
$ sudo apt-get install cvs subversion autoconf automake1.9 python-dev
$ sudo apt-get install g++ g++-3.4 gperf swig sun-java5-jdk graphviz alien fakeroot
$ sudo apt-get install tinyos tinyos-msp430 tinyos-avr
請按"Y"或是"確認"完成安裝
在安裝Java時,可能會花費一段時間
而且安裝過程中可能會出現藍色畫面告知一些使用權限的資訊
直接按下"tab"到"確認"完成安裝
安裝完TinyOS2.x之後
可以輸入
$ motelist測試是否能列出mote的基本資料
如果沒有將mote連接到電腦上
會出現"No devices found."
但是因為Ubuntu 7.04 USB driver 的問題
導致tmote 插上NB之後,居然找不到硬體
目前可以用以下方法解法
$ sudo apt-get remove brltty執行完後重開電腦就可以了,
$ sudo aptitude reinstall udev
不過我沒有reboot,只是把mote重新plugin一次就可以找到了
Step3 安裝TinyOS1.x
接著使用CVS安裝TinyOS1.x
如果系統中還沒有安裝CVS
請記得安裝
然後按照下列步驟安裝TinyOS1.x
$ cvs -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos login如果CVS詢問你的密碼時
$ cvs -z3 -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos co tinyos-1.x
$ sudo mv tinyos-1.x /opt
直接按下Enter鍵跳過
而且下載TinyOS1.x大約需要半個小時
請耐心等候
Step4 環境設定
環境的設定非常重要
尤其是TinyOS和JAVA安裝的路徑一定要設定正確才行
還 有高手已寫好方便的設定檔供人下載
請至這裡下載設定檔並儲存在家目錄~/底下
$ cd ~/且在 ~/.bashrc 中加入
$ wget http://www.5secondfuse.com/tinyos/.bash_tinyos
if [ -f ~/.bash_tinyos ]; then改完 ~/.bashrc 之後就可以在TinyOS1.x和TinyOS2.x切換. ~/.bash_tinyos
fi
請記得將終端機重開才能看到正常切換
如下所示:
$ tos1主要參考網址:
Setting up for TinyOS 1.x
...使用TinyOS1.x$ tos2
Setting up for TinyOS 2.x
...使用TinyOS2.x
http://www.5secondfuse.com/tinyos/install.html
http://www.tinyos.net/scoop/story/2007/8/15/234856/990
Step5 安裝Javax.com
若要讓mote能和電腦溝通
也就是傳資料回電腦
就一定要使用Javax.com
不過預設是沒有安裝在電腦中的
請先至
http://javashoplm.sun.com/ECom/docs/Welcome.jsp
下載javax_comm-2_0_3-solsparc.tar.Z 並安裝
$ tar xvzf javax_comm-2_0_3-solsparc.tar.Z並修改$JDKROOT/jre/lib/javax.comm.properties
$ sudo cp commapi/comm.jar $JDKROOT/jre/lib/ext/
$ sudo cp commapi/javax.comm.properties $JDKROOT/jre/lib/
$ sudo cp commapi/libSolarisSerialParallel.so /usr/lib
將最後一行改為
Driver=gnu.io.RXTXCommDriver(請用vi 或 pico處理, gedit無法處理)
參考來源:
http://www.comnets.uni-bremen.de/typo3site/index.php?id=48
Step6 解決Java Serial Communications在TinyOS1.x的問題
在TinyOS1.x中需要安裝TOSComm
請先切換至TinyOS1.x的環境
$ tos1再修改$TOSROOT/beta/TOSComm/comm/Makefile
加入
JAVADIR=/usr/lib/jvm/java-1.5.0-sun
接著執行Step7 為TinyOS1.x安裝Java 工具$ alias g++=g++-3.4; cd $TOSROOT/beta/TOSComm; sudo make
到/opt/tinos-1.x/tools/java底下執行
$ makeP.S
如果執行java的GUI程式出現空白畫面的情行
可能是因為java和compiz相衝
請修改環境變數
$ export AWT_TOOLKIT=”MToolkit”如果在執行java程式遇到下列狀況
$ java net.tinyos.tools.Listen請執行下列指令,將libgetenv.so複製到正確的位置
getenv JNI library not found. Env.getenv will not work
.....
$ sudo cp $TOSROOT/tools/java/jni/libgetenv.so $JDKROOT/jre/lib/i386/應該就可以解決了
$ cd $TOSROOT/tools/java/; sudo make
2007年9月15日 星期六
讓你的VI看得懂NesC
VI能辨認很多種程式語言
只要去官方下載 *.vim
就可以讓你的VI看得懂新的程式語言
當然要開發TinyOS的時候
一定會用到NesC
可以先到
http://www.vim.org/scripts/script.php?script_id=899
下載nc.vim
並將這個nc.vim移到
這個資料夾之下
記得將VI的 syntax打開
:syntax on
這樣VI就可以認得NesC啦
參考網址:
http://vimcdoc.sourceforge.net/doc/filetype.html#new-filetype
http://vimcdoc.sourceforge.net/doc/syntax.html
只要去官方下載 *.vim
就可以讓你的VI看得懂新的程式語言
當然要開發TinyOS的時候
一定會用到NesC
可以先到
http://www.vim.org/scripts/script.php?script_id=899
下載nc.vim
並將這個nc.vim移到
~/.vim/ftdetect/這個資料夾之下
記得將VI的 syntax打開
:syntax on
這樣VI就可以認得NesC啦
參考網址:
http://vimcdoc.sourceforge.net/doc/filetype.html#new-filetype
http://vimcdoc.sourceforge.net/doc/syntax.html
2007年8月25日 星期六
Motelab
Berkeley一位資深的學長推薦我們這套軟體
如果之後真的有興趣將所有WSN網頁化的話
可以參考這個計劃
MoteLab provides a public, permanent testbed for development and testing of sensor network applications via an intuitive web-based interface.
http://motelab.eecs.harvard.edu/index.php
如果之後真的有興趣將所有WSN網頁化的話
可以參考這個計劃
MoteLab provides a public, permanent testbed for development and testing of sensor network applications via an intuitive web-based interface.
http://motelab.eecs.harvard.edu/index.php
訂閱:
文章 (Atom)

