使用HAL是開發可輕松重用并從一個應用程序和平臺移植到下一個應用程序和平臺的軟件的好方法。為什么嵌入式開發人員會想做這樣的事情?對于初學者來說,一遍又一遍地重新發明輪子會很無聊。
即使對于喜歡一遍又一遍地做同樣事情的開發人員來說,開發時間線很短,預算很緊,而且在任何給定的項目上都需要做太多的工作。因此,目標是編寫可重用的代碼,為此,開發人員需要創建一個硬件抽象層,以允許他們的中間件和應用程序代碼通用地訪問微控制器硬件。
創建堅如磐石的HAL并非一朝一夕。創建HAL的過程是一個迭代過程,很可能需要數年時間。好消息是開發人員可以非常快速地創建HAL,然后隨著每個項目的調整和修改,直到遇到幾乎所有可以想象的排列。我們將介紹HAL創建過程,但在此之前,讓我們先看看每個HAL需要具備的特性。
一個好的HAL的特征:
人類可讀
抽象的復雜性
有據可查
便攜的
通用控制能力
可擴展的特定控制能力
封裝數據
可重復使用的
可維護
硬件抽象層應該包含一組基本的函數來控制人類可讀和通用的底層外圍設備。界面應該很簡單,包含不到十幾個功能。界面變得越復雜,界面就越難以理解、移植和簡單地使用。嵌入式開發人員應該只公開界面的需要知道的信息,并允許將所有細節隱藏在界面后面。使用HAL的開發人員不需要成為底層硬件和復雜性方面的專家,只需了解如何使用接口即可!
HAL設計過程
設計硬件抽象層是一個相對直接的過程,對于每個微控制器外圍設備可能會針對不同的架構重復多次。一般過程包含七個步驟:
查看微控制器外設數據表
識別外圍功能
設計和創建界面
創建存根和文檔模板
為目標處理器實施
測試
對每個外圍設備重復
在本章中,我們介紹了設計硬件抽象層的通用過程,這個過程雖然看起來很簡單,但在變得完全清晰之前可能需要嵌入式開發人員執行幾次。