designware PCIE IP核的驱动 调试及记录

designware PCIE

1. PCIE RC 驱动流程

  • 开启时钟,初始化PCIE PHY 的状态,打开训练状态,若是训练完成,和EP建立了链接, (在PCIe链路可以正常工作之前,需要对PCIe链路进行链路训练,在这个过程中,就会用LTSSM(Link Training and Status State Machine))LTSSM将会进入L0状态
  • 接下来可以对EP的配置空间进行访问(前置知识,你需要了解PCIE的配置空间,mem空间,io空间),以深度优先的方式开始进行不同的设备的枚举。(不同的PCIE的控制器有不同的配置空间访问的实现方法:1.在CPU地址空间中专门划分出来256MB的空间用作配置空间的访问。2.将EP设备的PCI总线地址配置特殊寄存器来指定要访问的设备。3.和1相似,但是不需要256MB的地址空间,实现方式是每次在访问EP设备的配置空间,都需要去改iATU的映射规则(前置知识,了解iATU是什么,地址映射是什么),这样可以将同样的CPU的地址映射到不同的PCI总线的地址)
  • 读到配置和地址空间 (ssdfans.com)VID和DID不为0xFFFF,说明有设备,然后进行读取设备精确信息,配置设备在PCIE总线上的mem地址。

2. PCIE 写配置空间或者MEM的选择

原理是通过 TLP 包的 TYPE 来分辨不同的事务。

  • type = 0x00 Memory Read Request mem的读写操作

  • type = 0x04 Configuration Type 0 Read Request 操作Endpoint的Configuration空间

  • type = 0x05 Configuration Type 1 Read Request 操作Switch的Configuration空间

实际程序里实现是通过写 IATU_REGION_CTRL_1_VIEWPORT_OFF_OUTBOUND_i(0x904) 寄存器的type来实现切换的

配置不同的region空间

  • 通过配置iATU,将CPU的地址空间映射到PCI地址上去,以达到直接操作映射完成的CPU地址间接操作到PCI总线上的地址。像读写本地内存的方式去读写PCI的设备。

  • IATU_VIEWPORT_OFF (0x900)寄存器控制着region_dir 和 region_index. region_dir表示outbound或inbound,两个方向的地址翻译. region_index表示区域的序号(可以改变这个序号,来达到配置多个region目的).

    新版本的地址转换有所不同

    From 4.80 core version the address translation will be made by unroll
    

    原理和上面类似,但是寄存器的位置有所改变,是从下面这些偏移地址去配置的

    /* Register address builder */
    #define PCIE_GET_ATU_OUTB_UNR_REG_OFFSET(region)	\
    			((0x3 << 20) | ((region) << 9))
    
    #define PCIE_GET_ATU_INB_UNR_REG_OFFSET(region)				\
    			((0x3 << 20) | ((region) << 9) | (0x1 << 8))
    
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: DesignWare Building Block IP是Synopsys公司开发的一种IP(Intellectual Property)模块,用于硬件电路设计。该模块抽象了常见的全定制电路,为 SoC(System on Chip)设计提供了可重用的基础构件。 该IP模块与各种应用有关的专业知识相结合,能够实现数据通信、数字信号处理、计算机视觉、音频处理等各种功能。它可以帮助设计师加快开发速度,减少开发成本,提高设计质量和可靠性。 CSDN是中国最大的IT社区,为开发者提供技术交流和资源共享的平台。DesignWare Building Block IP被添加到CSDN的数据库中,使开发者可以在此找到它的详细信息、学习材料和技术支持。 DesignWare Building Block IP的出现,标志着整个IC设计行业的一个分水岭。以前,芯片设计的工作量大,业界需要大量的ASIC实现工程师。而 DesignWare Building Block IP 等IP 库可以使设计师摆脱无穷无尽的底层电路细节,更加注重系统级别的设计。这就让我们的设计变得容易得多,可以更专注于业务逻辑和性能。 综上所述,DesignWare Building Block IP是一种可重复使用、可裁剪和高度集成的IP模块。它将各种复杂的电路模块整合在一起,为SoC设计提供了必要的基础构件。这种技术的诞生和与CSDN 的结合,为芯片设计与开发社区极大地提高了效率,也为未来数字设计技术可重复性、可维护性和可扩展性提供了有力支持。 ### 回答2: DesignWare Building Block IP是世界领先的芯片设计公司Synopsys推出的一种基于IP(知识产权)的芯片设计解决方案,它是一种可扩展的IP集成平台,旨在简化开发流程,提高开发效率。 DesignWare Building Block IP基于标准化接口和协议,包括PCI Express、USB、Ethernet、DP、HDMI等主流接口和协议,可以使芯片开发人员快速构建高度集成化的SoC系统。 在DesignWare Building Block IP中,核心设计元素被组织成“块”,每个块都拥有完整的功能,可以被设计人员自由组合,以实现快速高效的芯片设计。 DesignWare Building Block IP还具有性能优越、可靠性高、灵活性强、易于集成等多种优点,可以大幅降低芯片设计风险和成本,缩短设计周期,加速产品上市。 CSDN是中国领先的专业技术社区,提供海量IT技术文章和教程,以及优质资源、工具和服务,成为IT从业者重要的学习和交流平台。 对于芯片设计人员来说,CSDN可以提供丰富的DesignWare Building Block IP资源和实践案例,帮助他们更好地了解和应用该解决方案,从而提高芯片设计效率和质量,促进产业创新和发展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值