匯流排驅動和普通驅動的區別

2021-08-31 18:10:26 字數 1055 閱讀 5968

1.匯流排驅動中不但有驅動的註冊,還有裝置的註冊,當裝置註冊的時候會尋找與之匹配的驅動,相反的註冊驅動的時候也會尋找與之匹配的裝置,由函式match完成,如果匹配成功了那就表明這個裝置已經可以使用了

struct platform_device s3c_device_wdt =

{.name = "s3c2410-wdt", //裝置名

.id = - 1, .

2.普通驅動直接註冊驅動就可以了,

當乙個裝置想要註冊進這個amba匯流排時,它就會呼叫以初始化好了的amba_driver結構呼叫amba_driver_register()這個驅動註冊函式。而下一步這個函式就會呼叫通用的驅動註冊函式driver_register。

這個函式對其他函式的呼叫路徑如下:

driver_register -> bus_add_driver -> driver_attach -> __driver_attach(對每個裝置) -> driver_probe_device -> drv->bus->match(dev, drv)(檢查這個裝置是否與新註冊的驅動匹配) ->    really_probe -> dev->bus->probe(dev)(如果存在) (否則) -> drv->probe(dev)

而且我們還可以看到,傳遞給驅動probe的引數,是乙個具體的裝置。這個結構是裝置註冊的時候已經分配好的了。

3)裝置的註冊

當往系統插入乙個新的裝置時,他就會呼叫amba_device_register函式,這個過程跟驅動註冊的過程差不多。

匯流排維護兩個佇列,乙個用於裝置,乙個用於驅動。當乙個新的裝置加入是,這個裝置結構會鏈進裝置佇列。而當乙個驅動加入是,它就會加入驅動佇列。而且,無論是裝置還是驅動,當有插入操作是,它都會遍歷另乙個佇列,尋找相應的驅動或裝置,如果找到匹配的, 就會就行drv->device = dev, dev->driver=drv操作,這個某個裝置就和某個驅動關聯了起來。這就是說這個驅動就可以用了。

4.amba-pl011驅動首先會註冊裝置,然後註冊驅動,註冊驅動時會匹配裝置,匹配成功之後會直接呼叫probe配置埠相關資訊,配置完成之後該串列埠才可以使用,才可以open-》write

匯流排 裝置和驅動

一 匯流排 linux中,使用struct bus type表示一條匯流排,該結構定義在linux device.h中,先只看其中的兩個字段,name表示匯流排的名字,比如usb i2c spi等,match方法用於匹配新增到該匯流排上的裝置和驅動,如果匹配成功,則呼叫驅動中的probe函式。註冊一...

SPI 匯流排驅動和裝置驅動的匹配

關於spi driver和spi device的匹配 第一種情況 spidev.c中spi driver中name欄位 static structspi driverspidev spi driver 和mach smdk6410.c中的modalias欄位 static structspi boa...

驅動 11 2 匯流排驅動模型

為了統一晶元裝置驅動框架 核心中設計了一套 struct bus type bus register void bus unregister struct bus type bus ls sys bus struct device int device register struct device ...