Linux PCI驱动框架分析过程

描述:

内核版本:4.14
ARM64处理器
使用工具:源洞察3.5,Visio
1.概述
首先,回顾一下PCIe的建筑图:

本文就来说说PCIe主机的驱动,对应的是根联合体部分,相当于PCI的主桥部分;
本文选取Xilinx的nwl-pcie进行分析。
驱动整体编写简单,足以覆盖现有框架,不会占用太多笔墨;
2.过程分析
说到驾驶的分析,离不开驾驶模型的引入,而驾驶模型的实现使得具体的驾驶开发更加容易;
所以我们来回顾一下上一篇文章中提到的驱动模型:Linux内核建立了统一的设备模型,由总线、设备和驱动抽象而成,其中设备和驱动都挂在总线上。当有新的设备注册或新的驱动注册时,总线会执行匹配操作(match功能),当发现驱动和设备可以匹配时,会执行探测功能的操作;
《Linux PCI驱动程序框架分析(二)》提到了PCI设备、PCI总线、PCI驱动程序的创建。PCI设备和PCI驱动都挂接在PCI总线上,直观。PCIe控制器也遵循设备、总线、驱动的匹配模型,但是这里的总线被虚拟总线平台总线代替,对应的设备和驱动是platform_device和platform _ driver分别。
那么问题来了,platform_device是什么时候创建的?然后你要提到设备树设备树。

2.1设备树
设备树用于描述硬件信息,包括节点的各种属性,在dts文件中定义,最终会编译成dtb文件加载到内存中;
在启动过程中,内核将把dtb文件解析成device_node描述的DeviceTree。
根据设备节点节点,创建平台设备结构,并最终在系统中注册,这就是PC

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值