在Linux內核中,platform_driver是一種驅動程序類型,用于支持特定硬件平臺上的設備。設備與platform_driver之間的匹配過程是通過設備樹(Device Tree)來實現的。
當系統啟動時,內核會解析設備樹文件,其中包含了系統中所有設備的信息。對于每個設備,設備樹文件會指定該設備所屬的平臺,并列出與該設備相關的platform_driver。
當內核加載platform_driver時,它會調用platform_driver結構體中的probe函數來初始化設備。在probe函數中,驅動程序會通過platform_device結構體中的platform_data字段來獲得設備的特定信息,然后根據這些信息對設備進行初始化。
設備匹配過程的關鍵在于設備樹中設備節點的compatible屬性,該屬性包含了設備的兼容性字符串(compatible string)。驅動程序的代碼中也會包含一個兼容性列表,用于指定與哪些compatible字符串匹配的設備可以使用這個驅動程序。
當內核加載一個platform_driver時,會遍歷系統中所有的platform_device,并且比較它們在設備樹中的compatible屬性和驅動程序的兼容性列表,如果匹配成功就會調用該設備對應的probe函數進行初始化。
總的來說,platform_driver與設備的匹配過程是通過設備樹中的compatible屬性和驅動程序的兼容性列表來實現的,當匹配成功時,驅動程序會調用probe函數對設備進行初始化。