You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DTC编译#address-cells=<2>场景下simple-bus_reg地址格式告警如何解决

问题背景

以下是Linux内核中arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi的部分代码,该文件会被arch/arm64/boot/dts/arm/fvp-base-revc.dts引用:

/ {
    smb@8000000 {
        motherboard {
            arm,v2m-memory-map = "rs1";
            compatible = "arm,vexpress,v2m-p1", "simple-bus";
            #address-cells = <2>; /* SMB chipselect number and offset */
            #size-cells = <1>;
            #interrupt-cells = <1>;
            ranges;

            flash@0,00000000 {
                compatible = "arm,vexpress-flash", "cfi-flash";
                reg = <0 0x00000000 0x04000000>,
                      <4 0x00000000 0x04000000>;
                bank-width = <4>;
            };

            ethernet@2,02000000 {
                compatible = "smsc,lan91c111";
                reg = <2 0x02000000 0x10000>;
                interrupts = <15>;
            };

完成预处理后,编译fvp-base-revc.dts文件时收到如下报错,所用DTC版本为1.5.0:

arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi:20.21-25.6: Warning (simple_bus_reg): /smb@8000000/motherboard/flash@0,00000000: simple-bus unit address format error, expected "0"
arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi:27.24-31.6: Warning (simple_bus_reg): /smb@8000000/motherboard/ethernet@2,02000000: simple-bus unit address format error, expected "202000000"

DTC针对flash@0,00000000、ethernet@2,02000000的地址格式提出告警,但该父节点已配置#address-cells = <2>,节点地址本应按照片选号+片选内偏移的格式编写,请问如何消除该错误?


解决方案

这个告警属于DTC校验规则的误报,你当前的设备树写法完全符合VExpress平台的规范:父节点#address-cells = <2>的设计就是用第一个cell表示片选号、第二个cell表示片选内偏移,单元地址用逗号分隔两个值的写法是正确的。
告警触发的原因是DTC的simple_bus_reg校验规则默认假设所有兼容simple-bus的总线都使用单地址cell,没有覆盖#address-cells > 1的特殊场景。
你可以选择以下任意一种方案消除告警:

  • 编译时添加DTC参数屏蔽该类告警:执行编译命令时附加DTC_FLAGS=-Wno-simple_bus_reg即可,该方法不会改动设备树逻辑,是最常用的处理方式
  • 升级DTC到1.6.0及以上版本,该版本之后DTC已经修复了多地址cell场景下simple-bus的校验逻辑,不会再误报该问题
  • 若你确认平台总线驱动不需要依赖simple-bus匹配枚举子节点,也可以删除父节点compatible属性中的"simple-bus"字符串,DTC就不会再触发simple_bus_reg相关校验
    注意:删除simple-bus前请确认对应平台的总线驱动可以正常枚举子节点,避免设备无法识别的问题

内容的提问来源于stack exchange,提问作者Chan Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 21:27:03