驅動基礎 驅動分類與開發步驟

2022-05-04 22:48:07 字數 1066 閱讀 3502

目錄:

1、linux軟體系統的層次關係

2、驅動程式的分類

3、驅動程式的開發步驟

1、linux軟體系統的層次關係

軟體系統可分為:應用程式、庫、作業系統(核心)、驅動程式

以點亮led為例,分析各層間的寫作關係

1)應用程式呼叫庫提供的open函式開啟代表led的裝置檔案;

2)庫根據open函式傳入的引數執行「swi」指令,這條指令會引起cpu異常,進而進入核心;

3)核心的異常處理函式根據這些引數找到相應的驅動程式,返回乙個檔案控制代碼給庫,進而返回給應用程式;

4)應用程式得到檔案控制代碼後,使用庫提供的write或ioctl函式發出控制指令。

5)庫根據write或ioctl函式傳入的引數執行「swi」指令,引起cpu異常,進入核心;

6)核心的異常處理函式根據這些引數呼叫驅動程式的相關函式,點亮led

庫給應用程式通過的介面函式:open、read、write、ioctl、mmap等(系統呼叫),都是設定好相應暫存器後,執行某條指令引發異常進入核心,對於arm架構cpu,指令為swi,軟中斷

實際上,核心和驅動並沒有界線,因為驅動最終是要通過靜態鏈結和動態載入編進核心中去的;從上分析可知,驅動一般是被動的,根據應用程式的需求來執行。

2、驅動程式分類

字元裝置、塊裝置、網路裝置

3、驅動程式開發步驟

編寫乙個linux裝置驅動程式的大致流程如下:

1)檢視原理圖,資料手冊,了解裝置的操作方法;

2)在核心中找到相近的驅動程式,作為模板來開發,有時要從零開始;

3)實現驅動程式的初始化,比如詳核心註冊這個驅動程式,

4)設計所要實現的操作:比如open、close、read、writ等函式;

5)實現中斷服務,並不是每個裝置驅動都必須的;

6)編譯驅動到核心,或作為模組動態載入

7)測試驅動

Linux驅動開發步驟

1 在kconfig檔案中新增選項,如下 config ys qdec tristate ys qdec help ys qdec 2 在makefile檔案中新增編譯設定,如下 obj config ys qdec ys qdec.o 以上兩步做好,就可以在menuconfig中選擇,把你的驅動檔...

WinCE驅動開發基礎

wince中的程序 process 是程式的一次動態執行例項 instance 程序不參與系統排程,沒有優先順序和上下文。每個程序在建立時都會建立乙個主線程作為其預設的執行體。真正參加系統排程的是執行緒。wince提供了互斥mutex,事件event,訊號量semaphore 3種核心機制來實現多執...

vxworks驅動開發基礎

vxworks核心驅動基本結構 三張表 1.系統裝置表 2.系統驅動表 3.檔案描述符表 vxworks 內部對每個裝置使用dev hdr 資料結構進行表示 typedef struct 該結構中給出了鏈結指標 用以將該結構串入佇列中 驅動索引號 裝置節點名稱。核心提供這個結構較為簡單,只儲存了一些...