你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

一个关于STM32与STM8编译后的程序大小比较的问题

[复制链接]
birddda 提问时间:2017-4-28 11:24 /
最近遇到两个问题,其中一个如下:问题1
我的芯片RAM为1K,但在默认的情况下可以用的只有588 Byte ,百度了一下解答是编译器默认将高512字节分配给堆栈,因此变量超出了了588就会报变量溢出。后我决定更改编译器的参数,但到变量参数更改页面发现RAM项却写着 714 ,然后我就讲714改成914,问题就解决了。那么问题来了,编译器分配的高512字节是用来干嘛的?主要是用来存放什么东西?目前由714->914的改变后,这个原来的512字节目前的大小是多少呢?芯片的RAM空间明明是1K,为什么编译器里面的参数是714?

问题2

我们公司使用的是STM8S系列和STM32F10系列的主芯片,在选型的时候一般会优先考虑性价比。IC的功耗在我们设备的运行中可忽略不计。但在编译过程中发现同样的逻辑量,编译出来的文件STM32的是STM8的好几倍。我想问下这个倍数到底是多少呢?有没有一个明确化着稍微准确点的数字,我们在芯片选型的时候会比较关注这个点
收藏 2 评论1 发布时间:2017-4-28 11:24

举报

1个回答
sssdd 回答时间:2017-5-10 11:50:18
问题来了,堆栈是干什么用的?
解释有很多,简单回答就是:调用程序就要出入栈。中断更要出入栈。栈里面既放数据又放地址。。。
最后,那个堆栈深度也是可以调的。。编译器里有选项设置。默认是0x100=512。调小点够用也成。
714也可能是历史遗留问题。。大家一般都是把工程文件带设置拷来拷去的。
甚至,你可以不用堆栈,这样的话,你就只能运行一个main,且不能有中断。子函数。

第二,STM32.。。。和STM8没有可比性。。。
数据位宽就是4倍。。编译器优化程度也不一样。
反正stm32比较大是肯定的。。
正确的做法,是把你的代码写好。软件仿真调试好。然后,看出来的code有多少。。。
当然,有经验的话,你就能估计出来了。
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版