leekun 发表于 2012-9-11 00:43:06

问一个关于ICCAVR return stack size设置与变量存储的问题。

最近用M16编写一个程序,用了43个全局变量,当我继续定义新的全局变量时,ICCAVR可以正常编译,但下载到目标板中运行出错。分析发现是因为有些全局变量被更改造成。在改小了ICCAVR选项中return stack size中的值后就正常了,但是这个程序还没写完,还需要一些全局变量其中包括float型,而return stack size中的值已改到不能小了。在网上找了很久没发现太多的介绍,于是在ICCAVR软件中找到一个with full size info菜单,点开后打开一个.mps.size文件,里面有Flash SRAM的一些信息。我看到下面这些信息:
sram size is 1024 bytes (1KB)
sram used for
- variables       = 925 (0x39D) bytes from 0x0060 to 0x03FC
- heap, s/w stack = 75 (0x4B) bytes from 0x03FD to 0x0447
- h/w stack       = 24 (0x18) bytes from 0x0448 to 0x045F
变量居然用了925字节,硬堆栈24字节是我设的。然后往下还有:
SRAM area "data" with global and static variables initialised explicitly
SRAM area "data" = 879 (0x36F) bytes from 0x0060 to 0x03CE
<unnamed>               =850 (0x0352) bytes
_mic_time               =   28 (0x001C) bytes
_sec_time               =    1 (0x0001) byte

SRAM area "bss" with global and static variables initialised implicitly to 0
SRAM area "bss" = 46 (0x2E) bytes from 0x03CF to 0x03FC
这时就搞不懂了,第一个850字节的变量是哪来的?第二个_mic_time应该是我定义的一个常数,但我定义的是unsigned int型,只应2字节现在居然28字节?其它的就是正常的。出现这些问题是不是我定义变量有问题?谢谢高手帮忙解答一下。
页: [1]
查看完整版本: 问一个关于ICCAVR return stack size设置与变量存储的问题。