linux 下PCIE控制器设备树 学习
来源:互联网 发布:d3.js pdf 编辑:程序博客网 时间:2024/06/15 03:41
本系列全部内容基于Synopsys DesignWare进行学习与分析
在内核3.x之后开始使用设备树,所有和硬件相关部分均放在设备树中,在进行PCIE控制器学习时,对官方文档中各个变量的使用存在很大的迷惑,根据自己了解总结如下。
DesignWare官方文档中的例子如下:
pcie: pcie@dffff000 {
compatible = "snps,dw-pcie";
reg = <0xdffff000 0x1000>, /* Controller registers */
<0xd0000000 0x2000>; /* PCI config space */
reg-names = "ctrlreg", "config";
#address-cells = <3>;
#size-cells = <2>;
device_type = "pci";
ranges = <0x81000000 0 0x00000000 0xde000000 0 0x00010000
0x82000000 0 0xd0400000 0xd0400000 0 0x0d000000>;
interrupts = <25>, <24>;
#interrupt-cells = <1>;
num-lanes = <1>;
num-viewport = <3>;
};
在基本属性中,主要有reg属性,ranges属性,和中断属性。
其中reg属性主要用于声明:控制器的配置寄存器地址范围<0xdffff000 0x1000>和映射总线上设备的配置空间的地址范围<0xd0000000 0x2000>,使用官方的驱动时reg-names字段需要保持。
控制器的配置寄存器地址主要用于对控制器进行相关操作,如对于CPU域到PCIE的映射等;
映射总线上设备的配置空间的地址范围,主要用于在CPU域上分配一段内存空间,由于和PCI域上设备的配置空间进行映射,在映射之后通过操作这个空间对pcie设备的配置空间进行配置操作,例如在设备枚举时会使用。
ranges属性主要用于表明 CPU域与pcie域的映射关系,第一个字段代表映射类型(0x81000000),第二、三个代表pcie域的基地址(0 0x00000000);第四个字段代表CPU域地址(0xde000000),最后两个字段代表映射区域的大小(0 0x00010000)。第一个字段,其中0x81000000表明IO空间,其中0x82000000表明MEM空间。
- linux 下PCIE控制器设备树 学习
- linux下pcie设备驱动
- Linux中PCIe设备上下电
- linux设备驱动之PCIE驱动开发
- Linux下PCIe驱动以及DMA机制
- Linux 设备树学习
- PCIe设备,功能,总线
- PCIe设备发现过程
- 大话PCIe:设备枚举
- LINUX下USB1.1设备学习小记
- LINUX下USB1.1设备学习小记
- Linux下用memory方式访问PCIE空间
- PCIe/RapidIO 控制器基于FPGA操作说明(PCIe 部分)
- PCIe设备的配置空间
- PCIE 设备扫描的过程
- PCIE 设备扫描的过程
- pcie设备枚举(转载)
- pcie对设备的枚举
- webstorm 设置ES6语法支持以及添加vuejs开发配置
- Ubuntu修改环境变量
- MongoDB常用命令汇总之插入、更新和删除操作详解。
- HTML5开发和布局(待补充)
- MySQL使用case when报错问题记录
- linux 下PCIE控制器设备树 学习
- log中的Total PSS by OOM adjustment
- java之约会
- Linux基础
- java学习之路(4)-常量 、变量与数据类型
- CSS基础属性2
- CSS第一天学习
- html绘制课程表
- oracle创建用户导入本地SQL脚本