您好!
我正在开发基于 AM6548的系统、在该系统中、Cortex-A53内核的子集将以 TrustZone 安全状态运行。 (TI 建议使用此方法来支持使用硬件"防火墙"在 CPU 核心群集之间对资源进行分区。)
在我的初始测试中、我发现 SDHC 控制器发起的 DMA 访问似乎不是由硬件 DMA/高速缓存一致性机制管理的、因为它们是在 CPU 内核访问 DMA 缓冲器存储器时在 TrustZone 非安全状态下运行的。 换言之、当 CPU 内核处于安全状态时、有必要在软件中管理 DMA 缓冲区一致性、而在非安全状态下则不是如此。
我想这可能是因为 DMA 一致性(总线侦听?) 硬件会 考虑 S/NS 指示器、因此 DMA 缓冲器的安全和非安全物理地址被视为不同的、因此不会保持一致。 如果正确、 则表明 SDHC 控制器 DMA 正在执行非安全访问、而(很明显) CPU 内核正在执行安全访问。
请告诉我如何配置硬件、以便在 CPU 内核以安全状态运行时保持 DMA 一致性。 我在 TRM 中找不到任何关于更改 SDHC DMA 控制器使用的 TrustZone 状态或控制总线侦听机制(大概在 MSMC 或 NAVSS 北桥中)的 S/NS 灵敏度的参考。 如果我在文档中遗漏了它、我很抱歉、请向我指出相关部分。
此外、请告诉我、CPSW 和 PRU-ICSSG 使用的 UDMA 是否需要类似的更改。 我怀疑这应该是"正常工作"的、因为 UDMA 通道默认继承分配它们的 CPU 内核的 TrustZone 安全状态。 请确认、如果不是这样、请说明需要哪些额外配置。
非常感谢、
Ian