官术网_书友最值得收藏!

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)的方法。

主站蜘蛛池模板: 高雄县| 军事| 都匀市| 安宁市| 德阳市| 长治市| 淮阳县| 织金县| 江阴市| 黄龙县| 安义县| 都江堰市| 西平县| 嫩江县| 平和县| 新乡县| 武安市| 监利县| 临沭县| 垣曲县| 富顺县| 江山市| 景泰县| 成武县| 营口市| 夏河县| 钟祥市| 来安县| 油尖旺区| 拉萨市| 绥棱县| 景洪市| 会昌县| 乳源| 宿迁市| 延吉市| 宁夏| 会宁县| 温泉县| 广元市| 铁力市|