Linux kernel 使用U-Boot加载两个内核映像

Linux kernel 使用U-Boot加载两个内核映像,linux-kernel,arm,u-boot,trust-zone,Linux Kernel,Arm,U Boot,Trust Zone,如何使用U-Boot在I.MX 53 QSB板的RAM中加载两个内核映像?第一个映像将在信任区的安全世界中运行,第二个映像将在正常世界中运行 我在一篇论文中读到,我们可以使用这种方法:使用一个至少应该包含以下三个部分的映像:第一个内核映像、第二个ATAGS blob和第二个内核映像。你知道如何实现它吗?或者有其他方法吗?@artlessnoise抱歉,我正在从事另一个项目。加载两个内核后,启动第一个内核后;我必须给出将第二个内核加载到监控系统的地址?我测试过的一个监控系统,它可以在裸机上完美工作

如何使用U-Boot在I.MX 53 QSB板的RAM中加载两个内核映像?第一个映像将在信任区的安全世界中运行,第二个映像将在正常世界中运行


我在一篇论文中读到,我们可以使用这种方法:使用一个至少应该包含以下三个部分的映像:第一个内核映像、第二个ATAGS blob和第二个内核映像。你知道如何实现它吗?或者有其他方法吗?

@artlessnoise抱歉,我正在从事另一个项目。加载两个内核后,启动第一个内核后;我必须给出将第二个内核加载到监控系统的地址?我测试过的一个监控系统,它可以在裸机上完美工作program@artlessnoise好吧,我就是这么做的,让我详细解释一下:我用“tftp 0x97800000 secure.img”加载我的安全映像,然后加载我的普通映像,它是linux内核2.6.35,不需要设备树“tftp 0x70008000 kernel.imx”,然后在我的安全世界中用“go 0x97800000”启动我的安全映像,我用以下命令初始化监视器模式:“init_monitor_modenormal_world_begin”和函数normal_world_begin执行一个命令:“ldr pc,=0x70008000”。我不明白为什么我的linux在正常世界中无法启动。你是否已向CSU授予linux将使用的正常世界的权限,如UART等。在安全世界中安装故障处理程序/监视并捕获外部中止,以查看正常世界的linux在何处消亡。@artlessnoise是的,正如我之前所说,当我使用裸机程序作为正常世界时,打印是正确的。我在监控系统中安装了默认处理程序,操作进行得非常完美,它在'ldr pc,=0x70008000'中阻塞。我是否必须更改linux内核中的某些内容或类似内容?您必须切换模式。当ldr pc=0x70008000必须是物理地址时,您无法进入正常世界。通常,它是ldmsp_mon、{r0-r12,pc}^或类似的东西。您需要在NS位设置为正常世界时切换模式。spu_mon只是为了强调;查找正确的语法。