我现在的工程有一个out文件,该程序在两个核CORE0和CORE1中工作。当platform中有CACHE时,CORE0和CORE1可以执行到程序结束(结果异常)。当我修改PLATFORM中的CACHE为0k时,CORE0执行正常,CORE1显示
Opcode exception
Resource conflict exception
请问这是什么原因?
Marvin Liang:
程序本身是放在L2,SL2还是DDR呢?设置的cache 为0K是,L1D还是L2 cache呢?
stern:
回复 Marvin Liang:
程序放在L2. L2 L1D L1P cache均设为0K
Marvin Liang:
回复 stern:
禁止L1P cache似乎没必要,当然这个取决于你的程序。Cache disable有没有按下面的流程?
CACHE_wbInvAllL2(CACHE_WAIT);CACHE_wbAllL1d (CACHE_WAIT);CACHE_setL1DSize(CACHE_L1_0KCACHE);CACHE_setL2Size(CACHE_0KCACHE);
如果你core0和core1的程序没有任何的共享资源,完全是各自独立在local L2运行的,没有启动的依赖关系,你可以在CCS下先跑core1试试。如果有资源的依赖关系,需要检查你的多核编程,主要是core0启动后对core1的影响。
stern:
回复 Marvin Liang:
把这段代码放在CORE1和CORE0的程序中执行就可以了吗?
stern:
回复 stern:
CACHE_wbInvAllL2(CACHE_WAIT);CACHE_wbAllL1d (CACHE_WAIT);CACHE_setL1DSize(CACHE_L1_0KCACHE);CACHE_setL2Size(CACHE_0KCACHE);
这几个函数找不到头文件,csl.h csl_cache.h都加进去了。
请问直接在platform中把cache直接设为0K可以吗?
Marvin Liang:
回复 stern:
因为这个配置是每个核都需要的,所以建议用代码来实现。该文件在csl_cacheAux.h …\pdk_keystone_XX_XX_XX_XX\packages\ti\csl
TI中文支持网