1. 程式人生 > >物聯網作業系統的架構和基本功能

物聯網作業系統的架構和基本功能

物聯網作業系統由核心、輔助外圍模組(檔案系統、圖形使用者介面、通訊協議棧、各類常見裝置的驅動程式等)、整合開發環境等組成,基於此,可衍生出一系列面向行業的特定應用,下圖展示了這個概念:

 

物聯網作業系統與傳統的個人計算機作業系統和智慧手機類作業系統不同,它具備物聯網應用領域內的一些獨特特點,現說明如下。

物聯網作業系統核心的特點

1、 核心尺寸伸縮性強,能夠適應不同配置的硬體平臺。比如,一個極端的情況下,核心尺寸必須維持在10K以內,以支撐記憶體和CPU效能都很受限的感測器,這時候核心具備基本的任務排程和通訊功能即可。在另外一個極端的情況下,核心必須具備完善的執行緒排程、記憶體管理、本地儲存、複雜的網路協議、圖形使用者介面等功能,以滿足高配置的智慧物聯網終端的要求。這時候的核心尺寸,不可避免的會大大增加,可以達到幾百K,甚至M級。這種核心尺寸的伸縮性,可以通過兩個層面的措施來實現:重新編譯和二進位制模組選擇載入。重新編譯措施很簡單,只需要根據不同的應用目標,選擇所需的功能模組,然後對核心進行重新編譯即可。這個措施應用於核心定製非常深入的情況下,比如要求核心的尺寸達到10K以下的場合。而二進位制模組選擇載入,則用在對核心定製不是很深入的情況。這時候維持一個作業系統配置檔案,檔案裡列舉了作業系統需要載入的所有二進位制模組。在核心初始化完成後,會根據配置檔案,載入所需的二進位制模組。這需要終端裝置要有外部儲存器(比如硬碟、Flash等),以儲存要載入的二進位制模組;

2、 核心的實時性必須足夠強,以滿足關鍵應用的需要。大多數的物聯網裝置,要求作業系統核心要具備實時性,因為很多的關鍵性動作,必須在有限的時間內完成,否則將失去意義。核心的實時性包涵很多層面的意思,首先是中斷響應的實時性,一旦外部中斷髮生,作業系統必須在足夠短的時間內響應中斷並做出處理。其次是執行緒或任務排程的實時性,一旦任務或執行緒所需的資源或進一步執行的條件準備就緒,必須能夠馬上得到排程。顯然,基於非搶佔式排程方式的核心很難滿足這些實時性要求;

3、 核心架構可擴充套件性強。物聯網作業系統的核心,應該設計成一個框架,這個框架定義了一些介面和規範,只要遵循這些介面和規範,就可以很容易的在作業系統核心上增加新的功能的新的硬體支援。因為物聯網的應用環境具備廣譜特性,要求作業系統必須能夠擴充套件以適應新的應用環境。核心應該有一個基於匯流排或樹結構的裝置管理機制,可以動態載入裝置驅動程式或其它核心模組。同時核心應該具備外部二進位制模組或應用程式的動態載入功能,這些應用程式儲存在外部介質上,這樣就無需修改核心,只需要開發新的應用程式,就可滿足特定的行業需求;

4、 核心應足夠安全和可靠。可靠性就不用說了,物聯網應用環境具備自動化程度高、人為干預少的特點,這要求核心必須足夠可靠,以支撐長時間的獨立執行。安全對物聯網來說更加關鍵,甚至關係到國家命脈。比如一個不安全的核心被應用到國家電網控制當中,一旦被外部侵入,造成的影響將無法估量。為了加強安全性,核心應支援記憶體保護(VMM等機制)、異常管理等機制,以在必要時隔離錯誤的程式碼。另外一個安全策略,就是不開放原始碼,或者不開放關鍵部分的核心原始碼。不公開原始碼只是一種安全策略,並不代表不能免費適用核心;

5、 節能省電,以支援足夠的電源續航能力。作業系統核心應該在CPU空閒的時候,降低CPU執行頻率,或乾脆關閉CPU。對於周邊裝置,也應該實時判斷其執行狀態,一旦進入空閒狀態,則切換到省電模式。同時,作業系統核心應最大程度的降低中斷髮生頻率,比如在不影響實時性的情況下,把系統的時鐘頻率調到最低,以最大可能的節約電源。

物聯網操作系外圍模組的特點

外圍模組指為了適應物聯網的應用特點,作業系統應該具備的一些功能特徵,比如遠端維護和升級等。同時也指為了擴充套件物聯網作業系統核心的功能範圍,而開發的一些功能模組,比如檔案系統、網路協議棧等。物聯網作業系統的外圍模組(或外圍功能)應該至少具備下列這些:

1、 支援作業系統核心、裝置驅動程式或應用程式等的遠端升級。遠端升級是物聯網作業系統的最基本特徵,這個特性可大大降低維護成本。遠端升級完成後,原有的裝置配置和資料能夠得以繼續使用。即使在升級失敗的情況下,作業系統也應該能夠恢復原有的執行狀態。遠端升級和維護是支援物聯網作業系統大規模部署的主要措施之一;

2、 支援常用的檔案系統和外部儲存,比如支援FAT32/NTFS/DCFS等檔案系統,支援硬碟、USB stick、Flash、ROM等常用儲存裝置。在網路連線中斷的情況下,外部儲存功能會發揮重要作用。比如可以臨時儲存採集到的資料,再網路恢復後再上傳到資料中心。但檔案系統和儲存驅動的程式碼,要與作業系統核心程式碼有效分離,能夠做到非常容易的裁剪;

3、 支援遠端配置、遠端診斷、遠端管理等維護功能。這裡不僅僅包涵常見的遠端操作特性,比如遠端修改裝置引數、遠端檢視執行資訊等。還應該包涵更深層面的遠端操作,比如可以遠端檢視作業系統核心的狀態,遠端除錯執行緒或任務,異常時的遠端dump核心狀態等功能。這些功能不僅僅需要外圍應用的支援,更需要核心的天然支援;

4、 支援完善的網路功能。物聯網作業系統必須支援完善的TCP/IP協議棧,包括對IPv4和IPv6的同時支援。這個協議棧要具備靈活的伸縮性,以適應裁剪需要。比如可以通過裁剪,使得協議棧只支援IP/UDP等協議功能,以降低程式碼尺寸。同時也支援豐富的IP協議族,比如Telnet/FTP/IPSec/SCTP等協議,以適用智慧終端和高安全可靠的應用場合;

5、 對物聯網常用的無線通訊功能要內建支援。比如支援GPRS/3G/HSPA/4G等公共網路的無線通訊功能,同時要支援Zigbee/NFC/RFID等近場通訊功能,支援WLAN/Ethernet等桌面網路介面功能。這些不同的協議之間,要能夠相互轉換,能夠把從一種協議獲取到的資料報文,轉換成為另外一種協議的報文傳送出去。除此之外,還應支援簡訊息的接收和傳送、語音通訊、視訊通訊等功能;

6、 內建支援XML檔案解析功能。物聯網時代,不同行業之間,甚至相同行業的不同領域之間,會存在嚴重的資訊共享壁壘。而XML格式的資料共享可以打破這個壁壘,因此XML標準在物聯網領域會得到更廣泛的應用。物聯網作業系統要內建對XML解析的支援,所有作業系統的配置資料,統一用XML格式進行儲存。同時也可對行業自行定義的XML格式進行解析,以完成行業轉換功能;

7、 支援完善的GUI功能。圖形使用者介面一般應用於物聯網的智慧終端中,完成使用者和裝置的互動。GUI應該定義一個完整的框架,以方便圖形功能的擴充套件。同時應該實現常用的使用者介面元素,比如文字框、按鈕、列表等。另外,GUI模組應該與作業系統核心分離,最好支援二進位制的動態載入功能,即作業系統核心根據應用程式需要,動態載入或解除安裝GUI模組。GUI模組的效率要足夠高,從使用者輸入確認,到具體的動作開始執行之間的時間(可以叫做click-launch時間)要足夠短,不能出現使用者點選了確定、但任務的執行卻等待很長時間的情況;

8、 支援從外部儲存介質中動態載入應用程式。物聯網作業系統應提供一組API,供不同應用程式呼叫,而且這一組API應該根據作業系統所載入的外圍模組實時變化。比如在載入了GUI模組的情況下,需要提供GUI操作的系統呼叫,但是在沒有GUI模組的情況下,就不應該提供GUI功能呼叫。同時作業系統、GUI等外圍模組、應用程式模組應該二進位制分離,作業系統能夠動態的從外部儲存介質上按需載入應用程式。這樣的一種結構,就使得整個作業系統具備強大的擴充套件能力。作業系統核心和外圍模組(GUI、網路等)提供基礎支援,而各種各樣的行業應用,通過應用程式來實現。最後在軟體釋出的時候,只發布作業系統核心、所需的外圍模組、應用程式模組即可。

物聯網作業系統整合開發環境的特點

整合開發環境是構築行業應用的關鍵工具,物聯網作業系統必須提供方便靈活的開發工具,以開發出適合行業應用的應用程式。開發環境必須足夠成熟並得到廣泛適用,以降低應用程式的上市時間(GTMT)。整合開發環境必須具備如下特點:

1、 物聯網作業系統要提供豐富靈活的API,供程式設計師呼叫,這組API應該能夠支援多種語言,比如既支援C/C++,也支援Java、Basic等程式設計語言;

2、 最好充分利用已有的整合開發環境。比如可以利用Eclipse、Visual Studio等整合開發環境,這些整合開發工具具備廣泛的應用基礎,可以在Internet上直接獲得良好的技術支援;

3、 除配套的整合開發環境外,還應定義和實現一種緊湊的應用程式格式(類似Windows的PE格式),以適用物聯網的特殊需要。通過對整合開發環境進行定製,使得整合開發環境生成的程式碼,可以遵循這種格式;

4、 要提供一組工具,方便應用程式的開發和除錯。比如提供應用程式下載工具、遠端除錯工具等,支撐整個開發過程。

可以看出,上述物聯網作業系統核心、外圍模組、應用開發環境等,都是支撐平臺,支撐更上一層的行業應用。行業應用才是最終產生生產力的軟體,但是物聯網作業系統是行業應用得以茁壯生長和長期有效生存的基礎,只有具備了強大靈活的物聯網作業系統,物聯網這棵大樹才能結出豐碩的果實。

聯絡資訊:

作者:辛慶祥,作業系統開發愛好者,目前正從事開源作業系統Hello China的開發,曾以藍楓葉為筆名,出版《嵌入式作業系統:設計與實現》一書。Hello China開發QQ群:38467832   新浪微博:http://weibo.com/2196920292

Hello China V2.0版本將面向物聯網作業系統方向做進一步開發和完善,目前版本(V1.75)中,上述列舉的大部分功能模組都已具備。