Xilinx ZYNQ7020密集访问内存出错 |
您所在的位置:网站首页 › 内存出现错误 › Xilinx ZYNQ7020密集访问内存出错 |
Xilinx ZYNQ7020密集访问内存出错问题
问题描述: Xilinx ZYNQ7035和ZYNQ7020,没有跑linux系统,裸机和使用freertos如果频繁使用memset和memcpy会出现错误,以memcpy为例,现象是拷贝后的数据不对,无固定位置连续错32字节,这是这两款SOC的ARM核的缺陷,DCache的一行就是32字节,是由于内存高速访问情况下,Dcahce没有刷新导致的。 解决办法: 方法1:改变cache的缓存策略 /** * 改变缓存的策略, 密集访问内存时会出错,尤其使用函数memcpy memset, * 此bug是ARM芯片的, 在7020,7035中会出现 */ inline static void ChangeCachestrategy(void) { __asm__("MRC p15,0,r0,c15,c0,1\n" "ORR r0,r0,#0x00400000\n" "MCR p15,0,r0,c15,c0,1\n"); }方法2:直接禁用dcache,不推荐此方法,cache本就是加速访问提高效率用的。 方法3:跑linux系统,项目上有原来的freertos改为使用linux后,此问题没有出现。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |