打印

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

[复制链接]
8572|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
如果在IAR环境下对C编译器作如下设置

则所需的代码和数据空间为

由于在代码中申请了一个short型的RGBbuf[6400]的数组,在调试本代码的时候发现编译器在内存中申请了两块RGBbuf[6400]空间,如下图


这样则多耗费了越12k的RAM,但是在执行decoding()函数对RGBbuf数组写入数据时,只写到了0x200055D4开始的RGBbuf中,而另一个数组则全是0。在执行ili9320_DrawPictureX()函数时要对RGBbuf读操作,可是读的却是0x200087D4为首地址的数组,这样数据就全部错了。
     再对编译器作如下设置(由于对空间比较敏感,所以选择优化大小)

这样所需的空间为:


很显然RAM区减少了不少,大概就那12k左右的空间,调试一看,发现真的只有一个RGBbuf了

但进一步调试发现,在进行到下图所示的循环时并没进去循环体

这是神马情况?各位大侠赐教~~
沙发
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文件里面的地址映射...

使用特权

评论回复
5
mcs8098| | 2012-1-5 09:56 | 只看该作者
不错

使用特权

评论回复
6
秋天落叶| | 2012-1-5 22:35 | 只看该作者
这个区别在map里面应该会有显示

使用特权

评论回复
7
yybj| | 2012-1-5 22:39 | 只看该作者
需要楼主再贴出一些相关的代码

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

40

帖子

1

粉丝