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 的硬體控制功能;在未來的演講或是課程裡,將會加入一些「測試程式開發」的主題,請大家不吝指教。

Jollen's Blog 使用 Github issues 與讀者交流討論。請點擊上方的文章專屬 issue,或 open a new issue

您可透過電子郵件 jollen@jollen.org,或是 Linkedin 與我連絡。更歡迎使用微信,請搜尋 WeChat ID:jollentw