
Linux
文章平均质量分 94
桑迪亚哥
加油!奥利给
展开
-
PCI总线驱动代码梳理(三)--PCI设备的枚举
PCI总线驱动代码梳理(三)–PCI设备的枚举注:本文档分析的PCI总线驱动框架基于4.4版本内核在旧版本的内核(以2.6.16版本为例)中系统会调用pci_legacy_init(内核加载等级为4)中调用pcibios_scan_root来完成对于PCI设备的枚举过程,但是对于现在的x86架构的SOC来说由于ACPI机制的普遍支持,所以对于PCI设备枚举的整个过程就移交至ACPI中来完成。在此我们只基于新机制下的PCI设备枚举的过程进行分析。1.枚举过程梳理由于在ACPI机制在x86平台的广泛应原创 2021-01-16 20:20:25 · 3171 阅读 · 0 评论 -
PCI总线驱动代码梳理(二)--配置空间访问的设置
PCI总线驱动代码梳理(二)–配置空间访问的设置1.什么是配置空间PCI设备有三个相互独立的物理空间地址:存储器地址空间、I/O地址空间、配置空间地址空间,而配置空间是一个PCI特有的物理空间。系统上电时BIOS检测PCI总线,确定所有连接在PCI连接在PCI总线上的设备以及它们的配置要求,并进行系统配置。所以PCI设备必须实现配置空间,从而实现参数的自动配置。2.对配置空间的访问x86架构中pci配置空间的访问有4种方式:pci_bios、pci_conf1、pci_conf2、pci_mmcfg原创 2021-01-16 19:49:37 · 2403 阅读 · 1 评论 -
PCI总线驱动代码梳理(一)--整体框架
PCI总线驱动代码梳理(一)–整体框架1.概述PCI总线的驱动代码结构稍稍同于SPI、IIC、platform这种常规总线,首先一个不同点就在于PCI总线的代码框架具有多个入口函数,像SPI这种总线往往只会使用一个或两个initcall,但是PCI总线的驱动框架却使用了许多不同等级的initcall函数入口,下面我们就按照顺序依次来进行梳理。注:本文档分析的代码是以x86为硬件平台并使用了ACPI机制,所以与powerPC等其他平所实现的PCI总线驱动略有不同本文档分析的内核版本为 Linux-4.4原创 2021-01-16 19:30:04 · 2312 阅读 · 0 评论