IAR环境下编译器选择优化与不优化的区别

[复制链接]
9557|6
 楼主| 布川酷子 发表于 2011-12-27 15:51 | 显示全部楼层 |阅读模式
如果在IAR环境下对C编译器作如下设置
1.jpg
则所需的代码和数据空间为
2.jpg
由于在代码中申请了一个short型的RGBbuf[6400]的数组,在调试本代码的时候发现编译器在内存中申请了两块RGBbuf[6400]空间,如下图
3.jpg
4.jpg
这样则多耗费了越12k的RAM,但是在执行decoding()函数对RGBbuf数组写入数据时,只写到了0x200055D4开始的RGBbuf中,而另一个数组则全是0。在执行ili9320_DrawPictureX()函数时要对RGBbuf读操作,可是读的却是0x200087D4为首地址的数组,这样数据就全部错了。
     再对编译器作如下设置(由于对空间比较敏感,所以选择优化大小)
4-5.jpg
这样所需的空间为:
5.jpg

很显然RAM区减少了不少,大概就那12k左右的空间,调试一看,发现真的只有一个RGBbuf了
6.jpg
但进一步调试发现,在进行到下图所示的循环时并没进去循环体
7.jpg
这是神马情况?各位大侠赐教~~
IJK 发表于 2011-12-27 16:42 | 显示全部楼层
可以看看map文件。另外,把相关代码都贴出来,才好判断问题。

初步觉得应该是代码的问题,IAR EWARM应该不是造成问题的主要原因。
uc_cm0 发表于 2011-12-27 17:16 | 显示全部楼层
本帖最后由 uc_cm0 于 2011-12-27 17:17 编辑

整个工程贴出来。

楼主用的神州几号的开发板??
Xflyan 发表于 2011-12-27 19:01 | 显示全部楼层
一直用IAR最高等级优化,未出现过问题,如2楼所说,楼主可以看看map文件里面的地址映射...
mcs8098 发表于 2012-1-5 09:56 | 显示全部楼层
秋天落叶 发表于 2012-1-5 22:35 | 显示全部楼层
这个区别在map里面应该会有显示
yybj 发表于 2012-1-5 22:39 | 显示全部楼层
需要楼主再贴出一些相关的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

40

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部