rk3399编译u-boot报错Error: arch/arm/dts/.rk3036-sdk.dtb.pre.tmp:77.1-10 syntax error

博主使用rk3399芯片的开发板编译Android10源码后单编u-boot报错,如'arch/arm/dts/.rk3036-sdk.dtb.pre.tmp:77.1 - 10 syntax error',排查四天无果。最终通过逛国外论坛和github找到解决方案,包括修改多个Makefile文件、删除报错dtb文件等,重新编译即可。

目录

背景

解决方案


     

 

 

    先贴报错信息,如下:

  LD      u-boot
  OBJCOPY u-boot.srec
  OBJCOPY u-boot-nodtb.bin
  SYM     u-boot.sym
  DTC     arch/arm/dts/rk3036-sdk.dtb
  DTC     arch/arm/dts/rk3188-radxarock.dtb
  DTC     arch/arm/dts/rk3288-miqi.dtb
  DTC     arch/arm/dts/rk3288-phycore-rdk.dtb
  DTC     arch/arm/dts/rk3288-popmetal.dtb
  DTC     arch/arm/dts/rk3288-rock2-square.dtb
start=$(/home/saflam/rk3399/rk3399-android-10/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-nm u-boot | grep __rel_dyn_start | cut -f 1 -d ' '); end=$(/home/saflam/rk3399/rk3399-android-10/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-nm u-boot | grep __rel_dyn_end | cut -f 1 -d ' '); tools/relocate-rela u-boot-nodtb.bin 0x00200000 $start $end
  DTC     arch/arm/dts/rk3288-tinker.dtb
Error: arch/arm/dts/.rk3036-sdk.dtb.pre.tmp:77.1-10 syntax error
FATAL ERROR: Unable to parse input tree
make[2]: *** [scripts/Makefile.lib:319:arch/arm/dts/rk3036-sdk.dtb] 错误 1
make[2]: *** 正在等待未完成的任务....
Error: arch/arm/dts/.rk3188-radxarock.dtb.pre.tmp:383.1-10 syntax error
FATAL ERROR: Unable to parse input tree
make[2]: *** [scripts/Makefile.lib:319:arch/arm/dts/rk3188-radxarock.dtb] 错误 1
make[1]: *** [dts/Makefile:101:arch-dtbs] 错误 2
make: *** [Makefile:883:dts/dt.dtb] 错误 2

 

 

 

 

 

 

 

背景

      我的开发板是friendly的nanoPC-T4,rk3399芯片,编译Android10源码因时间太长就睡觉去了,睡醒看编译成功了但是缺少各种img文件,然后就单编u-boot,kernel,编u-boot的时候就报上面的Error: arch/arm/dts/.rk3036-sdk.dtb.pre.tmp:77.1-10 syntax error等错误(下面是报错文件摘要),思路被报错信息给带节奏了,最后的#include前面多了个"\",一直从编译流程文件里一个一个的捋,绕在去除"\"的思路里根本无法自拔~>_<~ 排查了四天都没搞清楚,在国内也查不到相关的解决方法,在萤火虫(firefly)论坛也有人讨论,但是太冷清了也没有回复,真的已经搞懵杯了,番强到google上搜,从搜索的title上也没有找到与这个问题相关的;

&usb_host {
        vbus-supply = <&vcc5v0_host>;
        status = "okay";
};

&usb_otg {
        vbus-supply = <&vcc5v0_otg>;
        status = "okay";
};

&pinctrl {
        usb_otg {
                otg_vbus_drv: host-vbus-drv {
                        rockchip,pins = <0 26 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };

        usb_host {
                host_vbus_drv: host-vbus-drv {
                        rockchip,pins = <2 23 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };
};
\#include "rk3036-sdk-u-boot.dtsi"

 

 

 

 

 

 

 

 

 

解决方案

  通过逛国外论坛和github找到了方法[传送门

1. vi  u-boot/Makefile 添加 KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)   位置的话理论上讲只要是没有if判断影响执行这句语句的位置都可以;

2. vi u-boot/arch/arm/dts/Makefile  CONFIG_ARCH_ROCKCHIP内把报错的dtb删掉;一般就是rk3036-sdk.dtb、rk3188-radxarock.dtb、rk3368-lion.dtb、rk3368-sheep.dtb、rk3368-geekbox.dtb、rk3368-px5-evb.dtb,我记得还有1~2个报错的dtb文件,请根据错误自行删除;

3. vi u-boot/scripts/dtc/dtc-lexer.l  搜索yylloc  把-YYLTYPE yylloc 整行删掉;

4.vi u-boot/scripts/dtc/dtc-lexer.lex.c_shipped 搜索yylloc 把-YYLTYPE yylloc 整行删掉;

5.重新编译,齐活└(^o^)┘   ▼▼▼

 

 

<think>好的,用户想查看RK3588相关的设备树文件列表,特别是u-boot中的部分。我需要先理解设备树在嵌入式系统中的作用,设备树文件(.dts.dtsi)通常用于描述硬件配置,u-boot和内核都会用到。 根据用户提供的引用[3],里面提到了u-boot的入口_start在不同架构的位置,比如arch/arm/cpu/armv8/start.S,这可能和ARM架构相关。RK3588是Rockchip的处理器,属于ARM架构,所以可能需要查看u-boot源码中arch/arm目录下的部分。 设备树文件一般在u-boot源码的arch/arm/dts/目录下。例如,RK3568的设备树文件可能在这里,所以RK3588的可能也在类似路径。用户需要的是RK3588相关的,因此可能需要查找以rk3588为前缀的.dts.dtsi文件。 此外,用户提到引用[1]和[2]关于RK3568和RK3588的配置,可能说明RK35xx系列有相似的目录结构。在u-boot中,设备树文件通常存放在arch/arm/dts/,所以需要指导用户在该目录下查找rk3588*.dt*的文件。 另外,用户可能需要使用find命令或者grep来搜索相关文件,例如: find -name "rk3588*.dts*" 或者进入u-boot源码目录下的arch/arm/dts/,查看是否存在这些文件。同时,注意不同版本SDK可能会有差异,可能需要参考Rockchip的官方文档或SDK说明。</think>要查找 RK3588 相关的设备树文件,可按照以下步骤操作: --- ### **1. 定位 u-boot 设备树目录** u-boot 的设备树文件通常存储在 **`arch/arm/dts/`** 目录下,命名格式为 **`rk3588-*.dts`** 或 **`rk3588-*.dtsi`**(`.dtsi` 为包含文件)[^3]。 --- ### **2. 搜索具体文件** 在 u-boot 源码根目录中执行以下命令: ```bash find arch/arm/dts/ -name "rk3588*" ``` 此命令会列出所有以 `rk3588` 开头的设备树文件。例如: - **主设备树文件**:`rk3588s.dtsi`(描述 SoC 公共配置) - **开发板专用文件**:`rk3588s-xxx.dts`(针对具体开发板的配置) --- ### **3. 关键文件说明** | 文件类型 | 示例文件名 | 作用 | |----------------|----------------------------|-------------------------------| | SoC 公共配置 | `rk3588s.dtsi` | 定义 CPU、外设、时钟等基础信息 | | 开发板专用配置 | `rk3588s-rock5b.dts` | 针对具体开发板的硬件差异配置 | | 头文件 | `rk3588s-pinctrl.dtsi` | 定义 GPIO 引脚复用功能 | --- ### **4. 辅助工具** - 若使用 IDE(如 VSCode),可通过全局搜索 `rk3588` 快速定位相关文件。 - 参考 Rockchip 官方 SDK 文档,部分配置可能依赖 **`rockchip_defconfig`** 文件[^1]。 --- ### **5. 注意事项** - 不同版本的 u-bootSDK 中,设备树路径可能略有差异。 - 修改设备树后需重新编译 u-boot 并烧录才能生效。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

peak wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值