powerPC的PCI总线的dts配置

【硬件相关】PCIe组件配置说明 PCIe介绍及常见应用说明 阅读详情

powerpc使用称为FDT 扁平设备描述树的机制传递给内核硬件配置参数,从而引导内核。 这样的优势是PowerPC在Linux上的移植基本上都是对dts文件的修改,而升级内核的工作量远远小于其他cpu体系结构。

 

只是目前介绍FDT或者OPEN Firmware的中文资料欠缺,这里记录我领悟的关于PCI总线树部分的ranges参数。

 

pci0: pci@e0008500 {

interrupt-map-mask = <0xf800 0 0 7>;

interrupt-map = <

/* IRQ5 = 21 = 0×15, IRQ6 = 0×16, IRQ7 = 23 = 0×17 */

 

/* IDSEL AD14 IRQ6 inta */

0×7000 0×0 0×0 0×1 &ipic 0×12 0×8

/* IDSEL AD15 IRQ5 inta, IRQ6 intb, IRQ7 intd */

0×7800 0×0 0×0 0×1 &ipic 0×13 0×8

>;

 

interrupt-parent = <&ipic>;

interrupts = <66 0×8>;

bus-range = <0×0 0×0>;

 

ranges = <0×02000000 0×0 0×90000000 0×90000000 0×0 0×10000000

0×42000000 0×0 0×80000000 0×80000000 0×0 0×10000000

0×01000000 0×0 0×00000000 0xe0300000 0×0 0×00100000>;

sleep = <&pmc 0×00010000>;

clock-frequency = <66666666>;

#interrupt-cells = <1>;

#size-cells = <2>;

#address-cells = <3>;

reg = <0xe0008500 0x100        /* internal registers */

0xe0008300 0×8>;        /* config space access registers */

compatible = “fsl,mpc8349-pci”;

device_type = “pci”;

};

 

这是一个mpc8379的dts配置文件,一些属性还是很好理解,

pci@e0008500说明这个pci控制器的寄存器映射基地址为e0008500

reg = <0xe0008500 0x100        /* internal registers */

0xe0008300 0×8>;        /* config space access registers */

再次证明,pci控制器的寄存器映射基地址为e0008500,读取配置空间使用的寄存器映射基址为0xe0008300,后面是长度,8个字节。即CFG_ADDR和CFG_DATA这两个寄存器。

 

最最费解的是ranges,用来描述cpu地址空间和pci地址空间的映射关系。

对于e300内核来说,一组配置由6个32位16进制组成。

 

ranges =

<0×02000000 0×0 0×90000000 0×90000000 0×0 0×10000000

0×42000000 0×0 0×80000000 0×80000000 0×0 0×10000000

0×01000000 0×0 0×00000000 0xe0300000 0×0 0×00100000>;

 

这里有3组,开头的第一个32位数表明映射的地址的属性。0x01000000是IO映射,0x02000000是内存映射,0x42000000也是内存映射,支持预取。

第2-3个双字表示pci总线的地址空间,用2个双字因为PCI总线可能是支持64位寻址的。

第4个双字表示放cpu_address ,即cpu存储器域地址空间,是cpu寻址的空间。e300是32位cpu,如果是e500内核,则需要2个双字了。

第5-6个双字表示映射长度

 

内核启动消息里显示

 

mpc837x_rdb_setup_arch()

Found FSL PCI host bridge at 0x00000000e0008500. Firmware bus number: 0->0

PCI host bridge /pci@e0008500 (primary) ranges:

MEM 0×0000000090000000..0x000000009fffffff -> 0×0000000090000000

MEM 0×0000000080000000..0x000000008fffffff -> 0×0000000080000000 Prefetch

IO 0x00000000e0300000..0x00000000e03fffff -> 0×0000000000000000

 

正好与之匹配。

 

分配配置空间要注意cpu存储器域地址空间,不要跟其他设备的cpu存储器域地址空间重复。

pcie驱动调试心得 Device Tree Usage - eLinux.org https://elinux.org/Device_Tree_Usage#PCI_Address_Translationpcie 设备树介绍 高手作品 【原创】Linux PCI驱动框架分析(三) - LoyenWang - 博客园 【原创】Linux PCI驱动框架分析(二) - LoyenWang - 博客园 【原创】Linux PCI驱动框架分析(一) - LoyenWang - 博客园 2.1 Device Tree . 阅读详情

相关推荐

dts 编译过程_linux设备树dts移植详解

【转】摘 要:设备树的引入减少了内核为支持新硬件而需要的改变,提高代码重用,加速了Linux支持包的开发,使得单个内核镜像能支持多个系统。作为U-Boot 和Linux 内核之间的动态接口,本文阐述了设备树的数据存储格式以及源码描述语法,进而分析了U-Boot 对扁平设备树的支持设置,Linux 内核对设备树的解析流程。关键词:扁平设备树; DTS; PowerPC; LinuxIBM、Sun 等...

weixin_39641334的博客 1408

PowerPC的PCI总线的dts配置【转】

powerpc使用称为FDT 扁平设备描述树的机制传递给内核硬件配置参数,从而引导内核。 这样的优势是PowerPC在Linux上的移植基本上都是对dts文件的修改,而升级内核的工作量远远小于其他cpu体系结构。 只是目前介绍FDT或者OPEN Firmware的中文资料欠缺,这里记录我领悟的关于PCI总线树部分的ranges参数。 pci0: pci@e0008500 {interrupt-

liuqiang_mail的专栏 1135

KVM/QEMU虚拟化实战:Virtio磁盘、PCI直通与性能调优

虚拟化技术通过软件模拟硬件环境,实现资源隔离与高效利用,其核心原理在于Hypervisor对物理资源的抽象与管理。KVM作为Linux内核模块,结合QEMU设备模拟器,构成了主流的开源虚拟化解决方案,为云计算和嵌入式开发提供了灵活的基础设施。在追求极致性能的工程实践中,半虚拟化驱动Virtio通过共享内存机制大幅降低I/O延迟,而PCI设备直通则借助IOMMU硬件支持,让虚拟机独占物理设备,获得接近原生的性能。本文聚焦于KVM/QEMU的深度调优,详细解析如何为虚拟机配置高效的Virtio虚拟磁盘,并深入探

weixin_30856725的博客 357

Rockchip RK3588 kernel dts解析之PCIe

Rockchip RK3588 kernel dts解析之PCIe

weixin_43245753的博客 2万+

RK3399平台开发系列讲解(PCI/PCI-E)PCIE相关配置说明

📢 本篇将介绍在使用 RK3399 平台 PCIE 时候的配置。

内核笔记 2561

Python 打包与发布陷阱:如何用 setuptools 和 PyInstaller 生成跨平台可执行文件?

使用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1207

PowerPC的PCI总线的dts配置

这段时间要弄下PCI Express的相关调试和驱动开发工作,老规矩,先在网上找找资料,这类的东西还蛮少的,已经买了本书,打算边学边自己总结吧,这篇文章是PowerPc下对PCI总线的配置方法。     powerpc使用称为FDT 扁平设备描述树的机制传递给内核硬件配置参数,

JuanA1的专栏 9798

基于STM32与毫米波雷达的非接触式睡眠监测系统

物联网和嵌入式系统技术正在推动医疗健康设备的智能化发展。通过传感器网络采集生理信号,结合信号处理算法实现健康监测已成为主流技术方案。毫米波雷达凭借其非接触检测特性,在呼吸、心率等生命体征监测中展现出独特优势。STM32系列MCU凭借丰富外设和低功耗特性,成为医疗级嵌入式设备的首选平台。本系统整合60GHz毫米波雷达、红外测温与无线传输模块,构建了完整的睡眠质量评估解决方案,其硬件架构设计、信号处理算法和低功耗优化策略对可穿戴医疗设备开发具有参考价值。

weixin_36369848的博客 612

在扁平设备配置树文件中添加pci设备----基于MPC8313

今天使用MPC8313的DMO板套件跑我们自己的板子,出现了PCI设备找不到的情况,最后通过上网查资料,总结如下:        Powerpc使用扁平设备配置书文件引导内核,内核在启动过程中会扫描PCI设备,此时硬件上最重要的连线IDSEL起作用了。        先总结一下PCI设备启动过程。内核启动时,pci设备自由bios会扫描自身信息,然后生成含有pci设备信息的数据结构,然后保存起

liuqiang_mail的专栏 1074

【中科院一区Top-源码复现】Day-ahead photovoltaic power forecastingwith multi-source temporal-featureconvoluti

【中科院一区Top-源码复现】Day-ahead photovoltaic power forecastingwith multi-source temporal-featureconvoluti

739

C#实现自己的远程桌面控制工具

1. 创建一个winform工程并添加RDP客户端COM组件。右击工具箱,然后点击选择项,选中下图所示组件并点击确定。为窗口加载时添加自动连接远程桌面代码。3.调试运行程序,验证远程桌面控制。拖放RDP控件到窗口中。2.编写远程桌面连接代码。

6089

MPC8540 PCI总线核心机制:仲裁与协议实战解析

PCI总线是嵌入式系统中连接处理器与高速外设的关键并行总线,其核心在于高效管理多设备间的资源共享与数据传输协同。总线仲裁机制通过优先级算法分配访问权限,解决设备间的竞争冲突,确保系统稳定;而传输协议则定义了严格的信号时序与状态机,保障数据交换的可靠与高效。理解这两大机制,对于设计硬件原理图、进行FPGA逻辑验证以及开发Linux内核驱动具有重要技术价值。本文聚焦于PowerPC架构的经典处理器MPC8540,深入剖析其PCI控制器的仲裁器行为(如故障主设备锁定、总线停放)与协议细节(如设备选择、事务终止),

weixin_34195546的博客 453

Unity音游开发全指南:模板与免费资源高效构建节奏游戏

**粒子特效** | [Universal VFX](https://assetstore.unity.com/packages/vfx/particles/universal-vfx-159182) | 免费视觉特效 || **UI素材** | [Game UI Pack](https://assetstore.unity.com/packages/2d/gui/game-ui-pack-86908) | 现代风格UI元素 |**音游开发的黄金法则**:完美的节奏游戏是音乐与游戏的和谐统一。

Loving_enjoy的博客 727

powerpc 设备树dts 详解

原文地址:http://blog.chinaunix.net/uid-26675482-id-3358038.html 摘 要:设备树的引入减少了内核为支持新硬件而需要的改变,提高代码重用,加速了Linux 支持包的开发,使得单个内核镜像能支持多个系统。作为U-Boot 和Linux 内核之间的动态 接口,本文阐述了设备树的数据存储格式以及源码描述语法,进而分析了U-Boot 对扁平设 备

风之伤 3847

GEE:哨兵时间序列遥感数据和动态阈值方法计算物候时期EOS/SOS(2)

本文将分享和解释论文《Improved Estimates of Arctic Land Surface Phenology Using Sentinel-2 Time Series》中使用到的基于阈值估算北极地区的植被物候,特别是北极地区的植被季节开始和结束的日期(SoS和EoS)的方法和代码。该方法使用的是使用哨兵2数据,并实现了两种阈值方法( 无平滑的阈值方法、平滑后的阈值方法)。

养乐多的博客 2971

Spring AI Alibaba 1.x 源码分析-架构设计

本文通过分析Spring AI Alibaba 框架的源码,分析出其原理和架构设计,无论是用于项目开发、技术评估还是团队培训都具有重要价值。

program哲学 489

linux 移植 内存 配置,linux设备树dts一之移植详解

http://blog.youkuaiyun.com/cosmoslhf/article/details/9252509摘 要:设备树的引入减少了内核为支持新硬件而需要的改变,提高代码重用,加速了Linux支持包的开发,使得单个内核镜像能支持多个系统。作为U-Boot 和Linux 内核之间的动态接口,本文阐述了设备树的数据存储格式以及源码描述语法,进而分析了U-Boot 对扁平设备树的支持设置,Linux ...

weixin_31910545的博客 839

AES加密算法及AES-CMAC原理白话版系统解析

对AES不同加密算法,加密模式,加密原理,填充算法及AES-CMAC算法的详细系统介绍,帮助大家对AES进行系统掌握。

initiallizer的博客 4068

linux的dst设备树,Linux设备树dts移植详解

摘 要:设备树的引入减少了内核为支持新硬件而需要的改变,提高代码重用,加速了Linux支持包的开发,使得单个内核镜像能支持多个系统。作为U-Boot 和Linux 内核之间的动态接口,本文阐述了设备树的数据存储格式以及源码描述语法,进而分析了U-Boot 对扁平设备树的支持设置,Linux 内核对设备树的解析流程。关键词:扁平设备树; DTS; PowerPC; LinuxIBM、Sun 等厂家的...

weixin_32115669的博客 693

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

linux设备树dts移植详解

摘 要:设备树的引入减少了内核为支持新硬件而需要的改变,提高代码重用,加速了Linux 支持包的开发,使得单个内核镜像能支持多个系统。作为U-Boot 和Linux 内核之间的动态 接口,本文阐述了设备树的数据存储格式以及源码描述语法,进而分析了U-Boot 对扁平设 备树的支持设置,Linux 内核对设备树的解析流程。 关键词:扁平设备树; DTS; PowerPC; Linux IB

cross的嵌入式技术开发专栏 937

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

基于Yocto的PowerPC平台KVM/QEMU虚拟化实战指南

虚拟化技术通过软件抽象层,在单一物理硬件上创建多个隔离的虚拟执行环境,其核心原理是利用CPU硬件辅助虚拟化扩展(如Intel VT-x、AMD-V、PowerPC的KVM)与内存管理单元(MMU)实现资源隔离与高效复用。这项技术为嵌入式系统带来了显著的工程价值,它能够提升硬件资源利用率、增强系统安全性与灵活性,并支持多工作负载的物理隔离。在嵌入式Linux开发中,Yocto项目作为主流的构建系统,为定制化内核、根文件系统及应用程序提供了统一框架。本文将聚焦于如何在PowerPC QorIQ架构(如e500v

347

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

嵌入式PowerPC上的扁平设备树FDT

嵌入式PowerPC上的扁平设备树FDT 摘 要:设备树的引入减少了内核为支持新硬件而需要的改变,提高代码重用,加速了Linux支持包的开发,使得单个内核镜像能支持多个系统。作为U-Boot和Linux内核之间的动态接口,本文阐述了设备树的数据存储格式以及源码描述语法,进而分析了U-Boot对扁平设备树的支持设置,Linux内核对设备树的解析流程。 关键词:扁平设备树  DTS  

hktkfly6的专栏 585

PowerPC开发板MPC8379E-RDB硬件配置与启动流程实战指南

在嵌入式系统开发中,硬件配置与系统启动是项目成功的第一步,它决定了处理器能否正确初始化并加载操作系统。其核心原理在于理解处理器的复位配置字、内存映射以及启动设备选择机制。掌握这些底层硬件配置技术,对于构建高性能、高可靠性的网络通信、存储控制等嵌入式产品具有重要价值。本文以经典的PowerPC架构开发板MPC8379E-RDB为例,深入解析其硬件架构,特别是复位配置字和启动跳线等关键配置,并详细演示了从零上电、U-Boot交互到网络启动Linux内核的全流程。通过结合NOR Flash、NAND Flash等

weixin_33785108的博客 303

全面解析PowerPC架构下的扁平设备树FDT(ZT)

Sailor_forever sailing_9806#163.com (本原创文章发表于Sailor_forever 的个人blog,未经本人许可,不得用于商业用途。任何个人、媒体、其他网站不得私自抄袭;网络媒体转载请注明出处,增加原文链接,否则属于侵权行为。如有任何问题,请留言或者发邮件给sailing_9806@163.com) http://blog.youkuaiyun.com/sailo...

fanrey123的博客 1124
上一篇: 4.3.2 交叉编译工具安装
下一篇: Linux下PCI设备驱动程序开发——总述
Bean Huo
博客等级 码龄19年 40粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值