平台匯流排是核心實現的一條虛擬匯流排,
linux
裝置模型包含三個重要的元素,匯流排、裝置和驅動,那看看平台匯流排又是怎樣去實現的。
首先看平台匯流排的定義:
我們知道匯流排匹配裝置和驅動是通過它的
match
函式,那具體看看這個函式是怎樣實現的。
我們看,如果平台驅動有乙個
id_table
,那就通過函式
platform_match_id
去匹配,如果沒有就比較平台裝置的
name
欄位和平台驅動的
name
字段是否相同,這也就是平台匯流排的匹配規則。再來看平台匯流排的註冊。
我們看平台匯流排註冊就是採用的
bus_register
函式,再看在註冊平台匯流排之前,還呼叫了
device_register
去註冊了乙個裝置,因為匯流排它也是乙個裝置,也要被註冊進核心。那就具體來看這個裝置是怎麼定義的。
我們看就給了乙個名字。看完了匯流排,又來看看平台裝置又是怎樣定義怎樣去註冊。
其中有個重要的元素
resource
,該元素存入的最重要的裝置資源資訊,比如
i/o基位址,中斷號等等。
structresource
結構定義在
include/linux/ioport.h
中有可能裝置的資源不只乙個,定義資源時定義成乙個陣列的形式,那就使用函式去獲取,
platform_get_resource
就是用來獲取裝置的資源資訊,去看看這個函式
這個函式的第乙個引數為要獲取資源的平台裝置,第二個引數為資源型別,比如
ioresource_mem
,第三個引數為資源在陣列中的乙個號。如果是獲取中斷號,還可以使用函式
platform_get_irq
我們看這個函式也是呼叫
platform_get_resource
去獲取資源,只是它獲取資源的型別為
ioresource_irq
,最後返回中斷號。
再來看平台裝置的註冊,平台裝置註冊採用
platform_device_register
函式device_initialize
就是device_register
那的函式,那就看
platform_device_add
最終呼叫
device_register
那的device_add
完成平台裝置的註冊。
我們也可以使用
platform_add_devices
去註冊一組平台裝置
看完了註冊來看登出函式,登出函式就是
platform_device_unregister
。device_del
就是device_unregister
那的函式
再來看驅動,平台裝置驅動結構定義
驅動註冊
平台驅動結構裡面有個成員
driver
,它是device_driver
結構型別,它的
probe
函式指標賦值了這裡的
platform_drv_probe
,也就是平台匯流排匹配裝置和驅動成功後,將呼叫這裡的
platform_drv_probe
函式,那就在去看看這個函式。
還有一點的是它的
remove
函式為這裡的
platform_drv_remove
,不管是裝置登出還是驅動登出都是先呼叫這個函式,然後才呼叫平台驅動的
remove
函式。也就是最後呼叫
platform_driver
的probe
函式,它的引數
dev是
platform_device
結構型別。注意這裡有兩個
probe
,乙個是
platform_driver
的probe
,它是要求我們在編寫平台裝置驅動時自己去定義,另乙個是
device_driver
的probe
,它供匯流排匹配裝置和驅動成功後呼叫,
probe
為這裡的
platform_drv_probe
,這個函式的功能就是呼叫
platform_driver
的probe
。平台裝置驅動註冊最後呼叫的就是
driver_register
,只不過這裡的匯流排是平台匯流排。
驅動登出
Linux平台匯流排驅動裝置模型
platform匯流排是一種虛擬的匯流排,相應的裝置則為platform device,而驅動則為platform driver。linux 2.6的裝置驅動模型中,把i2c rtc lcd等都歸納為platform device。匯流排將裝置和驅動繫結,在系統每註冊乙個裝置的時候,會尋找與之匹配的...
平台匯流排模型
平台匯流排模型主要分為3個部分,1.driver 2.device 3.bus device主要放硬體相關的東西 driver裡面主要存放的比較穩定的 我們依然可以檢視gpio keys.c這個 來學習 平台匯流排是一種虛擬的匯流排 driver這個結構體會通過呼叫platform driver r...
匯流排裝置模型 kobject
原創kylin zeng 匯流排裝置驅動 一 sysfs檔案系統 linux2.6核心引入sysfs檔案系統,sysfs可以看成與proc,devfs和devpty同類別的檔案系統,該檔案系統是虛擬的檔案系統,可以更方便對系統裝置進行管理。它可以產生乙個包含所有系統硬體層次檢視,與提供程序和狀態資訊...