新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > CC2430單片機(jī)的TinyOS移植(windows平臺(tái))

CC2430單片機(jī)的TinyOS移植(windows平臺(tái))

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏
CC2430單片機(jī)TinyOS移植windows平臺(tái))_柘林的石老人_新浪博客

注:如果對(duì)CC2430和TinyOS不甚了解,請(qǐng)?zhí)^(guò)這篇文章

本文引用地址:http://butianyuan.cn/article/201611/322869.htm

本文發(fā)表在PSYcHic

原文地址為:如需轉(zhuǎn)載請(qǐng)保留這個(gè)網(wǎng)址 謝謝!

現(xiàn)在國(guó)內(nèi)做WSN研究的人越來(lái)越多了。在硬件方面,我們國(guó)內(nèi)不像國(guó)外那樣擁有很多硬件開(kāi)發(fā)平臺(tái)可以供我們選擇。而且,crossbow的專(zhuān)業(yè)開(kāi)發(fā)平臺(tái)價(jià)格非常昂貴。不過(guò)隨著越來(lái)越多的公司開(kāi)始關(guān)注WSN,zigbee,我們現(xiàn)在還是有可能在千元之內(nèi)就搭建出來(lái)一套自己的無(wú)線傳感器開(kāi)發(fā)系統(tǒng)。

CC2430是現(xiàn)在較為理想的硬件平臺(tái)。在國(guó)內(nèi),大多數(shù)人還是使用IAR結(jié)合z-stack協(xié)議棧(或者是變種的xx龍版)進(jìn)行開(kāi)發(fā)。z-stack協(xié)議棧開(kāi)發(fā)比較簡(jiǎn)便,很適合新手使用。但是如果你是搞學(xué)術(shù)研究,需要深入研究組網(wǎng)及相關(guān)算法開(kāi)發(fā)的話,那么UC Berkely的TinyOS才是最佳的選擇。(我相信聰明的人不會(huì)去淌z-stack的OSAL的渾水吧….)

很多人已經(jīng)成功將TinyOS移植到了CC2430上了。但是目前在網(wǎng)上似乎找不到有比較詳細(xì)操作步驟的文章。那么我來(lái)給大家科普下吧:)

—-

首先,我們要往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

硬件就是原來(lái)在IAR下能正常使用的CC2430開(kāi)發(fā)硬件就OK(不管是無(wú)線龍的,華凡的,微骨的都行)

軟件我需要說(shuō)下:

TinyOS 2.x : 請(qǐng)到這里下載最新版本 (本文是根據(jù) 26 Oct 2008 這個(gè)版本進(jìn)行的介紹)

Keil:請(qǐng)安裝好,記住一定要安裝沒(méi)有2K限制的版本。

0、安裝Keil ——Keil是現(xiàn)在單片機(jī)開(kāi)發(fā)必備的軟件了,網(wǎng)上資料一大堆,我就省略了。自己安裝好就可以了。

1、安裝Java 1.5 JDK

下載地址

如果你做Java開(kāi)發(fā),以前安裝過(guò)的話就可以跳過(guò)這一步了。

2、安裝Cygwin

請(qǐng)安裝TinyOS推薦使用的版本。不少人在后面遇到各種詭異的問(wèn)題就是因?yàn)镃ygwin安裝不當(dāng),缺少一些必要的組件。

你可以去:

下載這個(gè)版本的Cygwin。

如果鏈接失效,請(qǐng)前往TinyOS官方的wiki尋找其推薦的Cygwin版本:

安裝過(guò)程很簡(jiǎn)單,一路next下去就OK,不過(guò)請(qǐng)記住你安裝的位置。本文默認(rèn)是安裝到C盤(pán)下。

3、下載TinyOS開(kāi)發(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,那么自己安裝就行。如果不是的話,按照我所說(shuō)的一步一步來(lái)。

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

按回車(chē)后,你會(huì)發(fā)現(xiàn)終端的窗口里顯示了你剛剛拷過(guò)去的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

每輸入一行,按一次回車(chē),我們就把對(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的開(kāi)發(fā)環(huán)境基本搭建好了。

下面我們實(shí)際編譯個(gè)程序吧!

首先在Cygwin下面輸入

cd /opt

ls

你可以看到opt目錄下有你剛剛拷貝過(guò)去的tinyos-2.x-contrib文件夾,繼續(xù)輸入

cd tinyos-2.x-contrib/

我們查看下該目錄下面有什么

ls

發(fā)現(xiàn)有個(gè)diku文件夾

下面輸入

source diku/env

說(shuō)明:diku文件夾下面有個(gè)env配置文件,我們通過(guò)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=49
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文件?,F(xiàn)在只要把這個(gè)文件燒錄進(jìn)單片機(jī),我們就大功告成了!

我們安裝下SmartRF04 Flash Programmer這個(gè)軟件,這個(gè)軟件一般購(gòu)買(mǎi)仿真器的話都會(huì)在附送的光盤(pán)里面贈(zèng)送,如果沒(méi)有的話網(wǎng)上搜索下吧,實(shí)在沒(méi)有給我發(fā)信索取下。

之后我們插好仿真器,打開(kāi)SmartRF04 Flash Programmer這個(gè)軟件,在system-on-chip的選項(xiàng)卡下

將hex文件選擇為我們剛剛編譯好的那個(gè),之后選擇“Perform actions”就可以順利燒寫(xiě)了:)

好了,如果一切正常,那么恭喜你已經(jīng)將TinyOS成功移植到了CC2430上了。我們成功擺脫了IAR不斷升級(jí)的困擾和Z-stack,已經(jīng)進(jìn)入到了TinyOS的世界了。




評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉