如何在Linux使用者態開發驅動

安信實驗室發表於2021-07-12

如何在 Linux 使用者態開發驅動

使用者態的驅動應用場景主要是以下幾種,如果有其他的,希望各位朋友拍磚

 

1 、功能基本集中在晶片,驅動主要做控制晶片用途的

 

2 、加速器,功能獨立,無需核心排程的

 

使用者態驅動最大的好處就是程式碼靈活,可以自己定自己的程式碼架構。不好的地方也就是核心無法識別裝置,還有中斷處理需要用到核心部分無法全部。

 安信接Windows驅動開發外包

 

常用的使用者態的驅動開發

 

1 、開啟 devmem 後,使用 MMAP 對映出晶片實體地址對應的虛擬地址,在使用者態訪問虛擬地址加偏移就能訪問到晶片的暫存器;

 

2 、採用 UIO 方式,在核心態對映地址後,在使用者態透過開啟 devuioxxx 方式,再使用 MMAP 對映一次,就可採用跟方式 1 相同的方式訪問晶片 reg 或是 memory

 

這兩種方式各有優缺點

 

方式 1 :優點是實現簡單,如果不需要用到中斷,可以不用管核心態的內容,關注使用者態程式碼就好。缺點是程式碼執行的程式要有 root 許可權,不然無法訪問 devmem ,如果要使用中斷還是會涉及到核心態的驅動;

 

方式 2 :優點是無需要 root 許可權,中斷可以直接在使用者態獲取。缺點是必須要在核心態做初始化;

 

筆者這裡主要總結了平時工作中常用的使用者態 Linux 驅動開發方法,可能還有些更方便的方法目前還未用到,也請多多交流指教。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946382/viewspace-2780873/,如需轉載,請註明出處,否則將追究法律責任。

相關文章