设计了DSp6727板子,程序执行的一个函数中有静态局部变量数组,函数内容如下
void test()
{
static Uint8 AA[3]= {0,0,0};
if(AA[0] == 0)
{
fun(); //执行函数
}
}
发现一个奇怪的现象,明明参数AA[0]初值为0,但是函数fun()并不执行,同时做了好几块板子,相同的程序在别的板子上能够执行,唯独有一个板子不行,但是出现问题的板子,如果我把程序稍微改动一下,增加几句无关的代码,程序重新编译后又能运行正常了,请问有见过这样现象的吗,会是什么问题,谢谢
Nancy Wang:
不执行单步调试是什么状态?是在内部memory上执行的吗?无关的代码是什么?
这块开发板有其它的异常现象吗?
li shui:
回复 Nancy Wang:
谢谢回复
单步调试也是if判断后程序直接跳过,往下执行,并不执行fun函数,就是感觉if判断不满足,程序在片内空间运行
增加无关代码就是程序加几行代码,或者另外使用其它变量判断,重新编译后运行也就正常了,不知道什么原因
Nancy Wang:
回复 li shui:
用其他变量判断就可以?ccs->variables里面查看该AA的值是正常的吗?
li shui:
回复 Nancy Wang:
换个其它变量,或者把这个变量改为全局变量运行正常,这个程序在其它板子上运行也是好的,唯独这个板子有问题
li shui:
回复 Nancy Wang:
今天设断点调试发现,虽然软件代码赋值为0,实际值为0x10,第5位赋为了1,后来将变量初始化为0xef,监控时变成了0xff,这一位被强制为1,请问这会是什么原因呢,谢谢了