日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

总线设备驱动模型

發(fā)布時(shí)間:2025/7/14 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 总线设备驱动模型 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

總線設(shè)備驅(qū)動(dòng)模型

一個(gè)總線設(shè)備驅(qū)動(dòng)包含三個(gè)元素:總線,驅(qū)動(dòng),設(shè)備。

總線是處理器和設(shè)備之間的同道,在設(shè)備模型中,所有的設(shè)備都通過(guò)總線相連,甚至是內(nèi)部的虛擬“platform”總線。

?

總線:

描述總線的數(shù)據(jù)結(jié)構(gòu)如下:

?

總線注冊(cè)和刪除使用:

?

下面介紹幾個(gè)比較重要的總線方法:

?

?

總線屬性Buf_attribute的結(jié)構(gòu)定義如下:

?

?

而總線設(shè)備和總線屬性的結(jié)合和解除如下:

?

?

設(shè)備:

Linux系統(tǒng)中的每一個(gè)總線設(shè)備由一個(gè)struct?device描述:

?

?

設(shè)備的注冊(cè)與注銷:

?

?

設(shè)備屬性由struct?device_attribute描述:

?

?

設(shè)備屬性的創(chuàng)建與刪除:

?

?

驅(qū)動(dòng):

驅(qū)動(dòng)程序由struct?device_driver描述:

?

?

驅(qū)動(dòng)注冊(cè)與注銷:

?

?

驅(qū)動(dòng)的屬性使用struct?driver_attribute來(lái)描述,其中attr代表一個(gè)文件,showstore代表讀寫(xiě):

?

?

驅(qū)動(dòng)屬性的創(chuàng)建與刪除:

?

?

?

注意:昨天一邊玩一邊學(xué),惡果深重,今天從新把代碼寫(xiě)一遍。

?

1._init是告訴操作系統(tǒng),帶著這個(gè)標(biāo)示符的函數(shù),調(diào)用一次就可以從內(nèi)存中刪除了。

?

2.宏定義中的##號(hào)代表連接。

?

?

3.總線也是一種設(shè)備,所以注冊(cè)總線的時(shí)候也要注冊(cè)總線設(shè)備。

?

4.熱插拔:帶電插拔,比如沒(méi)有關(guān)機(jī)的情況下插拔硬件。

?

5.當(dāng)拔掉一個(gè)設(shè)備后會(huì)調(diào)用驅(qū)動(dòng)的remove函數(shù),當(dāng)驅(qū)動(dòng)連接一個(gè)設(shè)備的時(shí)候會(huì)調(diào)用prob函數(shù)。

?

6初始化總線,設(shè)備,驅(qū)動(dòng)的區(qū)別:

總線:????????????????

?

設(shè)備:

?

驅(qū)動(dòng):

?

?

Platform平臺(tái)驅(qū)動(dòng):

Platform總線是linux2.6內(nèi)核加入的一種虛擬總線,platform機(jī)制本身使用并不復(fù)雜,由兩部分組成:Platform_device和platform_driver。

Platform驅(qū)動(dòng)與傳統(tǒng)的設(shè)備驅(qū)動(dòng)模型相比,優(yōu)勢(shì)在于platform機(jī)制將設(shè)備本身的資源注冊(cè)進(jìn)內(nèi)核,有內(nèi)核統(tǒng)一管理,在驅(qū)動(dòng)程序使用這些資源時(shí)使用統(tǒng)一的接口,這樣提高了程序的可移植性。

通過(guò)platform機(jī)制開(kāi)發(fā)底層設(shè)備驅(qū)動(dòng)的流程如圖:

?

?

平臺(tái)設(shè)備:

??掛到platform總線上的設(shè)備使用struct?Platform_device來(lái)描述:

?

struct?Platform_device使用如下函數(shù):

?

?

平臺(tái)設(shè)備的注冊(cè)如下:

?

?設(shè)備的資源描述結(jié)構(gòu)體如下:

?

??下面是設(shè)備資源的例子:

?

可以通過(guò)如下的方式獲取設(shè)備的資源:

?

????一個(gè)平臺(tái)設(shè)備內(nèi)核模塊的典型編寫(xiě)方式如下:

?

?

平臺(tái)驅(qū)動(dòng):

平臺(tái)驅(qū)動(dòng)描述的數(shù)據(jù)結(jié)構(gòu)struct?platform_driver

?

?

平臺(tái)驅(qū)動(dòng)注冊(cè)函數(shù):

?

下面是編寫(xiě)平臺(tái)驅(qū)動(dòng)內(nèi)核模塊的一個(gè)例子:

?

?

中斷處理:

?

?

中斷的注冊(cè):

注冊(cè)函數(shù)如下:

?

?

其中flags的可能值如下:

?

快速中斷和慢中斷:

?

?

共享中斷:

?

?

注意:

1.?共享中斷的dev_id是唯一的。

2.?共享中斷不能使用disable_irq(),否則會(huì)導(dǎo)致其他使用這個(gè)中斷的硬件設(shè)備也無(wú)法中斷。

?

?

?

?

使用完畢后應(yīng)該釋放中斷:

?



來(lái)自為知筆記(Wiz)

轉(zhuǎn)載于:https://www.cnblogs.com/dchipnau/p/5010059.html

總結(jié)

以上是生活随笔為你收集整理的总线设备驱动模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。