gpt4 book ai didi

linux - 信任区 : CPU0 non-secure and CPU1 Secure in

转载 作者:太空狗 更新时间:2023-10-29 12:08:39 25 4
gpt4 key购买 nike

我正在使用带 A9 处理器(双核)的 zynq-7000(zed 板)。我正在尝试使用 Trustzone。

我想将 cpu1 配置为仅在安全世界中运行,将 cpu0 配置为运行普通世界应用程序 (petalinux)。我阅读了 ug1019 和其他一些文档,但我不知道如何实现这一点。我发现了这个,

MRC p15,0,<Rt>,c1,c1,0 ; Read SCR into Rt

MCR p15,0,<Rt>,c1,c1,0 ; Write Rt to SCR

我可以在哪里配置 NS 位,但我不确定它是否会起作用,以及它会将哪个 cpu 置于安全/非安全状态。如果有人可以指导我找到一些例子或想法。

最佳答案

I want to configure cpu1 to be running only in the secure world and cpu0 to be running a normal world application (petalinux).

典型的情况是 CPU0 是一个引导 CPU,你需要在引导过程中启动 CPU1。通常无需执行任何操作即可以安全模式启动。所以我认为需要在 CPU0 启动期间执行的步骤是,

  • 在安全/正常世界之间划分内存。
  • 创建监控向量/代码来处理正常的世界请求。
  • 以安全模式启动 CPU1。
  • 在正常世界中启动 petalinux

您需要防止正常世界访问安全世界中的内存(否则这没什么意义)。这可以包括安全世界所需的设备。

Linux 需要更新一些只能通过安全世界访问的寄存器。例如 cache-l2x0需要写一些安全的唯一寄存器。您最终需要使用 SMC 指令来更改 CP0 上的世界,以获得更改这些寄存器的权限,然后返回到正常世界中的 Linux。如果您希望在 CPU0 和 CPU1 Linux 之间进行通信,SMC 也很有用。

您可能必须打开早期启动调试才能找到 Linux 可能需要安全访问的所有问题。部分原因可能是 Zync 系统上的驱动程序和安全/正常世界问题。其他问题是,银行正常世界 CP15 寄存器在启动时通常是垃圾,而安全银行寄存器具有已知值。

您还需要根据您在分区内存 步骤中所做的任何更改来更改设备树。例如,您可能希望定时器等在 CPU1 上有一个 RTOS。 Linux显然不能使用这些。

正常世界中的boot petalinux需要像uboot would provide一样.


关于linux - 信任区 : CPU0 non-secure and CPU1 Secure in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57757157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com