博客内容来源为网络下载ppt,侵删

PCI的发展

PCI Local Bus 示意图


NoteBook上常见的PCIE Device:SSD DGPU WLAN LAN CardReader。
通过总线扩展出来的PCIE Bridge可以外接设备等。如下所示:

Bridge和Device之间通过Link进行沟通,同时Bridge发出Clock信号给Device,进行正常工作,但一直处于工作状态的话会占用资源,在Device不需要工作的时候,通过Request通知Bridge提供Clock,当然移除Request也是可行的。 Clock Request在项目中为了达到省电的目的,会设置Clock Request,当device 处于idle 状态时,Host不发送Clock 信号,当Device 需要work时,通过Clock Request pin通知Host发Clock信号。所以在项目中需要为每一个PCI/PCIE device配Clock Request 信号。

Project中所使用的PCIE device都是通过PCIE Bridge扩展出来。 PCIE Link宽度常见的有: x1, x2, x4, x8, x16,PCIE device工作在HW上需要有clock信号。 并非所有device都需要Expansion ROM,Expansion ROM通常包在BIOS ROM里面, PSOT过程中加载进去
PCIE结构框图:

每个PCIEcontroller/bridge和device 的位置都可以通过Bus,Device,Function来确定。
Bus: 0 ~ 255 Device: 0 ~ 31 Function: 0 ~ 7

Access PCI


Configuration Space (配置空间)是PCIE controller和PCIE device的主要寄存器区域
Total Space大小为4K(0 ~ FFFh)
其中0~FFh为PCI和PCIE公用区域
PCI Configuration Space: 0 ~ FFh (256 Bytes)
PCIE Extended Configuration Space: FFh ~ FFFh (4K – 256 Bytes)。

Vendor ID(Offset 00h~01h) 记录PCI厂商识别码, 如Intel ID是 8086. 0FFFFh 是一个无效的Vendor ID, 如果读到0FFFFh, 可认为该处没有设备
Device ID(Offset 02h~03h) 记录该Vendor生产的PCI设备的识别码, Vendor ID + Device ID 的组合在所有PCI/PCIe设备中是唯一的。
Command (04~05h) 用于enable/disable Memory & I/O Space. [0] - I/O Space, [1] – Memory Space通过01打开关闭访问权限
Class Code(Offset 09h~0Bh)是一个24位只读的寄存器, 用于定义PCIE device的类型, 由3个Byte组成。
基本类别 (Base Class)
子类别 (Sub Class)
程序界面 (Programming Interface)
比如 00 00 00h则证明这个是个VGA设备,下表为部分对照参考。
Bass Address(Offset 10h~27h) 该设备所使用的内存或者I/O资源

Subsystem Vendor ID (Offset 2Ch~2Dh)
Subsystem Device ID (Offset 2Eh~2Fh)

  • 即SSID, 一般由BIOS根据不同的OEM来进行设定, 用于在OS驱动识别device究竟是在哪个产品型号上用

Capabilities register定义了PCIE扩展功能寄存器。0-3F定义的寄存器是每个PCIE设备都必须实现的,而PCIE的一些扩展功能,不是每个设备都必须实现的,可以根据自己的需要来实现其中一部分特性。这部分寄存器的组织结构叫做Capabilities寄存器,用链表的方式组织起来,称为Capabilities List。

Configuration Space访问方法

  • IO 访问
  1. Write CONFIG_ADDRESS to 0xCF8
  2. Read/Write CONFIG_DATA from 0xCFC
    CONFIG_ADDRESS = 80000000h + (bus <<16) + (device <<11) + (function << 8) + (offset)
  • Memory 访问
    每一个PCIE device 的配置空间的寄存器会被映射到系统的物理内存空间,内存地址(PCIE_ADDRESS)算法如下:
    (PCIE spec 3.0 7.2.2 Table7-1)
    PCIE_ADDRESS =BaseAddr + (Bus << 20) + (Device << 15) + (Func << 11) + offset

    BaseAddr: Host Bridge Controller (Device 0, Function 0) PCI Configuration Space Offset 60h (32bit)
    • 以读取device(B0:D2:F0) DID/VID为例:
    CONFIG_ADDRESS = 0x80000000 + (0<<16) + (2<<11) + (0<< 8) + 0
    = 0x80001000;
    PCIE_ADDRESS = 0xE0000000+ (0<<20) + (2<<15) + (0<<11) + 0
    = 0xE0010000;

Expansion ROM 介绍

Expansion ROM又叫Option ROM。它是用于设备初始化和系 统boot的code。有的PCI Option ROM被存放在板卡上,而有的则
保存在BIOS 的binary里面。BIOS 在POST阶段,会扫描设备是否有 Expansion ROM,有的话将其拷贝到RAM中执行。

NB上常见的Expansion ROM有VBIOS, LAN PXE ROM, Raid ROM等。

PCI Expansion ROM Header Format

BIOS知识枝桠 -- PCIE相关推荐

  1. BIOS知识枝桠——GPU

    GPU理论阐述 概念 功能 供应商 NVIDIA GPU 名称解读 显存 GPU/显卡信息查看.鉴别工具 显示接口 GPU通用计算编程 科普类文章,无实际技术相关,内容来源网络 概念 图形处理器(英语 ...

  2. BIOS知识枝桠——FV

    FV 基本概念 架构组成 File Type&Section Type FV的访问 FV拓展 EFI IMAGE (PE/COFF) FV拓展 EFI OPTIONROM 基本概念 FD:固件 ...

  3. BIOS知识枝桠——Event

    Event 传统的中断模式 硬件中断 软件中断 Event Overview Event Function Event Use TPL Timer UEFI不再为开发者提供中断支持,但在UEFI内部还 ...

  4. BIOS知识枝桠——文件系统

    硬盘与文件系统 硬盘物理结构 MBR分区 GPU分区 FAT ROM Layout 硬盘物理结构 以一个机械硬盘为例,内部包括磁片.主轴.速写磁头.传动手臂.传动轴.反力矩弹簧装置,SSD没有这样的结 ...

  5. BIOS知识枝桠——SCI SMI IRQ

    SCI SMI 中断 中断分析 SCI SMI SMM SCI和SMI的异同 特殊的GPE: Q event SMI的几种常见的注册 SWSMI的触发 常见SMI的应用 中断 中断: 指当出现需要时, ...

  6. BIOS知识枝桠——ASL语言

    ASL REFERENCE 基本准则 数据运算 算术运算 逻辑运算 函数,流程语句 OperationRegion 的使用,IO,Memory,PCI,EC读写 在项目中SIO芯片部分控制着各种设备串 ...

  7. BIOS知识枝桠——Device Path

    EFI Device Path 定义&原型 文本表示形式 EFI Device Path种类 Hardware Device Path ACPI Device Path Messaging D ...

  8. BIOS知识枝桠——ACPI

    ACPI在BIOS中的应用 ACPI Overview Power State ACPI Table XSDT FADT ASL Code 变量和运算 函数 ACPI Overview 完全解读:Ad ...

  9. BIOS知识枝桠—— Library

    Library overview Lib Overview Lib的文件结构 库的实体: 库的头文件: 库的Dec文件: 库函数的调用: MdePkg 常用Lib PUBLIC DEFINITIONS ...

最新文章

  1. ABAP性能实例七例
  2. 二值网络--Binarized Neural Networks
  3. Weblogic配置故障转移
  4. [JSOI2008]火星人
  5. C#String与string大小写的区别
  6. 安全设置IIS的15个方法
  7. 百度模糊搜索怎么实现_百度搜索广告是什么?百度搜索竞价广告投放推广效果怎么样?...
  8. C语言代码规范(三)if语句
  9. 【转】QT中使用MYSQL中文乱码解决方法
  10. C# 导入excel数据,解决关闭excel后不能释放资源的问题
  11. opensuse ati 显卡驱动安装
  12. qt 工具栏分隔符_带有分隔线和上下文工具栏的RecyclerView Android
  13. IPD流程在华为15年发展历程…
  14. 【odroid-xu3】 ODROID-XU3软件环境搭建记录
  15. 范式(Paradigm)是什么?
  16. android手机diy,手把手教你如何DIY个性定制属于你的安卓手机浏览器
  17. 计算机硬件系统外设是指,计算机硬件系统.
  18. vue-easy-print批量分页打印
  19. C语言char类型的存储
  20. 1064:奥运奖牌计数(C C++)

热门文章

  1. A律13折现编解码实现,SystemVerilog实现,实测可用带完整的testbench
  2. 信息传递趋势:未来将迈入信息视频化时代
  3. EVA新世纪福音战士剧场版:终 阿里云盘、百度网盘资源
  4. python打造记账本,记账本-简单的python脚本
  5. postman文档参数化
  6. S3C2440实现dm9000网卡驱动程序移植
  7. 初高中学生基于计算机模拟的材料分子性质研究科研课题介绍
  8. 惠普服务器cpu芯片,惠普、戴尔推出ARM服务器_Intel服务器CPU_服务器产业-中关村在线...
  9. 欧洲中世纪末期的战争
  10. H265编码 SPS分析