HAL Stub 的測試程式範例:Led.c

jollen 發表於 March 17, 2010 10:52 PM

近期進行有關 MokoidBoard 的平臺開發,MokoidBoard 的目的是打造一個「Android 框架與底層」專用的學習平臺,主板的部份是基於 Samsung S3C6410 處理器。目前除了計畫以 S3C6410 打造手機方案外,還有一個一直很想實現的理念:教育訓練方面,提供品質良好、架構完善的範例程式碼。一些 dirty code 對於初步學習,並了解硬體是很有幫助的;但入了門,總是要持續進步、精益求精,研讀架構完善的高品質程式碼,就是煅煉火候的好方法。

mokoid-led.jpg

目前在 MokoidBoard 上提供的 LedTest 範例,是透過 ServiceManager、LedService 以及 HAL Stub 等觀念所設計的「LED 控制程式」。如圖,LedTest 執行時,會出現一個巨大按鈕,按了後,便會將開發板上的第一個 LED 燈點亮。

範例程式碼並不難讀,比較難懂的是 Android 框架與 HAL 架構的觀念,還有一些設計原理。這些觀念,在上週的 Android Framework in a Nutshell 演講做了一個整體性的介紹。

在開發階段,「如何測試 HAL Stub」其實是另一個很重要題目。因此,隨著 MokoidBoard 進入最後整理階段,Mokoid 範例也將會提供一個 Led.c 測試程式,讓我們能在開發階段以 native 方式進行「HAL Stub 的 API 驗證」,如圖所示。

Led.c 是一個 native 執行檔,執行時會透過 HAL 取得 LED Stub,並以 direct call 方式直接測試 Stub 裡的 API 實作,藉此驗證 Stub 與 kernel-space driver 的硬體控制功能;在未來的演講或是課程裡,將會加入一些「測試程式開發」的主題,請大家不吝指教。

讀者留言 (0)

留言功能維護中。將於近日重新開放。

連絡作者

Jollen Chen,Moko365(仕橙3G教室)講師,熱愛研究 Linux 與 Android 技術。曾為 Motorola、HTC、Foxconn、LG、OPPO、騰迅、廣達電腦、緯創、仁寶等超過 50 家企業講授課程。目前在 MokoVersity 擔任軟體工程師,撰寫 Node.js 程式,也在幾家科技廠兼任 Android Framework 研發顧問。您可透過電子郵件 <jollen (at) jollen (dot) org> 或這裡與我連絡。