歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu 下TinyOS在CC2530上移植之環境搭建

Ubuntu 下TinyOS在CC2530上移植之環境搭建

日期:2017/2/28 16:07:21   编辑:Linux教程

09年TI推出CC2530,直到現在也沒有人把TinyOS移植到這款SOC上(可能有人已經移植成功了,只是比較低調而已)。之前把TinyOS移植到了MSP430F2618+CC2520+CC2591平台上,為了使我們項目組設計的平台能夠相互兼容,順便把TinyOS移植到CC2530上。

首先要做的工作就是編譯環境的搭建,如果之前你已經使用了CC2430,那麼環境搭建這塊可以跳過。TinyOS 8051工作組為以51為內核的片上系統使用TinyOS提供了一個插件,與其說是一個插件倒不如說它就是一個完完全全的TinyOS系統。環境的搭建可以參考網上的一些文章,這裡推薦一篇http://www.linuxidc.com/Linux/2011-09/42435.htm這裡說的很詳細,不過我這裡用的是Ubuntu所以Cygwin的安裝就可以省去了.

1.TinyOS-2.1.1的安裝可以根據TinyOS官網上Getting started中的Automatic installation for debian system。首先,更新你的源

sudo gedit /etc/apt/sources.list

在最後加上 deb http://hinrg.cs.jhu.edu/tinyos karmic main,然後更新下

sudo apt-get update

之後就可以安裝了

sudo apt-get install tinyos-2.1.1

安裝完成之後設置一下路徑,可以修改~/.bashrc或者~/.profile文件,加入如下語句source /opt/tinyos-2.1.1/tinyos.sh,這裡默認的是Tinyos安裝在/opt下。

安裝python開發包:

apt-get install python-dev

這一步是必須的,不然在運行之後的make micaz sim的時候會報錯。

之後查看自己的python版本,然後修改 /opt/tinyos-2.1.1/support/make/sim.extra

修改PYTHON_VERSION為自己的python版本。編輯/opt/tinyos-2.1.1/tinyos.sh文件,修改 CLASSPATH環境變量如下:

CLASSPATH=$CLASSPATH:$TOSROOT/support/sdk/java/tinyos.jar:.

為了在啟動shell時,自動設置 TinyOS環境變量

sudo gedit ~/.bashrc

在$HOME下的.bashrc文件中添加下面語句:

source /opt/tinyos-2.1.1/tinyos.sh export CLASSPATH=$TOSROOT/support/sdk/java/tinyos.jar:.最後運行tos-check-env檢查你一下你有沒有正確安裝。

2.安裝Keil (Keil uVersion4)

需要安裝包的可以給我留言,因為只能上傳小於20M的文件,所以沒能傳上來。注冊機可以在資源裡搜索Keil C51 V900注冊機。

因為是在Linux系統下,所以需要安裝wine來運行.exe文件。終端運行

sudo apt-get install wine裝完之後就可以安裝Keil了。把Keil解壓出來後,復制C51V900.exe 、KEIL_Lic.exe到其他目錄(最好不要帶中文名),在該目錄下,終端中運行

WINEPREFIX=/root/.wine.keil wine C51V900.exe

跳出來windows下熟悉的軟件安裝界面,全部默認安裝。最後,選擇最後一項提供示例程序。安裝完成,終端運行Keil

WINEPREFIX=/root/.wine.keil wine "C:/Keil/UV4/Uv4.exe"

Keil開始運行,增加License,file->License Management,在另一個終端中運行注冊機(不需要root權限運行) 終端運行

wine KEIL_Lic.exe

拷貝CID裡的內容到注冊機裡的CID,點擊生成注冊碼。

重新運行Keil 編譯自帶的示例程序,若沒有警告License信息,則注冊成功。

3.安裝tinyos-2.x-contrib

在第一步安裝了TinyOS-2.1.1後/opt目錄下應該有個tinyos-2.1.1目錄。將下載的TinyOS8051wg-0.1pre4.tgz解壓後生成的tinyos-2.x-contrib拷貝到/opt目錄下。修改環境變量,在tinyos-2.x-contrib/diku目錄下有個env文件,該文件包含了要設置的環境變量,根據需要修改,因為現在用的是tinyos-2.1.1版本,所以/opt目錄下原有的tinyos-2.x目錄已經被tinyos-2.1.1取代,所以首先修改TOSROOT=/opt/tinyos-2.1.1 否則提示找不到Makerules文件,這就是為什麼要安裝tinyos-2.1.1的原因。目前我們用的是keil編譯器所以編譯器選項要選擇keil export MCS51_COMPILER=keil。修改完之後source一下env使環境變量有效。

注意:每次重新啟動後如果要編譯,需要運行此命令(source /opt/tinyos-2.x-contrib/diku/env)

下面測試Keil工具鏈是否可用

編譯工程文件(以BlinkNoTimerTask為例)

cd /diku/common/apps/BlinkNoTimerTask

make cc2430em

如果出現如下錯誤Z:/opt/tinyos-2.x-contrib/diku/common/apps/BlinkNoTimerTask/build/cc2430em>C:/Keil/C51/BIN/A51.EXE "startup.a51" SET (SMALL) DEBUG EP

File not found

make: *** [build/cc2430em/startup.OBJ] 錯誤 49

說明keil安裝路徑錯誤,按步驟2重新安裝。TinyOS默認的keil安裝路徑是$(HOME)/.wine.keil,確保路徑正確。

如出現***ERROR L257:EXTENDED LINKER REQUIRES UPGRADE TO PK51那麼很可能是破解沒有成功。重新安裝Keil,並且使用keygen破解。

4.安裝其他交叉編譯鏈

SDCC安裝在ubuntu下很是方便,終端運行

apt-get install sdcc sdcc-libraries

修改env文件,使編譯工具設為sdcc,export MCS51_COMPILER=sdcc

source /opt/tinyos-2.x-contrib/diku/env

重新編譯BlinkNoTimerTask,應該沒有問題。

IAR安裝(目前還沒有破解成功,只能使用30天試用版)。在IAR官網下載IAR For 8051,以及破解工具(只是用於通過安裝,並不能破解,因為在ubuntu下keygen識別不了ID)。安裝方法類似於Keil。

WINEPREFIX=/root/.wine.iar wine autorun.exe

按照提示選擇默認安裝。

安裝完成後修改/opt/tinyos-2.x-contrib/diku/env,選擇MCS51_COMPILER=iar,並修改MCS51_IAR_PATH=Program\ Files/IAR\ Systems/Embedded\ Workbench\ 5.3/common/bin/,這個設置要根據當前安裝的IAR版本設置。

因為IAR沒有破解成功,運行時候會提示錯誤Fatal Error[Cp001]: Copy protection check, No valid license found for this product [20] Error while running C/C++ Compiler。但是,到此階段已經生成了我們需要的app.c文件。拷貝此文件到Windows下使用IAR Embedded Workbench進行編譯,值得注意的是在編譯之前需要對工程進行設置,設置如下:

工程設置好之後,修改app.c文件,加入頭文件ioCC2530.h。注銷以sfr,sbit開頭的寄存器定義語句,這些在ioCC2530.h被定義了,最後就是修改錯誤提示中未定義的寄存器名,因為TinyOS中某些寄存器名的定義與ioCC2530.h定義的名不相同。

Copyright © Linux教程網 All Rights Reserved