linux匯流排,裝置,驅動註冊

2021-05-23 15:56:58 字數 817 閱讀 5277

遵守udev裝置模型,

首先註冊匯流排,然後是匯流排裝置,之後是具體裝置註冊,註冊完之後就可以在sys/bus相應的目錄下面找到掛載這個匯流排上的裝置,最後是註冊驅動,驅動會查詢匯流排上的裝置進行繫結。

比如:自定義乙個裝置是my_vir_device,使用匯流排是vir_bus。

1.註冊匯流排型別

struct bus_type vir_bus_type = {

.name = "my_vir",

.match = my_vir_match,

bus_register(&vir_bus_type);

2.註冊匯流排裝置

struct device my_vir_bus = {

.bus_id = "my_vir",

device_register(&my_vir_bus);

3.註冊裝置驅動

struct device my_vir_device;

my_vir_device.bus = &vir_bus_type;

my_vir_device.parent = &my_vir_bus;

my_vir_device.bus_id = "my_vir";

device_register(&my_vir_device);

3.驅動註冊

struct device_driver my_vir_driver;

my_vir_driver.bus = &vir_bus_type;

my_vir_driver.probe = vir_probe;

driver_register(&my_vir_driver); 

Linux匯流排裝置驅動

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

Linux核心裝置驅動註冊

platform device與platform driver 引入devicetree後改變 platform device會由kernel自動展開,呼叫of platform bus probe null,of bus ids,null 即可自動展開所有的platform device 引入de...

Linux的匯流排裝置驅動模型

在linux中,一開始bus下的device有乙個device鍊錶,driver也有乙個鍊錶,當註冊platform device的時候,會把新的platform device結構體放入device鍊錶,然後從driver的鍊錶中把已有的driver乙個乙個地取出來跟platform device結...