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

編輯:admin 最后修改時間:2018-10-23