没有合适的资源?快使用搜索试试~ 我知道了~
首页linux pcie详解.pdf
PCI 是外围设备互连(Peripheral Component Interconnect)的简称,作为一种通用的 总线接口标准,它在目前的计算机系统中得到了非常广泛的应用。PCI 提供了一组完整的 总线接口规范,其目的是描述如何将计算机系统中的外围设备以一种结构化和可控化的方 式连接在一起,同时它还刻画了外围设备在连接时的电气特性和行为规约,并且详细定义 了计算机系统中的各个不同部件之间应该如何正确地进行交互。
资源详情
资源评论
资源推荐

目录
1. PCI 总线系统体系结构
2. PCIe 设备驱动实践
3. PCI 驱动程序实现
4. 附录
PCI 总线系统体系结构
内容来自网上:https://blog.csdn.net/wukery/article/details/52869219
PCI 是外围设备互连(Peripheral Component Interconnect)的简称,作
为一种通用的 总线接口标准,它在目前的计算机系统中得到了非常广泛的应用。
PCI 提供了一组完整的 总线接口规范,其目的是描述如何将计算机系统中的外
围设备以一种结构化和可控化的方 式连接在一起,同时它还刻画了外围设备在
连接时的电气特性和行为规约,并且详细定义 了计算机系统中的各个不同部件
之间应该如何正确地进行交互。
无论是在基于 Intel 芯片的 PC 机中,或是在基于 Alpha 芯片的工作站
上,PCI 毫无疑 问都是目前使用最广泛的一种总线接口标准。同旧式的 ISA 总
线不同,PCI 将计算机系 统中的总线子系统与存储子系统完全地分开,CPU 通
过一块称为 PCI 桥(PCI-Bridge) 的设备来完成同总线子系统的交互,如图

由于使用了更高的时钟频率,因此 PCI 总线能够获得比 ISA 总线更好的
整体性能。PCI 总线的时钟频率一般在 25MHz 到 33MHz 范围内,有些甚至
能够达到 66MHz 或者 133MHz,而在 64 位系统中则最高能达到 266MHz。
尽管目前 PCI 设备大多采用 32 位数 据总线,但 PCI 规范中已经给出了 64
位的扩展实现,从而使 PCI 总线能够更好地实现 平台无关性,现在 PCI 总线
已经能够用于 IA-32、Alpha、PowerPC、SPARC64 和 IA-64 等体系结构中。

PCI 总线具有三个非常显著的优点,使得它能够完成最终取代 ISA 总线这
一历史使命:
1. 在计算机和外设间传输数据时具有更好的性能
2. 能够尽量独立于具体的平台
3. 可以很方便地实现即插即用。
下图是一个典型的基于 PCI 总线的计算机系统逻辑示意图,系统的各个部
分通过 PCI 总 线和 PCI-PCI 桥连接在一起。从图中不难看出,CPU 和 RAM
需要通过 PCI 桥连接到 PCI 总线 0(即主 PCI 总线),而具有 PCI 接口的显
卡则可以直接连接到主 PCI 总线 上。PCI-PCI 桥是一个特殊的 PCI 设备,它
负责将 PCI 总线 0 和 PCI 总线 1(即从 PCI 主线)连接在一起,通常 PCI
总线 1 称为 PCI-PCI 桥的下游(downstream),而 PCI 总线 0 则称为 PCI-
PCI 桥的上游(upstream)。图中连接到从 PCI 总线上的是 SCSI 卡和以太网
卡。为了兼容旧的 ISA 总线标准,PCI 总线还可以通过 PCI-ISA 桥来 连接
ISA 总线,从而能够支持以前的 ISA 设备。图中 ISA 总线上连接着一个多功能
I/O 控制器,用于控制键盘、鼠标和软驱.

在此只对 PCI 总线系统体系结构作了概括性介绍,如果读者想进一步了解,
David A Rusling 在The Linux Kernel (http://tldp.org/LDP/tlk/dd/pci.html)
中对 Linux 的 PCI 子系统有比较详细的介绍。
PCIe 设备驱动实践
目标主机: Intel Ubuntu 14.04 64-Bit
Linux 版本: 3.19.0-25-generic
PCIe 设备驱动模型 github:
https://github.com/BiscuitOS/HardStack/tree/master/bus/PCIe/drv
获取源码方法,按如下命令
cd /tmp/
mkdir PCIe
cd PCIe
git init
git remote add -f origin https://github.com/BiscuitOS/HardStack.git

git config core.sparsecheckout true
echo "PCIe" >> .git/info/sparse-checkout
git pull origin master
cd bus/PCIe/drv/
编译并运行驱动。按如下命令
make clean
make
insmod pcie.ko
dmesg
运行如下图
pcie_demo.c
/*
* Copyright (C) 2018 <buddy.zhang@aliyun.com>
*
* PCIe driver demo
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
剩余20页未读,继续阅读














安全验证
文档复制为VIP权益,开通VIP直接复制

评论0