Ti专家,你好,请教个问题,最近在做6678平台开发的项目时发现有个代码运行异常
经过定位发现6678 LL2(只用了一个核0)内的数据异常被改变了,如附图1所示,
(1)在代码里定义了1个结构体数组包含3个结构体变量,3个结构体变量里的元素的内容值是相同的
(2)结构体在代码运行过程中只会被读取用于逻辑运行,逻辑不会去修改。
但是实际测试过程中发现程序大概率经常执行异常跑飞(如图2所示),测试暂停程序至断点处查看各阶段的数据,
发现该结构体数组的数据值竟然被篡改了,
图中黄色的表示值有变动
这些变量代码本身都是定义在核0的LL2内部的,请问LL2会有什么CACHE的刷新维护机制导致数据更动么?
初始化后CACHE相关配置:
CACHE_setL1PSize(CACHE_L1_32KCACHE); //将L1P的32K空间全部用作cache
CACHE_setL1DSize(CACHE_L1_32KCACHE); //将L1D的32K空间全部用作cache
CACHE_setL2Size(CACHE_64KCACHE);
图1:
图2:
Nancy Wang:
应该不是因为开启了cache的原因,看您上面的描述只用了core0并且没有做修改。
是修改了什么内容之后才出现这种情况的?
加大堆栈试试。
单步调试看看具体是在哪里跑飞。