打印

请问:IAR怎么把HEAP放到.bss,.data之后??

[复制链接]
3642|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
voidx|  楼主 | 2009-12-4 11:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 voidx 于 2009-12-4 11:32 编辑

IAR怎么把HEAP放到.bss,.data之后??

发现IAR默认情况下,总是把HEAP放在了.bss,.data的前面,
有没有办法把HEAP放到.bss,.data之后??

Image0082.JPG (28.04 KB )

Image0082.JPG
沙发
lxyppc| | 2009-12-4 11:51 | 只看该作者
不知道你用的是哪个版本
4.42里面只要更改.xcl文件中各段出现的先后顺序即可

使用特权

评论回复
板凳
voidx|  楼主 | 2009-12-4 11:54 | 只看该作者
当然是 5.XX

使用特权

评论回复
地板
again_gyf| | 2009-12-4 12:57 | 只看该作者
place in RAM_region   { readwrite };
place in RAM_region   { block HEAP };
place in RAM_region   { block CSTACK };

使用特权

评论回复
5
lxyppc| | 2009-12-4 13:48 | 只看该作者
窃以为楼上的方法可行
不过没有东西验证

使用特权

评论回复
6
voidx|  楼主 | 2009-12-4 15:08 | 只看该作者
4楼的方法行不通。

4楼试过吗?还是就我的不行?

使用特权

评论回复
7
voidx|  楼主 | 2009-12-4 20:55 | 只看该作者
//设置部分  
define symbol RAM_SIZE   =   1024*16;  
define symbol ROM_SIZE   =   1024*64;

define symbol CSTACK_SIZE =  1024*1;  
define symbol HEAP_SIZE   =  1024*1;

//非设置部分  
define symbol RAM_START  = 0x20000000;   
define symbol ROM_START  = 0x08000000;   

define symbol INTVEC_START = ROM_START;  

define memory mem with size = 4G;  

define region ROM_region   = mem:[from ROM_START  size  ROM_SIZE];  
define region RAM_region   = mem:[from RAM_START  size  RAM_SIZE];  

define block CSTACK    with alignment = 4, size = CSTACK_SIZE  { };  
define block HEAP      with alignment = 8, size = HEAP_SIZE    { };  

initialize by copy { rw };  
do not initialize  { section .noinit };  

place at address mem:INTVEC_START {ro section .intvec };  
place in ROM_region   {ro code,ro data};   

place at start of  RAM_region   {rw};   
place in RAM_region   {block HEAP};  
place at end of RAM_region {block CSTACK};

Image0278.JPG (56.63 KB )

Image0278.JPG

使用特权

评论回复
8
司徒老鹰| | 2009-12-4 22:13 | 只看该作者
4楼的看不懂啊

使用特权

评论回复
9
gxgclg| | 2009-12-5 20:40 | 只看该作者
确实行不通

使用特权

评论回复
10
zentodone| | 2011-1-4 10:00 | 只看该作者
楼主,现在有比较好的方法实现了吗?我也有此需要,却找不到好的办法

使用特权

评论回复
11
STM32W108| | 2011-1-4 10:06 | 只看该作者
7楼不就是HEAP在bss,data后面。

使用特权

评论回复
12
zentodone| | 2011-1-10 12:57 | 只看该作者

RE: 请问:IAR怎么把HEAP放到.bss,.data之后??

楼上的兄弟,我不知道为什么我的HEAP的kind属性是zero,可我在声明这些变量时都用__no_init,icf文件基本同七楼,但得到的是如下的map

2011-01-10_125008.png (2 KB )

2011-01-10_125008.png

使用特权

评论回复
13
zchong| | 2016-3-17 18:16 | 只看该作者
place in ROM_region   { readonly };
place in RAM_region   { readwrite, block CSTACK};
place in RAM_region   { block HEAP };

使用特权

评论回复
14
zchong| | 2016-3-17 18:16 | 只看该作者
place in ROM_region   { readonly };
place in RAM_region   { readwrite,
                        block CSTACK, last block HEAP };

使用特权

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

本版积分规则

个人签名:上官一出惊天地,   金虹一现震江湖。

35

主题

118

帖子

2

粉丝