我正在为iMX芯片组创建图像,并从恩智浦下载了源代码,然后使用Yocto创建了一个最小核心图像。然后,我成功地将图像引导到板中。
之后,我的兴趣是将EVL项目应用到图像上。我做了以下事情:
- 从EVL Core下载源代码。这些源包括一个内核,上面有EVL
- 使用devtool创建了一个工作区文件夹,并添加了文件夹linux-imx,其中包含内核的代码
- 将文件夹的内容完全替换为EVL的内容。Yocto文件的其余部分保持不变
- 重建图像并闪烁
但是,在启动时,我收到以下消息:
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从哪里获取内核代码,但找不到任何有意义的东西。
非常感谢您的帮助。
提前感谢
正如评论中所说,问题如下:
我找不到文件夹platimx,因为它不在Kernel文件夹中,而是在OP-TEE文件夹中。
OP-TEE是一个安全环境,它在启动前运行,检查设备树并基于此更新一些内存地址。
由于设备树已经更改,他现在无法找到一些元素,因此它在启动前崩溃。
将一些丢失的文件添加到DTS文件夹后,Bootloader工作正常。由于内核更改导致的引导过程中的其他问题似乎仍有待解决。