目录
前言
pci简介
后记
前言
最近楼主比较苦逼啊,主管布置了一道访问pci的作业,这个作业使用io方式还可以非常浪地将所有的东西都给读取出来,虽然不能读取出pci-e设备的所有信息,但是还是可以将256位的其他东西给读出来的。
本文将先从io访问模式进行对pci访问的设置,在这里我所使用的包含了dos和Linux,这样可以看到这2个的系统代码的不同。
pci简介
PCI总线是一种高性能32位或者64位的多路复用地址或者数据行的总线。相当于现实生活中的公路,是所谓的信号通道。可以在这上面传输数据、控制信号等等。
作用:高度集成外围控制其、外围插件和处理器/内存系统之间的互连机制。
如果要访问PCI 设备,首先要确定PCI设备在系统中的物理连接情况。描述这个连接情况的数据是“总线号”、“设备号”和“功能号”。一个系统可以有256个PCI总线,每个总线上可以有32个设备,每个设备可以具有8个功能(每个功能作为一个PCI设备)。当这三个数据确定的时候,就可以在系统中唯一确定一个PCI 设备。
8~10:功能位. 有时候,一个pci设备对应多个功能.将每个功能单元分离出来,对应一个独立的pci device
11~15位:设备号 对应该pci总线上的设备序号
16~23位:总线号 根总线的总线号为0.每遍历到下层总线,总线号+1
PCI拓扑结构图
在上图的总线结构中,ethernet设备和pci-pci bridge的同类型资源空间必须要是pci bus0的一个子集
例如,pci bus 0的I/O端口资源是0x00CC~0x01CC. Ethernet设备的I/O范围的是0x00CC~0x0xE0.那么pci-