Android深度探索(卷1)HAL與驅動開發學習筆記(9)

Android深度探索(1)HAL與驅動開發學習筆記(9函數

第九章 硬件抽象層HAL學習

 

G o o g l eAndroid加入HAL主要有以下的目的:spa

一、統一硬件的調用接口blog

因爲H A L有標準的調用接口,因此能夠利用HAL屏蔽L i n u x驅動複雜、不統一的接口;接口

二、解決了G PL版權問題資源

因爲L i n u x內核基於GP L協議,而A n d r o i d基於A p a c h e Licence 2 . 0協議.所以G o o g l e玩了個「穿越」將本來位於L i n u x驅動中的敏感代碼向上移了一個層次,這樣這些敏感代碼就擺脫了G P L協議的束縛,。那些不想開源的L i n u x驅動做者也就不必開源了。開發

三、針對一些特殊的要求變量

    對於有些硬件,可能須要訪問一些用戶空間的資源,或在內核空間不方便完成的工做以及特殊需求。在這種狀況下,能夠利用位於用戶空間的H A L代碼來輔助L i n u x驅動完成一些工做。原理

 

 

編寫支持HALLinux驅動的步驟硬件

1.編寫Linux驅動

2.編寫HAL library

3.編寫Service library

編寫HAL模塊的步驟和原理

1.定義結構體和宏

*描述HAL模塊的hw_moudle_t結構體

*描述HAL設備的hw_device_t結構體

*描述模塊入口函數的hw_moudle_motheoth_t結構體

2.編寫HAL模塊的open函數

3.定義hw_moudle_motheoth_t結構體變量

4.定義HAL_MOUDLE_INFO_SYM結構體變量

5.編寫HAL模塊的close函數

6.編寫控制函數

相關文章
相關標籤/搜索