SynthOS : 合成專屬的 RTOS
拜讀 Embedded.com 的 [
Software and RTOS synthesis: The next step in software development?] 一文,讓我知曉 Zeidman Technologies 的產品 [
SynthOS],其產品訴求就是 "Synthesize Your Own Operating System",乍看一頭霧水,仔細閱讀才發現,這是克服目前中低端嵌入式系統的新途徑。
設計中低端嵌入式系統如 micro controller 者,我們不免會遇到一個問題:
為了解答這個疑惑,二十多年來,無數廠商投入這個領域,提出琳瑯滿目的解決方案,但開發者需要處理的,不外乎系統的可靠性、效能,與正確性,但這卻是一條漫漫長路,過去的經驗是,沒有 RTOS、全部自行開發系統,曠日費時且難以預估時程;有 RTOS 的話,整體開發變得順暢,但其潛在的系統設計缺陷,卻難以除錯。反觀硬體設計,很早就允許高階的方式來設計系統 (如 Verilog 或 VHDL),透過數位訊號合成 (synthesize) 的途徑,輸出為硬體的單元,經過反覆的模擬測試後,導入最終硬體設計,近年來,甚至允許透過 UML 工具來對 SystemC 作 modeling 動作,相關的開發工具更是齊全。那麼,系統軟體呢?一般來說,系統軟體不能像高階軟體一般導入 OOA/D 或者高層次的開發,因其仍陷入種種設計上的難題,諸如同步處理、低階 I/O 操作等議題,為此,Zeidman Technologies 提出新的途徑,試圖將硬體設計的概念,導入系統軟體。
SynthOS 本身以 Java 撰寫,與其說是個 "OS",不如說是個 OS Generator,其輸入為 C/C++, Java, assembly 的程式,描述一個系統設計中的基本要素,不過,我們沒有必須知曉 RTOS 的設計原理,只需維護必要之 state machine,稍後可在系統模擬得知其運作的模式,最終,會輸出 kernel source code,經編譯後,可佈署於我們期望的硬體平台中。聽起來相當誘人,在如此的開發流程中,我們只需知曉 "SynthOS primitives",也就是高階的系統特性操作,如下:
- SynthOS_call(task)
- SynthOS_start(task)
- SynthOS_check(task)
- SynthOS_sleep()
- SynthOS_wait(condition)
- SynthOS_wait(task)
貌似每個 multi-tasking kernel 都會提供類似上述列表的 API,何其之有呢?重點是,SynthOS 允許用其支援的高階語言描述方式,將如此的系統在設計前期,予以充分表示,經過「合成」後,才會得到最終的 kernel source,而當我們作系統偵錯時,其實是對高階的表示作處理。與典型的 RTOS 設計相仿,SynthOS 的 task 運作模型如下圖:

在執行的 Loop 中,可在 SynthOS Project Configuration (SOP) 選用合適的排程演算法。當然,也少不了 task 的呼叫 (call),SynthOS 在合成後,會輸出對應的 scheduler 程式或 TCB (task control block) 處理等細節。以下是作為 SynthOS「合成」處理前後的範例對照:

至於效能的部份,根據文中後半指出:
For reference, the MCF5206e features, on average, 50 MIPS performance at 54 MHz. The test was performed with the on-chip I-cache enabled and we measured an average task switch time of 15 microseconds. While commercial, hand-crafted RTOS measurements would probably yield better numbers, these results are quite adequate for many real-time embedded applications.
看來有相當不錯的效能表現。所以,簡單來說,SynthOS 開啟了新的、引入自硬體訊號合成的概念,將整個 RTOS 開發予以高階化,對於系統軟體元件的外包或切割,也可得到更佳的支援度,相信是個值得關注的技術途徑。
由 jserv 發表於 April 17, 2008 09:15 AM