文章 ID: 000086173 内容类型: 故障排除 上次审核日期: 2021 年 08 月 27 日

为什么Nios II®处理器无法在启用数据高速缓存时将数据写入内存?

环境

  • 英特尔® Quartus® II 订阅版
  • 英特尔® Nios® II 处理器
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    说明

    使用Nios II® Gen2 内核时,会引入外围区域,有 32 位地址选项。对于Nios II® Gen2,对于一个未缓存写入(其中位 31 设置)或在外设内存区域,高速缓存被绕过。

    未缓存的数据和缓存的数据无法再分配到数据高速缓存中的同一行,因为Nios II® Gen2 内核不会在未缓存的行中更新高速缓存。这是 Nios II® Classic 的行为。然而,NIOS® II® Gen2 不再为未缓存写入更新高速缓存。

    解决方法

    如果您有现有的Nios II® 代码,并使用带数据高速缓存的Nios II/f® Gen2,则必须检查您的软件,以确保它不在同一高速缓存线上混合可缓存和不可缓存的数据。

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

    相关产品

    本文适用于 1 产品

    英特尔® 可编程设备

    本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。