<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > STM32和CC2520的TinyOS移植與驅(qū)動(dòng)分析

          STM32和CC2520的TinyOS移植與驅(qū)動(dòng)分析

          作者: 時(shí)間:2012-12-06 來(lái)源:網(wǎng)絡(luò) 收藏

          摘要:系統(tǒng)以其組件結(jié)構(gòu)模型、事件、并發(fā)型等優(yōu)點(diǎn)成為目前最受關(guān)注的操作系統(tǒng)。但不支持和CC2 520芯片。因此在分析基本原理、NesC編程語(yǔ)言實(shí)現(xiàn)機(jī)制及其編譯過(guò)程的基礎(chǔ)上,介紹了基于的TinyOS方法,完成了的I/O組件、Timer組件、USART組件、SPI組件和芯片。在實(shí)現(xiàn)的基本通信功能基礎(chǔ)上,實(shí)現(xiàn)簡(jiǎn)單MAC協(xié)議。最后測(cè)試了各組件的效果。實(shí)驗(yàn)測(cè)試結(jié)果表明,節(jié)點(diǎn)可以穩(wěn)定可靠地通信。
          關(guān)鍵詞:;TinyOS;STM32;CC2520;移植;

          引言
          (Wireless Sensor Network,WSN)是一種應(yīng)用相關(guān)的網(wǎng)絡(luò)。需要對(duì)某些操作系統(tǒng)進(jìn)行移植。本文采用TinyOS作為軟件平臺(tái),成功移植了Radio、Timer、USART、SPI和General I/O等5個(gè)底層模塊。測(cè)試結(jié)果表明,移植的5個(gè)底層模塊能夠正常工作。

          1 MCU和無(wú)線模塊介紹
          STM32系列按性能分成兩個(gè)系列:STM32F103“增強(qiáng)型”系列和STM32F101“基本型”系列,時(shí)鐘頻率達(dá)到72 MHz,是同類(lèi)產(chǎn)品中性能最高的產(chǎn)品。本項(xiàng)目采用芯片STM32F103RBT6。CC2520選用第二代ZigBee/IEEE 802.15.4無(wú)線電頻率(RF)收發(fā)器。

          2 TinyOS操作系統(tǒng)和NesC分析
          2.1 NesC介紹
          NesC是專(zhuān)門(mén)為網(wǎng)絡(luò)嵌入式系統(tǒng)設(shè)計(jì)的編程語(yǔ)言,是對(duì)C的擴(kuò)展,它基于TinyOS的結(jié)構(gòu)化概念和執(zhí)行模型而設(shè)計(jì)。主要編程模式包括:事件驅(qū)動(dòng)、彈性并發(fā)型和面向組件程序設(shè)計(jì)等。NesC編譯器進(jìn)行數(shù)據(jù)競(jìng)爭(zhēng)檢測(cè)(提高可靠性)、積極的函數(shù)內(nèi)聯(lián)(降低資源消耗)等整體程序分析,簡(jiǎn)化了應(yīng)用程序的開(kāi)發(fā)。
          2.2 TinyOS分析
          TinyOS(Tiny Micro Threading Operating System)是由加州大學(xué)伯克利分校開(kāi)發(fā)的開(kāi)源的傳感器網(wǎng)絡(luò)操作系統(tǒng),其本身是由NesC語(yǔ)言編寫(xiě)。TinyOS的組件模型體系結(jié)構(gòu)如圖1所示。上層組件對(duì)下層組件發(fā)命令,下層組件向上層組件發(fā)信號(hào)通知事件,最底層的硬件抽象組件直接和硬件打交道。

          本文引用地址:http://www.ex-cimer.com/article/159652.htm

          c.JPG


          TinyOS的硬件抽象層通常是3級(jí)抽象結(jié)構(gòu),稱(chēng)作HAA(Hardware Abstraction Architecture)。整個(gè)硬件抽象層分為硬件表示層(HPL)、硬件適配層(HAL)和硬件接口層(HIL)。
          硬件表示層(Hardware Presentation Layer,HPL)是對(duì)硬件平臺(tái)的功能性描述,主要通過(guò)存儲(chǔ)單元和I/O映射端口訪問(wèn)硬件和通過(guò)硬件中斷來(lái)實(shí)現(xiàn)以下功能:能量管理、控制硬件、硬件中斷開(kāi)閉、提供硬件中斷服務(wù)程序等。
          在HPL上的是硬件適配層(Hardware Adaptation Layer,HAL),該層是整個(gè)硬件抽象層的核心,利用HPL提供的原始接口建立硬件描述資源,并通過(guò)狀態(tài)來(lái)反映硬件的使用情況以實(shí)現(xiàn)對(duì)硬件的仲裁控制,提高系統(tǒng)性能。
          硬件抽象層的最高層是硬件接口層(Hardware Interface Layer,HIL),該層把HAL層提供的接口轉(zhuǎn)換成硬件獨(dú)立的接口,隱藏了平臺(tái)之間的差異,并向上層提供統(tǒng)一的硬件API接口。

          3 基于STM32和CC2520平臺(tái)的TinyOS實(shí)現(xiàn)
          由上文所述,將TinyOS移植到STM32核處理器和CC2520上的關(guān)鍵問(wèn)題是硬件抽象層組件的定制和編譯器工具鏈的配置。基于TinyOS開(kāi)源代碼的約定,主要修改代碼放置在/tos/chips/STM32和tos/platforms/STM32p103。
          3. 1 修改芯片文件
          每個(gè)芯片都通過(guò)多個(gè)接口或組件提供它所實(shí)現(xiàn)的功能,這些接口或組件組成芯片的驅(qū)動(dòng)。將芯片的結(jié)構(gòu)抽象文件放于tos/chips。如果芯片有子系統(tǒng)則建立子目錄,如:tos/chips/STM32/timer。需要改寫(xiě)的TinyOS和MCU相關(guān)模塊如下所述。
          3.1.1 STM32核處理器
          為了同其他外圍設(shè)備的驅(qū)動(dòng)分開(kāi),需要在MCU相關(guān)的文件中增加兩個(gè)定義;原子操作的開(kāi)始和結(jié)束,在頭文件hardware.h中定義;低功耗工作模式,由組件MCUSleepC定義。具體可以參考其他MCU文件編寫(xiě)。
          TinyOS通過(guò)一些接口管理MCU的狀態(tài),決定MCU何時(shí)進(jìn)入低功耗狀態(tài)。MCUSleepC組件向上層提供McuSleep和McuPowerState接口。TinyOS調(diào)度器在原子操作中調(diào)用McuSleep.sleep(),保證在進(jìn)入低功耗狀態(tài)前處于開(kāi)中斷狀態(tài)。在sleep狀態(tài),可以關(guān)閉一些高耗能的模塊,比如:高頻時(shí)鐘、PLL等。


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();