PCIe设备无法连接 主计算机读取的配置寄存器不对 [问题点数:50分]

Bbs1
本版专家分:0
结帖率 50%
Bbs6
本版专家分:9949
Blank
红花 2015年8月 硬件/嵌入开发大版内专家分月排行榜第一
2015年7月 VC/MFC大版内专家分月排行榜第一
2015年5月 VC/MFC大版内专家分月排行榜第一
2015年4月 VC/MFC大版内专家分月排行榜第一
2015年3月 VC/MFC大版内专家分月排行榜第一
2015年1月 硬件/嵌入开发大版内专家分月排行榜第一
2013年12月 VC/MFC大版内专家分月排行榜第一
2013年11月 VC/MFC大版内专家分月排行榜第一
2013年6月 VB大版内专家分月排行榜第一
2013年5月 VB大版内专家分月排行榜第一
2013年1月 VB大版内专家分月排行榜第一
2012年12月 VB大版内专家分月排行榜第一
Blank
黄花 2015年9月 VC/MFC大版内专家分月排行榜第二
2015年7月 硬件/嵌入开发大版内专家分月排行榜第二
2014年5月 VC/MFC大版内专家分月排行榜第二
2014年3月 VC/MFC大版内专家分月排行榜第二
2013年10月 VB大版内专家分月排行榜第二
2013年7月 VB大版内专家分月排行榜第二
2012年5月 VB大版内专家分月排行榜第二
2012年4月 VB大版内专家分月排行榜第二
2012年2月 VB大版内专家分月排行榜第二
2011年11月 VB大版内专家分月排行榜第二
Blank
蓝花 2015年11月 VC/MFC大版内专家分月排行榜第三
2015年6月 VC/MFC大版内专家分月排行榜第三
2015年2月 VC/MFC大版内专家分月排行榜第三
2014年1月 VC/MFC大版内专家分月排行榜第三
2012年3月 VB大版内专家分月排行榜第三
2011年12月 VB大版内专家分月排行榜第三
2011年10月 VB大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs6
本版专家分:9949
Blank
红花 2015年8月 硬件/嵌入开发大版内专家分月排行榜第一
2015年7月 VC/MFC大版内专家分月排行榜第一
2015年5月 VC/MFC大版内专家分月排行榜第一
2015年4月 VC/MFC大版内专家分月排行榜第一
2015年3月 VC/MFC大版内专家分月排行榜第一
2015年1月 硬件/嵌入开发大版内专家分月排行榜第一
2013年12月 VC/MFC大版内专家分月排行榜第一
2013年11月 VC/MFC大版内专家分月排行榜第一
2013年6月 VB大版内专家分月排行榜第一
2013年5月 VB大版内专家分月排行榜第一
2013年1月 VB大版内专家分月排行榜第一
2012年12月 VB大版内专家分月排行榜第一
Blank
黄花 2015年9月 VC/MFC大版内专家分月排行榜第二
2015年7月 硬件/嵌入开发大版内专家分月排行榜第二
2014年5月 VC/MFC大版内专家分月排行榜第二
2014年3月 VC/MFC大版内专家分月排行榜第二
2013年10月 VB大版内专家分月排行榜第二
2013年7月 VB大版内专家分月排行榜第二
2012年5月 VB大版内专家分月排行榜第二
2012年4月 VB大版内专家分月排行榜第二
2012年2月 VB大版内专家分月排行榜第二
2011年11月 VB大版内专家分月排行榜第二
Blank
蓝花 2015年11月 VC/MFC大版内专家分月排行榜第三
2015年6月 VC/MFC大版内专家分月排行榜第三
2015年2月 VC/MFC大版内专家分月排行榜第三
2014年1月 VC/MFC大版内专家分月排行榜第三
2012年3月 VB大版内专家分月排行榜第三
2011年12月 VB大版内专家分月排行榜第三
2011年10月 VB大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs6
本版专家分:9949
Blank
红花 2015年8月 硬件/嵌入开发大版内专家分月排行榜第一
2015年7月 VC/MFC大版内专家分月排行榜第一
2015年5月 VC/MFC大版内专家分月排行榜第一
2015年4月 VC/MFC大版内专家分月排行榜第一
2015年3月 VC/MFC大版内专家分月排行榜第一
2015年1月 硬件/嵌入开发大版内专家分月排行榜第一
2013年12月 VC/MFC大版内专家分月排行榜第一
2013年11月 VC/MFC大版内专家分月排行榜第一
2013年6月 VB大版内专家分月排行榜第一
2013年5月 VB大版内专家分月排行榜第一
2013年1月 VB大版内专家分月排行榜第一
2012年12月 VB大版内专家分月排行榜第一
Blank
黄花 2015年9月 VC/MFC大版内专家分月排行榜第二
2015年7月 硬件/嵌入开发大版内专家分月排行榜第二
2014年5月 VC/MFC大版内专家分月排行榜第二
2014年3月 VC/MFC大版内专家分月排行榜第二
2013年10月 VB大版内专家分月排行榜第二
2013年7月 VB大版内专家分月排行榜第二
2012年5月 VB大版内专家分月排行榜第二
2012年4月 VB大版内专家分月排行榜第二
2012年2月 VB大版内专家分月排行榜第二
2011年11月 VB大版内专家分月排行榜第二
Blank
蓝花 2015年11月 VC/MFC大版内专家分月排行榜第三
2015年6月 VC/MFC大版内专家分月排行榜第三
2015年2月 VC/MFC大版内专家分月排行榜第三
2014年1月 VC/MFC大版内专家分月排行榜第三
2012年3月 VB大版内专家分月排行榜第三
2011年12月 VB大版内专家分月排行榜第三
2011年10月 VB大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs6
本版专家分:9949
Blank
红花 2015年8月 硬件/嵌入开发大版内专家分月排行榜第一
2015年7月 VC/MFC大版内专家分月排行榜第一
2015年5月 VC/MFC大版内专家分月排行榜第一
2015年4月 VC/MFC大版内专家分月排行榜第一
2015年3月 VC/MFC大版内专家分月排行榜第一
2015年1月 硬件/嵌入开发大版内专家分月排行榜第一
2013年12月 VC/MFC大版内专家分月排行榜第一
2013年11月 VC/MFC大版内专家分月排行榜第一
2013年6月 VB大版内专家分月排行榜第一
2013年5月 VB大版内专家分月排行榜第一
2013年1月 VB大版内专家分月排行榜第一
2012年12月 VB大版内专家分月排行榜第一
Blank
黄花 2015年9月 VC/MFC大版内专家分月排行榜第二
2015年7月 硬件/嵌入开发大版内专家分月排行榜第二
2014年5月 VC/MFC大版内专家分月排行榜第二
2014年3月 VC/MFC大版内专家分月排行榜第二
2013年10月 VB大版内专家分月排行榜第二
2013年7月 VB大版内专家分月排行榜第二
2012年5月 VB大版内专家分月排行榜第二
2012年4月 VB大版内专家分月排行榜第二
2012年2月 VB大版内专家分月排行榜第二
2011年11月 VB大版内专家分月排行榜第二
Blank
蓝花 2015年11月 VC/MFC大版内专家分月排行榜第三
2015年6月 VC/MFC大版内专家分月排行榜第三
2015年2月 VC/MFC大版内专家分月排行榜第三
2014年1月 VC/MFC大版内专家分月排行榜第三
2012年3月 VB大版内专家分月排行榜第三
2011年12月 VB大版内专家分月排行榜第三
2011年10月 VB大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs2
本版专家分:221
Blank
黄花 2014年3月 C/C++大版内专家分月排行榜第二
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:70
Bbs1
本版专家分:0
PCIE 关于BAR的相关学习
什么是BAR<em>寄存器</em>: BAR<em>寄存器</em>是基地址<em>寄存器</em>。 BAR<em>寄存器</em>的作用: 通过BAR<em>寄存器</em>,我们首先知道这个基址对应的空间属性,然后给这段空间分配一个基址(这个基址只是用来路由寻址用的,不能和存储器空间的地址搞混,很多软件实现上会把两个地址设置成一样,但是本质上没有任何关系,只是TLP寻址的时候用的!)。这样的话,TLP就能根据地址被路由到对应<em>设备</em>的BAR空间中去。比如说现
PCIe驱动开发-寄存器读写
2014年1月微软MVP申请开始啦!      CSDN社区中秋晒福利活动正式开始啦!        专访钟声:Java程序员,上班那点事儿      独一无二的职位:开源社区经理      “说说家乡的互联网”主题有奖征文 PCIe<em>设备</em>漫游记----<em>寄存器</em>读写篇 分类: PCIe<em>设备</em>漫游记 2012-07-16 00:06 1033人阅读 评论(6)
读取PCI/PCIE配置空间
PCI及PCIE<em>配置</em>空间的<em>读取</em>有两种方式: 1.通过IO端口0xCF8/CFC _outpd(0xCF8,(1 然后就可以通过<em>读取</em>0xCFC-0xCFF来获取BIT0~BIT32的值 _inp(0xCFC) _inp(0xCFD) _inp(0xCFE) _inp(0xCFF) _inpw(0xCFC) _inpw(0xCFE) _inpd(0xCFC) 2.通过内存地址直接<em>读取</em> I
Linux PCI Express 配置空间读写内核实现
Linux PCI Express <em>配置</em>空间读写内核实现   1     PCI及PCI-E<em>配置</em>空间介绍    PCI-E是用来互联如计算和通信平台应用中外围<em>设备</em>的第三代高性能I/O总线。PCI-E采用了与PCI相同的使用模型和读写(load-store)通信模型,支持各种常见的事务,如存储器读/写、IO读/写和<em>配置</em>读/写事务。其存储器、IO和<em>配置</em>地址空间与PCI的地址空间相同。PCI E
NVMe驱动解析-关键的BAR空间
PCIe的Header空间和BAR空间是PCIe得以广泛使用的关键特性。Header空间是PCIe<em>设备</em>的通有属性,所有的PCIe Spec功能和规范都在这里实现;BAR空间则是<em>设备</em>差异化的具体体现,BAR空间的定义决定了这个<em>设备</em>是网卡,SSD还是虚拟<em>设备</em>。
PCI、PCIE配置空间的访问(MCFG,Bus,Device,Funtion)
一般来说,在x86平台上,有两大类方式可以访问这一区间的<em>寄存器</em>,   1,<em>配置</em>机制1#或者<em>配置</em>机制2#   访问时借助in/out指令。请注意,这种方式有别于一般的in/out指令访问PCI的IO空间,它引入了地址端口和数据端口。   <em>配置</em>机制2#只在某些特定的主板上被使用。 新的设计应使用<em>配置</em>机制1#来产生<em>配置</em>空间的物理操作。这种机制使用了两个特定的32位I/O空
PCIe 基础(一)操作配置空间
PCI<em>配置</em>空间PCI有三种地址空间:I/O空间,内存地址空间,PCI<em>配置</em>空间。在启动时bootloader 或者内核会遍历PCI总线并分配资源,如中断和内存,<em>设备</em>驱动程序通过PCI<em>配置</em>空间 找到资源分配。大小为256字节。 <em>配置</em>空间图:
访问PCI配置空间方法一(通过I/O端口直接读取)
#include #include //使用CTL_CODE必须加入winioctl.h #include #include "..\NT_Driver\Ioctls.h" DWORD In_32(HANDLE hDevice,USHORT port) {  DWORD dwOutput ;  DWORD inputBuffer[2] =  {   port,//
如何访问pcie整个4k的配置空间
目前用于访问PCIe<em>配置</em>空间<em>寄存器</em>的方法需要追溯到原始的PCI规范。为了发起PCI总线<em>配置</em>周期,Intel实现的PCI规范使用IO空间的CF8h和CFCh来分别作为索引和数据<em>寄存器</em>,这种方法可以访问所有PCI<em>设备</em>的255 bytes<em>配置</em><em>寄存器</em>。Intel Chipsets目前仍然支持这种访问PCI<em>配置</em>空间的方法。     PCIe规范在PCI规范的基础上,将<em>配置</em>空间扩展到4K bytes,至于为
2.3 PCI桥与PCI设备配置空间
PCI<em>设备</em>都有独立的<em>配置</em>空间,HOST主桥通过<em>配置</em>读写总线事务访问这段空间。PCI总线规定了三种类型的PCI<em>配置</em>空间,分别是PCI Agent<em>设备</em>使用的<em>配置</em>空间,PCI桥使用的<em>配置</em>空间和Cardbus桥片使用的<em>配置</em>空间。 本节重点介绍PCI Agent和PCI桥使用的<em>配置</em>空间,而并不介绍Cardbus桥片使用的<em>配置</em>空间。值得注意的是,在PCI<em>设备</em><em>配置</em>空间中出现的地址都是PCI总线地址,属于PCI
借助WinDriver认识Windows PCIE设备的空间结构
本文主要通过WinDriver工具图形化的查看PCIe<em>设备</em>,来认识PCIe<em>设备</em>的空间结构。本文主要参考《PCI Express体系结构导读》和网友博客:点击打开链接。 一、PCIe<em>设备</em>空间结构         PCIe<em>设备</em>有三个独立的物理地址空间:<em>设备</em>存储器空间(memory)、IO空间和<em>配置</em>空间(config)。由于PCIe<em>设备</em>支持即插即用,存储器空间和IO空间是在<em>设备</em>插入host后
PCIe学习笔记(11)--- 配置空间的读写请求
1. 有两种类型的读写请求 分别是TYPE 0与1 2 TYPE 0的REQUEST HEADER中 TYPE FIELD = 00100 TYPE 1的REQUEST HEADER中 TYPE FIELD = 00101 3. 读与写的区别在于: REQUEST HEADER的 FMT = 000, READ FMT = 010, WRITE
PCI/PCIe基础——配置空间分布
PCI<em>配置</em>空间由于PCI/PCIe<em>设备</em>分为Bridge和Agent两种,所以<em>配置</em>空间也有两种类型:其中Agent的<em>配置</em>空间类型称为Type 00h:简单介绍其中的几个<em>寄存器</em>的意义:Vendor ID,Device ID:标记了一个<em>设备</em>的生产厂商和具体的<em>设备</em>,比如Intel的<em>设备</em>Vendor ID通常是0x8086,Device ID就需要厂家自定义了,总之能够识别到具体是哪个<em>设备</em>就可以了。Stat...
KMDF驱动程序中处理DMA操作
          Windows 驱动程序框架中的 DMA 简介   内核模式驱动程序框架支持总线主控 直接内存访问 (DMA) <em>设备</em>,这些<em>设备</em>提供其自己的 DMA 控制器。上述支持包括:   一组框架 DMA 对象和方法,供驱动程序用于将 I/O 请求转换为 DMA 操作。 驱动程序提供的事件回调函数,可对<em>设备</em>进行编程以便启动各 DMA 传输操作。   框架支持单个数据...
Linux读取PCI设备的信息
<em>读取</em>PCI信息最近想要在linux系统下用代码<em>读取</em>PCI的<em>设备</em>信息,查看了以下网上的代码,稍微修改就可以了,现在贴出来以备以后使用。当然想要查看PCI的其他信息也只要在此基础继续修改<em>读取</em>更多的PCI信息就行。#include #include #include #include #define PCI_MAX_BUS 25
Linux下用memory方式访问PCIE空间
测试环境:Ubuntu 14.04LTS 在Windows下,我们 用RW everything很容易可以看到PCIE所有的config space,但是我们最近想在Linux下dump PCIE config space,首先我们尝试用IO read的方式, 也就是通常我们会用CF8和CFC的方式,但是很遗憾这种方式只能读出来256个字节,那么后面的0x100~0x1FF怎么去读,就是下面我
linux环境下遍历PCI设备
终于有时间写博客啦,让我把想写的都来说清楚!在网上找相关资料发现比较少,所以完成后迫不及待分享给大家,希望能带给大家帮助,欢迎批评指正! 了解PCI总线 PCI是Peripheral Component Interconnect(外设部件互连标准)的缩写,它是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽。PCI插槽也是主板带有最多数量的插槽类型,在目前流行的台式机主
PCI总线配置空间详解
其实之前是简单学习过PCI<em>设备</em>的相关知识,但是总感觉 自己的理解很函数,很多东西说不清楚,正好今天接着写这篇文章自己重新梳理一下,文章想要分为三部分,首先介绍PCI<em>设备</em>硬件相关的知识,然后介绍LINux内核中对PCI<em>设备</em>的支持。本节讲第一部分。 PCI总线在目前计算机总线系统中占据举足轻重的地位,其良好的扩展性,地址统一分配和总线竞争的处理相对于其他总线而言都具有绝对优势。 扩展性: 先说其
linux 下PCIE控制器设备树 学习
本系列全部内容基于Synopsys DesignWare进行学习与分析 在内核3.x之后开始使用<em>设备</em>树,所有和硬件相关部分均放在<em>设备</em>树中,在进行PCIE控制器学习时,对官方文档中各个变量的使用存在很大的迷惑,根据自己了解总结如下。 DesignWare官方文档中的例子如下: <em>pcie</em>: <em>pcie</em>@dffff000 {         compatible = "snps,d
PCI/PCIE 配置空间导读(1)
PCI/PCIE<em>配置</em>空间按照<em>寄存器</em>的范围可以划分为两大部分。 1、PCI ConfigurationSpace 在PCI规范中,这部分的<em>寄存器</em>范围是从偏移量[0-255],共256字节。 PCI Configuration Space的<em>寄存器</em>,又可细分为以下两种类型, 1、PCI ConfigurationSpace Header: PCI ConfigurationSpace Head
从cpu角度理解PCIe
概述 为什么需要写这篇文章,当我阅读《深入浅出SSD》这篇书籍中PCIe章节时发现,本书籍的侧重点是放在PCIe控制器和PCIe协议上,从CPU角度理解PCIe知识偏少,本文对下面几个知识点做出一些补充。 CPU访问外设<em>寄存器</em>与内存编址方式; CPU如何访问PCIe<em>配置</em>空间; CPU能够通过<em>寄存器</em>访问<em>配置</em>空间,为什么还需要映射PCIe<em>配置</em>空间; 如何扫描PCIe树并且为PCIe分配ID; ...
PCIE IP配置空间寄存器访问说明
PCIE技术文档,描述了PCIE<em>配置</em>空间<em>寄存器</em>的访问方法。PCIE技术文档,描述了PCIE<em>配置</em>空间<em>寄存器</em>的访问方法。
读取PCI配置空间数据并操作其映射的物理内存
PC机在启动的时候,都会看到一个PCI<em>设备</em>清单,可以看到机器中的所有PCI<em>设备</em>,其实搜索PCI<em>设备</em>的程序并不难编,本文通过一个实例说明如何遍历PCI<em>设备</em>。 1、了解PCI<em>设备</em>        PCI的含义是外设部件互连(Peripheral Component Interconnect),PCI局部总线(Local Bus)是1991年由Intel定义的,现在PCI局部总线已经成为了PC机中
我的BIOS之行(3)-遍历pci设备(1)io访问
pci
PCI的配置空间
PCI的<em>配置</em>空间 主要讨论如何去访问PCI<em>配置</em>空间和描述PCI<em>设备</em>的<em>配置</em>空间的定义和使用规则。理论上如何访问PCI<em>配置</em>空间的问题是属于总线操作的一部分,但是和<em>配置</em>空间有着密切联系,有必要一起讨论。   PCI的<em>配置</em>空间一共256 bytes大小,可以分成两个部分:头部和独立部分。这里主要讨论header部分的register。由于PCI的架构特性,PCI分为普通PCI<em>设备</em>和PCI桥。PCI桥
PCIe实践之路:BAR空间和TLP
上一篇文章中写到每个PCIe的function都有自己的configuration space,其实就是<em>配置</em><em>寄存器</em>了(这个当然是要有的了,不然软件要怎么玩?只不过PCIe的<em>配置</em><em>寄存器</em>要通过tlp才能去访问)。其实PCIe<em>设备</em>是有自己独立的一套内部空间,不仅仅是<em>配置</em>空间,包括每个<em>设备</em>提供哪些I/O地址,memory地址。而BAR(Base Address Register)就是用来表征这些地址空间的。
PCIe学习笔记(9)--- 配置空间的两种访问方式--LEGACY
1. IO访问 一段历史: 早期的PC,只有64KB的IO空间 到了PCI协议出现的时候,IO空间只留下两段,0x800-0x8FF, 0xC00-0xCFF 因些,根本不可能将系统中的所有PCI FUNCTION <em>配置</em>空间都放到这两段IO空间中去 另外一点,当时的内存空间,似乎也不是很够用,所以,也没有说将PCI FUNCTION的<em>配置</em>空间映射到内存空间中去
pci桥与pcie设备部分寄存器相关寄存器
<em>pcie</em><em>寄存器</em><em>配置</em>,<em>配置</em>pci基本空间,及部分基本<em>寄存器</em>介绍
pcie的8个capability(功能号)的查找
PCIe的capability代表PCIe<em>设备</em>是否具备某种功能,例如在 static __inline__ int drm_pci_device_is_agp(struct drm_device *dev) {     if (dev->driver->device_is_agp != NULL) {         int err = (*dev->driver->device_is_a
Linux设备驱动之pci设备的枚举
转自:http://blog.chinaunix.net/uid-20184656-id-3759408.html   一:前言 Pci,是Peripheral Component  Interconnect的缩写,翻译成中文即为外部<em>设备</em>互联.与传统的总线相比.它的传输速率较高.能为用户提供动态查询pci  deivce.和局部总线信息的方法,此外,它还能自动为总线提供仲裁.在近几年的发展
PCI配置空间访问的细节
PCI总线<em>配置</em>空间:                                                                                                      前段时间在看DM9000驱动的时候,瞄了一眼DM9000的datasheet。以前确实没有留意这种形式的                                 
Linux显示PCI设备
Linux显示PCI<em>设备</em> youhaidong@youhaidong-ThinkPad-Edge-E545:~$ lspci -tv -[0000:00]-+-00.0 Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Root Complex +-01.0 Adva
iMX6引脚配置寄存器使用方法总结
平台:  OKMX6Q-S系统:  Linux内核版本:linux-3.0.35Datasheet:IMX6DQRM.pdf i.MX 6Q包含有限数量的引脚,其中大部分具有多个信号选项。这些信号到引脚和引脚到信号的选项由输入输出多路复用器IOMUX选择。IOMUX还用于<em>配置</em>其他引脚特性,例如电压电平,驱动强度和滞后。在IMX6DQRM.pdf中的第4章ExternalSignals and Pi...
PCI设备初始化(一)
访问PCI<em>设备</em> 我们知道CPU和网卡是通过PCI总线相连的,CPU可以直接访问系统内存(虚拟地址),也可以通过映射间接访问总线地址,那CPU怎么访问网卡的存储空间呢? 每个网卡都有自己的存储空间,这些空间的卡上地址(在网卡上的地址)本质上是局部的,所以都从0开始,它们不与总线直接相连,在把网卡插上总线并加电之初,从总线上还访问不到这些空间 系统初始化时扫描PCI总线上的各个PCI<em>设备</em>(包括网...
Linux 查看PCI设备命令---lspci
查看硬件<em>设备</em>信息 lspci
pcie bar资源的读取和remap
在pci_setup_device->pci_read_bases 中会<em>读取</em>bios 中配好的bar资源。 pci_read_bases(dev, 6, PCI_ROM_ADDRESS);可见bar资源最多有6个,spec中也是这么规定的. static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom
PCI IO操作
以rtl8139d以太网卡驱动为例子可以很好的来学习、分析这个问题:         8139芯片中开始六个<em>寄存器</em>中存放的是网卡的mac地址,有多种方法可以得到。pci<em>设备</em>有三个空间分别为<em>配置</em>空间、io空间、内存空间,<em>配置</em>空间在开机时由bootloader设置、程序中一般用系统函数将一些<em>配置</em>信息读出来就可以了,很方便,没有必要直接操作。io空间和内存空间这两种模式都可以帮助我们得到mac的值,利
访问pci寄存器的方法
以rtl8139d以太网卡驱动为例子可以很好的来学习、分析这个问题:         8139芯片中开始六个<em>寄存器</em>中存放的是网卡的mac地址,有多种方法可以得到。pci<em>设备</em>有三个空间分别为<em>配置</em>空间、io空间、内存空间,<em>配置</em>空间在开机时由bootloader设置、程序中一般用系统函数将一些<em>配置</em>信息读出来就可以了,很方便,没有必要直接操作。io空间和内存空间这两种模式都可以帮助我们得到mac的值,利
PCI总线的配置
http://blog.sina.com.cn/s/blog_6472c4cc0100qqni.html关于PCI总线的入门介绍。
pcie设备枚举(转载)
转载自chinaunix  seaquester 枚举所有PCI<em>设备</em> 冷胜魁(Seaquester) lengshengkui@gmail.com 2009-11-16 在Linux下,lspci可以枚举所有PCI<em>设备</em>。它是通过<em>读取</em>PCI<em>配置</em>空间(PCI Configuration Space)信息来实现PCI<em>设备</em>的枚举的。这里,我通过两种方式来简单的模拟一下lspci的功能。一
i2c读写寄存器
按i2c时序读写<em>寄存器</em>
龙芯软件开发(31)-- PCI设备查找细节
这段时间,又在对龙芯盒子的PCI的总线进行编程。目前有了一点点进展,发现PCI总线也是很复杂的东西。由于所有其它外设都是挂在PCI总线上,如果要对外设进行编程,就得对PCI比较了解,并且可以对它编程。 PCI总线是一条平等的总线,所有<em>设备</em>都是平等的。在某一时刻会有一个<em>设备</em>是主<em>设备</em>。PCI的<em>设备</em>是一棵树的结构,以CPU为根,桥<em>设备</em>为树干,其它<em>设备</em>为叶子。由于PCI的<em>设备</em>是即插即用的,因此它的
应用层读写i2c从设备寄存器
在<em>配置</em>i2c从<em>设备</em><em>寄存器</em>时往往需要修改驱动中的初始化函数来修改<em>寄存器</em>的值,这样往往需要重新编译内核,其实可以使用i2c驱动提供给应用层的接口函数ioctl来在命令行修改<em>寄存器</em>,只需要编写一个类似i2c测试程序的程序文件,使用int main(int argc, char **argv) 来向程序传递参数即可实时读写从<em>设备</em>的<em>寄存器</em>,工作队列(workqueue)可以实现多个<em>寄存器</em>的取值。 #inc
QEMU PCIe设备实现
PCIe <em>设备</em>虚拟化QEMU中的实现 包括处理中断的硬件以及Linux如何响应和处理终端。技术分析分享
PCI设备WINDOWS驱动程序的开发
PCI<em>设备</em>WINDOWS驱动程序的开发摘要:本文主要介绍了在Windows9x操作系统下开发PCI<em>设备</em>驱动程序的方法。关键词:PCI<em>设备</em> 驱动程序 PCI<em>设备</em>概述近几年来,随着诸如图形处理、图像处理、三维动画技术的发展,计算机与外设通信需要处理的数据量迅速增加,基于ISA总线的通信方式已经不能满足高速数据传输的要求,PCI局部总线的引用就是为了打破高速数据传输的瓶颈。PCI总线的英文全称是:Peripheral Component Interconnect S
通过sysfs 读写pci的配置空间和rom空间
在pci_bus_add_device中会调用pci_create_sysfs_dev_files 来在sys下面为这个dev的<em>配置</em>空间和rom 空间提供访问的接口 int __must_check pci_create_sysfs_dev_files(struct pci_dev *pdev) {     int retval;     int rom_size;     struct
PCIE的mmio内存映射访问机制
PCIe概述 PCI总线使用并行总线结构,采用单端并行信号,同一条总线上的所有<em>设备</em>共享总线带宽  PCIe总线使用高速差分总线,采用端到端连接方式,每一条PCIE链路只能连接两个<em>设备</em> PCIe的端到端连接方式  发送端和接收端都含有TX(发送逻辑),RX(接受逻辑)  现在来说明什么是mmio  mmio,memory map io内存映射访问机制,除了port
PCIe 配置空间读写内核实现
1     PCI及PCI-E<em>配置</em>空间介绍    PCI-E是用来互联如计算和通信平台应用中外围<em>设备</em>的第三代高性能I/O总线。PCI-E采用了与PCI相同的使用模型和读写(load-store)通信模型,支持各种常见的事务,如存储器读/写、IO读/写和<em>配置</em>读/写事务。其存储器、IO和<em>配置</em>地址空间与PCI的地址空间相同。PCI Express与PCI系统是软件向后兼容的。 PCI-E的<em>配置</em>空间大
pcie dma的玩法
There is some issue with the implement script. So I took the manual steps.   1. Created the <em>pcie</em> core using core generator.   2.
pcie设备中找到pcie的root port
<em>pcie</em> <em>设备</em>是通过一种树状的方式连接在root port上,有时候需要知道自己连在哪个root port上就可以通过<em>pcie</em>_find_root_port来找到root port。 例如下例就是找到root port,然后判断root port是否支持aer功能 struct pci_dev *dev, *rpdev; dev = pci_get_domain_bus_and_slot(ei
I2C无法写入和读出寄存器
之前不小心把自己做的通过6124B控制dms模组的功能的源码全给删掉了,可是吓死我了,没办法只能自己加班偷偷赶出来。 这次给我的教训就是所有的源码都应该留有备份,除非确认不需要的源码。   凭借着我的记忆,我其实已经把6124B的功能做出来了,只是因为I2C读写失败的问题导致一直接受不了dms的图像。我用的是我之前写的linux应用层的i2c<em>设备</em>文件的读写方式进行控制i2c接口的。一直以为是...
基于vxworks的PCI设备驱动编写
最近几天,在为公司自研的PCI板卡写
Linux lspci查看硬件设备
Linux 主机的硬件配备 lspci 找到的是目前主机上面的硬件配备 [root@www ~]# lspci [-vvn] 选项与参数: -v     :显示更多的 PCI 接口装置的详细信息 -vv :比 -v 还要更详细的信息 -n     :直接观察 PCI 的 ID 而不是厂商名称 查阅您系统内的 PCI 装置: [root@www ~]# lspci #不必加上任
PCIE 调试过程记录
遇到的问题 PCIE link不稳定 <em>配置</em>空间读写正常,Memory mapping空间读写异常 缘由之前对PCIE的认识一直停留在概念的阶段,只知道是一个高速通讯协议,主要用于板内、板间的高速BUS。正好公司最近在调试一个PowerPC平台的PCIE BUS的BSP。需要一些PCIE的硬件、软件知识。下面通过解决实际问题过程的方法来进一步理解PCIE总线协议。但也仅仅限于工程应用(实际产品中调试、
使用Xilinx K7 KC705开发板调试PCIe中的问题【持续更新】
开发板:Xilinx K7 KC705 软件:ISE14.7 1.由于应用需求,我们要将开发板作为主机端,通过PCIe接口转接板外接一个NVMe PCIe SSD。并由FPGA控制SSD的数据读写。 因此我们例化生成了一个作为主机端的 PCIe IP核。 类型选择为Root Complex 这里我们将可设置的几项<em>配置</em>成抓取到的PCIe NVMe SSD的内部相应参
访问IO设备
一、I/O端口和I/O内存 1.1 I/O端口和I/O内存的概念 外设都是通过读写其<em>寄存器</em>来进行访问的,可以通过<em>寄存器</em>来对其进行<em>配置</em>、获取其运行状态。 由于不是处理器自己的<em>寄存器</em>,因而无法直接使用指令访问,外设的<em>寄存器</em>需要通过其地址来进行访问。外设<em>寄存器</em>的地址可能位于内存地址空间也可能位于单独的I/O地址空间。 在为外设提供了单独的I/O地址空间的架构上,处理器提供了称为I/O端口的独立的
Linux(debian7)操作基础(三)之PCI/PCI-E设备配置空间
⑴ 概念 PCI和PCI Express,是计算机常使用的一种高速总线。操作系统中的PCI/PCI-E<em>设备</em>驱动以及操作系统内核,都需要访问PCI及PCI-E<em>配置</em>空间。PCI/PCI-E<em>设备</em>的正常运行,离不开PCI/PCI-E<em>配置</em>空间。 ① PCI Express 1.1 使用兩對低電壓的差位訊號排線(low-voltage differential signaling pairs),分別各跑...
PCIe之DMA (一)
DMA概念DMA的英文拼写是“Direct Memory Access”,汉语的意思就是直接内存访问。 内存与内存(外设)交换数据不经过CPU。 使用DMA的好处就是它不需要CPU的干预而直接服务外设,这样CPU就可以去处理别的事务,从而提高系统的效率,对于慢速<em>设备</em>,如UART,其作用只是降低CPU的使用率,但对于高速<em>设备</em>,如硬盘,它不只是降低CPU的使用率,而且能大大提高硬件<em>设备</em>的吞吐量。因为对于
Linux i2c子系统应用之Linux ARM嵌入式i2c通信(用i2c设备总线完成i2c从设备寄存器配置
一、前言 本文主要分为三个部分,第一部分,介绍i2c总线应用的背景以及本文编译测试需要的开发环境;第二部分,介绍主要的源码及相关函数接口;第三部分,测试方法以及详细测试结果,i2c从<em>设备</em>的7bit器件地址可以在<em>设备</em>的datasheet查找。文章的最后会给大家分享本文的所有源码。 二、开发背景和环境 在做嵌入式相关工作时,需要<em>配置</em>i2c从<em>设备</em>的<em>寄存器</em>是常有的事...
PCIe学习笔记(22)--- 中断(3)---MSI-X
MSI-X MSI最多支持32 MSI-X最多支持2048 Message control:  bit 15: MSI-X Enable (是否用MSI-X中断,或者用MSI, INTx来替代) bit 14: Function Mask (是否可以发中断) 10:0: Table size in N-1 cap structure: MSI-X Table
PCI/PCIe 的那些事(2)- 配置空间(Configuration Space)
PCI/PCIe<em>配置</em>空间(Configuration Space)PCI/PCIe的<em>配置</em>空间Configuration Space是一个与Memory空间和IO空间并列的独立的空间。 对Legacy PCI来讲,Configuration Space有256 Bytes 对于PCIe, Configuration Space有4096 Bytes 访问方式对于x86架构的CPU而言,有定义Memor
virtio驱动如何同设备交互
virtio<em>设备</em>是作为pci<em>设备</em>被使用的,因此具有pci<em>设备</em>的所有属性: virtio header占用pci<em>设备</em>的24字节的<em>配置</em>空间:32 * (0 - 5) virtio header后面跟随一个device specific的config结构 virtio header包括: /* A 32-bit r/o bitmask of the features supported
PCIe的内存地址空间、I/O地址空间和配置地址空间
PCIe的内存地址空间、I/O地址空间和<em>配置</em>地址空间 pci<em>设备</em>与其它接口的<em>设备</em>(如i2c<em>设备</em>)最大的不同是存在内存地址空间和<em>配置</em>地址空间,本文分析一下它们的用途。 首先区分一下IO空间和内存空间 cpu会访问的<em>设备</em>一般有内存和外设<em>寄存器</em>,如下图所示。x86架构采用独立编址将内存操作与外设IO操作分开了才有了内存空间和IO空间的区分。x86平台cpu内部对内存和外设<em>寄存器</em>访问的指令也是不同的。...
Windows下遍历所有PCI设备
一、PCI<em>配置</em>空间简介PCI有三个相互独立的物理地址空间:<em>设备</em>存储器地址空间、I/O地址空间和<em>配置</em>空间。<em>配置</em>空间是PCI所特有的一个物理空间。由于PCI支持<em>设备</em>即插即用,所以PCI<em>设备</em>不占用固定的内存地址空间或I/O地址空间,而是由操作系统决定其映射的基址。系统加电时,BIOS检测PCI总线,确定所有连接在PCI总线上的<em>设备</em>以及它们的<em>配置</em>要求,并进行系统<em>配置</em>。所以,所有的PCI<em>设备</em>必须实现<em>配置</em>空间
PCIe实践之路:Linux访问PCIe空间
Linux在枚举PCIe<em>设备</em>的过程由内核中的PCI框架负责,在EP<em>配置</em>完成之后,驱动通过以下接口访问PCIe空间,原理参考前文《大话PCIe:<em>设备</em>枚举》一、访问<em>配置</em>空间相关接口位于drivers/pci/access.c1.1 读<em>配置</em>空间 pci_read_config_byte(const struct pci_dev *dev, int where, u8 *val); pci_read_con
PowerPC的PCI总线的dts配置
这段时间要弄下PCI Express的相关调试和驱动开发工作,老规矩,先在网上找找资料,这类的东西还蛮少的,已经买了本书,打算边学边自己总结吧,这篇文章是PowerPc下对PCI总线的<em>配置</em>方法。     powerpc使用称为FDT 扁平<em>设备</em>描述树的机制传递给内核硬件<em>配置</em>参数,
mv88e6165 RGMII模式下配置 及MAC与PHY简介
mv88e6165调试 MAC 、PHY、 MDIO简单总结
PCI 中断路由机制
PCI中断路由机制 PCI中断是可选的,中断是电平触发,低电平有效,集电极开路驱动。中断信号与PCI CLK异步,<em>设备</em>一旦断言为低,则要维持低电平状态,直到驱动程序清除这个中断请求。PCI中断可以为通过链的方式来共享。下文会仔细分析。 1.   PCI 中断的硬件组成 如图1所示:在PCI 总线上中断请求信号引出脚有INTA# - INTD# 4个,单功能<em>设备</em>只能使用INTA#,而对于多功能
PCIe实践之路:设备枚举
人的一生是一个不断认识自我,发展自我的过程。 认识PCIe<em>设备</em>的枚举过程需要以下知识: 拓扑结构 <em>设备</em>的表征及<em>配置</em>空间的访问 BAR空间的含义和访问 其中第1/2点在总线结构与<em>配置</em>空间已经介绍过了,第3点在BAR空间和TLP也已经进行过详细的介绍,可以说是万事具备。接下来涉及的过程有以下几个: 根据深度优先搜索进行<em>设备</em>总线号的分配 BAR空间的映射和简单访问测试 上面就是枚举过程中做的事情了。一、基
1.4 x86 CPU地址空间分配和寄存器访问
1、基本概念cpu地址空间和pci地址空间是两个常用的比较容易混淆的概念,特别是其中不同系列的cpu的实现还各不相同:x86系列cpu地址空间和pci地址空间是重合的,即为同一空间;而非x86 cpu的cpu地址空间和pci地址空间为两个独立的空间。
PCI设备的DMA映射操作详解
上周认真学习了LDD3第15章直接内存访问部分,这周调试PCI的网卡和视频采集卡,结合代码对DMA映射有了进一步的理解,这里按照LDD315章的顺序总结一下,记一下笔记,以后忘了再来翻,本人刚毕业1年菜鸟,理解不到的地方还希望大神指点!   根据LDD3说法,DMA是一种硬件机制,是说硬件具有这种仲裁能力,在cpu不干预的情况下<em>设备</em>可以作为主<em>设备</em>来对内存的直接读写访问,这样可以大大提高大数据流的
hi3536 pcie驱动学习笔记
<em>pcie</em> 内核和驱动
最近遇到一个PCIE相关问题,在设备冷启动的时候PCIE设备概率识别为1.0版本,速率为2.5GB/S,不知道大家是否遇到类似问题
最近遇到一个PCIE相关问题,在<em>设备</em>冷启动的时候PCIE<em>设备</em>概率识别为1.0版本,速率为2.5GB/S,不知道大家是否遇到类似问题
uboot中PCIe驱动程序说明
针对之前分析uboot中PCIe部分的代码,这里进行简要的PCIE体会说明,回头再整理一下格式 1.     概论 这边的说明只针对Uboot中P1020开发板的PCIE部分。简要说明功能和注意问题。 2.     PCIe相关基本概念 Host主桥:HOST 主桥与主存储器控制器在同一级总线上,其主要功能是隔离处理器系统的存储器域与处理器系统的PCI总线域。PCI <em>设备</em>可以方便地通过 H
解决OV系列摄像头寄存器读数据无法收到的问题
最近工作中接了一款OV7725的sensor,由于平台已经接过很多的家的sensor也就没有太当回事。问题出现的很奇怪,再看了register map后基本确定了要尽心register  R/W测试的三个地址也就是0x00  gain增益<em>寄存器</em>   0xa  0xb 两个版本号的<em>寄存器</em>。运行程序之后在reg里没有发现的应该返回的数据 ,用逻辑分析仪看了下波形就是在read发出后sensor返回了d
多功能PCIE交换机之六:基于NTB夸节点的读写
1、基于NTB跨节点读写的应用的特点 NTB常常用在要求高性能和高可靠性的场合,用来实现跨节点数据的传输。比如用作虚拟网卡、跨节点数据同步通道等,这些场合都期望充分发挥NTB基于PCIE的高速传输特性,最大限度地提高系统性能。 2、基于NTB跨节点读写的两种实现方式 实现地址转换、建立NTB通道之后,有两种实现NTB跨节点传输数据的方式: 基于CPU实现数据传输
DOS操作系统下PCI板卡访问方法(一)
1 前言当前,随着计算机技术的飞速发展,对于高速、高性能板卡的需求越来越大。曾在工控机中广泛应用的ISA总线逐渐被淘汰。相比之下,PCI总线作为一种高性能的局部总线,具有兼容性好,传输速度高,不受处理器限制以及支持“即插即用”(Plug&Play)等优点,正逐步取代ISA总线而广泛应用于PC机和工控机中。在今后相当长的一段时间内,开发应用基于PCI总线的扩展板卡将显得尤为重要。Windows操作系统和DOS操作系统是目前在工控机中使用较多的两种操作系统,有着各自的优缺点。
基于WDF框架的PCIE驱动设计
1.    概述 Windows平台下的<em>设备</em>驱动程序从Windows 2000开始都是以WDM ( Windows Driver Model) 框架为平台进行开发。以此模型开发,开发者需要一方面实现驱动程序与硬件的交互,另一方面要对操作系统内核进行操作,难度大。驱动程序容易出现问题,这也是Windows2000以来操作系统容易蓝屏的原因。 为了改善这种局面,降低驱动程序开发者的开发难度,提高系统稳...
Linux获取pci设备的厂商号、设备号、class号
要描述一个pci<em>设备</em>,就需要知道<em>设备</em>的厂商号(venderId)、<em>设备</em>号(devId)和class号。那么,在Linux系统中,如何获取这三个数据呢?   既然是一个pci<em>设备</em>,那么首先就得知道BDF——该pci<em>设备</em>在OS中的唯一标识符。以网卡举例,我们可以通过ethtool来得到BDF。其中,bus-info对应的信息就是BDF。# ethtool -i p12p1 driver: ixgbe
DOS操作系统下PCI板卡访问方法(二)
访问特定的PCI功能<em>设备</em>的<em>配置</em>空间一般分为以下几个步骤:首先,按照端口0xCF8的信息格式,组成相应的<em>配置</em>字,写入端口OxCF8中。然后通过<em>读取</em>端口0xCFC,得到每个功能<em>设备</em><em>配置</em>空问中相应的<em>寄存器</em>内容。接着,由读出的<em>配置</em>空间中<em>设备</em>ID和制造商ID与指定的功能<em>设备</em>的<em>设备</em>ID和制造商ID相比较。若不匹配则重复进行上述操作直到匹配为止。最后,由获得的相应的总线号、<em>设备</em>号以及功能号,通过读写端口OxCF8和0xCFC就可以访问特定板卡的<em>配置</em>空间了。下面给出一个通过PCI<em>配置</em>寄存
pcie非透明桥介绍及应用
<em>pcie</em>非透明桥介绍及应用,<em>寄存器</em><em>配置</em>相关使用,<em>pcie</em>使用机理
关于SpringBoot bean无法注入的问题(与文件包位置有关)
问题场景描述整个项目通过Maven构建,大致结构如下: 核心Spring框架一个module spring-boot-base service和dao一个module server-core 提供系统后台数据管理一个module server-platform-app 给移动端提供rest数据接口一个module server-mobile-api 其中server-platform-app 与
HTML中带时间的日期控件下载
HTML中带时间的日期控件 HTML中带时间的日期控件 相关下载链接:[url=//download.csdn.net/download/zaowazong/789919?utm_source=bbsseo]//download.csdn.net/download/zaowazong/789919?utm_source=bbsseo[/url]
红外在单片机C51下的程序下载
详细介绍了红外的C51编程,可移植到其它平台,如ARM,其它8位、16位单片机,MCU等 相关下载链接:[url=//download.csdn.net/download/qfq510/2058463?utm_source=bbsseo]//download.csdn.net/download/qfq510/2058463?utm_source=bbsseo[/url]
CCNP BCMSN 教材二下载
CCNP BCMSN Student Guide Version 3.0 Vol.2 相关下载链接:[url=//download.csdn.net/download/wwei135476/2311393?utm_source=bbsseo]//download.csdn.net/download/wwei135476/2311393?utm_source=bbsseo[/url]
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 云计算设备价格 物联网设备价格
我们是很有底线的