隨著微機電整合技術與奈米技術的迅速發展,使得一個極小的電子裝 置能同時擁有多樣化的功能,進而對人類產生卓越的貢獻。相對地,在這 些微型設備上的軟體元件,亦需要極具巧妙的構思設計,而「微型作業系 統(TinyOS)」[15]正是一套專為小型記憶體的通訊裝置所設計之作業系 統,最早的 1.0 版本是由柏克萊大學於 2002 年 10 月份所發表釋出,並宣 告原始碼的版權為大眾公有版權(General Public License),發行至今透過 廣大的社群共同參與並互相討論,已經新增了許多功能,目前最新的版本 為 1.1.9,且能夠支援 Linux、WindowsXP 等數種電腦作業平台。
TinyOS 的架構是建構於元件基礎(component-based)和事件驅動
(event-driven)兩大觀念,在開發的過程中,所有的程序在設計時皆需要 從元件與事件的角度上來進行思考;基本上,TinyOS 是利用一個以元件為 基礎的模型,來描述硬體與網路組成元件,每一個硬體裝置被描述成一個 元件,統稱為「Graph of Components」,加上一個排程器(Tiny Scheduler)
而建構成整個系統。
開發者可透過「NesC」程式語言來開發自訂的通訊演算規則,這是專 為需要透過 TinyOS 平台來操作的嵌入式設備所設計的一套程式語言,它 的語法類似於 C 語言,讓開發者可以迅速地適應它,進而迅速地專注於事 件與系統元件的處理;TinyOS 本身亦提供了一套完整現成的函式介面給撰 寫 NesC 的開發者所使用,可降低開發時的複雜度,大幅提增系統的開發 期程。
在撰寫 NesC 語言的同時,有下列四項重要的觀念,必須謹記在心:
1. 資料框架(Frame)
資料框架是用來描述該元件所需用到的記憶體資源。值得注意的是,
一般在撰寫 C 程式時,會習慣用動態宣告的方式,等到執行階段
(run-time)時再實際配置所需要的記憶體空間,但是在 TinyOS 的開 發環境中,必須採用靜態配置的方式,讓程式於編譯連結階段即可把 記憶體空間配置完成,而這種方式亦是在開發嵌入式系統的過程中常 被運用的重要觀念。
2. 命令處理器(Command Handler)
這裡所謂的命令處理,如同 SendMsg、RecvMsg 函式等,系統會將呼 叫者(caller)的參數放在元件內部的資料框架中,然後接收來自於低
改或增加其他排程演算法進去。Task 在執行期間可以呼叫低階的 Command 或觸發高階的 Event,或者安排元件內部的其他 Task 執行,
執行的順序是依照系統設定的優先權而定,Task 的優先權低於事件的 觸發。至於工作與電能控制方面,TinyOS 亦提供了睡眠模式的功能,
倘若目前工作排程器的佇列內所有 Task 皆已經完成,系統將會進入 睡眠模式,此時只有週邊的中斷事件可以喚醒系統。
下圖(三)為一個訊息通訊元件的例子,這個元件包含了內部的狀態描 述(internal state)、一組工作描述(圖中倒三角形部分)、一組處理單元(三 角形部分),左下角由上往下的箭號表示這個元件所用到的命令,而由下 往上的虛線箭號則代表這個元件所觸發的事件,圖右側則為這些單元的介 面宣告。
圖(三)、訊息通訊元件之圖解範例。