解析Kontron SL28模块设备树时遇FATAL ERROR语法错误求助
解决Kontron SL28设备树编译语法错误问题
问题本质:你直接编译的
fsl-ls1028a-kontron-sl28.dts并非独立可编译文件,它依赖Linux内核中的其他设备树头文件(如fsl-ls1028a.dtsi)和预定义宏(比如IRQ_TYPE_EDGE_BOTH)。单独用dtc编译时,工具找不到这些依赖,才会抛出语法错误提示,并非dts文件本身存在语法问题。正确编译方法:
- 基于Linux内核源码树编译(推荐):
进入包含该dts的Linux内核源码目录(对应你引用的版本),执行以下命令:
编译完成后,生成的dtb文件会位于make ARCH=arm64 dtbsarch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28.dtb。 - 手动指定依赖的dtc编译方式:
如果你一定要单独用dtc编译,需要手动指定所有依赖的头文件路径和宏定义,示例命令如下:
注意:这种方式容易遗漏依赖,不推荐新手使用。dtc -I dts -O dtb -o u-boot.dtb -i arch/arm64/boot/dts/ -i arch/arm64/boot/dts/freescale/ -D __ARM__ -D ARM64 fsl-ls1028a-kontron-sl28.dts
- 基于Linux内核源码树编译(推荐):
额外说明:
IRQ_TYPE_EDGE_BOTH是Linux内核中定义的宏,需要在编译时展开为设备树编译器能识别的数值,单独编译时缺少这个宏的定义,才会被误判为语法错误。
内容的提问来源于stack exchange,提问作者bue123
相关产品推荐
相关产品推荐

