您好!
我在写入 QSPI 后出现 CRC 问题。 我将按如下方式测试 CRC:
我将数据写入地址0xA80000上的 QSPI。 我使用该地址上的函数 SBLUtilsComputeCRC 计算 CRC、并且 CRC 值正确。 然后、我从 QSPI 地址0xA80000读取数据、更改 DDR 中的字节序、并将其写回地址0x1080000的存储器。 当我计算地址0x1080000上的 CRC 时、我得到不同的值。 我使用内存浏览器进行检查、地址0x1080000上的数据与地址0xA80000上的数据相同。 为了再次进行检查、我删除了对 QSPI 的写入、并刚刚计算了地址0x1080000上的 CRC (我假设该位置上的存储器需要更改、我刚刚在 QSPI 中烧写了新的 SBL)。 在这种情况下、CRC 是正确的。 我尝试使用函数 UNCACHEWriteBackAndInvalidateAll (SOC_IPU1_UNCHE_MMU_CONF_regs_base、UNCHE_WAIT_INLINAL)使缓存无效;但它不会带来任何差异。 我尝试启用和禁用高速缓存、但它不影响计算。
我是否需要为此使用 EDMA? 如果是、如何操作?
我正在使用 VSDK 2.12.1。
您能在这里看到问题吗?
此致、
Sasa Mihajlica