當前位置:編程學習大全網 - 源碼下載 - linux 下platform設備和驅動註冊的先後順序

linux 下platform設備和驅動註冊的先後順序

Linux關於總線、設備、驅動的註冊順序

設備掛接到總線上時,與總線上的所有驅動進行匹配(用bus_type.match進行匹配),

如果匹配成功,則調用bus_type.probe或者driver.probe初始化該設備,掛接到總線上

如果匹配失敗,則只是將該設備掛接到總線上。

驅動掛接到總線上時,與總線上的所有設備進行匹配(用bus_type.match進行匹配),

如果匹配成功,則調用bus_type.probe或者driver.probe初始化該設備;掛接到總線上

如果匹配失敗,則只是將該驅動掛接到總線上。

需要重點關註的是總線的匹配函數match(),驅動的初始化函數probe()

1. platform_bus_type--總線先被kenrel註冊。

2. 系統初始化過程中調用platform_add_devices或者platform_device_register,將平臺設備(platform devices)註冊到平臺總線中(platform_bus_type)

3. 平臺驅動(platform driver)與平臺設備(platform device)的關聯是在platform_driver_register或者driver_register中實現,壹般這個函數在驅動的初始化過程調用。

通過這三步,就將平臺總線,設備,驅動關聯起來。

1. platform bus先被kenrel註冊。

------------------------------------------------------

do_basic_setup() -->-driver_init() -->-platform_bus_init()-->bus_register()

2. 系統初始化過程中調用platform_add_devices或者platform_device_register,將平臺設備(platform devices)註冊到平臺總線中(platform_bus_type)

------------------------------------------------------

系統啟動階段,總線的驅動鏈表還是空的,所以啟動階段的platform_add_devices()只負責將設備添加到總線的設備鏈表上。

  • 上一篇:RocketMQ源碼-主從同步復制和異步復制
  • 下一篇:用VB編寫CAD繪圖插件
  • copyright 2024編程學習大全網