【发布时间】:2020-12-23 11:57:13
【问题描述】:
我正在为 iMX 芯片组创建映像,并从 NXP 下载了源代码,然后使用 Yocto 创建了一个 core-image-minimal。然后我继续成功地在板上启动映像。
在那之后,我的兴趣是将EVL project 应用到图像上。我做了以下事情:
- 从 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 从何处获取内核代码,但找不到任何有意义的内容。
非常感谢任何帮助。
提前致谢
【问题讨论】:
-
不清楚你做了什么(可能你跑题了,问题不在于编程。可能是姊妹网站:Unix&Linux 更适合构建内核(它有很多角落)情况,并且取决于分布)。可能您在不干净的环境中工作。
-
我编辑了这个问题,试图让它更清楚。至于题外话,我在这个网站上看到了很多 Yocto 问题,由于问题本身与内核开发无关,我认为它适合这里。
-
这是一个灰色地带。内核问题、符号丢失、编译......在 U&L 中经常讨论得更多,但也有很多重叠的领域。我不关注“yocto”标签,所以我不确定这些问题是否在这里得到解答。如果你在这里没有找到答案,可能你应该在那里调试错误[以便找到原因],然后你可以在这里询问如何在 yocto 中解决(一个特定的构建问题)。
-
经过一番检查,我现在发现了真正的问题:OP-TEE 在启动前会遍历设备树。当我更改内核代码时,我也更改了设备树代码,因此缺少元素。我现在正在比较两个设备树并添加必须添加的内容。如果这解决了问题,我将在此处发布作为答案。我已经更新了问题的标题,使其更适合实际问题。
标签: linux-kernel arm yocto boot