- Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解:基于最新的Linux4.0內(nèi)核
- 宋寶華
- 729字
- 2018-12-31 20:25:13
1.4.3 Linux設(shè)備驅(qū)動(dòng)的重點(diǎn)、難點(diǎn)
Linux設(shè)備驅(qū)動(dòng)的學(xué)習(xí)是一項(xiàng)浩繁的工程,包含如下重點(diǎn)、難點(diǎn)。
·編寫Linux設(shè)備驅(qū)動(dòng)要求工程師有非常好的硬件基礎(chǔ),懂得SRAM、Flash、SDRAM、磁盤的讀寫方式,UART、I2C、USB等設(shè)備的接口以及輪詢、中斷、DMA的原理,PCI總線的工作方式以及CPU的內(nèi)存管理單元(MMU)等。
·編寫Linux設(shè)備驅(qū)動(dòng)要求工程師有非常好的C語(yǔ)言基礎(chǔ),能靈活地運(yùn)用C語(yǔ)言的結(jié)構(gòu)體、指針、函數(shù)指針及內(nèi)存動(dòng)態(tài)申請(qǐng)和釋放等。
·編寫Linux設(shè)備驅(qū)動(dòng)要求工程師有一定的Linux內(nèi)核基礎(chǔ),雖然并不要求工程師對(duì)內(nèi)核各個(gè)部分有深入的研究,但至少要明白驅(qū)動(dòng)與內(nèi)核的接口。尤其是對(duì)于塊設(shè)備、網(wǎng)絡(luò)設(shè)備、Flash設(shè)備、串口設(shè)備等復(fù)雜設(shè)備,內(nèi)核定義的驅(qū)動(dòng)體系結(jié)構(gòu)本身就非常復(fù)雜。
·編寫Linux設(shè)備驅(qū)動(dòng)要求工程師有非常好的多任務(wù)并發(fā)控制和同步的基礎(chǔ),因?yàn)樵隍?qū)動(dòng)中會(huì)大量使用自旋鎖、互斥、信號(hào)量、等待隊(duì)列等并發(fā)與同步機(jī)制。
上述經(jīng)驗(yàn)值的獲取并非朝夕之事,因此要求我們有足夠的學(xué)習(xí)恒心和毅力。對(duì)這些重點(diǎn)、難點(diǎn),本書都會(huì)在相應(yīng)章節(jié)進(jìn)行講解。
動(dòng)手實(shí)踐永遠(yuǎn)是學(xué)習(xí)任何軟件開(kāi)發(fā)的最好方法,學(xué)習(xí)Linux設(shè)備驅(qū)動(dòng)也不例外。因此,本書使用的是通過(guò)QEMU模擬的ARM vexpress電路板,本書中的所有實(shí)例均可在該“電路板”上直接執(zhí)行。
閱讀經(jīng)典書籍和參與Linux社區(qū)的討論也是非常好的學(xué)習(xí)方法。Linux內(nèi)核源代碼中包含了一個(gè)Documentation目錄,其中包含了一批內(nèi)核設(shè)計(jì)文檔,全部是文本文件。很遺憾,這些文檔的組織不太好,內(nèi)容也不夠細(xì)致。
學(xué)習(xí)Linux設(shè)備驅(qū)動(dòng)的一個(gè)注意事項(xiàng)是要避免管中窺豹、只見(jiàn)樹(shù)木不見(jiàn)森林,因?yàn)楦黝怢inux設(shè)備驅(qū)動(dòng)都從屬于一個(gè)Linux設(shè)備驅(qū)動(dòng)的架構(gòu),單純而片面地學(xué)習(xí)幾個(gè)函數(shù)、幾個(gè)數(shù)據(jù)結(jié)構(gòu)是不可能理清驅(qū)動(dòng)中各組成部分之間的關(guān)系的。因此,Linux驅(qū)動(dòng)的分析方法是點(diǎn)面結(jié)合,將對(duì)函數(shù)和數(shù)據(jù)結(jié)構(gòu)的理解放在整體架構(gòu)的背景之中。這是本書各章節(jié)講解驅(qū)動(dòng)的方法。
- 電腦組裝與系統(tǒng)安裝
- Mastering vRealize Operations Manager(Second Edition)
- Containerization with LXC
- 精通Linux內(nèi)核開(kāi)發(fā)
- Linux操作系統(tǒng)應(yīng)用編程
- 異質(zhì)結(jié)原理與器件
- Windows Phone應(yīng)用程序開(kāi)發(fā)
- 從實(shí)踐中學(xué)習(xí)Kali Linux無(wú)線網(wǎng)絡(luò)滲透測(cè)試
- Linux命令行大全(第2版)
- 計(jì)算機(jī)系統(tǒng):基于x86+Linux平臺(tái)
- Linux服務(wù)器配置與管理
- Hands-On UX Design for Developers
- 從實(shí)踐中學(xué)習(xí)Windows滲透測(cè)試
- Linux內(nèi)核API完全參考手冊(cè)(第2版)
- Docker容器技術(shù)與應(yīng)用