遇到一个IAR编译优化的问题:
本想在profile中write callback中做特征值的有效性检查,却发现编译优化“high”和"medium"导致代码流程错误,如下:
#define CONST_DEF 16
//printf("xxxx\n");
if (pValue[0] > CONST_DEF) {
// do sth
} else {
// do sth
}
其中pValue[0]为channel数据,当优化选项为"high"时,pValue[0]为17时走的却是else分支,优化选项改为"medium",代码流程就没问题了。
另外在if之前添加一行printf,即便优化选项为"high"也没问题。通过C代码看不出问题。(IAR is cracked,stack is 1.4.1)
还想请问INIT_HEAD_LEN最小设为多大能够保证协议栈稳定运行,因为我需要1.5KB左右的buffer。