這一章主要講的是硬體抽象層:hal
hal ( hardware abstraction layer,硬體抽象層
)是建立在
linux
驅動之上的一套程式庫。這套程式庫並不屬於
linux
核心, 而是屬於
linux
核心層之上的應用層。
google為
android
加入hal
主要目的如下:
1、統一硬體的呼叫介面。
2、解決了
gpl版權問題。
3、針對一些特殊的要求。
在android.
系統中使用
linux
驅動有兩種方式。一種就是通過傳統的方式直接與
lmux
驅動互動。另外一種是
android
特有的,就是通過
hal
模組。hal
模組本質上就是通過
linux
共享庫(
.so)與
linux
驅動互動,然後應用程式再訪問
linux
共享庫。
hal是建立在
linux
驅動之上的一套程式庫,這套程式庫並不屬於
linux
核心,而是屬於
linux
核心層之上的應用層。
為android
加入hal
主要有如下的目的:統一硬體的呼叫介面、解決了
gpl版權問題。加入
hal的驅動使應用程式不需要再關心
linux
驅動和裝置檔案的互動方式,而只需要像訪問普通
api一樣就可以和
linux
驅動進行互動。
編寫hal
模組的步驟與原理:
1、定義結構體與巨集
2、編寫
hal模組的
open
函式3、定義
hw_module_methods_t
結構體變數
4、定義
hal_module_info_sym
變數5、編寫
hal模組的
close
函式6、編寫控制
led的函式
C primer 讀書筆記 第九章 順序容器
1 順序容器 vector 支援快速隨機訪問 deque 雙端佇列 list 支援快速插入 刪除 2 順序容器介面卡 stack 後進先出 lifo 棧 queue 先進先出 fifo 佇列 priority queue 有優先順序佇列管理的佇列 3 所有的容器都是類模板。定義乙個容器型別的物件之前...
第九章(筆記)
轉移指令是可以修改ip,或同時修改cs和ip的指令 offset 是用於提取標號偏移位址的操作符 jmp在第2章裡說到時用於修改ip或同時修改cs和ip的轉移指令,這章裡單獨的jmp指令是乙個無條件的轉移指令 jmp short 標號 是實現段內短轉移 jmp near ptr 標號 是實現段內近轉...
深入理解linux核心讀書筆記(第九章)
1.核心信賴自己,但是對於使用者態的記憶體請求,核心會做必要的位址檢查,然後先給程序分配位址空間 線性位址 真正的物理記憶體分配推遲到必要的時候才進行。2.核心使用mm struct 來描述使用者的位址空間資訊,所有的mm struct 是用雙向鍊錶連線起來的,相鄰的mm struct 在mmlis...