Other Parts Discussed in Thread: SYSCONFIG
器件型号: AM6442
主题: SysConfig 中讨论的其他器件
您好:
我正在使用 MCU+ SDK 为客户提供 AM64x 支持、并想确认 SPI 接收缓冲区的建议缓存/DMA 处理。 客户看到缓存维护似乎影响接收缓冲区内容的意外行为。
环境:
- CCS:20.3.0.14_1.9.0
- 编译器:TI Clang v4.0.3.LTS
- MCU+ SDK:mcu_plus_sdk_am64x_11_01_00_17
开发过程中使用/组合的示例项目:
- UART:mcu_plus_sdk_am64x_11_01_00_17\examples\drivers\uart\uart_echo_callback\am64x-evm\r5fss0-0_nortos\ti-arm-clang
- MCSPI:mcu_plus_sdk_am64x_11_01_00_17\examples\drivers\mcspi\mcspi_loopback\am64x-evm\r5fss0-0_nortos\ti-arm-clang
- OSPI:mcu_plus_sdk_am64x_11_01_00_17\examples\drivers\ospi\ospi_flash_io\am64x-evm\r5fss0-0_nortos\ti-arm-clang
问题/症状:
客户使用与 DMA 的 SPI 通信。 当他们为接收缓冲区区域调用 CacheP_inv() 时、接收缓冲区(例如 transaction->rxBuf)似乎被清除(数据变为 0x00)、并且/或者之后内容似乎意外恢复。 他们怀疑与 DMA 一起使用时缓存失效的时间/顺序可能不正确。 作为一种解决方法,他们当前在调用 CacheP_inv () 之前将接收到的数据复制到临时缓冲区(通过 memcpy )。
我想确认的是:
1) 对于 AM64x MCU+ SDK (R5F、NoRTOS)、建议用于基于 DMA 的 SPI 接收的高速缓存操作序列是什么? -例如:我们是否应该对某些缓冲区使用 CacheP_wbInv () 与 CacheP_inv (),在哪个精确点与 DMA 开始/完成/ ISR 回调?
2) 是否预期 CacheP_inv() 可以使 RX 缓冲区显示为“已清除“、如果是、正确的解释是什么(过时的高速缓存行与无效的行与 DMA 完成时间)?
3) MCU+ SDK 11.01.00.17 中是否有任何关于高速缓存维护+带有 MCSPI 的 DMA 的已知限制可以解释这一点?
客户无法公开提供源代码。 如果 TI 工程师可以通过 E2E 私信与我联系、我可以根据需要私下共享相关代码片段、缓冲区放置详细信息和工程配置。
提前感谢您的指导。此致,
Michael

