『壹』 linux如何打开pcie设备
跟pc上的pcie一样的一个总线而已啊,你有pcie设备的话插上你的板子上的pcie 插槽,就可以用了。当然你的系统中还得有pcie设备的驱动支持才行。
『贰』 PCIe设备从上电到被操作系统识别的完整流程是什么
本次的工作是完成刚流片的FPGA中PCIe IP核的bring up,也就是芯片的中PCIe的第一个使用者,将PCIe IP核正常使用起来,并配合公司的EDA团队,完成PCIe IP核到用户的呈现。
经过两个月的调试和文档阅读,对PCIe也有了初步的认识,对于PCIe的学习主要来自3个方面:
1、 王齐老师的《PCI Express 体系结构导读》和王齐老师的博客http://blog.sina.com.cn/s/blog_6472c4cc0100qbvp.html。非常感谢王齐老师的书,对于学习PCIe协议无疑是最佳的学习资料。
2、《PCI Express Base Specification 3.0》PCIe的标准协议。
3、 Synopsys公司提供 PCIe ip相关的data sheet。
以下是对PCIe建立链接过程的记录,主要针对Sysnosys 的PCIe的IP,但是同时应该也有普遍的适用性:
1.1 端口身份的识别
该部分是PCIe 底层Core识别PCIe端口的过程,PCIe总线中的有3中角色:RC(root complex)、EP(end point)、switch。他们在PCIe总线中拓扑结构如下图所示:
PCIe的IP Core在上电后首要的任务就是通过外部的IO或者寄存器,识别自身在PCIe的系统中扮演的角色,不同的角色也决定其在后续的过程中不同的启动和配置流程。
作为用户,在例化这个IP核时,需要做的第一个事情就是通过接口配置PCIe的device_type。
1.2 关注时钟与复位
在使用PCIe的IP时,再需要关注的是该内核的时钟和复位过程。可能作为用户,该过程硬件已经帮你做完了,但是也最最好熟悉一下结构和流程,并确保core的内部时钟已经启动,复位已经成功。
在实际的应用过程中,测试的第一步就是将PCIe core的时钟拉到芯片外部进行测试。
1.3 Disable PCIe的LTSSM的状态机
LTSSM(Link Training and Status State Machine )是PCIe最为核心的一个状态机,PCIe总线在进行链路训练时,将使用LTSSM状态机。而在启动LTSSM之前,用户一般需要进行参数的配备