- 遇到的问题及解决方法
- Zynq系列的两个处理器核心可以分别工作,其公用资源有cache、DDR、所有外设等。 可以将其看成是两个线程,实际使用时,可以通过线程同步、互斥的方式来实现裸机情况下的简单双核调度与使用。
2.本人在用Zynq在fpga和arm间共享内存数据每间隔一段时间会读出数据一段脏乱数据,最终发现是打开Icache所致(未打开Dcache),最终关闭Cache解决:
Xil_DCacheFlush();
Xil_DCacheDisable();
- Cache小结
1.cache介绍
Icache和Dcache都是cpu缓存,icache 用于缓存指令,dcache用于缓存数据。
ICache用于存储指令,在CPU执行时将指令从iCache中读取,以提高指令执行的速度;
DCache则用于存储数据,如变量、数组等,以避免频繁从内存中读取数据,提高程序执行效率。
在速度上:CPU > 寄存器 > Cache > SRAM >PSRAM
在容量上:CPU < 寄存器 < Cache < DDR
2.Cache 一致性问题及处理
主要指的是由于 D-cache 存在时,表现在有多个 Host(典型的如 MCU 的 Core, DMA 等)访问同一块内存时, 由于数据会缓存在 D-cache 中而没有更新实际的物理内存。
解决的最简单方法:关闭Ccache功能;如果为了提高性能一定要用Cache功能,则需要更为复杂的设置机制,推荐文章:
https://blog.csdn.net/lu_embedded/article/details/78439643