由于4.10之前的linux-socfpga内核中CoreLink™2级高速缓存控制器L2C-310的默认配置存在问题,因此可能会出现数据一致性故障。
对于4.10之前的Linux-socfpga内核,L2C-310高速缓存控制器将共享属性覆盖启用位设置为OFF。
这允许控制器优化从MPU核心或ACP端口到Cacheable非分配访问的一些不可高速缓存的访问,并将一致性点从SDRAM移动到L2高速缓存。
如果主器件通过L3或FPGA2SDRAM桥访问SDRAM,则一致性点的改变可能会导致问题。
参考: CoreLink™2级高速缓存控制器L2C-310,修订版:r3p3技术参考手册 (ARM DDI 0246H(ID080112)):第2.3.2节可共享属性。
解决方法/修复
建议将辅助控制寄存器位[22]: 共享属性覆盖使能位设置为ON。此设置禁用L2高速缓存控制器中的优化。
最新的linux-socfpga和u-boot-socfpga版本修复了这个问题,可从https://github.com/altera-opensource/获得。
没有回复内容