搜索
bottom↓
回复: 0

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

[复制链接]

出0入0汤圆

发表于 2012-9-11 00:43:06 | 显示全部楼层 |阅读模式
最近用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字节?其它的就是正常的。出现这些问题是不是我定义变量有问题?谢谢高手帮忙解答一下。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-10 20:11

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表