一个图像采集分析程序,自己设计的板子。程序调试和写入Flash都可执行,但不太正常。反复查找,发现某些语句没有执行。编译后的汇编有对应的部分,并没有被优化掉,单步跟踪的时候能够正确执行,全速跑则会跳过这些语句,加“ssync()”语句能够改善,但不能完全避免。这些语句有些是赋值语句,例如两条语句紧接:
*pSIC_IMASK = 0x00000100; //打开DMA0中断屏蔽
*pSIC_IMASK |= 0x00010000; //TIMER0
第一条大部分情况不执行,只执行第2条。如果中间插一条“ssync()”,情况有所改善。后来干脆合并成:
*pSIC_IMASK = 0x00010100; //打开DMA0, TIMER0中断屏蔽
有些则是状态判断语句(if语句),如:
if(time_05s_flag && img_ys_f==0){....}
单步调试没问题,全速则好像跳过去了,目还没找到解决问题的办法。请求高人帮助,谢了。
「该帖子被 spepc 在 2017-07-26 15:42:41 编辑过」