国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

王家兵,吳洪明,楊志剛

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

引 言

無線傳感器網(wǎng)絡操作系統(tǒng)(WSNOS)在構(gòu)建高效、安全可靠、可擴展、分布式無線傳感器網(wǎng)絡(WSN)時起著核心作用。由于WSN節(jié)點往往處于苛刻的工作環(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語言,學習曲線長;Contiki、Mantis支持的硬件平臺較少。近年來,拉脫維亞大學(University of Latvia)相關(guān)機構(gòu)研發(fā)的開源移動代理網(wǎng)狀傳感器網(wǎng)絡操作系統(tǒng) Mans-OS[7-9](Mobile agent netted sensor Operating System),其研究和發(fā)展相當活躍,在野生動物監(jiān)控[10]、道路狀況監(jiān)測[11]、環(huán)境監(jiān)測[12]等實際應用中獲得了良好的效果。本文對MansOS的架構(gòu)、相關(guān)特性及應用方法進行了分析、研究,供廣大WSNOS研究與使用者參考。

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

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

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

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

MansOS整個源碼文件目錄如圖2所示,hil文件夾為硬件接口層,對用戶提供LED、ADC、USART、Sleep、無線通信以及傳感器等平臺無關(guān)的統(tǒng)一應用程序接口;kernel文件夾為操作系統(tǒng)核心,包含設備管理、系統(tǒng)引導、系統(tǒng)調(diào)用支持等;chips文件夾為硬件表示層芯片相關(guān)代碼,包含各個微處理器與設備驅(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)核設計

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

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

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

1.2.2 文件系統(tǒng)

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

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

1.2.3 組件化設計與裁減機制

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

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

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

1.2.4 運行時管理與無線再編程支持

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

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

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

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

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

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

1.3 MansOS與其他WSNOS對比

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

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

2 MansOS應用開發(fā)

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

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

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

編譯器和編譯工具安裝應根據(jù)目標平臺架構(gòu),選用對應的編譯器。對于 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腳本完成目標代碼鏈接,需安裝好Python。

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

2.2 典型應用程序設計

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

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

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

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

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

結(jié) 語

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

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

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

[1]劉金娟.無線傳感器網(wǎng)絡協(xié)議及操作系統(tǒng)研究[D].淮南:安徽理工大學,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)絡操作系統(tǒng)TinyOS的研究與實例開發(fā)[J].科技通報,2012,28(4):200-202.

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

[6]劉莉,黃海平.基于MantisOS的無線傳感器網(wǎ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)理解的自適應爬蟲代碼生成方法
計算機應用(2023年6期)2023-07-03 14:11:56
基于圖神經(jīng)網(wǎng)絡的軟件源碼漏洞檢測方法
計算機時代(2023年6期)2023-06-15 17:49:09
企業(yè)如何保護源碼
創(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)的實驗課程改革
計算機教育(2016年4期)2016-05-20 02:36:05
Linux線程實現(xiàn)技術(shù)研究
龙里县| 金溪县| 金山区| 泗洪县| 西盟| 临夏市| 冕宁县| 五河县| 万山特区| 论坛| 祁门县| 岳阳县| 绵竹市| 吉隆县| 佛教| 陕西省| 南充市| 禄丰县| 贵南县| 沧州市| 汽车| 临沧市| 蒙山县| 南京市| 迭部县| 含山县| 察哈| 青州市| 五大连池市| 枝江市| 芷江| 岳西县| 巴中市| 和顺县| 绥江县| 新巴尔虎左旗| 宜川县| 依安县| 山东省| 龙门县| 永川市|