Linux驱动入门
Linux 簡介
Linux 驅動程序分類
三種驅動設備分類
字符設備(char)
實際上就是字節設備,對設備操作的讀寫操作是以字節為最小單位,如控制LED燈的亮滅,串口的讀寫,
塊設備(block)
實際是就是存儲設備,其驅動操作的最小單位是塊,對整個塊進行操作,如HDD,Flash 都是以一個固定的Block大小進行讀寫,如512B等等。修改時需要讀出整塊到內存,對需要的地方進行修改后,再覆寫整塊
網絡設備(network)
是一套通用的接口,實際上已經包含在內核,無需開發
驅動的應用
實際上應用最多的,需要開發的就是字符設備,如對于外設的開發,如鍵盤(HID),或者一些用戶自定義的外設,如FPGA和ARM的方案中,和FPGA的控制,讀寫等,就可以通過字符設備來把FPGA作為一個內核的設備節點,這里的FPGA控制就是典型的非標準設備
驅動程序的安全性
- 在Linux的源碼中有進1/3的代碼量都是屬于驅動設備的代碼,其實是一個很龐大的體系
- 內核通過函數調用的方式來調用驅動程序的代碼
- 驅動是以模塊的形式 裝載 在內核之中
常見的內核漏洞
由于內核代碼運行在 Ring0 運行級,所以驅動安全就是內核安全,之于Arm 就是特權模式(除了用戶模式之外的六種)。
1. 未初始化指針
2. 緩沖區溢出
3. 競態
4. 代碼邏輯漏洞
開始著手
總結
- 上一篇: Qwt中如何在曲线上标定特定点
- 下一篇: 大四报了个天价培训班,变成量产型炮灰工程