關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > STM32和CC2520的TinyOS移植與驅動分析

        STM32和CC2520的TinyOS移植與驅動分析

        作者: 時間:2012-12-06 來源:網絡 收藏

        3.4 修改編譯工具鏈
        3.4.1 配置交叉開發工具鏈
        支持的編譯器有很多,比如:ARM—NONE—EABI—GCC、KEIL、IAR等。本文采用ARM—NONE—EABI—GCC編譯器。NesC程序的編譯主要分兩步,首先調用ncc編譯器把NesC預編譯成C文件(即預編譯過程);然后通過一個腳本程序,將經過NesC預編譯生成的應用程序轉換成可以下載到開發板的hex格式文件;最后送入J—Flash ARM下載器下載到硬件。修改后的編譯工具鏈如圖3所示。

        本文引用地址:http://www.104case.com/article/159652.htm

        f.JPG


        下面對這個過程進行詳細的介紹。
        第一步:源組件文件(.nc源文件)的分析和轉換,在這個階段調用自帶的編譯器ncc,對.nc源文件進行文法、語法分析,檢測共享數據緩沖區等。再根據各個組件和接口對其使用的函數和變量進行名字擴展,使其具有全局唯一性。最后把所有的函數和變量都整合到一個主函數main()中,并生成相應的app.c文件。此時生成的已經是普通的C語言程序。以上這個替換過程是由ncc的核心程序nescl.exe完成的。
        第二步:在生成app.c文件后,ncc調用arm—none—eabi—gcc的交叉編譯器工具對該C文件進行編譯、鏈接生成可執行文件main.exe,然后通過arm—none—eabi—objcopy工具轉換成main.hex,以便最后下載到平臺上運行調試。
        3.4.2 定制編譯環境
        為使編譯系統能夠尋找到編譯平臺,在工程主文件夾下增加環境定制文件“setup.sh”,定制工程目錄、編譯工具、解釋工具等路徑。在/support/make目錄增加“-p103.target”文件。定制STM32的MAKE系統。在make文件中指定用arm—none—eabi—gcc為編譯器,arm-none-eabi-objcopy為輸出格式轉換器。
        以一個簡單的應用程序radioCountToLeds為例,在STM32平臺上編譯的結果如圖4所示。

        a.JPG


        可以通過自帶的工具生成各個組件的連線關系,只需要在make命令后面添加docs選項。

        4 測試
        TinyOS自帶的radioCountToLeds測試程序,需用通用I/O接口、Timer、Leds、SPI和無線模塊()等組件。為了查看USART模塊,也為了便于跟蹤程序執行流程,在源程序中加入了串口輸出代碼,結果如圖5所示。

        b.JPG


        本實驗通過一個節點每一秒定時廣播數據包,定時器中斷觸發時發送一個16位的數據,并把此數加1。其他節點接收此數據,并根據接收數據的低3位是否為1來分別控制3個Led燈閃爍。通過觀察節點上Led燈的有規律閃爍,能夠證明各模塊成功

        結語
        本文簡單介紹了NesC語言的特點和TinyOS系統架構,重點介紹了TinyOS的編譯機制,并在此基礎上詳細說明了將TinyOS內核程序到以STM32核處理器和無線模塊芯片為核心的開發板上的具體方法。通過測試發現,各個模塊能夠正常穩定工作。但無線模塊協議棧還不夠完善,功能還不全面,仍需要進一步的研究。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 娄烦县| 礼泉县| 上思县| 绥德县| 东山县| 永平县| 太原市| 保山市| 和静县| 黔南| 元氏县| 淮北市| 辽宁省| 巧家县| 平武县| 荥经县| 定安县| 墨玉县| 特克斯县| 白玉县| 民权县| 长子县| 纳雍县| 进贤县| 任丘市| 肇庆市| 玉环县| 营山县| 阜南县| 班戈县| 壶关县| 谷城县| 报价| 石城县| 阳西县| 绵阳市| 嵩明县| 佛坪县| 蓝田县| 南华县| 江口县|