本系列全部内容基于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控制器设备树 学习相关推荐

  1. Linux下PCIe驱动开发与学习

    PCIe概述 PCI Express,是计算机总线PCI的一种,它沿用现有的PCI编程概念及通信标准,但建基于更快的串行通信系统. PCIE总线使用的是高速差分总线,并采用端到端的连接方式, 现在的高 ...

  2. LINUX下USB1.1设备学习小记(2)_协…

    LINUX下USB1.1设备学习小记(2)_协议 (2009-03-27 14:40) 分类: 文章转载 USB协议: 先看USB接口 可以看出,在USB使用了4根线,分别为电源线,地线,信号线和差分 ...

  3. 【Linux驱动开发】设备树详解(二)设备树语法详解

    ​ 活动地址:CSDN21天学习挑战赛 [Linux驱动开发]设备树详解(一)设备树基础介绍 [Linux驱动开发]设备树详解(二)设备树语法详解 [Linux驱动开发]设备树详解(三)设备树Kern ...

  4. Linux利用platform_driver和设备树实现PWM驱动

    Linux利用platform_driver和设备树实现PWM驱动 字符设备PWM驱动 一.PWM驱动的硬件资源 1.PWM工作原理 2.PWM电路原理 3.PWM内部结构 二.具体代码 1.设备树 ...

  5. 什么是 Linux 下的 platform 设备驱动

    Linux下的字符设备驱动一般都比较简单,只是对IO进行简单的读写操作.但是I2C.SPI.LCD.USB等外设的驱动就比较复杂了,需要考虑到驱动的可重用性,以避免内核中存在大量重复代码,为此人们提出 ...

  6. 使用错误的设备树导致linux,Petalinux工程中设备树的介绍

    设备树是 Petalinux kernel 的关键组件,接下来以 2020.1 版本为例,为大家介绍一下在Xilinx Petalinux 工程中的设备树是如何产生,配置以及修改的. Petalinu ...

  7. linux u盘插入事件,Linux 下监控USB设备拔插事件

    Linux 下监控USB设备拔插事件 发布时间:2018-01-29 00:00, 浏览次数:1111 , 标签: Linux USB * 使用Netlink来实现 这是一个特殊的socket,可以接 ...

  8. linux 下vim的使用(学习必看!!重要)

    vi与vim vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器.他是我们使用Linux系统不能缺少的工具.由于对 ...

  9. linux系统制作裸设备,在unix下和linux下创建裸设备总结

    (一)AIX下创建裸设备: 1.创建VG卷组: #mkvg -S -y'datavg' -s'128'hdisk1 hdisk2.... 其中:-S表示创建scalable-type的VG:-y表示创 ...

  10. 设备树学习(十八、番外篇-中断子系统之初始化一个中断控制器)

    一.前言 上一篇写到,使用设备树的情况下,对所有的中断控制器进行了检索,提取到一个链表中.并对这些中断控制器中所谓的父中断控制器进行检索,并按照等级一次初始化.本文就以一种常见的中断控制器VIC的初始 ...

最新文章

  1. 分析RAC下一个SPFILE整合的三篇文章的文件更改
  2. resize函数_Excel VBA解读(134): 使用Excel函数提高自定义函数的效率
  3. Linux系统自启动脚本
  4. 06jQuery-04-DOM操作
  5. python调用sklearn中朴素贝叶斯踩坑
  6. CentOS安装Samba服务
  7. vue3 el-form表单验证 自定义校验
  8. linux服务器学习笔记:linux忘记密码怎么办?
  9. 项目管理的流程及生命周期
  10. Flask初级(三)flash使用模板
  11. Stata:面板分位数回归
  12. java实现录屏功能
  13. 输出一个由*组成的三角形图案_Python中实现个性图案的方案
  14. 希望我们不要忘记喜欢过的,喜欢着的
  15. 半阳不阳后的一些总结
  16. 【强化学习】Q-Learning原理及代码实现
  17. Python抓取十万弹幕数据需多久?三分钟搞定并实现词云!
  18. 利用widget实现一个时钟功能小插件
  19. 对高校一线教师开展翻转课堂的建议
  20. pjblog支持QQ、新浪微博一键登录

热门文章

  1. 前台传来的文件通过流stream转成bytes 再把文件写入数据库 类型是blob
  2. 调用iframe 中的js[兼容各种浏览器]
  3. cocos2d-x关于CCTableView的“乱序问题”的理解
  4. struts2学到屎挫死-学习笔记(4)
  5. Smith Builder ERP代码生成器(开源,提供源码下载)
  6. yum更新php版本,yum安装的php升级到7.0版本
  7. JavaScript系列--类型判断的4种基本方法,研究jquery的type方法,空对象的检测方法,类数组对象...
  8. netty LEAK: ByteBuf.release() was not called before it's garbage-collected
  9. hadoop 开发环境设置以及可运行jar包生成
  10. Java API For WebSocket(七)Java EE环境