亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

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

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

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

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

        圖2 MansOS源碼文件目錄

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

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

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

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

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

        1.2.2 文件系統(tǒng)

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

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

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

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

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

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

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

        MansOS提供了一個命令行界面(shell)供用戶進(jìn)行運(yùn)行時的管理,其基于簡單系統(tǒng)消息協(xié)議(Simple System Message Protocol,SSMP),以廣播或單播的形式對整個網(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)了一個有效的無線再編程機(jī)制,把整個無線再編程分為4個階段,各階段內(nèi)容及實(shí)現(xiàn)方法如表1所列。

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

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

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

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

        1.3 MansOS與其他WSNOS對比

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

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

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

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

        MansOS相關(guān)應(yīng)用的開發(fā)需在Linux環(huán)境下進(jìn)行交叉編譯鏈接,或在Windows平臺下,用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)平臺架構(gòu),選用對應(yīng)的編譯器。對于 MSP430平臺,采用 MSP430MCU GCC工具鏈,可從http://mspgcc.sourceforge.net下載,包括 gcc-msp430、msp430-libc、binutils-msp430等。對于ATMega328PMCU 的 Arduino Duemillanove等 Atmega平臺,采用 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ā)中還有對應(yīng)的目標(biāo)板,如Tmote Sky、Arduino Duemillanove控制板等,在沒實(shí)際目標(biāo)板時,僅可用MansOS內(nèi)建的PC仿真平臺進(jìn)行初步仿真。

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

        典型的 MansOS應(yīng)用一般包括config、Makefile、main.c三個文件。config是應(yīng)用配置文件,包括MansOS組件的選配、編譯常量以及MCU型號、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ū)動等源碼示例,供開發(fā)者參考。開發(fā)應(yīng)用時,編寫好config、Make-file、main.c文件,再運(yùn)行make完成編譯、鏈接及目標(biāo)代碼下載到目標(biāo)板。一個MansOS簡單應(yīng)用的main.c源碼如下:

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

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

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

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

        結(jié) 語

        利用WSNOS結(jié)合成熟硬件平臺來部署和實(shí)現(xiàn)各種應(yīng)用,部署快速,編程簡潔,同時滿足穩(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)行測試、研究和改進(jìn)。如開發(fā)環(huán)境方面,其集成開發(fā)環(huán)境在功能及適用性方面仍存在很多不足,需作大量的改進(jìn)以更好地支持實(shí)際工程的仿真、部署和測試;另外,需進(jìn)一步開發(fā)以支持更多種硬件平臺及無線通信協(xié)議,特別是在目前WSN與云計算整合的發(fā)展趨勢下,如能考慮添加與云計算平臺的融合,則能實(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].科技通報,2012,28(4):200-202.

        [5]冀宇鑫,楊冬,秦雅娟,等.基于 WSNs平臺的Contiki通用移植方法研究[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)頁源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲代碼生成方法
        基于圖神經(jīng)網(wǎng)絡(luò)的軟件源碼漏洞檢測方法
        企業(yè)如何保護(hù)源碼
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        淺談linux多線程協(xié)作
        基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實(shí)驗(yàn)課程改革
        Linux線程實(shí)現(xiàn)技術(shù)研究
        亚洲成人色区| 精品无吗国产一区二区三区av| 久久精品国产av大片| 你懂的视频网站亚洲视频 | 成人影院视频在线播放| 免费国产线观看免费观看| 中文人妻无码一区二区三区在线| 欧美成人精品三级在线观看| 中文字幕日韩精品亚洲精品| 欧美大片va欧美在线播放| 极品粉嫩小泬无遮挡20p| 美女一级毛片免费观看97| 日韩av在线免费观看不卡| 亚洲av成人精品一区二区三区 | 麻豆AⅤ无码不卡| 99久久久精品国产性黑人| 日韩精品视频在线观看无| 国产在线视频91九色| 中文字幕日韩人妻不卡一区| 欧美日韩一区二区三区自拍| 日本理论片一区二区三区| 亚洲啪啪色婷婷一区二区| 色欲网天天无码av| 自拍偷自拍亚洲精品播放| av网站影片在线观看| 少妇免费av一区二区三区久久| 国产色无码精品视频国产| 美丽人妻被按摩中出中文字幕 | 欧美日韩在线免费看| 亚洲区1区3区4区中文字幕码| 在线日本看片免费人成视久网| 真人新婚之夜破苞第一次视频| 欧美人与禽交zozo| 精品亚洲一区二区在线观看| 浪货趴办公桌~h揉秘书电影| 国产a三级久久精品| 日本高清视频在线一区二区三区| 日本一区二区三区免费精品| 真实国产老熟女粗口对白| 亚洲国产福利成人一区二区 | 99青青草视频在线观看|