7882|16

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

怎样获取映像中代码段和数据段的大小??? [复制链接]

用 IAR EWARM 5.20 开发 STM32F103ZC(Cortex-M3内核)

在连接配置文件(.icf)中,我想分别获取 readonly 和 readwrite 块的大小,然后将指定的内存大小减去这两块的大小之后的剩余空间作为堆栈使用,这个要怎么实现呢?

举个例子:

memory     = 256k
readonly   = ?
readwrite  = ?
heap       = memory - readonly - readwrite


最好给个示例的连接配置文件(.icf)

谢谢了。
此帖出自stm32/stm8论坛

最新回复

                                 15楼的回复跟讨论的主题有关系吗  详情 回复 发表于 2009-12-5 20:44
点赞 关注
 

回复
举报

81

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
IAR 5.20不知道
IAR 4.42中只要把HEAP的声明放在他们的后面就行了,大小指定为内存大小就行
编译器自己会去算的
此帖出自stm32/stm8论坛
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 IAR 5.20 的有人知道吗???
此帖出自stm32/stm8论坛
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
同问!
翻遍help没有找到
搬4.42的用法说icf文件出错
我宁愿伺候gcc的link script
虽说有点脾气 功能强大啊
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

5
 
同问!
翻遍help没有找到
搬4.42的用法说icf文件出错
我宁愿伺候gcc的link script
虽说有点脾气 功能强大啊
哎,同意,这点上就gcc做的最爽了。
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

6
 
请版主帮忙
实在没有办法了
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

7
 
纠正一点:
readonly是指flash,这段区域不能用于做堆栈。

你这样做的目的是什么呢?

有个笨办法,在链接生成的map文件里,可以查到RAM区用了多少字节,然后再回过头去重写icf。。。。。。
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
楼上的,谢谢你的回复

我不是想让readonly段做为堆栈来用,我只是想获取readonly和readwrite段的大小,然后将他们之外的空间作为堆栈来用。
举个例子:

memory     = 256k
readonly   = ?
readwrite  = ?
heap       = memory - readonly - readwrite


最好给个示例的连接配置文件(.icf)

谢谢了。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

9
 
也许我没说清楚

READONLY段在FLASH中,READWRITE在RAM中。你所谓的MEMORY是指FLASH还是RAM还是FLASH+RAM的总大小阿?无论是什么,MEMORY-READONLY-READWRITE都没有任何意义。HEAP只能存在于RAM中。你要是说HEAP=RAM-READWRITE,那还有点意义。

目前,据我所知,IAR无法满足你的需求,但我在7楼说过了,如果你非要定义一个最大范围的HEAP,你可以在链接结束后的MAP文件中找到READWRITE的大小,然后重新回过头去写ICF文件。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 汗,自己写启动代码就可以实现,管他什么HEAP,还是STACK
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

11
 
define block READONLY_BLOCK { readonly };
SFB(READONLY_BLOCK)
SFE(READONLY_BLOCK)
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

12
 
vigia:

非常谢谢你

那你能告诉我 HEAP=RAM-READWRITE 要怎么实现呢???

期待你的回复
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

13
 
again_gyf:

你好,如果自己写启动代码要怎么实现呢?  我不会啊,能不能教教我啊???

还有你写的:
define block READONLY_BLOCK { readonly };
SFB(READONLY_BLOCK)
SFE(READONLY_BLOCK)
这些都代表了什么含义啊???
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

14
 
对了,楼上
你的这个要求是“运行时”的还是“编译时”的
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

15
 
暂时用这个

//设置部分  
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};
此帖出自stm32/stm8论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

16
 
                                 都是好热心的人啊
此帖出自stm32/stm8论坛
 
 
 

回复

47

帖子

0

TA的资源

一粒金砂(初级)

17
 
                                 15楼的回复跟讨论的主题有关系吗
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表