Yocto - 在 ARM 处理器中更改内核时设备树不兼容

Yocto - Device tree incompatibility when changing Kernels in an ARM processor

我正在为 iMX 芯片组创建映像并从 NXP 下载了源代码,然后使用 Yocto 创建了一个 core-image-minimal。然后我继续在板上成功启动映像。

之后,我的兴趣是在图像上应用 EVL project。我做了以下事情:

  1. 从 EVL Core 下载源代码。这些源代码由一个内核和其上的 EVL 组成。
  2. 使用 devtool 创建了一个工作区文件夹,并添加了包含内核代码的文件夹 linux-imx。
  3. 完全替换EVL的文件夹内容。 Yocto 文件的其余部分保持不变。
  4. 重建映像并刷入它。

但是,在启动时,我收到以下消息:

Starting kernel ...

E/TC:0 0 dt_find_ocram_tz_addr:71 Cannot find fsl,optee-lpm-sram node in the dev                                                                                        ice tree
E/TC:0 0 Panic at core/arch/arm/plat-imx/imx_ocram.c:73 <dt_find_ocram_tz_addr>
E/TC:0 0 Call stack:
E/TC:0 0  0x14005411

我检查了 EVL 内核代码,在 arch/arm 它不包含名为 plat-imx 的文件夹。这相当令人困惑,因为问题出现在我的工作区文件夹中不存在的一行代码中。

我尝试检查 defconfig 文件以查看 Yocto 从何处获取内核代码,但找不到任何有意义的内容。

非常感谢任何帮助。

提前致谢

正如评论中所说,问题如下:

我找不到文件夹 plat-imx,因为它不在内核文件夹中,而是在 OP-TEE 文件夹中。

OP-TEE,这是一个安全环境,在引导检查设备树之前运行,并根据它更新一些内存地址。

由于设备树已经改变,他现在无法找到一些元素,因此在启动之前就崩溃了。

将一些丢失的文件添加到 DTS 文件夹后,引导加载程序可以正常工作。