March 23, 2006

B#:作為嵌入式系統的輕量級程式語言

閱讀 [DeepObjectKnowledge, Inc.] 首席科學家 Michel de Champlain 與加拿大 Trent University 助理教授 Brian G. Patrick 刊載於 Embedded.com 的文章 [B# - A programming language for small footprint embedded systems applications: Part 1] 得知他們最近針對嵌入式系統應用,而設計出新的物件導向、應用導向程式語言 -- B#。

專長於物件導向分析訓練的 [DeepObjectKnowledge, Inc.] 已經提供許多 C# 相關的顧問服務,而許多嵌入式系統,比方說 Feature phone、MCP,或者是中低階應用來說,會期望能延伸熟悉的 C 語言,並以物件導向設計來規劃系統架構,但是 C++ 這種 meta-language 的負擔實在太沈重了,更別說難以掌握的 C++ ABI。C# 是個很成功的語言,取鏡於 Java 成功的經驗,雖然個別技術並非劃時代的創新,但是提供整體性的解決方案,而且以「簡單」與「物件」作為核心思考方式,B# 並非 C# 的簡化,其語言規範還考慮到絕大多數 ISO/IEC standard 的硬體架構的應用,提供了 Device Registers 與 Interrupt Handlers 等語法上的支援,這些如果要在 C 語言層面實現的話,就得像 Linux kernel 一般依賴 GNU Extensions,並佐以一系列的 macro 與 programming manner。

所以,B# 的提出就是希望一勞永逸地 (至少有限度的) 解決這種問題,設計 Device driver 不免會有 HAL (Hardware Abstract Layer),無論哪個作業系統,基本上都會採用 Object-based 的思維 (記得二十年前,用 COBOL 設計的某作業系統也是引入 object 的概念來處理 transaction 與 storage)。以 C 語言實做的系統來說,比方說 Linux 或 WinCE,都會有一堆相似的 header,規範 primitive type 與對應到 hardware platform 的 primitives,雖然 C99 針對這個議題,引入了新的 header 來包裝,不過顯然還是不足以簡化 device driver 設計的難度與加強系統的可維護性,這篇文章舉了一個再清楚不過的例子:


所以這裡的 ioreg 即可「所見即所得」地對應到 hardware register,並且可加諸特定屬性作操控,在後續的文章還會提到更詳細的內容。[DeepObjectKnowledge, Inc.] 官方網頁也提及 B# 相關訓練資訊,可作參考。
由 jserv 發表於 March 23, 2006 07:16 PM
迴響