打印
[STM32]

程序的size大于iram的怎么解决呢?

[复制链接]
1809|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ling1874|  楼主 | 2016-12-12 15:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
硬件条件是这样的:   1M flash , iram 128k
每次编译binary程序都会说iram overflow了多少多少, 那么我想问最终的binary size不是只要小于1M不就可以了吗?
iram是运行时态时候所需要的资源吧?怎么大的binary 在小的iram上运行下去呢?

相关帖子

沙发
ccxlslr| | 2016-12-12 15:30 | 只看该作者
优化程序,计算机不是也要内存大的吗,硬盘再大也解决不了,内存小的问题!

使用特权

评论回复
板凳
ling1874|  楼主 | 2016-12-12 15:39 | 只看该作者
ccxlslr 发表于 2016-12-12 15:30
优化程序,计算机不是也要内存大的吗,硬盘再大也解决不了,内存小的问题! ...

有没有别的办法呢.比如说固话library到flash某个地址?

使用特权

评论回复
地板
ccxlslr| | 2016-12-12 17:28 | 只看该作者
你是新手,还是老手啊?你是不懂单片机呢。还是说你是高手,你想像计算机一样把程序,把程序加载到IRAM里运行。

一般来说程序是静态的,也就是程序都在FLASH里执行,常量也在FLASH里面,动态变量在IRAM里。

使用特权

评论回复
5
Ketose| | 2016-12-12 17:30 | 只看该作者
是不是使用了大的数组了?

使用特权

评论回复
6
菜狗| | 2016-12-13 08:57 | 只看该作者
减小变量的数目,能用位变量就不要用char,能用char就不要用int。对读写速度要求不严格的变量加idata或xdata修饰,或者target配置下memory model选large

使用特权

评论回复
7
lyncxy119| | 2016-12-13 09:32 | 只看该作者
使用分散加载

使用特权

评论回复
8
ling1874|  楼主 | 2016-12-13 19:19 | 只看该作者
菜狗 发表于 2016-12-13 08:57
减小变量的数目,能用位变量就不要用char,能用char就不要用int。对读写速度要求不严格的变量加idata或xdat ...

多谢  之前一直用的cygwin下的arm-gcc  昨天换成了keil ,size直接缩减了一半  惊呆了

使用特权

评论回复
9
ling1874|  楼主 | 2016-12-13 19:22 | 只看该作者
ccxlslr 发表于 2016-12-12 17:28
你是新手,还是老手啊?你是不懂单片机呢。还是说你是高手,你想像计算机一样把程序,把程序加载到IRAM里运 ...

之前弄过固化一个固件在flash 然后指针调用这样子 但是超级不友好

使用特权

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

本版积分规则

17

主题

40

帖子

2

粉丝