写点什么

使用设备树时对应的驱动编程

作者:贾献华
  • 2022 年 8 月 01 日
  • 本文字数:508 字

    阅读完需:约 2 分钟

使用设备树时对应的驱动编程

使用"总线设备驱动模型"编写的驱动程序分为 platform_device 和 platform_driver 两部分

  1. platform_device : 指定硬件资源,来自.c 文件

  2. platform_driver : 根据与之匹配的 platform_device 获得硬件资源,并分配/设置/注册 file_operations

实际上 platform_device 也可以来自设备树文件.dts

  1. dts 文件被编译为 dtb 文件,

  2. dtb 文件会传给内核,

  3. 内核会解析 dtb 文件,构造出一系列的 device_node 结构体,

  4. device_node 结构体会转换为 platform_device 结构体

所以:我们可以在 dts 文件中指定资源,不再需要在.c 文件中设置 platform_device 结构体

"来自 dts 的 platform_device 结构体" 与 "我们写的 platform_driver " 的匹配过程

  1. "来自 dts 的 platform_device 结构体" 里面有成员 ".dev.of_node", 它里面含有各种属性,比如 compatible, reg, pin"

  2. 我们写的 platform_driver" 里面有员 ".driver.of_match_table", 它表示能支持哪些来自于 dts 的 platform_device

  3. 如果 "of_node 中的 compatible " 跟 "of_match_table 中的 compatible" 一致,就表示匹配成功,则调用 platform_driver 中的 probe 函数;

  4. probe 函数中,可以继续从 of_node 中获得各种属性来确定硬件资源

用户头像

贾献华

关注

及时当勉励 岁月不待人 2018.06.04 加入

https://2022.iosdevlog.com

评论

发布
暂无评论
使用设备树时对应的驱动编程_8月月更_贾献华_InfoQ写作社区