PCIe
StevenYang2008
嵌入式软件开发、芯片安全、linux驱动开发
展开
-
PCI设备驱动解析
首先我想引用一下官方的源代码中的文档,对设备驱动的工作做一个概括性的叙述:1 首先是调用 pci_register_driver()函数,对设备进行注册。2.Once the driver knows about a PCI device and takes ownership, thedriver generally needs to perform the following initialization: Enable the device Request MMIO/IOP resourc原创 2020-07-24 16:24:34 · 3709 阅读 · 0 评论 -
浅谈Linux PCI设备驱动(二)
我们在浅谈Linux PCI设备驱动(一)中(以下简称 浅谈(一) )介绍了PCI的配置寄存器组,而Linux PCI初始化就是使用了这些寄存器来进行的。后面我们会举个例子来说明Linux PCI设备驱动的主要工作内容(不是全部内容),这里只做文字性的介绍而不会涉及具体代码的分析,因为要分析代码的话,基本就是对 Linux内核源代码情景分析(下册)第八章的解读,读者若想分析代码,可以参考该书的内容,我们这里就不去深入分析这些代码了。Linux PCI设备驱动代码必须扫描系统中所有的PCI总线,寻找系统中所转载 2020-07-22 16:05:44 · 255 阅读 · 0 评论 -
浅谈Linux PCI设备驱动(一)
要弄清楚Linux PCI设备驱动,首先要明白,所谓的Linux PCI设备驱动实际包括Linux PCI设备驱动和设备本身驱动两部分。不知道读者理不理解这句话,本人觉得这句话很重要,对于PCI、USB这样的驱动来说,必须要理解这个概念,才能明白该如何看待Linux下的PCI和USB以及类似的总线型的驱动。理由也很简单,就是Linux PCI驱动是内核自带的,或者说内核帮你写好了!而我们需要完成的就是设备本身的驱动,比如网卡驱动等。当然,并不是说内核帮咱们写好了Linux PCI驱动我们什么就不用做了,至转载 2020-07-22 15:35:26 · 732 阅读 · 0 评论 -
PCIe 2. 深入PCI与PCIe之二:软件篇
本篇主要介绍PCI和PCIe的软件界面和UEFI对PCI的支持。PCI/PCIe软件界面1.配置空间PCI spec规定了PCI设备必须提供的单独地址空间:配置空间(configuration space),前64个字节(其地址范围为0x00-0x3F)是所有PCI设备必须支持的(有不少简单的设备也仅支持这些),此外PCI/PCI-X还扩展了0x40~0xFF这段配置空间,在这段空间主要存放一些与MSI或者MSI-X中断机制和电源管理相关的Capability结构。前文提到过,PCI配置空间和内存空转载 2020-07-06 17:44:48 · 1581 阅读 · 0 评论 -
PCIe 1. PCI与PCIe学习一——硬件篇
最近在学习驱动开发过程中涉及到PCI相关知识,在网上看了很多文章,良莠不齐,我总结一下比较好的文章分享给大家,那就从源头开始说起。PCI总线和设备树是X86硬件体系内很重要的组成部分,几乎所有的外围硬件都以这样或那样的形式连接到PCI设备树上。虽然Intel为了方便各种IP的接入而提出IOSF总线,但是其主体接口(primary interface)还依然是PCIe形式。我们下面分成两部分介绍PCI和他的继承者PCIe(PCI express):第一部分是历史沿革和硬件架构;第二部分是软件界面和U转载 2020-07-06 17:03:10 · 3176 阅读 · 0 评论