您好~
最近我测试了运行 Vision_apps、当我尝试在 MCU2_1和 C7x 之间使用共享存储器时、我发现 C7x 有时从共享存储器读取数据失败。
我在 C7x 上运行的代码如下所示:
AppMemCacheInv(地址,大小);
memcpy (data、addr、size);
千分之一的概率可能是错误的。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好~
最近我测试了运行 Vision_apps、当我尝试在 MCU2_1和 C7x 之间使用共享存储器时、我发现 C7x 有时从共享存储器读取数据失败。
我在 C7x 上运行的代码如下所示:
AppMemCacheInv(地址,大小);
memcpy (data、addr、size);
千分之一的概率可能是错误的。
代表 Michael Cui 的答复。
C7x 从 A72读取共享内存数据: cacheinv + memcpy,--失败
C7x 从 A72读取共享内存数据: cacheinv + memcpy + cachewbinv、--OK
C7x 写入从 A72共享内存数据: memcpy + cachewb、--OK
我想 我们不需要使用 cachewbinv 操作来读取。 cachewbinv 的作用是什么?
谢谢 Shyam。 目的地址为 DDR。
在与 Michael Cui 通话后、我可以帮助您添加更多详细信息:他可能不会清晰地表达。
1. a72将数据写入共享 DDR,然后执行 CacheWB。 更正:没有 CacheWB,但它们使用带有 o_sync 选项的 mmap。
2. C71将高速缓冲器连接到共享 DDR。 如果您现在读取该值、您将极小的机会获得错误的值。
3. C71对本地堆执行 memcoy、然后执行 CacheWB、我们可以始终获得正确的结果。
ZM