如何使用 ARM 安全监视器调用 (SMC)

How to use an ARM Secure Monitor Call (SMC)

我是 运行 一个在 FPGA 上使用 ARM Cortex 处理器的操作系统。为了能够访问此板上的此内存区域,我需要 运行 一个安全的世界。有人告诉我,我需要使用 Secure Monitor 调用才能进入安全世界。如果我不在安全世界中,Arm Trusted Firmware 会阻止我的操作系统,并给我一个信号 2 中断。

如何使用 SMC?在某个地方有实现这个的例子吗?

谢谢

我理解你的问题 'How can I implement an ARM Secure Monitor Call (SMC) so that I may access a specific region of my system from a software not running at EL3' - 如果您想知道如何使用现有的 SMC 调用,您已经在 Michael Dorgan 的第一条评论中得到了解答。

如果没有,您需要在系统启动时执行的 EL3 软件 运行 中实现您自己的 SMC 调用。在典型的 Aarch64 系统中,Arm Trusted Firmware 的 BL31 部分将对此负责,而 ATF 似乎就是您的系统 运行。

一个实现示例是位于 here.

的 ZynqMP IPI 邮箱门铃服务的 SMC 处理程序

底线,你应该:

  • 检索您的系统是 运行、
  • 的 Arm Trusted 固件的源代码
  • 使用 IPI 邮箱门铃服务示例实施您自己的一组 SMC 调用,
  • 为您的平台重新编译 Arm Trusted 固件,
  • 升级你的系统,
  • 测试。

由于您的平台正在使用 ATF,this code 可能会支持它。 否则,您的 silicon/board 供应商应为您的平台提供源代码。

希望对您有所帮助。