这是一个广泛的话题。希望以下一些信息会有所帮助。
首先,只是为了简化一点,SOC == 片上系统。
如果您可以访问 Xilinx 工具链,开发板制造商 Digilent 会为您的开发板提供一些支持文件。因此,首先,如果您访问http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,1028&Prod=ZEDBOARD,您会在底部找到两个名为“Linux Hardware Design for ISE”的文件 <version号码>。
还假设您使用的是 Xilinx 开发工具,如果您浏览到 Xilinx/<Version Number>/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/axi_interconnect_v1_06_a/doc/ds768_axi_interconnect.pdf,您将找到有关您的板的 AXI 中断控制器的信息用途。这包括它支持 TrustZone 的事实以及有关实际使用它的一些信息。
接下来,如果您访问http://zedboard.org/content/creating-custom-peripheral,您将找到一些有关制作“外围”设备的说明。我把它放在引号中是因为该设备实际上完全存在于可编程逻辑中;它不是您插入微型 USB 端口的东西,也不是您传统上认为的“外围设备”。
在教程的最后,还有一个链接可以帮助您从外围设备读取数据。
如果您使用最初下载的 zip 中包含的 system.xmp 文件重复所有这些步骤,那么您会注意到所有繁重的工作已经为您完成。您已在 AXI 总线上插入并准备好使用 TrustZone 的中断控制器,它已准备就绪并等待您将一个小 hello world 设备连接到它。
但是你打算用那个 hello world 设备做什么呢?如果您查看您链接到的教程的程序集,您会在评论中看到他们谈论了很多关于“安全配置寄存器”的东西。如果您查看处理器的文档(在此处的资源部分,http://www.arm.com/products/processors/cortex-a/cortex-a9.php) 并搜索术语“TrustZone 扩展”(目前为第 34 页,尽管显然这可能会发生变化),您会发现一个链接到另一个详细说明此寄存器的页面。这与他们在教程中使用的寄存器相同,因此理论上,如果您设置了受信任的执行环境,您现在可以使 hello world 教程工作(大多数情况下;您可能想要做他们在使用 vhdl 或 verilog 代码进行组装,并将结果暴露在 C 中易于阅读的地方)。
现在,我刚才提到的所有内容都只会让您访问 AXI 总线中的 TrustZone 数据。为了对此做任何有趣的事情,您将不得不实际创建一个安全的世界和正常的世界来读取。否则,您放在一起的任何演示都只会打印“Hello from Secure World”(或功能不正确)。因此,这就是解压缩您链接到的教程并真正阅读其源代码的地方。
尽管到目前为止我的回答还不完整,因为您链接的 Hello World 教程并非旨在教您如何创建 Normal World(可能还有 Monitor World)。它在 ReadMe.txt 中明确说明。所以阅读源代码不会帮助你。为此,您将需要链接http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.prd29-genc-009492c/index.html。那里有很多信息,但它仅供参考,前两章,在我看来,正是我喜欢称之为“可跳过的风味文本”的内容。尽管如果您确实有时间浪费一些时间,那么就一般的安全理论而言,它是令人着迷且信息丰富的。第 3 章将开始教您如何为 TrustZone 进行开发。
但希望我提供的信息将把这对你来说不是一个权限问题,而是更多的教育问题。我仍在自学这些东西。