可移植的嵌入式WEB服務(wù)器軟件設計
引言
隨著(zhù)互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,嵌入式WEB服務(wù)器技術(shù)在工業(yè)生產(chǎn)的過(guò)程控制、環(huán)境監測以及遠程數據采集等方面得到了廣泛的應用,通過(guò)嵌入在目標設備中的WEB服務(wù)器,可以非常方便地獲取遠程數據,并實(shí)現對遠程設備的干預,達到對遠程現場(chǎng)進(jìn)行監視和控制的目的。在實(shí)際系統中,遠程設備往往千差萬(wàn)別,為了在這些目標設備中構建WEB服務(wù)器,必須針對不同的系統編寫(xiě)相應的WEB服務(wù)器代碼,通過(guò)采用基于操作系統適配層的中間件技術(shù),可以很好的解決WEB服務(wù)器軟件在不同系統之間的移植問(wèn)題,同時(shí)改善軟件的可維護性。
1、嵌入式軟件的可移植問(wèn)題
可移植性主要指把同一軟件放置到不同系統平臺(如不同的硬件平臺或操作系統)并使之正常運行的難易程度,可移植性有時(shí)候被表述為跨平臺性,軟件的可移植性主要涉及到上面提到的軟硬件運行環(huán)境。開(kāi)發(fā)出來(lái)的程序,如果不用修改或只需極少量的修改便能在其它種類(lèi)的計算機上運行,就是可移植性好的程序。在當今的軟件設計中,為了在不同的產(chǎn)品線(xiàn)上重復使用相同的代碼,經(jīng)常需要將代碼從一個(gè)平臺移植到另一個(gè)平臺,這種代碼的重復利用非常重要,因為它可以縮短軟件開(kāi)發(fā)和測試的周期,同時(shí)還能減少后期的維護工作。
計算機軟件的運行環(huán)境有兩個(gè)方面——硬件環(huán)境和軟件環(huán)境。硬件環(huán)境主要涉及計算機的硬件體系結構,比如X86體系結構、ARM體系結構、MIPS體系結構等,不同的體系結構其指令系統、中斷處理、寄存器組織、總線(xiàn)讀寫(xiě)等都存在一定的差別;軟件環(huán)境指的是軟件依賴(lài)的操作系統。嵌入式應用需求多樣,操作系統種類(lèi)也非常豐富,常見(jiàn)的有 VxWorks、Nucleus、WinCE、Linux/uClinux、eCos、uC/OS-II、ThreadX、Hopen和Delta等,不同的操作系統都會(huì )提供一些系統服務(wù),比如任務(wù)創(chuàng )建和管理、任務(wù)間件通訊等,但各個(gè)操作系統在具體實(shí)現時(shí)會(huì )存在一些差異,其對外提供的系統服務(wù)接口也有不同,比如創(chuàng )建任務(wù)的系統調用:VxWorks為taskSpawn,Nucleus為NU_Create_Task,為了編寫(xiě)具有最廣泛適應性的可移植代碼,開(kāi)發(fā)人員必須注意到這些差異,并且采取適當的策略,來(lái)開(kāi)發(fā)具有良好可移植性的軟件,使用一個(gè)稱(chēng)為操作系統適配層的中間件可以很好的解決這個(gè)問(wèn)題。
中間件(Middleware)是位于平臺(硬件、操作系統)和應用程序之間的一組通用服務(wù),這些服務(wù)具有標準的程序接口和協(xié)議,針對不同的操作系統和硬件平臺,它們可以有符合接口和協(xié)議規范的多種實(shí)現?;谥虚g件模型,需要對軟件模塊進(jìn)行一下簡(jiǎn)單的重構:界面與功能模塊分離,在模塊化的軟件中,界面要求以獨立的模塊出現,它與功能模塊之間可以根據具體的情況采用API調用或者消息等通訊機制來(lái)進(jìn)行交互,這樣在進(jìn)行界面修改時(shí)可以不修改軟件的其他部分;同時(shí)功能模塊不直接調用操作系統的服務(wù)函數,而是調用中間件提供的處理函數,通過(guò)中間件實(shí)現與操作系統、硬件以及人機界面之間的交互,這樣整個(gè)軟件的框架就變成如下結構:
基于中間件的軟件結構圖
評論