作者:李智敏,華清遠見嵌入式學院講師.
從Linux2.6內核起,引入一套新的驅動管理和註冊機制:platform_device 和 platform_driver .Linux
Linux platform driver 機制和傳統的device driver機制(即:通過 driver_register 函數進行註冊)相比,一個十分明顯的優勢在於platform
platform 是一個虛擬的地址匯流排,相比 PCI、USB,它主要用於描述SOC上的片上資源.platform 所描述的資源有一個共同點:在
platform 匯流排下驅動的開發步驟是:
1、 設備
需要實現的結構體是:
1)初始化 resource 結構變數
2)初始化 platform_device 結構變數
3)向系統註冊設備:
以上三步,必須在設備驅動載入前完成,即執行platform_driver_register()之前,原因是驅動註冊時需要匹配內核中所有已註冊的設備名.platform_driver_register()中添加device到內核最終還是調用的device_add函數.Platform_device_add和
2、驅動
驅動註冊中,需要實現的結構體是:platform_driver .
在驅動程序的初始化函數中,調用了platform_driver_register()註冊 platform_driver .需要注意的是:platform_driver 和 platform_device 中的 name 變數的值必須是相同的 .這樣在
platform_driver_register()的註冊過程:
1 platform_driver_register(&s
2 driver_register(&drv->driver)
4 driver_attach(drv)
5 bus_for_each_dev(drv->bus, NULL, drv, __driver_attach)
6 __driver_attach(struct device * dev, void * data)
7 driver_probe_device(drv, dev)
8 really_probe(dev, drv)
在really_probe()
[火星人 ] Linux驅動中的platform已經有536次圍觀