pci

浅析PCIe链路LTSSM状态机

╄→尐↘猪︶ㄣ 提交于 2020-01-18 11:30:36
版权声明:本文为CSDN博主「古猫先生」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 https://blog.csdn.net/zhuzongpeng/article/details/78995340 我们知道,在PCIe链路可以正常工作之前,需要对PCIe链路进行链路训练,在这个过程中,就会用LTSSM状态机。LTSSM全称是Link Training and Status State Machine。这个状态机在哪里呢?它就在PCIe总线的物理层之中。 LTSSM状态机涵盖了11个状态,包括Detect, Polling, Configuration, Recovery, L0, L0s, L1, L2, Hot Reset, Loopback, Disable。这11个状态之间转换的逻辑,如下图, 这11个状态大致可以分为4大类: (1) PCIe链路训练相关。正常的PCIe链路训练状态转换流程依次是,Detect->Polling->Configuration->L0. L0是PCIe链路可以正常工作的电源状态。 (2) PCIe链路重新训练相关。这个状态也称为Recovery。Recovery是一个非常重要的链路状态,进入这个状态的因素也很多,比如电源状态的变化,PCIe链路速率的变化等。 (3) 电源状态相关

PCI 设备枚举流程

可紊 提交于 2020-01-17 02:53:12
//0、pci子系统首先注册pci bus struct bus_type pci_bus_type = { .name = “pci”, .match = pci_bus_match, .uevent = pci_uevent, .probe = pci_device_probe, .remove = pci_device_remove, .shutdown = pci_device_shutdown, .dev_groups = pci_dev_groups, .bus_groups = pci_bus_groups, .drv_groups = pci_drv_groups, .pm = PCI_PM_OPS_PTR, .num_vf = pci_bus_num_vf, }; EXPORT_SYMBOL(pci_bus_type); static int __init pci_driver_init(void) { return bus_register(&pci_bus_type); } postcore_initcall(pci_driver_init);/* 将初始化函数放到内核代码特殊段,内核启动将会自动调用初始化函数 */ /* 设备的枚举流程和设备的驱动的调用过程 */ //1、pci控制器 设备树节点将会配转换成platform device pcie

主板......................非原创

南笙酒味 提交于 2020-01-15 22:27:47
主板 的英文名称叫做Motherboard,也可以译做母板。从“Mother”一词可以看出主板在 电脑 各个配件中的重要性。主板不但是整个电脑系统平台的载体,还负担着系统中各种信息的交流。好的主板可以让电脑更稳定地发挥系统性能,反之,系统则会变得不稳定。   主板的构成   主板的平面是一块PCB(印刷电路板),一般采用四层板或六层板。相对而言,为节省成本,低档主板多为四层板:主信号层、接地层、电源层、次信号层,而六层板则增加了辅助电源层和中信号层,因此,六层PCB的主板抗电磁干扰能力更强,主板也更加稳定。 主板组成 控制芯片组(CMOS芯片、 BIOS 芯片、南北桥芯片、RAID控制芯片 )、插槽部分,CPU插槽、内存槽、扩展总线插槽(ISA、PCI、AGP、CNR插)、主板电源插槽; 外设接口(COM口、LPT打印接口、音频接口(声音输入、声音输出、麦克风)、USB接口、CD音频线接口、PS/2接口(即 键盘口、鼠标口)、MIDI 接口、硬盘接口( IDE 接口、SATA接口 )、 软驱接口,跳线 );高速缓存 , 电池 等 典型的主板布局如下图,在电路板上面,是错落有致的电路布线;再上面,则为棱角分明的各个部件:插槽、芯片、电阻、电容等。当主机加电时,电流会在瞬间通过CPU、南北桥芯片、 内存 插槽、AGP插槽、PCI插槽、IDE接口以及主板边缘的串口、并口、PS/2接口等

PCIE4.4报错

左心房为你撑大大i 提交于 2020-01-15 04:59:48
[DRC REQP-1910] PCIE31_invalid_MCAPPERSTxB_driver: PCIE_3_1 pcie3_8x_0_i/inst/pcie3_uscale_top_inst/pcie3_uscale_wrapper_inst/PCIE_3_1_inst pin MCAPPERST0B has an invalid driver pcie3_8x_0_i_i_2. Only a direct connection from a Port or IBUF/IBUF_ANALOG may drive this pin. 具体链接参考: https://china.xilinx.com/support/answers/71427.html 来源: CSDN 作者: 知芯小子 链接: https://blog.csdn.net/jingjiankai5228/article/details/103796384

DPDK快速上手指南(18.02)

时光毁灭记忆、已成空白 提交于 2020-01-14 09:38:10
DPDK快速上手(linux) 本文档主要来自linux_gsg-18.02.pdf的翻译,翻译肯定有不妥之处,请批评指正,我会随后修改,不胜感激。 1. 介绍 本文档包含有关DPDK(Data Plane Development Kit的缩写)软件的安装和配置的说明,目的就是让用户快速用起来。本文档描述怎样在linux应用环境下编译和运行一个DPDK应用程序,而不过多深入细节。 1.1文档路线图 以下是针对所有DPDK文档建议的阅读顺序: 发布说明(Release Notes): 提供具体的发布信息,包括支持特性、限制、问题改进、问题报告等等。也提供以FAQ形式的常见问题的回答。 快速上手指南(Getting Started Guide),即本文档: 描述在不同的操作系统上如何安装和配置DPDK软件;帮助用户快速用起来。 编程者指南(programmer's guide): 描述: 软件架构和怎么用它(通过例子),特别是在linux应用环境下。 DPDK的内容,系统构建(包括用在DPDK根目录 Makefile中的命令,用来构建开发工具包和应用程序)以及移植应用程序的准则。 软件中使用的优化以及新开发应考虑的优化。 还提供术语表。 API参考(API Reference): 提供有关DPDK函数、数据结构和其它编程结构的详细信息。 示例应用程序用户指南(sample

mt7628 pcie挂载nvme并测试

有些话、适合烂在心里 提交于 2020-01-11 16:22:25
默认情况下openwrt并没有启用nvme特性 需要使用make kernel_menuconfig 进入 Device 设置并启用NVMe 编译后启动内核panic如下 [ 0.810128] Kernel bug detected[#1]: [ 0.813779] CPU: 0 PID: 9 Comm: kworker/u2:1 Not tainted 4.14.162 #0 [ 0.820240] Workqueue: nvme-wq nvme_reset_work [ 0.824749] task: 87c22d00 task.stack: 87cfa000 [ 0.829336] $ 0 : 00000000 00000001 80276b18 00000001 [ 0.834642] $ 4 : 87c1f8e8 00000000 87cfbd70 87d55c00 [ 0.839948] $ 8 : 00000000 00000008 00000000 00000001 [ 0.845252] $12 : 00000000 00000400 ffffffff 00000000 [ 0.850556] $16 : 87c1f8e8 87c1f844 87c1f800 804c0000 [ 0.855862] $20 : 87cf6c00 00000000

What is the Base Address Register (BAR) in PCIe?

假如想象 提交于 2020-01-10 22:10:16
问题 After going through some basics documents what I understood is, Base Address Register is Address space which can be accessed by PCIe IP. PCIe IP can either transmit data in Base Address Register or it can write received data on to it. Am I right? Or missing anything? 回答1: I think this is a very basic question and I would suggest to read: PCI Express Base 3.1 Specification (pcisig.com) or PCI Express Technology 3.0 (MindShare Press) book A Base Address Register (BAR) is used to: - specify how

网卡工作原理

时光怂恿深爱的人放手 提交于 2020-01-08 05:30:41
精确的说: NIC 工作在数据链路层中的MAC子层上,而非物理层。NIC的作用 是进行串并行的转换,即MAC子层规定了如何在物理线路上传输frame,LLC的作用是识 别不同协议类型然后进行encapsulation。MAC地址烧入NIC,所以,NIC工作在Data Link Layer。 一、网卡的主要特点 网卡(Network Interface Card,简称NIC),也称网络适配器,是电脑与局域网相互连接的设备。无论是普通电脑还是高端服务器,只要连接到局域网,就都需要安装一块网卡。如果有必要,一台电脑也可以同时安装两块或多块网卡。 图1 一块10/100Mbps的PCI网卡 电脑之间在进行相互通讯时,数据不是以流而是以帧的方式进行传输的。我们可以把帧看做是一种数据包,在数据包中不仅包含有数据信息,而且还包含 有数据的发送地、接收地信息和数据的校验信息。一块网卡包括OSI模型的两个层——物理层和数据链路层。物理层定义了数据传送与接收所需要的电与光信号、 线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提 供标准的数据接口等功能。 网卡的功能主要有两个:一是将电脑的数据封装为帧,并通过网线(对无线网络来说就是电磁波)将数据发送到网络上去;二是接收网络上其它设备传过 来的帧

虚拟ipmi virtualbmc

痞子三分冷 提交于 2020-01-07 18:39:42
安装 virtualbmc yum install python-virtualenv virtualenv ven source ven/bin/activate pip install pip --upgrade yum install libvirt-devel gcc pip install virtualbmc 安装libvirt kvm,创建bridge yum install libvirt qemu-kvm brctl addbr br0 ifconfig br0 up 为虚拟机添加bmc,domain为虚拟机在virsh中的名字 vbmc add <domain> --port 6230 --username admin --password password 开启bmc,bmc的端口监听在udp上 vbmc start <domain> 测试,virtualbmc只支持2.0协议,需要lanplus ipmitool -I lanplus -U admin -P 123456 -H 172.168.101.11 -p 6230 power status # ipmitool -I lan -H 172.168.101.11 -U root -P 123456 -p 6230 chassis power status bootdev 修改libvirt

In Linux, is there a way to find out which PCI card is plugged into which PCI slot?

匆匆过客 提交于 2020-01-01 08:11:23
问题 In Linux, is there a way to find out which PCI card is plugged into which PCI slot? /sys/bus/pci/devices/ contains many devices (bridges, CPU channels, etc.) that are not cards and I was not able to find any information about slot-card mappings in the device directories. 回答1: You can use dmidecode –t slot to find all available pci slots than you can run lspci -s <slot number> command to list device connected to specified slot. You must take bus address from first command and use this address