介绍:参考

一个系统上最多有256个PCI总线,每个总线最多有32个设备,每个设备最多有8个功能,每个功能最多有256字节的配置地址空间,所以总的配置地址空间是16M。

PCI设备有物理设备和逻辑设备之分,一般通过IO访问PCI设备都说的是逻辑设备。只有逻辑设备可以通过IO获取数据。

一个PCI物理设备是bus号加device号组成。而有的物理设备可以有多个功能,因此又以function号进行区分。

一个PCI逻辑设备可以由bus号,device号,function号唯一确定。这三个参数构成PCI设备标识符。

实际存在的设备是物理设备,可以访问IO数据的是逻辑设备。比如显卡是一个物理设备,但是它有几个功能,显卡里面就有自带的audio,就是其中的一个逻辑设备。

Reserved     Bus Num        Device     Func     offset

|| 1 || 000 0000 || 0000 0000 || 0000 0 || 000 || 0000 00 || 00 ||

所以setVallue的时候

dwAddr = dwAddr_base + (bus << 16) + (dev << 11) + (func << 8) + (offset << 2);

设备标识符:

PCI总线规范定义的配置空间总长度为256个字节,配置信息按一定的顺序和大小依次存放。前64个字节的配置空间称为配置头(如下图所示),对于所有的设备都一样,配置头的主要功能是用来识别设备、定义主机访问PCI卡的方式(I/O访问或者存储器访问,还有中断信息)。其余的192个字节称为本地配置空间,主要定义卡上局部总线的特性、本地空间基地址及范围等。

配置头:

X86 CPU可以访问存储器或IO地址空间,但不能直接访问配置地址空间。CPU通过主桥(北桥或MCH)中的一个IO映射的地址端口和数据端口间接访问PCI配置空间。该地址端口位于IO空间CF8h~CFBh,而数据端口映射到CFCh~CFFh。

CF8h: CONFIG_ADDRESS   PCI配置空间地址端口。
CFCh: CONFIG_DATA        PCI配置空间数据端口。
由于在Windows下有保护模式,不能直接访问底层,运行程序时以管理员的身份运行。
直接项目右键---属性---连接器---清单文件---uac执行级别 选择requireAdministrator确定,再次运行程序会弹出一个对话框
选择什么凭证重启VS即可。

转载于:https://www.cnblogs.com/smart-zihan/p/10671280.html

第二篇--PCI设备解析相关推荐

  1. 精通SpringBoot——第二篇:视图解析器,静态资源和区域配置

    今天让我们来看看另一个重要的类:WebMvcAutoConfigurationAdapter.先来看看它的声明: @Configuration @Import(EnableWebMvcConfigur ...

  2. 第二篇 再读Spring 之 BeanDefinition解析

    第二篇 再读Spring 之 BeanDefinition解析 文章目录 第二篇 再读Spring 之 BeanDefinition解析 一.颗粒度问题 二.细说Spring中不同颗粒度对象在解析中的 ...

  3. PCI Express解析——系列文章【1】:基本概述PCI、PCI-X与PCIe的最大区别

    PCI Express解析--系列文章[1]:基本概述PCI.PCI-X与PCIe的最大区别 1 PCIe概述 1 .1 基本简介 1.2 PCI.PCI-X和PCIe 1.3 PCIe发展版本 1. ...

  4. FPGA通信第二篇--UDP

    FPGA通信第二篇–UDP 本文通过对以太网通信中的UDP传输协议的理论学习,针对UDP实际应用中的丢包问题,提出一种人为的重发机制完成UDP稳定可靠的传输,并通过实验进行了验证. 1 以太网简介 以 ...

  5. 浅谈Linux PCI设备驱动(一)

    要弄清楚Linux PCI设备驱动,首先要明白,所谓的Linux PCI设备驱动实际包括Linux PCI设备驱动和设备本身驱动两部分.不知道读者理不理解这句话,本人觉得这句话很重要,对于PCI.US ...

  6. CoreOS Fest 系列之第二篇: Systemd、Go、Calico、Sysdig

    本文讲的是CoreOS Fest 系列之第二篇: Systemd.Go.Calico.Sysdig,[编者的话]在 CoreOS Fest 第二天的会议中,演讲者展示了多个开源项目和工具,包括 Sys ...

  7. dpdk pci设备初始化

    一.pci设备背景知识 传统的sata,是一种 半双工设备, 同一时间只能有一个方向在传输数据,传输速率就比较慢了.pci设备是一种全双工设备, 同一时间可以发送数据到其他pci设备,也可以接收来自其 ...

  8. 红蓝对抗之隧道技术第二篇(reGeorg内网穿透、SSH隧道本地Socks代理、SSH远程转发、Earthworm Socks5代理、Tunna正向代理、ICMP隧道、DNS隧道、Frp穿透)

    文章目录 隧道应用 reGeorg内网穿透 SSH本地转发(正向) 场景一 场景二 SSH远程转发(反向) Earthworm Socks5代理 正向代理 反向代理 Tunna正向代理 ICMP隧道 ...

  9. 【第二篇】SAP HANA XS使用JavaScript编程详解

    前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 在第一篇的时候,我们说过如下内容: SAP HANA XS支持JavaScript中的服务器端应用程序编程.开发的服务器端 ...

最新文章

  1. LeetCode--055--跳跃游戏(java)
  2. C++开发人脸性别识别教程(7)——搭建MFC框架之界面绘制
  3. JavaScript的值传递和引用传递
  4. Linux内核 scatterlist介绍
  5. ifconfig命令为centos linux系统配置临时的局域名IP、网关以及子网掩码
  6. codevs1287 矩阵乘法
  7. vue-video-player 一款vue的前端视频播放插件 支持m3u8
  8. SOFA原理学习--sofa rpc入门示例
  9. 面试题promise原理
  10. 英文投稿过程中的十种状态
  11. 通信电子电路(4)----高频功率放大器(2)
  12. Python编程思想(18):哇!原来Python参数还可以这样用
  13. 激活windows10系统提示错误代码0x800705b4怎么解决
  14. 31道Java面试题,java冒泡排序详解
  15. 一文读懂设计模式--策略模式
  16. 半小时实现Java手撸Http协议,爽!!(附完整源码,建议收藏)
  17. 金三银四求职季,程序员面试必备——编程语言篇
  18. Codeforces Bear and Big Brother
  19. 宝可梦数据集分析及预测
  20. 贪心算法|406. 根据身高重建队列|先排序后插队

热门文章

  1. linux 下 安装 nfs 服务
  2. pdfFactory怎么合并PDF
  3. mes系统如何管理企业生产
  4. 骇客教学_大数据。 大骇客。 大云。 你准备好2016年吗?
  5. win10使用 .cab 方式安装 .NET Framework 3.5(包含下载地址)
  6. Linux命令模式下打开摄像头,Linux下利用Opencv打开笔记本摄像头问题
  7. 安卓班级同学录校友录系统app
  8. 乐刷注册服务器错误,畅捷支付pos机操作员号和密码.畅享合伙人畅捷支付大POS机钱客通常见问题解决...
  9. bdd100k数据标签格式转到VOC2007格式
  10. 鲁迅的《白光》表达了什么