为什么NIOSII®无法在启用数据缓存的情况下将数据写入内存?-Altera-Intel社区-FPGA CPLD-ChipDebug

为什么NIOSII®无法在启用数据缓存的情况下将数据写入内存?

当使用Nios II®的Gen2芯,周边区域被引入,那里是一个32位地址选择。采用Nios II®第二代,对于未缓存的写入,其中第31位被设置或在外围存储区域,所述高速缓存被旁路。

未缓存的数据和缓存数据不再能够在数据高速缓存中的同一行分配,因为Nios II的第二代®核心并没有在非高速缓存行更新缓存。这是Nios II的经典®的行为。然而,NIOS II第二代®不再更新为未缓存的写入缓存。

解决/修复方法

如果您有现有的Nios II®代码和使用的Nios II / 第二代与数据缓存,那么你必须检查你的软件,以确保它不会在同一高速缓存行混合缓存和不可缓存的数据。

完成编写数据后,应确保使用函数alt_dcache_flush(void * start,alt_u32 len)刷新缓存。此函数从地址start开始刷新长度为len字节的内存区域的数据高速缓存。刷新缓存包括写回脏数据然后使缓存无效。

请登录后发表评论

    没有回复内容