驅(qū)動程序地址:http://www./news/emb100.htm?lcg-tt 驅(qū)動程序開發(fā)是嵌入式Linux項(xiàng)目中工作量大的一部分內(nèi)容,,開發(fā)出高質(zhì)量的驅(qū)動程序是項(xiàng)目成功的關(guān)鍵,。Linux設(shè)備驅(qū)動的學(xué)習(xí)是一項(xiàng)浩繁的工程,包含如下的重點(diǎn),、難點(diǎn),。 1 編寫Linux設(shè)備驅(qū)動要求工程師有非常好的硬件基礎(chǔ),懂得SRAM,、Flash,、SDRAM、磁盤的讀寫方式,,UART,、I2C、USB等設(shè) 備的接口以及輪詢,、中斷,、DMA的原理,PCI總線的工作方式以及CPU的內(nèi)存管理單元(MMU)等,。 2、編寫Linux設(shè)備驅(qū)動要求工程師有非常好的C語言基礎(chǔ),,能靈活地運(yùn)用C語言的結(jié)構(gòu)體,、指針、函數(shù)指針及內(nèi)存動態(tài)申請和 釋放等,。 3,、編寫Linux設(shè)備驅(qū)動要求工程師有一定的Linux內(nèi)核基礎(chǔ),雖然并不要求工程師對內(nèi)核各個(gè)部分有深入的研究,,但至少要明 白驅(qū)動與內(nèi)核的接口,。尤其是對于塊設(shè)備、網(wǎng)絡(luò)設(shè)備,、Flash設(shè)備,、串口設(shè)備等復(fù)雜設(shè)備,內(nèi)核定義的驅(qū)動體系架構(gòu)本身就非 常復(fù)雜,。 4,、編寫Linux設(shè)備驅(qū)動要求工程師有非常好的多任務(wù)并發(fā)控制和同步的基礎(chǔ),因?yàn)樵隍?qū)動中會大量使用自旋鎖,、互斥,、信號 量,、等待隊(duì)列等并發(fā)與同步機(jī)制。 上述經(jīng)驗(yàn)值的獲取并非朝夕之事,,因此要求我們有足夠的學(xué)習(xí)恒心和毅力,。動手實(shí)踐永遠(yuǎn)是學(xué)習(xí)任何軟件開發(fā)的好方法,學(xué)習(xí)Linux設(shè)備驅(qū)動也不例外,。此外,,閱讀經(jīng)典書籍和參與Linux社區(qū)的討論也是非常好的學(xué)習(xí)方法。Linux內(nèi)核源代碼中包含了一個(gè)Documentation目錄,,其中包含了一批內(nèi)核設(shè)計(jì)的文檔,,全部是文本文件。 學(xué)習(xí)Linux設(shè)備驅(qū)動的一個(gè)注意事項(xiàng)是要避免管中窺豹,、只見樹木不見森林,,因?yàn)楦黝怢inux設(shè)備驅(qū)動都從屬于一個(gè)Linux設(shè)備驅(qū)動的架構(gòu),單純而片面地學(xué)習(xí)幾個(gè)函數(shù),、幾個(gè)數(shù)據(jù)結(jié)構(gòu)是不可能理清驅(qū)動中各組成部分之間的關(guān)系的,。因此,Linux驅(qū)動的分析方法是點(diǎn)面結(jié)合,,將對函數(shù)和數(shù)據(jù)結(jié)構(gòu)的理解放在整體架構(gòu)的背景之中,。 華清遠(yuǎn)見課程推薦:嵌入式Linux驅(qū)動開發(fā)培訓(xùn)班(FSLD3002)采用理論教學(xué)與實(shí)驗(yàn)相結(jié)合的方式,系統(tǒng)地介紹Linux下設(shè)備驅(qū)動程序開發(fā)過程,。通過本課程的學(xué)習(xí),,學(xué)員可以掌握Linux下字符設(shè)備、塊設(shè)備,、網(wǎng)絡(luò)設(shè)備,、framebuffer設(shè)備、sd卡等驅(qū)動程序,、usb驅(qū)動的開發(fā),,同時(shí)掌握嵌入式Linux的系統(tǒng)開發(fā)和分析方法。 |
|