CC2430單片機(jī)的TinyOS移植(windows平臺(tái))
注:如果對(duì)CC2430和TinyOS不甚了解,請(qǐng)?zhí)^這篇文章
本文引用地址:http://m.butianyuan.cn/article/201611/322869.htm–
本文發(fā)表在PSYcHic
原文地址為:如需轉(zhuǎn)載請(qǐng)保留這個(gè)網(wǎng)址 謝謝!
現(xiàn)在國(guó)內(nèi)做WSN研究的人越來越多了。在硬件方面,我們國(guó)內(nèi)不像國(guó)外那樣擁有很多硬件開發(fā)平臺(tái)可以供我們選擇。而且,crossbow的專業(yè)開發(fā)平臺(tái)價(jià)格非常昂貴。不過隨著越來越多的公司開始關(guān)注WSN,zigbee,我們現(xiàn)在還是有可能在千元之內(nèi)就搭建出來一套自己的無線傳感器開發(fā)系統(tǒng)。
CC2430是現(xiàn)在較為理想的硬件平臺(tái)。在國(guó)內(nèi),大多數(shù)人還是使用IAR結(jié)合z-stack協(xié)議棧(或者是變種的xx龍版)進(jìn)行開發(fā)。z-stack協(xié)議棧開發(fā)比較簡(jiǎn)便,很適合新手使用。但是如果你是搞學(xué)術(shù)研究,需要深入研究組網(wǎng)及相關(guān)算法開發(fā)的話,那么UC Berkely的TinyOS才是最佳的選擇。(我相信聰明的人不會(huì)去淌z-stack的OSAL的渾水吧….)
很多人已經(jīng)成功將TinyOS移植到了CC2430上了。但是目前在網(wǎng)上似乎找不到有比較詳細(xì)操作步驟的文章。那么我來給大家科普下吧:)
—-
首先,我們要往CC2430上移植的是TinyOS 2.x版本。如果你英文好的話直接前往下面這里查看相關(guān)資料
TinyOS2.x for 8051目前支持三種編譯器——Keil,IAR,sdcc 我們采用的編譯器是Keil——這個(gè)大家都比較熟悉。TinyOS 2.x 是必須在Linux平臺(tái)下才能工作的,而Keil則是一個(gè)windows下的軟件,所以我們必須要先安裝一個(gè)在windows下面模擬linux的軟件——Cygwin。
硬件:CC2430節(jié)點(diǎn),仿真器
軟件:Cygwin,Keil,TinyOS 2.x,一些相關(guān)的環(huán)境設(shè)置包,SmartRF04 Flash Programmer
硬件就是原來在IAR下能正常使用的CC2430開發(fā)硬件就OK(不管是無線龍的,華凡的,微骨的都行)
軟件我需要說下:
TinyOS 2.x : 請(qǐng)到這里下載最新版本 (本文是根據(jù) 26 Oct 2008 這個(gè)版本進(jìn)行的介紹)
Keil:請(qǐng)安裝好,記住一定要安裝沒有2K限制的版本。
0、安裝Keil ——Keil是現(xiàn)在單片機(jī)開發(fā)必備的軟件了,網(wǎng)上資料一大堆,我就省略了。自己安裝好就可以了。
1、安裝Java 1.5 JDK
下載地址
如果你做Java開發(fā),以前安裝過的話就可以跳過這一步了。
2、安裝Cygwin
請(qǐng)安裝TinyOS推薦使用的版本。不少人在后面遇到各種詭異的問題就是因?yàn)镃ygwin安裝不當(dāng),缺少一些必要的組件。
你可以去:
下載這個(gè)版本的Cygwin。
如果鏈接失效,請(qǐng)前往TinyOS官方的wiki尋找其推薦的Cygwin版本:
安裝過程很簡(jiǎn)單,一路next下去就OK,不過請(qǐng)記住你安裝的位置。本文默認(rèn)是安裝到C盤下。
3、下載TinyOS開發(fā)必備的編譯工具的安裝包(一共4個(gè))
NesC編譯工具:
TinyOS相關(guān)工具:
4、啟動(dòng)Cygwin,并在Cygwin下安裝上面下載好的rpm包
雙擊圖標(biāo)即可啟動(dòng)Cygwin。 正常啟動(dòng)后應(yīng)該會(huì)有”$”標(biāo)識(shí)符和光標(biāo)。
我們要安裝rpm包,就要首先切換到rpm包存放的目錄下。如果你熟悉Linux,那么自己安裝就行。如果不是的話,按照我所說的一步一步來。
1)首先找到你安裝Cygwin的目錄,如果是默認(rèn)安裝的話就是C:Cygwin
2)進(jìn)入目錄,發(fā)現(xiàn)里面有/bin /var /etc /opt /home等文件夾,Linux系統(tǒng)下的根目錄就是這個(gè)樣子啦。
我們雙擊home文件夾,發(fā)現(xiàn)里面又有另外一個(gè)文件夾,起的是你安裝時(shí)設(shè)置的用戶名稱,假設(shè)你叫做quake(請(qǐng)?zhí)鎿Q為你自己的用戶名)?,F(xiàn)在進(jìn)入C:Cygwinhomequake下面
好了,當(dāng)我們一啟動(dòng)Cygwin,程序的終端窗口默認(rèn)也是停留在/home/quake下面。下面我們需要把剛剛下載的4個(gè)rpm包拷貝到C:Cygwinhomequake這個(gè)文件夾下面。
之后在Cygwin終端下輸入
ls
按回車后,你會(huì)發(fā)現(xiàn)終端的窗口里顯示了你剛剛拷過去的rpm包的名字。(更多Linux bash命令請(qǐng)參考Linux資料)
下面需要一個(gè)一個(gè)安裝
輸入
rpm -ivh nesc-1.3.0-1.cygwin.i386.rpm
rpm -ivh tinyos-tools-1.3.0-1.cygwin.i386.rpm
rpm -ivh tinyos-deputy-1.1-1.cygwin.i386.rpm
rpm -ivh tinyos-2.1.0-1.cygwin.noarch.rpm
每輸入一行,按一次回車,我們就把對(duì)應(yīng)的rpm包給安裝好啦。把4個(gè)rpm包都安裝好后就可以進(jìn)行下一步了。
5、安裝TinyOS 2.x
將下載好的TinyOS 2.x的安裝包給解壓縮(如TinyOS8051wg-0.1pre4.tgz),解壓縮用winrar就可以。
將解壓好的tinyos-2.x-contrib這個(gè)文件夾拷貝到C:Cygwinopt 下
好了。我們已經(jīng)把TinyOS的開發(fā)環(huán)境基本搭建好了。
下面我們實(shí)際編譯個(gè)程序吧!
首先在Cygwin下面輸入
cd /opt
ls
你可以看到opt目錄下有你剛剛拷貝過去的tinyos-2.x-contrib文件夾,繼續(xù)輸入
cd tinyos-2.x-contrib/
我們查看下該目錄下面有什么
ls
發(fā)現(xiàn)有個(gè)diku文件夾
下面輸入
source diku/env
說明:diku文件夾下面有個(gè)env配置文件,我們通過source 命令加載下,這樣后面編譯的時(shí)候編譯器就知道我們要使用什么樣的配置去編譯了。關(guān)于env配置文件的具體內(nèi)容稍后介紹。我們用Keil編譯,保持其默認(rèn)狀態(tài)就可以了。
之后我們就可以編譯了,所有的例子在tinyos-2.x-contrib/diku/common/apps/下面,我們以BlinkNoTimerTask為例
輸入
cd /diku/common/apps/BlinkNoTimerTask
make cc2430em
如果一切正常的話,你會(huì)看到:
GENERATING INTEL HEX FILE: app.hex
compiled BlinkNoTimerTaskAppC to a cc2430em binary
Code size of app.o
MODULE INFORMATION:STATIC OVERLAYABLE
CODE SIZE= 635 —-
CONSTANT SIZE= —- —-
XDATA SIZE= 4 9
PDATA SIZE= —- —-
DATA SIZE= —- —-
IDATA SIZE= —- —-
BIT SIZE= —- —-
Total sizes
Program Size: data=9.0 xdata=10 const=0 code=694
這段話,這表明你已經(jīng)成功了!~
好了,下面我們看看TinyOS生成了什么吧~
在
C:cygwinopt inyos-2.x-contribdikucommonappsBlinkNoTimerTaskuildcc2430em
這個(gè)目錄下面
我們發(fā)現(xiàn)了其編譯生成的app.hex文件。現(xiàn)在只要把這個(gè)文件燒錄進(jìn)單片機(jī),我們就大功告成了!
我們安裝下SmartRF04 Flash Programmer這個(gè)軟件,這個(gè)軟件一般購(gòu)買仿真器的話都會(huì)在附送的光盤里面贈(zèng)送,如果沒有的話網(wǎng)上搜索下吧,實(shí)在沒有給我發(fā)信索取下。
之后我們插好仿真器,打開SmartRF04 Flash Programmer這個(gè)軟件,在system-on-chip的選項(xiàng)卡下
將hex文件選擇為我們剛剛編譯好的那個(gè),之后選擇“Perform actions”就可以順利燒寫了:)
好了,如果一切正常,那么恭喜你已經(jīng)將TinyOS成功移植到了CC2430上了。我們成功擺脫了IAR不斷升級(jí)的困擾和Z-stack,已經(jīng)進(jìn)入到了TinyOS的世界了。
評(píng)論