• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      開源無線傳感器網(wǎng)絡(luò)操作系統(tǒng)MansOS研究

      2013-10-10 01:57:04王家兵吳洪明楊志剛
      關(guān)鍵詞:源碼線程代碼

      王家兵,吳洪明,楊志剛

      (1.重慶交通大學(xué) 圖書館,重慶400074;2.重慶交通大學(xué) 應(yīng)用技術(shù)學(xué)院;3.重慶交通大學(xué) 機(jī)電與汽車工程學(xué)院)

      引 言

      無線傳感器網(wǎng)絡(luò)操作系統(tǒng)(WSNOS)在構(gòu)建高效、安全可靠、可擴(kuò)展、分布式無線傳感器網(wǎng)絡(luò)(WSN)時(shí)起著核心作用。由于WSN節(jié)點(diǎn)往往處于苛刻的工作環(huán)境,計(jì)算能力、內(nèi)存、功率等資源相對(duì)有限,難以采用傳統(tǒng)操作系統(tǒng)和嵌入式操作系統(tǒng)。目前有TinyOS、Contiki、MANTIS、LiteOS、Nano-RK、t-Kernel等各種 WSNOS[1-3],人們特別是對(duì) TinyOS[4]、Contiki[5]、Mantis[6]研究較多。這些 WSNOS各有優(yōu)勢(shì),但也存在一些不足,如TinyOS采用nesC語言,學(xué)習(xí)曲線長(zhǎng);Contiki、Mantis支持的硬件平臺(tái)較少。近年來,拉脫維亞大學(xué)(University of Latvia)相關(guān)機(jī)構(gòu)研發(fā)的開源移動(dòng)代理網(wǎng)狀傳感器網(wǎng)絡(luò)操作系統(tǒng) Mans-OS[7-9](Mobile agent netted sensor Operating System),其研究和發(fā)展相當(dāng)活躍,在野生動(dòng)物監(jiān)控[10]、道路狀況監(jiān)測(cè)[11]、環(huán)境監(jiān)測(cè)[12]等實(shí)際應(yīng)用中獲得了良好的效果。本文對(duì)MansOS的架構(gòu)、相關(guān)特性及應(yīng)用方法進(jìn)行了分析、研究,供廣大WSNOS研究與使用者參考。

      1 MansOS體系結(jié)構(gòu)與特性

      1.1 體系結(jié)構(gòu)

      MansOS采用模塊化分層設(shè)計(jì),劃分為三層:硬件表示層(Hardware Presentation Layer,HPL)、硬件抽象層(Hardware Abstraction Layer,HAL)和 硬 件 接 口 層(Hardware Interface Layer,HIL),體系結(jié)構(gòu)如圖1所示。其中最底層HPL是與硬件直接進(jìn)行交互,定義了芯片等低級(jí)硬件的相關(guān)服務(wù);中間層HAL包含了特定硬件平臺(tái)和擴(kuò)展模塊相關(guān)代碼,完成芯片選擇、引腳分配和平臺(tái)參數(shù)設(shè)定等功能;最上層HIL定義了設(shè)備驅(qū)動(dòng)與設(shè)備管理,為應(yīng)用提供統(tǒng)一的、平臺(tái)無關(guān)的資源訪問服務(wù)。其體系結(jié)構(gòu)分離出了芯片相關(guān)、架構(gòu)相關(guān)、平臺(tái)相關(guān)、平臺(tái)獨(dú)立幾個(gè)層面的功能。MansOS沒有采用傳統(tǒng)操作系統(tǒng)單一、嚴(yán)格獨(dú)立的硬件抽象層,而允許用戶直接訪問所有層面功能,以更好利用特定的硬件設(shè)備,提高效率和靈活性,同時(shí)保持易于移植、代碼量小。

      圖1 MansOS體系結(jié)構(gòu)[13]

      MansOS整個(gè)源碼文件目錄如圖2所示,hil文件夾為硬件接口層,對(duì)用戶提供LED、ADC、USART、Sleep、無線通信以及傳感器等平臺(tái)無關(guān)的統(tǒng)一應(yīng)用程序接口;kernel文件夾為操作系統(tǒng)核心,包含設(shè)備管理、系統(tǒng)引導(dǎo)、系統(tǒng)調(diào)用支持等;chips文件夾為硬件表示層芯片相關(guān)代碼,包含各個(gè)微處理器與設(shè)備驅(qū)動(dòng);arch文件夾為 MSP430、AVR等架構(gòu)相關(guān)代碼,platforms文件夾為Arduino、TelosB等平臺(tái)相關(guān)代碼,I/O引腳、功能函數(shù)、與平臺(tái)和架構(gòu)相關(guān)常量也在arch與platform層定義。

      圖2 MansOS源碼文件目錄

      1.2 MansOS關(guān)鍵技術(shù)與特性

      1.2.1 內(nèi)核設(shè)計(jì)

      MansOS內(nèi)核設(shè)計(jì)為支持事件驅(qū)動(dòng)與多線程兩種應(yīng)用執(zhí)行模式。系統(tǒng)啟動(dòng)時(shí)調(diào)用initPlatform()進(jìn)行平臺(tái)初始化并完成常用組件初始化,然后根據(jù)不同執(zhí)行模式,調(diào)用不同函數(shù)。事件驅(qū)動(dòng)模式下,由于GCC不支持執(zhí)行main()函數(shù)后的事件響應(yīng),所以采用調(diào)用appMain()函數(shù)來代替main函數(shù)。多線程模式下,初始化完畢直接調(diào)用main()函數(shù),再創(chuàng)建核心線程和用戶線程兩個(gè)線程。

      默認(rèn)情形MansOS采用事件驅(qū)動(dòng)模式。事件驅(qū)動(dòng)模式的優(yōu)點(diǎn)是大量功能由中斷子程序?qū)崿F(xiàn),應(yīng)用程序簡(jiǎn)潔,代碼量小,只需管理一個(gè)堆棧,無需多線程時(shí)復(fù)雜的內(nèi)存管理,節(jié)省RAM占用量。不利的是,整個(gè)程序設(shè)計(jì)流程難以在代碼中反映,給程序編寫及調(diào)試帶來難度;另外,中斷嵌套要求整個(gè)操作系統(tǒng)代碼可重入,中斷子程序執(zhí)行時(shí)間太長(zhǎng)可能導(dǎo)致系統(tǒng)阻塞。事件驅(qū)動(dòng)模式下,應(yīng)用程序中需注冊(cè)回調(diào)函數(shù),編寫相應(yīng)的回調(diào)函數(shù)代碼,在主程序中通過調(diào)用sleep()進(jìn)入低功耗省電模式。

      對(duì)于線程模式,MansOS采用了核心線程與用戶線程層次式設(shè)計(jì)。核心線程負(fù)責(zé)系統(tǒng)事務(wù)處理,具有高優(yōu)先級(jí)別,用戶線程可以中斷其他用戶線程,但不能中斷核心線程,有多個(gè)用戶線程時(shí)則采用時(shí)間片輪轉(zhuǎn)法和優(yōu)化級(jí)兩種算法進(jìn)行調(diào)度。MansOS采用了信號(hào)量機(jī)制以實(shí)現(xiàn)線程同步,用堆棧檢測(cè)來防止堆棧溢出。通過各線程主循環(huán)中調(diào)用sleep(),在主線程及用戶線程均不活動(dòng)時(shí),系統(tǒng)進(jìn)入省電模式。

      1.2.2 文件系統(tǒng)

      MansOS設(shè)計(jì)了一個(gè)接口類似UNIX的簡(jiǎn)單文件系統(tǒng),把物理Flash芯片抽象為邏輯文件,并提供了各種基本的文件操作命令,使得用MansOS構(gòu)造的無線傳感器節(jié)點(diǎn)能對(duì)采集到的數(shù)據(jù)進(jìn)行保存和記錄。

      MansOS文件系統(tǒng)把Flash芯片分成內(nèi)存段和固定大小的數(shù)據(jù)塊。一個(gè)內(nèi)存段是可一次擦除的最小內(nèi)存單元,含多個(gè)數(shù)據(jù)塊,數(shù)據(jù)塊的大小可以選定,一個(gè)文件由一系列的數(shù)據(jù)塊鏈接而成,這使得文件的大小可以動(dòng)態(tài)地分配。各個(gè)數(shù)據(jù)塊所在段、已使用、未使用、可擦除等標(biāo)識(shí)信息組成一個(gè)塊表,保存在EEPROM中。各文件的文件名、第一個(gè)數(shù)據(jù)塊號(hào)、文件大小等信息也保存在EEPROM中。MansOS文件系統(tǒng)采用單級(jí)目錄,數(shù)據(jù)只可追加,不可改寫,整個(gè)文件系統(tǒng)代碼小而管理簡(jiǎn)單有效。

      1.2.3 組件化設(shè)計(jì)與裁減機(jī)制

      另外,在交通組織過程中,還需要融入交通綜合性以及交通科學(xué)性發(fā)展的目標(biāo),以充分利用原有交通設(shè)置為宗旨,保證最好的改擴(kuò)建效果。根據(jù)項(xiàng)目實(shí)際情況,選擇最合理的施工方案,保證施工結(jié)果可以滿足實(shí)際安全需要。

      為有效解決應(yīng)用WSNOS時(shí)可能發(fā)生的目標(biāo)代碼大、資源利用率低的問題,MansOS采用組件化的設(shè)計(jì)模式,以組件配置與選用來實(shí)現(xiàn)核心程序裁減。傳統(tǒng)桌面操作系統(tǒng)一般采用動(dòng)態(tài)創(chuàng)建、動(dòng)態(tài)終止線程與進(jìn)程,資源受限的WSNOS一般采用靜態(tài)編譯。MansOS采用編譯時(shí)對(duì)組件進(jìn)行充分選配,使運(yùn)行時(shí)再次配置的情況最少,目標(biāo)應(yīng)用代碼達(dá)到最小。極端情況下,用戶甚至可把整個(gè)OS作為常用函數(shù)庫(kù)來使用。

      內(nèi)核裁減方面,MansOS通過編譯時(shí)交互與非交互兩部分來完成。交互部分由配置文件實(shí)現(xiàn),用戶在系統(tǒng)默認(rèn)配置模板基礎(chǔ)上進(jìn)行平臺(tái)相關(guān)、架構(gòu)相關(guān)、應(yīng)用相關(guān)的配置,定義組件間包含、互斥關(guān)系;非交互部分是GCC與GNU binutils等編譯工具自動(dòng)完成的代碼優(yōu)化、無關(guān)代碼剔除等操作。

      1.2.4 運(yùn)行時(shí)管理與無線再編程支持

      MansOS提供了一個(gè)命令行界面(shell)供用戶進(jìn)行運(yùn)行時(shí)的管理,其基于簡(jiǎn)單系統(tǒng)消息協(xié)議(Simple System Message Protocol,SSMP),以廣播或單播的形式對(duì)整個(gè)網(wǎng)絡(luò)中可到達(dá)的節(jié)點(diǎn)進(jìn)行管理。shell可采用交互形式,也可在腳本中執(zhí)行。

      無線再編程使無線傳感器網(wǎng)絡(luò)能進(jìn)行節(jié)點(diǎn)代碼遠(yuǎn)程更新,使應(yīng)用開發(fā)、部署及維護(hù)更具靈活性。MansOS實(shí)現(xiàn)了一個(gè)有效的無線再編程機(jī)制,把整個(gè)無線再編程分為4個(gè)階段,各階段內(nèi)容及實(shí)現(xiàn)方法如表1所列。

      表1 MansOS無線再編程實(shí)現(xiàn)流程

      應(yīng)用無線再編程時(shí),節(jié)點(diǎn)自舉后,引導(dǎo)程序會(huì)下載代碼替換原OS映像文件,完成OS映像文件更新。MansOS引導(dǎo)程序引入了檢測(cè)系統(tǒng)是否正確引導(dǎo)機(jī)制,多次引導(dǎo)失敗時(shí),會(huì)自動(dòng)重新加載上次OS映像,以防止無線再編程失敗時(shí)節(jié)點(diǎn)不可管理的現(xiàn)象發(fā)生。為節(jié)省更新時(shí)間和功耗,MansOS把代碼分成了用戶代碼段與核心代碼段,無線再編程可選擇對(duì)用戶代碼段或核心代碼段進(jìn)行部分更新。實(shí)際應(yīng)用中,無線再編程會(huì)引起節(jié)點(diǎn)代碼量增加,存在每次更新花費(fèi)時(shí)間較長(zhǎng)等問題,應(yīng)根據(jù)具體情況選用。

      1.2.5 可移植性與通信協(xié)議支持

      為了能容易移植到各種處理器架構(gòu),MansOS采用了平臺(tái)與代碼盡可能獨(dú)立的設(shè)計(jì),并且內(nèi)含MSP430、Atmel AVR以及PC架構(gòu)源碼,可直接應(yīng)用于Arduino Duemilanove(ATmega328PMCU)、Tmote Sky(MSP430F1611 MCU)、AdvanticSYS XM1000(MSP430F261MCU)以及Zolertia Z1(MSP430F2617MCU)等平臺(tái)。MansOS對(duì)UART、SPI、I2C總線等通信提供了平臺(tái)獨(dú)立的統(tǒng)一應(yīng)用程序接口,使外圍設(shè)備的驅(qū)動(dòng)可應(yīng)用于不同平臺(tái),只在進(jìn)行編譯時(shí)再鏈接具體的實(shí)現(xiàn)子程序庫(kù)即可。無線通信方面,MansOS支持IEEE 802.15.4兼容無線組網(wǎng),如2.4G ZigBee,并采用uIPv6實(shí)現(xiàn)對(duì)IPv6協(xié)議棧的支持。

      1.3 MansOS與其他WSNOS對(duì)比

      MansOS發(fā)展源于LiteOS,架構(gòu)上融入了Contiki、MANTIS的一些優(yōu)點(diǎn),使其在易用性、可裁剪性、目標(biāo)代碼大小以及平臺(tái)可移植等方面均有良好表現(xiàn)。相比Tiny-OS,MansOS采用C語言,代碼更易編寫、理解和管理;相比Contiki,MansOS的組件化設(shè)計(jì)與裁剪機(jī)制使資源利用更合理,生成目標(biāo)代碼更??;相比Mantis,MansOS把線程分為核心線程和用戶線程,且核心線程總優(yōu)先于用戶線程,使線程調(diào)度更簡(jiǎn)單;相比LiteOS,MansOS分離出了架構(gòu)相關(guān)、平臺(tái)相關(guān)代碼,可移植性更好。

      表2為TinyOS、Contiki、MANTI、LiteOS、MansOS在各性能方面的對(duì)比。

      2 MansOS應(yīng)用開發(fā)

      2.1 開發(fā)環(huán)境

      MansOS相關(guān)應(yīng)用的開發(fā)需在Linux環(huán)境下進(jìn)行交叉編譯鏈接,或在Windows平臺(tái)下,用Cygwin或 MinGW與MSYS進(jìn)行。開發(fā)環(huán)境構(gòu)建包括源碼下載安裝、編譯器和編譯工具安裝等方面內(nèi)容。

      MansOS的源碼可由http://code.google.com/p/mansos/下載[14],也可采用SVN從http://mansos.net/svn/mansos/獲取最新源碼。

      編譯器和編譯工具安裝應(yīng)根據(jù)目標(biāo)平臺(tái)架構(gòu),選用對(duì)應(yīng)的編譯器。對(duì)于 MSP430平臺(tái),采用 MSP430MCU GCC工具鏈,可從http://mspgcc.sourceforge.net下載,包括 gcc-msp430、msp430-libc、binutils-msp430等。對(duì)于ATMega328PMCU 的 Arduino Duemillanove等 Atmega平臺(tái),采用 AVR-GCC工具鏈,包括gcc-avr、avr-libc、binutils-avr、avrdude等,可 從 http://www.nongnu.org/avrlibc/查到相關(guān)說明文檔及下載。

      MansOS開發(fā)環(huán)境還需要常規(guī)的UNIX命令行工具,如make等。另外,由于MansOS采用了Python腳本完成目標(biāo)代碼鏈接,需安裝好Python。

      實(shí)際工程應(yīng)用開發(fā)中還有對(duì)應(yīng)的目標(biāo)板,如Tmote Sky、Arduino Duemillanove控制板等,在沒實(shí)際目標(biāo)板時(shí),僅可用MansOS內(nèi)建的PC仿真平臺(tái)進(jìn)行初步仿真。

      2.2 典型應(yīng)用程序設(shè)計(jì)

      典型的 MansOS應(yīng)用一般包括config、Makefile、main.c三個(gè)文件。config是應(yīng)用配置文件,包括MansOS組件的選配、編譯常量以及MCU型號(hào)、CPU主頻等相關(guān)定義;Makefile為GNU make使用文件,用于為各種架構(gòu)生成目標(biāo)代碼及上載代碼到目標(biāo)板;main.c為應(yīng)用程序C源碼文件。MansOS在apps/demo文件夾提供了一系列基本應(yīng)用、傳感器應(yīng)用、無線通信應(yīng)用以及設(shè)備驅(qū)動(dòng)等源碼示例,供開發(fā)者參考。開發(fā)應(yīng)用時(shí),編寫好config、Make-file、main.c文件,再運(yùn)行make完成編譯、鏈接及目標(biāo)代碼下載到目標(biāo)板。一個(gè)MansOS簡(jiǎn)單應(yīng)用的main.c源碼如下:

      表2 操作系統(tǒng)性能對(duì)比

      2.3 調(diào)試與測(cè)試方法

      MansOS應(yīng)用程序的調(diào)試與測(cè)試功能通??捎肞RINTF、PRINT及PRINTLN函數(shù)來實(shí)現(xiàn)。默認(rèn)情形下,對(duì)應(yīng)的輸出發(fā)送到串口,通過監(jiān)聽串口輸出可得到相關(guān)的信息。Linux下可采用minicom,Windows下可采用putty,監(jiān)聽前先設(shè)置好串口:波特率38 400,數(shù)據(jù)位8位,停止位1位,無校驗(yàn),無流控制。MansOS也提供了一個(gè)python腳本(mos/pc/tools/dumpserial/dumpser.py)用于串口監(jiān)聽,另外,通過應(yīng)用配置文件中設(shè)置CONST_DPRINT_TO_RADIO=1,可改變串口輸出到無線通信端口,在有LCD時(shí),相關(guān)信息也可發(fā)送到LCD上顯示。

      MansOS提供了一個(gè)命令行工具(mansos/pc/shell),可通過串口或無線通信進(jìn)行WSN節(jié)點(diǎn)的控制和配置,包括所有節(jié)點(diǎn)列表、讀傳感器值、設(shè)置傳感器、重啟、下載代碼、上載代碼等操作。對(duì)于MSP430MCU的傳感器板,MansOS還支持使用mspsim工具進(jìn)行調(diào)試。

      結(jié) 語

      利用WSNOS結(jié)合成熟硬件平臺(tái)來部署和實(shí)現(xiàn)各種應(yīng)用,部署快速,編程簡(jiǎn)潔,同時(shí)滿足穩(wěn)定、低功耗等要求,是WSN重要的發(fā)展方向。

      MansOS作為一款功能齊全、可移植性強(qiáng)、易于使用的開源WSNOS,具有巨大的發(fā)展?jié)摿Α?/p>

      MansOS從2007年開始發(fā)展,目前仍處于從研究走向?qū)嶋H應(yīng)用的階段,不斷進(jìn)行著更新,一些特性仍在實(shí)際應(yīng)用中進(jìn)行測(cè)試、研究和改進(jìn)。如開發(fā)環(huán)境方面,其集成開發(fā)環(huán)境在功能及適用性方面仍存在很多不足,需作大量的改進(jìn)以更好地支持實(shí)際工程的仿真、部署和測(cè)試;另外,需進(jìn)一步開發(fā)以支持更多種硬件平臺(tái)及無線通信協(xié)議,特別是在目前WSN與云計(jì)算整合的發(fā)展趨勢(shì)下,如能考慮添加與云計(jì)算平臺(tái)的融合,則能實(shí)現(xiàn)更多、更強(qiáng)大的應(yīng)用。

      [1]劉金娟.無線傳感器網(wǎng)絡(luò)協(xié)議及操作系統(tǒng)研究[D].淮南:安徽理工大學(xué),2009.

      [2]Thang Vu Chien,Hung Nguyen Chan,Thanh Nguyen Huu.A comparative study on operating system for Wireless Sensor Networks[C]//Proceedings of International Conference on Advance Computer Science and Information System 2011(ICACSIS 2011).Indonesia Jakarta:IEEE eXpress Conference Publishing,2011:73-78.

      [3]Farooq M O,Kunz T.Operating Systems for Wireless Sensor Networks:A Survey [J].Sensors 2011,11(6):5900-5930.

      [4]段海龍,楊麗,任淑艷,等.無線傳感器網(wǎng)絡(luò)操作系統(tǒng)TinyOS的研究與實(shí)例開發(fā)[J].科技通報(bào),2012,28(4):200-202.

      [5]冀宇鑫,楊冬,秦雅娟,等.基于 WSNs平臺(tái)的Contiki通用移植方法研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(11):134-137.

      [6]劉莉,黃海平.基于MantisOS的無線傳感器網(wǎng)絡(luò)應(yīng)用開發(fā)模型[J].信息技術(shù),2010(6):127-129.

      [7]MansOS[EB/OL].[2013-01].http://mansos.edi.lv.

      [8]G Strazdins,A Elsts,L Selavo.MansOS:easy to use,portable and resource efficient operating system for networked embedded devices[C]//Proceedings of the 8th ACM Conference on Embedded Networked Sensor Systems(SenSys'10).New York:ACM,2010:427-428.

      [9]A Elsts,G Strazdins,A Vihrov,et al.Design and Implementation of MansOS:a Wireless Sensor Network Operating System[J].Scientific Papers University of Latvia,2012,787:79-105.

      [10]R Zviedris,A Elsts,G Strazdins,et al.LynxNet:Wild Animal Monitoring Using Sensor Networks[C]//Proceedings of the 4th international conference on Real-world wireless sensor networks.Berlin Heidelberg:Springer,2010:170-173.

      [11]Artis Mednis,Atis Elsts,Leo Selavo.Embedded Solution for Road Condition Monitoring Using Vehicular Sensor Networks[C]//Proceedings of the 6th International Conference on Application of Information and Communication Technologies(AICT 2012).Germany Stuttgart:IEEE eXpress Conference Publishing,2012:248-252.

      [12]Atis Elsts,Rihards Balass,Janis Judvaitis,et al.SAD-mote:A Robust and Cost-Effective Device for Environmental Monitoring[C]//ARCS'12Proceedings of the 25th international conference on Architecture of Computing Systems,Berlin Heidelberg:Springer,2012:225-237.

      [13]MansOS [EB/OL].[2013-01].http://mansos.net/wiki/index.php/MansOS.

      [14]MansOS[EB/OL].[2013-01].http://code.google.com/p/mansos.

      猜你喜歡
      源碼線程代碼
      基于網(wǎng)頁(yè)源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲代碼生成方法
      基于圖神經(jīng)網(wǎng)絡(luò)的軟件源碼漏洞檢測(cè)方法
      企業(yè)如何保護(hù)源碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      淺談linux多線程協(xié)作
      基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實(shí)驗(yàn)課程改革
      Linux線程實(shí)現(xiàn)技術(shù)研究
      灌云县| 逊克县| 商洛市| 樟树市| 重庆市| 定日县| 井陉县| 沙田区| 宜川县| 景泰县| 浏阳市| 曲周县| 泾阳县| 娄底市| 长寿区| 保康县| 沭阳县| 郴州市| 文昌市| 富川| 乌鲁木齐市| 东丰县| 望都县| 庆元县| 化德县| 贵德县| 东源县| 措勤县| 北海市| 恩平市| 尖扎县| 龙川县| 临漳县| 镇巴县| 白山市| 高密市| 翁源县| 闸北区| 昆明市| 钦州市| 定日县|