close

Linux_kernel_019_driver_add.png

platform_device_register(): 註冊設備硬件,告訴kernel,當前有什麼設備
platform_driver_register(): 註冊設備的驅動程序
當個設備connect後
device和driver的兩條綫上都有匹配(由name來匹配)
匹配上(即binding),並且開始使用driver的probe等函數進行進行硬件初始化工作

[platform.txt]

 

Linux_kernel_020_driver_add.png

name : 在做driver及device比對時用(即是參考此name)
platform_device.name : 用來作driver matching
id : 當name比較相同時,在probe還可以參考id
platform_device.id : the device instance number
resource: SOC的IOBASE/IRQ為固定的,由此設定

(platform-devices-drivers)

什麼情況可以使用platform driver 機制編寫驅動呢?
我的理解是只要和內核本身運行依賴性不大的外圍設備( 換句話說只要不在內核運行所需的一個最小系統之內的設備), 相對獨立的, 擁有各自獨自的資源(addresses and IRQs) ,都可以用platform_driver 實現。如:lcd,usb,uart 等,都可以用platfrom_driver 寫,而timer,irq 等最小系統之內的設備則最好不用platfrom_driver 機制,實際上內核實現也是這樣的。

Linux Kernel(15.2)- platform_device_register()之如何调用driver.probe()

How devices in device tree and platform drivers were connected

Device Tree

mdio总线

 

Linux_kernel_021_driver_add.png

在Kconfig中加入MDIO_IP218

 

Linux_kernel_022_driver_add.png

Linux_kernel_023_driver_add.png

Linux_kernel_024_driver_add.png

Linux_kernel_025_driver_add.png

勾選ICPLUS IP218 MDIO interface support

 

Linux_kernel_026_driver_add.png

在Makefile中使用CONFIG_MDIO_IP218來加入mdio-ip218.c

 

 

 

 

 

 

 

 

 

 

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 peter27863043 的頭像
    peter27863043

    檸檬傻斌-無料

    peter27863043 發表在 痞客邦 留言(0) 人氣()