您好!
我在6678上使用ucLinux,在主核上执行一段程序对两个数组b,c进行加法运算,结果放到数组a中。
其中这三个数组均是在主核的地址空间中,有缓存。但是主核只是对数组b和c进行了初始化(初始化后马上进行了L2缓存的writeback),
执行a[i] = b[i] + c[i];是在1核上进行的。等1核的运算结束后再在主核输出a数组的内容(之前一步对a的L2缓存置为无效)。
现在结果是这样的,有时候printf显示输出的结果是错的,但是通过ccs内存视图看到的是正确的结果?我想请问我的程序是哪里出问题了,
怎么解决这个问题?谢谢!
King Wang1:
1核上执行加法之后,是否需要将a的内容刷回到内存,这样主核(应该是0核)才能读到正确的内容。 不知道我理解是否正确?
long long:
回复 King Wang1:
主核确实是0核,1核是直接将计算结果写到a所在的内存地址,从ccs内存视图来看确实写进去了,但是主核读到的a的内存却不一定正确。
TI中文支持网