windows驱动开发-PCI讨论(二)

认识PCI设备,还是要从配置空间说起,当PCI在ACPI和PCI复合体上电和枚举完成后,PCI根复合体会从PCI设备读出PCI设备的配置空间,许多信息(例如寄存器、内存空间、中断信息等等)都是是从配置空间获取的,所以接下来会详细讲解PCI配置空间。

PCI配置空间的大小是256个字节(0x00~0xFF),而PCIe的配置空间扩大到了0x00~0xFFF;一般来说配置空间会像下面这样分区:

接下来尽可能详细的解释这部分配置:

type 0 Header

配置空间的截图如下:

这部分需要注意的是寄存器,status寄存器、command寄存器、BIST寄存器、Base Address Register0~5、ROM寄存器、INT寄存器、PMCSR寄存器,其它只读位的寄存器暂时不讨论。

status寄存器:

状态寄存器用于记录PCI总线相关事件的状态信息:

command寄存器:

命令寄存器提供对设备生成和响应PCI周期的能力的粗略控制。当0被写入该寄存器时,除了配置访问之外的所有访问,设备都从PCI总线上逻辑断开。所有设备都需要支持此基本功能级别。根据设备的功能,可以实现也可以不实现命令寄存器中的各个位:

BIST寄存器:

此可选寄存器用于BIST的控制和状态。不支持BIST的设备必须始终返回值0(即,将其视为保留寄存器)。调用BIST的设备不得妨碍PCI总线的正常操作。 

Base Address Register0~5:

BAR寄存器比较特殊,它可能有多种形态:

和其他寄存器不一样,这个寄存器反而不建议去修改,虽然这个寄存器是可以读写的,但是往往只有系统知道如何正确的初始化,并且对于驱动来说,直到怎么使用这个寄存器比如何初始化它更重要。

一个经典的PCIe案例中,寄存器被分为三类,64位地址空间需要6个寄存器才能完全映射,如果仔细观察,就会发现寄存器和资源几乎一致:

第一个称之为基础寄存器空间,它往往用于初始化对应的PCI设备中的子系统以及烧录系统等特殊行为,在任何时候它都是可用的,一般它会被映射到I/O空间内;

第二个称之为设备寄存器空间,往往用于具体的PCIe的设备的功能设置,这部分可能大于4KB但是小于1MB;一般大小为4KB的倍数(这并不意外,低于4KB也会被设置为4KB的寄存器空间,因为内存页面的设置是以页面为单位的,寄存器设置也是如此),不过这部分需要总线驱动映射之后才可以用,在PCI设备中,一般会有一个嵌入式系统,这个系统初始化之前,是没办法映射设备寄存器和功能寄存器空间。

第三个也是功能寄存器空间,这里面可以映射的数量级更多一些;也是需要设备初始化之后才可以使用的。

ROM寄存器:

该寄存器被定义为处理该扩展ROM的基地址和大小信息。PCI设备可以带一个扩展ROM,通过执行ROM中存放的代码来完成与设备有关的初始化,同时也有可能完成系统的引导功能。

  

INT LINE寄存器


中断线路寄存器用于传输中断线路路由信息。寄存器必须由任何使用中断引脚的设备或设备功能来实现。POST软件将在初始化和配置系统时将路由信息写入该寄存器。
该寄存器中的值告诉设备的中断引脚连接到系统中断控制器的哪个输入。设备本身不使用该值,而是由设备驱动程序和操作系统使用。设备驱动程序和操作系统可以使用这些信息来确定优先级和矢量信息。此寄存器中的值是特定于系统体系结构的。

PMCSR寄存器

此16位寄存器用于管理PCI功能的电源管理状态以及启用/监视PME:

Windows PCIE DMA是一种在Windows操作系统下使用的外设总线接口(PCI Express)的直接内存访问(Direct Memory Access)技术。DMA技术用于实现外部设备(如网卡、磁盘控制器等)与系统内存之间的数据传输,通过PCIE总线实现高速的数据传输。 Windows PCIE DMA技术的主要特点包括以下几个方面: 首先,PCIE DMA技术可以显著提高数据传输的效率。相对于传统的使用CPU进行数据传输的方式,PCIE DMA技术能够直接将数据从外设读取到系统内存中,或者从系统内存中将数据直接发送到外设,减少了对CPU的占用,提高了数据传输速度和系统的响应速度。 其次,PCIE DMA技术具有较低的延迟。通过使用PCIE总线进行数据传输,可以避免CPU与外设之间的频繁交互,减少了数据传输的延迟,提高了系统的实时性和响应性能。 此外,PCIE DMA技术还支持数据的批量传输。使用PCIE DMA技术可以实现大容量数据的快速传输,满足了对高速数据传输的需求,提升了系统的处理能力。 最后,Windows PCIE DMA技术提供了简化的编程接口和驱动支持,便于开发者使用和集成到Windows平台的应用程序中。开发者可以利用PCIE DMA技术实现高性能的数据传输,提升系统的数据处理能力。 综上所述,Windows PCIE DMA技术是一种高效、低延迟、高容量的数据传输技术,能够提升系统的数据传输速度和实时性能,广泛应用于各类需要高速数据传输的领域,如网络通信、存储系统等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值