BIOS知识枝桠 -- PCIE

博客内容来源为网络下载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
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值