引言 無線傳感器網(wǎng)絡(Wireless Sensor Networks,WSN)在現(xiàn)場應用時,傳感器節(jié)點(mote)由傳感、計算、通信、傳動和動力組件構成。WSN由數(shù)十乃至數(shù)千個這樣的節(jié)點構成,通過無線信道通信進行信息共享和協(xié)作處理。 WSN應用目前存在兩種功能分析包,即特定平臺操作系統(tǒng)和量身定制模型,在應用程序開發(fā)階段都存在明顯的缺陷。第一類將應用程序遷移到其他平臺時很困難,例如從TinyOS遷移到MANTIS或遷移到ZigBee兼容平臺,必須重寫大量代碼并進行大量調試。第二類有許多依賴于平臺的具體代碼需要開發(fā)和調試,如果在開發(fā)和集成階段結束后發(fā)現(xiàn)問題,惟一的解決方法就是基于LED進行調試,極為耗時。 參考仿真框架 The MathWorks公司構建了基于 Simulink的傳感器網(wǎng)絡模型作為動態(tài)系統(tǒng)的基時仿真器。模型具有兩個主要組件:無線信道模型(下文稱為Communication Medium)和Node塊。 Communication Medium塊可以通過C語言實現(xiàn),可將其修改為重用任意現(xiàn)有信道和連接模型。 Node塊有多個完全參數(shù)化的mote,包含硬件與軟件平臺模型。例如包括計時器、LED以及應用程序的參數(shù)化Stateflow塊。Stateflow 是一種有限狀態(tài)機語言,用于建模、仿真控制邏輯和流程圖。可以用于實現(xiàn)各mote內運行的算法(應用程序、中間件或設備驅動器)。 只需修改模板算法(Stateflow 庫對象),在Communication Medium塊中設置節(jié)點的連接參數(shù)即可開始仿真。使用動畫狀態(tài)圖、觀測儀器和顯示器收集統(tǒng)計數(shù)據(jù),以執(zhí)行算法的功能分析。如果結果分析表明需要改進,則可通過改進算法實現(xiàn)。 完成算法的功能分析后,通過算法的Stateflow自動為任何受支持的WSN平臺生成代碼。這是利用RealTime Workshop Embedded Coder軟件的自定義功能完成的,它能為Simulink和Stateflow塊生成可嵌入的ANSI C代碼。 ![]() 圖1 WSN的一個簡單仿真框架 WSN應用程序操作系統(tǒng)示例:TinyOS與MANTIS TinyOS的編程模型基于組件,概念實體由模塊和配置兩類組件表示,實現(xiàn)用于聲明命令和事件簽名的接口。事件即軟件抽象,例如接受信息包、完成傳感器取樣等。命令用于觸發(fā)操作,例如傳感器讀取操作或啟動無線電接收和傳輸信息等。TinyOS應用程序是使用nesC編寫的,這是C語言的一個擴展。 MANTIS是一種輕量級、多線程的操作系統(tǒng),能在能源受限的分布式傳感器網(wǎng)絡上進行多任務處理。調度程序采用基于優(yōu)先級的輪叫調度,支持線程先占 (pre-emption),允許操作系統(tǒng)在活動線程間自由切換而無需等待。由于采用了這樣的方法,操作系統(tǒng)對于關鍵事件的響應速度比TinyOS更快。 MANTIS的內核和API都是使用標準C語言編寫的。 ![]() 圖2 WSN應用程序建模、仿真和代碼生成框架 實現(xiàn) WSN 應用程序 MANTIS線程和任務的計算主體以及TinyOS的命令實際上都是使用C語言編寫的。在MANTIS中,集成非常直接,因為Real-Time Workshop Embedded Coder的ANSI C輸出可直接用作用戶線程。TinyOS的程序由高級抽象組成,但這些抽象的主體是使用C語言編寫的,因而只需要一個代碼轉換器,以C語言代碼作為輸入,將代碼分割成不同的部分(包括定義、函數(shù)等),并使用這些部分來生成nesC代碼。 本文使用The MathWorks公司的 Target Language Compiler(TLC)實現(xiàn)這樣的代碼轉換器。它提供了生成特定平臺代碼的機制,可接受來自ANSI C代碼的部分(例如包含、定義、函數(shù)代碼等),也可為目標平臺添加自定義代碼。使用Stateflow時無需考慮通用函數(shù)在TinyOS或MANTIS中的實際實現(xiàn),因為TLC庫中已經(jīng)實現(xiàn)了這些函數(shù),可用于任意操作系統(tǒng)。通過使用TLC腳本自動生成TinyOS或MANTIS應用程序,在無需修改的前提下為目標平臺編譯和執(zhí)行這些應用程序。并且,TLC可重寫并修改源代碼,分割源代碼并使之適合底層平臺。這不僅實現(xiàn)了比編譯器更出色的優(yōu)化,還能方便的在硬件和軟件平臺之間遷移應用程序。 參考文獻 1. Mostafizur Mozumdar, Francesco Gregoretti, Luciano Lavagno, Laura Vanzago, Stefano Olivieri, ‘A Framework for Modeling, Simulation and Automatic Code Generation of Sensor Network Application’ in Proceedings of the 5th IEEE Communications Society Conference on Sensor, Mesh and Ad Hoc Communications and Networks (SECON 2008), San Francisco, California June 2008 2. Shah Bhatti, James Carlson, Hui Dai, Jing Deng, Jeff Rose, Anmol, Sheth, Brian Shucker, Charles Gruenwald, Adam Torgerson and Richard Han.‘MANTIS OS: An Embedded Multithreaded Operating System for Wireless Micro Sensor Platforms’ The journal of MONET , pages 563-579,2005 3. TinyOS Community Forum, An open-source OS for the networked sensor regime http://www.tinyos.net/ 4. 關于基于模型設計. http://www.mathworks.cn/mbd 作者:The MathWorks公司 Stefano Olivieri 來源:電子設計應用2009年第11期 |