dts的pci模块中bus-range和ranges

bus-range = <2 3>;       该设备(一般为RC)下的pci总线号范围
 ranges = <0x2000000 0x0 0xc0000000 0 0xc0000000 0x0 0x20000000  
                 0x1000000 0x0 0x00000000 0 0xffc20000 0x0 0x10000>;

ranges表示资源配置信息,7个元素为一组,第一个元素表示属性,第二个和第三个为pci域地址,第四个和第五个为CPU域地址空间,第六个和第七个为size,表示设备将访问CPU域的地址时,将转化到pci域的地址

kernel 4.12.12代码中

of_pci_get_host_bridge_resources函数用来解析该配置信息

  ----of_pci_parse_bus_range

    |----of_get_property(node, "bus-range", &len);

  ----of_pci_range_parser_init

    |----of_get_property(node, "ranges", &rlen);

    |----for_each_of_pci_range

      |----of_pci_range_parser_one

 

range->pci_space = be32_to_cpup(parser->range);
range->flags = of_bus_pci_get_flags(parser->range);
range->pci_addr = of_read_number(parser->range + 1, ns);
range->cpu_addr = of_translate_address(parser->node,
parser->range + na);
range->size = of_read_number(parser->range + parser->pna + na, ns);

 

转载于:https://www.cnblogs.com/erhu-67786482/p/9307698.html

### RK3588 设备树源文件 (DTS) 配置 对于RK3588芯片,在设备树源文件(DTS)中的配置主要集中在PCIe接口其他硬件资源的初始化。具体到使用PCIE接口连接国产千兆网卡YT6801的情况,需要特别注意PCIe的相关配置。 #### PCIe 接口配置 为了使能并正确配置PCIe接口上的YT6801芯片,需修改对应的设备树节点来打开PCIe链路,并设定必要的复位引脚。其他部分则可沿用默认的PCIe配置[^1]: ```dts &pcie { status = "okay"; pcie@0 { compatible = "rockchip,rk3588-pcie"; reg = <0x0 0xffa90000 0x0 0x1000>; interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; rockchip,grf = <&grf>; resets = <&rst CONN_PCIE_RST>; reset-names = "perst"; /* Enable the PCIe link */ phy-handle = <&pcie_phy>; phys = <&pcie_phy>; #address-cells = <3>; #size-cells = <2>; device_type = "pci"; bus-range = <0x0 0xff>; ranges = <0x82000000 0x0 0x60000000 0x60000000 0x0 0x20000000 0x81000000 0x0 0x40000000 0x40000000 0x0 0x20000000>; }; }; ``` 这段代码片段展示了如何通过设置`status="okay"`属性激活PCIe控制器,并指定了中断线、重置信号以及物理层(PHY)处理程序等重要参数。此外还定义了地址映射范围以支持后续挂载在其下的外设访问。 #### 编译环境准备 针对基于RK3588平台构建Linux内核及其根文件系统的场景,建议采用预定义好的编译配置选项。这通常涉及到指定目标板型号(`TARGET_BOARD`)、输出目录路径(`OUTPUT_DIR`)及默认配置文件名(`CONFIG`)等内容[^2]: ```bash export TARGET_BOARD=rk3588 export OUTPUT_DIR=output/rockchip_rk3588 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- $CONFIG ``` 上述命令序列用于设置交叉编译工具链环境变量,并调用Makefile执行特定架构下(RK3588)的内核编译过程。 #### 解决常见错误 当遇到Buildroot编译过程中出现诸如“Running mk-rootfs.sh - build_buildroot failed!”这样的报错信息时,可能是因为某些依赖项缺失或是版本不兼容所引起的。此时应当仔细检查日志记录寻找确切原因,并尝试更新相关软件包至最新稳定版或调整项目配置直至问题得到妥善解决[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值