Linux匯流排裝置驅動框架的理解

2021-08-19 10:37:41 字數 1267 閱讀 2115

linux的裝置驅動框架,即某類裝置對應的驅動的框架。

這裡是「linux匯流排裝置驅動框架」,應該這樣理解,(linux的匯流排裝置)

驅動框架,即匯流排式裝置對應的驅動的框架

。(個人理解)

(1)驅動代表著操作裝置的方式和流程。對於應用來說,應用程式open開啟裝置後,接著就read訪問這個裝置,驅動就是如何實現這個訪問的具體的過程。

(2)驅動主要包括兩部分

(3)注意點

(3)在驅動的操作中,一般都會用到gpio和中斷等硬體資源。

第1點中談到的匯流排只是物理意義上的表述,即匯流排就是在行業中制定出標準,明確規定時序的格式。我們在第3點中談到,在軟體層面上,時序的產生和控制由驅動負責。那我們要思考在軟體層面上,匯流排的職責是什麼?

匯流排在軟體層面主要是負責管理裝置和驅動。

[cpp]

view plain

copy

if(match(device, driver) == ok)  

driver->probe();  

假設裝置正常,探測成功,這時就代表應用程式可以通過驅動來訪問操作這個裝置了。事實上是這樣嗎?仔細想想還少了什麼東西。應用層通過什麼來訪問操作這個裝置?想起來嗎?「嵌入式企鵝圈」的第一篇文章《linux字元裝置驅動剖析》中曾清晰地分析了linux字元裝置驅動的開發和訪問過程,在開篇即提到應用程式如何訪問裝置:

[cpp]

view plain

copy

intfd = open(「裝置檔名」);  

read(fd, buf, len);  

write(fd, buf, len);  

這個應用程式涉及的驅動兩個問題,一是裝置檔名從何而來;二是應用層的api如open、read和write等對應驅動的哪些介面,是如何對應的。這些都是驅動要解決的問題。

對於第二個問題,驅動要包括以下步驟:

[cpp]

view plain

copy

struct

file_operations   

所以我們可以想象在驅動driver的結構體中有乙個probe介面(即driver->probe()),驅動要實現這個介面。

這個probe介面要完成的工作包括:

做好以上準備,剩下的就是等著應用程式來訪問操作了。這裡闡述一下裝置驅動的struct file_operations中的介面都要做什麼。挑幾個主要的來講講。

(1)open一般會進行驅動的初始化

(2)read

(3)ioctl一般是對裝置進行引數設定。

驅動 匯流排裝置框架

匯流排裝置驅動框架是一種類似於輸入子系統的框架。匯流排裝置驅動,顧名思義,共有三個模組 負責硬體資源的裝置 device 負責處理硬體事務並且連線其他功能模組的驅動 driver 連線這兩者的匯流排 bus 其過程分為以下步驟 1.當加入乙個裝置時,如果該裝置支援中斷喚醒執行緒,那麼在中斷處理程式內...

匯流排裝置驅動框架程式

這裡總結下簡單的匯流排裝置驅動的框架程式。0 建立資料夾busdevdrv 1 匯流排 在資料夾內建立匯流排檔案bus.c,如下。include include include include include module author sjwangjinbao module license dua...

Linux匯流排裝置驅動

註冊裝置使用的結構體platform device,該結構體在標頭檔案 include linux platform device.h 中,結構體成員如下 在平台檔案中 linux的arm平台 在arch arm中 定義結構體並把結構體加入到乙個platform device型別的指標陣列中,系統會...