新唐NUC972Linux驅(qū)動開發(fā)
驅(qū)動開發(fā)是嵌入式 Linux 產(chǎn)品開發(fā)的重要組成部分,驅(qū)動是將芯片底層與Linux應(yīng)用連接起來的橋梁。驅(qū)動程序的好壞直接影響和決定著產(chǎn)品的穩(wěn)定性,穩(wěn)定的驅(qū)動程序是產(chǎn)品可靠性的基石。
編寫 Linux 驅(qū)動,首先要具備相關(guān)的電路基礎(chǔ)知識,具有裸機開發(fā)和單片機開發(fā)能力,只有了解了硬件的基本工作原理才能編寫出可靠的驅(qū)動程序。同時,必須對 Linux 驅(qū)動體系有清晰的認識,才能將設(shè)備在 Linux下驅(qū)動起來。
1. 基礎(chǔ)知識
1.1驅(qū)動在 Linux中的地位
驅(qū)動是 Linux 系統(tǒng)中設(shè)備和用戶之間的橋梁,Linux 系統(tǒng)中,訪問設(shè)備必須通過設(shè)備驅(qū)動進行操作,用戶程序是不能直接操作設(shè)備的。Linux 系統(tǒng)中硬件、驅(qū)動和用戶程序的關(guān)系如下圖所示:
驅(qū)動程序運行于內(nèi)核空間,用戶程序只能通過內(nèi)核提供的系統(tǒng)調(diào)用,由經(jīng) VFS 以及驅(qū)動程序才能訪問和操作硬件,硬件設(shè)備傳遞的數(shù)據(jù)也必須經(jīng)過驅(qū)動、VFS 和系統(tǒng)調(diào)用才能被用戶程序接收。所以說,設(shè)備驅(qū)動是應(yīng)用程序訪問系統(tǒng)設(shè)備以及進行數(shù)據(jù)傳遞的橋梁和通道。
1.2驅(qū)動的基本要素
Linux 設(shè)備驅(qū)動是具有入口和出口的一組方法的集合,各方法之間相互獨立。驅(qū)動內(nèi)部邏輯結(jié)構(gòu)如下圖所示:
1.3 Linux內(nèi)核模塊
Linux 內(nèi)核具有很強的可裁剪性,很多功能或者外設(shè)驅(qū)動都可以編譯成模塊,在系統(tǒng)運行中動態(tài)插入或者卸載,在此過程中無需重啟系統(tǒng)。模塊化設(shè)計使得 Linux 系統(tǒng)很靈活,可以將一些很少用到或者暫時不用的功能編譯為模塊,在需要的時候再動態(tài)加載進內(nèi)核,可以減小內(nèi)核的體積,加快啟動速度,這對嵌入式應(yīng)用極為重要。
我們前期開發(fā)驅(qū)動時,可以將驅(qū)動編譯成模塊,在開發(fā)板linux系統(tǒng)上動態(tài)加載,這樣每次修改調(diào)試驅(qū)動時,只需要單獨編譯驅(qū)動模塊就可以,不用編譯整個內(nèi)核。
編輯:admin 最后修改時間:2018-10-23