pci

【分享】PCIE IP核介绍

人盡茶涼 提交于 2020-02-07 08:03:01
【分享】PCIE IP核介绍 一. 什么是PCIE 在介绍IP核之前,先了解下PCIE是什么。 PCIE是一种高速串行计算机扩展总线标准,属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,支持主动电源的管理,错误报告,端对端的可靠性传输,热插拔以及服务质量等功能。优点有数据传输速率高,发展潜力相当大。 二. PCIE IP核 PCI-Express IP核,可以实现PCIE协议物理层到数据链路层、再到事务层的协议接口信号转换。因此这里选择在PCIE协议 IP核的基础上,直接在PCIE协议的事务层进行DMA控制器的设计。 IP核是知识产权模块的意思,EDA开发中具有相当的地位。IP主要分为软IP、固IP和硬IP。软IP是用Verilog/VHDL等硬件描述语言描述的功能块,但是并不涉及用什么具体电路元件实现这些功能。固IP是完成了综合的功能块。硬IP提供设计的最终阶段产品——掩膜。 IP核将一些在数字电路中比较常用,但是复杂的功能块,如、SDRAM控制器、等设计成可修改参数的模块。但是CPLD/FPGA的规模越来越大,设计越来越复杂,所以设计者的任务难度大大的提升了。但是调用IP核能避免重复劳动,减轻工程师的负担,因此使用IP核是能够缩短大量产品上市时间。 利用IP核设计电子系统,引用方便,修改基本元件的功能容易

linux4.9内核PCIe的一个问题

落爺英雄遲暮 提交于 2020-02-02 00:18:10
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index f30ca75b5b6c…d87876fb8f90 100644 — a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c @@ - 197 , 7 + 197 , 8 @@ static void __dev_sort_resources ( struct pci_dev * dev , /* Don't touch classless devices or host bridges or ioapics. */ if ( class == PCI_CLASS_NOT_DEFINED || class == PCI_CLASS_BRIDGE_HOST ) - return ; + if ( dev -> vendor != 0x1234 ) + return ; 如果pcie板卡没有定义vendor id,lspci显示没有分到地址空间. 来源: CSDN 作者: 杨幂的咪 链接: https://blog.csdn.net/Hsu_smile/article/details/94390824

ubuntu 出现pcie bus erro

别来无恙 提交于 2020-01-30 19:32:58
1.在开机gnu界面按e,进入编辑页面 在quiet splash 后添加空格pcie_aspm=off 2.开机之后在命令行输入 sudo gedit /etc/default/grub 会出现警告,不用管他,找到 GRUB_CMDLINE_LINUX_DEFAULT 关键字将其值修改为quiet splash pcie_aspm=off或quiet splash pci=noaer 保存退出 更新grub sudo update-grub 来源: https://www.cnblogs.com/y20200127/p/12243464.html

LTE面试汇总

冷暖自知 提交于 2020-01-29 02:15:40
1 测试用什么软件?什么终端? 答: LTE 测试前台测试使用华为出的测试软件 GENEX Probe,后台分析使用 GENEX Assistant ;测试终端有:CPE(B593s)、小数据卡(B398 和B392)、TUE 2 LTE 测试中关注哪些指标? 答: LTE 测试中主要关注 PCI(小区的标识码)、RSRP(参考信号的平均功率,表示小区信号覆盖的好坏)、SINR(相当于信噪比但不是信噪比,表示信号的质量的好坏)、RSSI(ReceivedSignal StrengthIndicator,指的是手机接收到的总功率,包括有用信号、干扰和底噪)、PUSCHPower(UE 的发射功率)、传输模式(TM3 为双流模式)、Throughput DL, Throughput UL 上下行速率、掉线率、连接成功率、切换成功率等。。 3 RSRP、SINR、RSRQ 什么意思? 答: RSRP: Reference Signal Received Power 下行参考信号的接收功率 ,和 WCDMA 中 CPICH 的RSCP作用类似,可以用来衡量下行的覆盖。区别在于协议规定 RSRP 指的是每 RE 的能量,这点和 RSCP指的是全带宽能量有些差别,所以 RSRP 在数值上偏低; SINR:信号与干扰加噪声比 (Signalto Interference plus Noise

linux | 网卡驱动

和自甴很熟 提交于 2020-01-22 13:41:12
linux 1. 查看网卡信息 lspci | grep -i 'eth' 1a:00.0 Ethernet controller: Intel Corporation Ethernet Connection X722 for 10GbE SFP+ (rev 09) 1a:00.1 Ethernet controller: Intel Corporation Ethernet Connection X722 for 10GbE SFP+ (rev 09) 1a:00.2 Ethernet controller: Intel Corporation Ethernet Connection X722 for 1GbE (rev 09) 1a:00.3 Ethernet controller: Intel Corporation Ethernet Connection X722 for 1GbE (rev 09) 3b:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01) 3b:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network

Linux 网卡驱动相关——03

╄→гoц情女王★ 提交于 2020-01-22 13:40:40
  紧接上一篇,这里简要介绍net_device 结构和网卡驱动框架。     struct net_device 是一个比sk_buff 更复杂的结构,里面包含了与TCP/IP协议栈通信的接口函数,但是自从2.6.31 之后的内核中这些接口函数就被封装在了 stuct net_device_ops 结构中,在net_device 结构中以 netdev_ops 成员的形式出现。 我们就来看如何使用该结构: 1. 在初始化幻术中驱动需要分配一个net_device 结构,可以使用alloc_netdev()函数,也可以使用一个更常用的函数 alloc_etherdev() 函数来实现。这个函数在创建net_device 结构的同时也为驱动自定义的 私有数据结构分配了空间。 一般这样使用:   struct net_device *netdev;   struct priv_struct *mycard_priv;   netdev = alloc_etherdev(sizeof(struct priv_struct));   mycard_priv = netdev->priv; 2. 使用register_netdev() 函数来注册net_device结构中的接口函数,并将其中的组成员进行赋值 3. 读取MAC地址,配置局域网唤醒机制。 现在我们来看看网卡驱动框架:

Linux 网卡驱动相关——04

…衆ロ難τιáo~ 提交于 2020-01-22 13:39:57
rtl8139 网卡驱动分析:(注:这里只分析了主要函数,代码版本是: 8139too.c 71420 bytes 2010-04-01 22:56:18 ) /* * 提供了一系列驱动程序可调用的接口,主要用于发现和初始化设备 */ static struct pci_driver rtl8139_pci_driver = { .name = DRV_NAME, .id_table = rtl8139_pci_tbl, .probe = rtl8139_init_one, .remove = __devexit_p(rtl8139_remove_one), #ifdef CONFIG_PM .suspend = rtl8139_suspend, .resume = rtl8139_resume, #endif /* CONFIG_PM */ }; static int __devinit rtl8139_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) { struct net_device *dev = NULL; struct rtl8139_private *tp; int i, addr_len, option; void __iomem *ioaddr; static int board

13M initrd .config ubuntu 4.15.18

妖精的绣舞 提交于 2020-01-22 08:43:37
我靠,如此神器,我才知道!!! make localmodconfig 我还手动配个鸟!!! # # Automatically generated file; DO NOT EDIT. # Linux/x86 4.15.18 Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y CONFIG_X86=y CONFIG_INSTRUCTION_DECODER=y CONFIG_OUTPUT_FORMAT="elf64-x86-64" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_MMU=y CONFIG_ARCH_MMAP_RND_BITS_MIN=28 CONFIG_ARCH_MMAP_RND_BITS_MAX=32 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 CONFIG_NEED_DMA_MAP_STATE=y CONFIG_NEED_SG_DMA_LENGTH=y CONFIG_GENERIC_ISA_DMA=y

PCIE_DMA实例三:Xilinx 7系列(KC705/VC709)FPGA的EDK仿真

梦想的初衷 提交于 2020-01-20 03:01:17
一:前言 好久没写博客了,前段时间有个朋友加微信请教关于PCIe的一些学习方法。本人也不是专家,只是略知一些皮毛。对于大家反馈的问题未必能一一解答,但一定知无不言。以后我会常来博客园看看,大家可以把问题直接在评论区提出来。这篇博客是应部分网友的要求写的,Xilinx升级到7系列后,原来的pcie ip核trn接口统统转换成了axis接口,这可愁坏了之前用xapp1052的朋友,一下子不好用了,该怎么办?对此我的想法是:如果您两年左右的verilog代码经验,建议您直接使用axis接口,如果您觉得使用不方便,大可在外面再包一层您自己觉得好用的接口。博主公司有这方面的技术积累,但涉及到商业利益,我不能在此出售源代码,如有私下合作,可谈。PCIe_to_RapidIO, PCIe_to_FC, PCIe_to_Enet等各类接口转换都没问题。如果您刚接触PCIe,想要更清楚得理解axis接口的PCIe IP核是如何工作的,那么这篇系统级的博客对您将会非常有用,同时博主也会给出一个用Block_design搭的带有DMA功能的简易EP,大家只要自己写个简单的控制逻辑就可以操作EP端的DMA,对于没有经验的工程师,是一个比较容易的技术迁移。 二:前期准备 1、pcie基础还是要有,尤其是协议部分。推荐一本电子书,很经典,请耐心读它(Addison.Wesley.PCI.Express

PCI总线配置周期产生和配置寄存器

若如初见. 提交于 2020-01-19 03:46:45
连载目录篇:http://blog.chinaaet.com/justlxy/p/5100053251 上一篇文章中也是说到了,I/O Address Space的空间很有限(64KB),所以一般在I/O Space中都有两个寄存器,第一个指向要操作的内部地址,第二个存放读或者写的数据。因此,对于PCI的配置周期来说,包含了两个步骤: Step1:CPU先对IO Address中的0xCF8~0xCFB写入要操作的配置寄存器的地址。如下图所示,其中包括了总线号(Bus Number)、设备号(Device Number)、功能号(Function Number)和寄存器指针 Step2:CPU向IO Address中的0xCFC~0xCFF中写入读或者写的数据 前面介绍过,每一个PCI功能(Function)都包含256个字节的配置空间(Configuration Space),其中前64个字节被称为Header,剩余的192个字节用于一些可选的功能。PCI Spec规定了两种类型的Header:Type1 和Type0。其中,Type1 Header表示该PCI设备功能为桥(Bridge),而Type0 Header则表示该PCI设备功能不是桥。两种Header的结构图分别如下所示 注:因为PCIe完整的继承了PCI Header相关的内容