使用设备树时对应的驱动编程
使用设备树时对应的驱动编程
使用"总线设备驱动模型"编写的驱动程序分为 platform_device 和 platform_driver 两部分
platform_device : 指定硬件资源,来自.c 文件
platform_driver : 根据与之匹配的 platform_device 获得硬件资源,并分配/设置/注册
file_operations
实际上 platform_device 也可以来自设备树文件.dts
dts 文件被编译为 dtb 文件,
dtb 文件会传给内核,
内核会解析 dtb 文件,构造出一系列的 device_node 结构体,
device_node 结构体会转换为 platform_device 结构体
所以:我们可以在 dts 文件中指定资源,不再需要在.c 文件中设置 platform_device 结构体
"来自 dts 的 platform_device 结构体" 与 "我们写的 platform_driver " 的匹配过程
"来自 dts 的 platform_device 结构体" 里面有成员 ".dev.of_node", 它里面含有各种属性,比如 compatible, reg, pin"
我们写的 platform_driver" 里面有员 ".driver.of_match_table", 它表示能支持哪些来自于
dts
的 platform_device如果 "of_node 中的 compatible " 跟 "of_match_table 中的 compatible" 一致,就表示匹配成功,则调用 platform_driver 中的 probe 函数;
在
probe
函数中,可以继续从of_node
中获得各种属性来确定硬件资源
评论