PCI主桥设备树配置详解

需积分: 49 86 下载量 30 浏览量 更新于2024-08-07 收藏 995KB PDF 举报
"高级模型机-iso31000-2018 风险管理标准中文版" 本文将深入探讨与Linux设备树相关的知识,这是嵌入式系统特别是基于ARM架构的硬件描述关键部分。设备树是硬件配置的一种形式,它允许操作系统在启动时了解系统的物理布局。在Linux内核中,设备树被用来描述SoC(系统级芯片)上的各个组件以及它们如何相互连接。在给定的描述中,我们看到高级模型机添加了PCI主机桥,这需要在设备树中进行适当的配置。 首先,PCI(外围组件互连)是一个广泛使用的总线标准,用于连接计算机系统中的外部设备,如网卡、显卡和存储控制器。PCI主机桥是一个硬件组件,它在CPU和PCI总线之间建立通信路径。在高级模型机中,这个主机桥的控制寄存器被映射到内存地址0x10180000,并且基址寄存器(BARs)被编程为从0x80000000开始。 设备树节点`pci@10180000`就是在描述这个PCI主机桥。在设备树中,每个节点都代表一个硬件组件,而属性则描述了该组件的特性。例如,对于PCI主机桥,可能需要包括BARs的配置、中断线路、设备ID等信息。节点名称`pci@10180000`中的`10180000`对应于控制寄存器的内存地址。 设备树的基本结构由节点和属性组成。`#address-cells`和`#size-cells`是设备树中的关键属性,它们定义了描述地址和大小值所需的单元数量。在一个32位系统中,通常`#address-cells`为1,而在64位系统中,由于地址空间扩大,可能需要2个单元。同样,`#size-cells`通常表示设备地址范围所需的单元数。例如,在提供的示例中,`#address-cells=<0x2>`和`#size-cells=<0x2>`表明地址和大小值需要两个32位单元来表示,总计64位,这适用于64位地址空间。 此外,`memory`节点用于描述系统的内存资源。在示例中,`reg`属性指定了内存的起始地址`0x9000000000000000`和大小`0x80000000000000`,表明内存从0x9000000000000000开始,大小为0x80000000000000字节。 AMBA(Advanced Microcontroller Bus Architecture,先进微控制器总线架构)是由ARM公司提出的片上系统互连标准,包括多种总线协议,如AHB(Advanced High-performance Bus)和AXI(Advanced eXtensible Interface),用于SoC内部组件之间的通信。 关于设备树的深入理解和实践,可以参考宋宝华等相关专家的讲解和文档,他们提供了丰富的资源和教程,帮助开发者更好地理解和使用设备树。 总结来说,Linux设备树是系统硬件配置的关键,它通过描述各个组件及其属性来协助内核初始化。在高级模型机的场景中,理解并正确配置PCI主机桥的设备树节点对于确保硬件的正确运行至关重要。通过掌握`#address-cells`、`#size-cells`以及如何描述内存和总线接口,开发者可以有效地构建和优化设备树,从而实现高效且可靠的系统初始化。