如果在IAR环境下对C编译器作如下设置
则所需的代码和数据空间为
由于在代码中申请了一个short型的RGBbuf[6400]的数组,在调试本代码的时候发现编译器在内存中申请了两块RGBbuf[6400]空间,如下图
这样则多耗费了越12k的RAM,但是在执行decoding()函数对RGBbuf数组写入数据时,只写到了0x200055D4开始的RGBbuf中,而另一个数组则全是0。在执行ili9320_DrawPictureX()函数时要对RGBbuf读操作,可是读的却是0x200087D4为首地址的数组,这样数据就全部错了。
再对编译器作如下设置(由于对空间比较敏感,所以选择优化大小)
这样所需的空间为:
很显然RAM区减少了不少,大概就那12k左右的空间,调试一看,发现真的只有一个RGBbuf了
但进一步调试发现,在进行到下图所示的循环时并没进去循环体
这是神马情况?各位大侠赐教~~ |