本博客(Venu Inaganti)介绍了可信平台模块 (TPM) 与 Zynq UltraScale+ PS SPI 控制器的连接。
目前唯一具有 TPM 的评估板是 KR260/KV260 SOM,因此为了帮助正在试验 Zynq UltraScale+ 设备的用户,本文介绍了如何通过 PMOD 连接器与 PS SPI 控制器连接。
先决条件:
- 工具: Vivado、PetaLinux
- 版本: 2024.1
- 硬件: ZCU102,TPM PMOD 接头
接口框图:
Vivado 配置:
使用 EMIO 在 ZYNQMP IP 中启用 PS SPI0:
使 SPI 接口外部与 PL I/O 连接:
PIN 码详细信息:
I/O规划及Reset连接:
可以在 Vivado 规划中约束 SCLK、TPM_CS、MISO 和 MOSI 以连接到 J55 PL PMOD_0 连接器:
必须执行 RESET 才能获取 TPM 访问权限。
它可以通过上电复位(POR)进行复位,但是因为这种情况下我们没有连接到POR的I/O来复位,所以我们可以在Linux加载之前和PL编程完成后使用VIO接口进行复位。
硬件设置:
请注意连接到 J55 PL PMOD0 的 TPM:
重置 TPM 的过程:
- 将 ZCU102 图像加载至 U-Boot
- 打开硬件管理器访问VIO
- VIO 的默认值为 1。请参阅以下参考(您需要将状态从 1 更改为 0 至 1):
- 为 SPI 加载 Linux 和 dmesg(请查看附加的日志片段)
Linux 配置:
- 使用 PetaLinux 创建自定义模板项目
- 添加以下系统用户 DTSI 节点并构建 PetaLinux 启动映像。
设备树变化:
在相应的 SPI 控制器节点下添加以下节点
启动后的日志文件:
从日志文件中您可以看到我们能够使用 SPI 接口为 TPM 设备创建设备文件。
笔记:
- 我没有详细说明 petalinux 的配置和设置,本博客假设您熟悉 PetaLinux 构建流程。
- 为了简单起见,不包括整个启动日志。
- 在 KR260/KV260 设备中,默认情况下有一个内置 TPM,可用于读取和验证接口。但是,不鼓励用户覆盖数据。
参考:
- Zynq UltraScale+ 器件技术参考手册 • Zynq UltraScale+ 器件技术参考手册 (UG1085) • 阅读器 • AMD 技术信息门户
- OPTIGA™ TPM SLB 9670 TPM 2.0 数据表 (infineon.com)