查看: 2274|回复: 4

[已解决] 关于SROM的设置(已解决)

[复制链接]

该用户从未签到

34

主题

101

帖子

0

新手上路

Rank: 1

积分
293
最后登录
1970-1-1
发表于 2013-6-13 18:18:11 | 显示全部楼层 |阅读模式
我用的是官网提供的Demo,直接用CW10.4打开的。
但现在我在文件里面找不到。S文件,请问如果我要设置栈的大小,应该在哪里设置呢?
我知道答案 目前已有3人回答
回复

使用道具 举报

该用户从未签到

10

主题

459

帖子

0

中级会员

Rank: 3Rank: 3

积分
303
最后登录
2024-10-24
发表于 2013-6-13 21:22:10 | 显示全部楼层

回复:关于SROM的设置

你问的不是很明确,我尝试回答一下,如答非所问,请在此跟帖提问。
针对第一个问题你指的应该是启动文件crt0.s吧,位于...\KINETIS512_SC\src\cpu。第二个问题:设置栈大小的文件应该是指链接配置文件,位于...\KINETIS512_SC\build\cw\linker files文件夹中,对于你不同的芯片内存或者Flash容量选择相应的配置文档。
回复 支持 反对

使用道具 举报

该用户从未签到

34

主题

101

帖子

0

新手上路

Rank: 1

积分
293
最后登录
1970-1-1
 楼主| 发表于 2013-6-14 08:28:52 | 显示全部楼层

RE:关于SROM的设置

我的linker files里面有一个文件,是ProcessorExpert.ld的,可以设置Srom的值,不过我现在碰到一个问题,就是我不确定我的内存是否溢出,请问这个要怎么看呢?我用的是MKL25Z128的MCU,用的是哪款MKL25的开发板。
我有.MAP文件,但是不知道在哪里看内存的部分。。求指导。
回复 支持 反对

使用道具 举报

该用户从未签到

10

主题

459

帖子

0

中级会员

Rank: 3Rank: 3

积分
303
最后登录
2024-10-24
发表于 2013-6-14 09:44:33 | 显示全部楼层

回复:关于SROM的设置(正解)

我理解的就是查看最终size不超过你设定值即可,在MAP文件中有下面一段信息,可以看到堆栈的起始addr,size,终结addr,最下面两行是最终的RAM和ROM的大小及地址分配,可以看到内存的使用情况。不过需要注意的是RAM区域是在以下总size的基础上加上0x410,这一段是用来存放16字节的Flash配置字段,真正的RAM起始地址是映射后的0x1FFFF_0000地址,对应的是SRAM_L区域,依次存放Flash配置字段、sdata、data、bss等数据段、堆、栈等。
1FFF8AB4 00000000 .bss .bss (adc_demo_c.obj)
#>1FFF8AC4 __END_BSS (linker command file)
#>1FFF8AD0 __HEAP_START (linker command file)
#>1FFF8AD0 __heap_addr (linker command file)
#>00001000 __heap_size (linker command file)
#>1FFF9AD0 __HEAP_END (linker command file)
#>1FFF9AD0 __SP_END (linker command file)
#>1FFF9ED0 __BOOT_STACK_ADDRESS (linker command file)
#>1FFF9AD0 __mem_limit (linker command file)
#>00000000 __stack_safety (linker command file)
# Memory map:
v_addr p_addr size name
00000000 00000000 00001F90 .text rom
1FFF8410 00001F90 00001AC0 .data_bss ram
回复 支持 反对

使用道具 举报

该用户从未签到

34

主题

101

帖子

0

新手上路

Rank: 1

积分
293
最后登录
1970-1-1
 楼主| 发表于 2013-6-14 14:03:27 | 显示全部楼层

RE:关于SROM的设置

版主说得好详细。。。十分感谢,但我的生成的MAP貌似有点不一样。
0x1ffff000               0x24 load         address 0x00008aa8       0x00008aa8 __S_romp = _romp_at
0x1ffff000               0x4 LONG        0x89cc ___ROM_AT
0x1ffff004               0x4 LONG        0x20000000 _sdata
0x1ffff008               0x4 LONG        0xdc ___data_size
0x1ffff00c               0x4 LONG        0x8aa8 ___m_data_1FFFF000_ROMStart
0x1ffff010               0x4 LONG        0x1ffff000 ___m_data_1FFFF000_RAMStart
0x1ffff014               0x4 LONG        0x0 ___m_data_1FFFF000_ROMSize
0x1ffff018               0x4 LONG        0x0
0x1ffff01c               0x4 LONG        0x0
0x1ffff020              0x4 LONG         0x0
._user_heap_stack
0x20000a0c      0x800 load address 0x0000940c
0x20000a0c      . = ALIGN (0x4)
0x20000a0c      PROVIDE (end, .)
0x20000a0c      PROVIDE (_end, .)
0x20000a0c      __heap_addr = .
0x20000e0c      . = (. + __heap_size)     *fill* 0x20000a0c 0x400 00
0x2000120c      . = (. + __stack_size)     *fill* 0x20000e0c 0x400 00
0x2000120c      . = ALIGN (0x4)
0x00008aa8 _romp_at = ((___ROM_AT + SIZEOF (.data)) + SIZEOF (.m_data_1FFFF000))

我这个,我看起来貌似没有越界,但我不 知道 0x00008aa8 这个是什么意思,求指导。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-19 19:46 , Processed in 0.157291 second(s), 25 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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