查看: 7679|回复: 7

[已解决] 百思不得其解,求解飞思卡尔MK22FN512VLH12芯片RAM的使(已解决)

[复制链接]

该用户从未签到

11

主题

91

帖子

0

高级会员

Rank: 4

积分
661
最后登录
2020-3-4
发表于 2014-10-15 10:08:13 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZP 于 2014-11-27 14:00 编辑

基于官方SDK1.0版本,开发环境Keil5.11,使用FRDM-K22F测试。工程编译完后查看map文件发现RAM的使用量竟然达到了64.54K,而且达到70多K的时候单片机还可以正常跑起来,这是为什么?还有查看scf文件的时候发现堆和栈分别占用32K,加起来也就64K了(MK22FN512VLH12的RAM也就64K),为什么这样分配单片机还可以正常跑起来?哪位大神能讲解一下Keil的scf文件?

我知道答案 目前已有7人回答

这是scf文件堆和栈的大小

这是scf文件堆和栈的大小

这是map文件看到的RAM和flash的使用量

这是map文件看到的RAM和flash的使用量
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2014-10-15 11:27:19 | 显示全部楼层
    你看MAP文件。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11

    主题

    91

    帖子

    0

    高级会员

    Rank: 4

    积分
    661
    最后登录
    2020-3-4
     楼主| 发表于 2014-10-15 11:46:28 | 显示全部楼层
    我看过啦,后面那张图就是map文件里面的内容,ram的使用量不是已经超过64K了吗
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    13

    帖子

    0

    新手上路

    Rank: 1

    积分
    46
    最后登录
    1970-1-1
    发表于 2014-10-15 13:30:26 | 显示全部楼层
    本帖最后由 henjay724 于 2014-10-15 13:31 编辑
    LFang 发表于 2014-10-15 11:46
    我看过啦,后面那张图就是map文件里面的内容,ram的使用量不是已经超过64K了吗 ...

    K22FN512的RAM不止64KB,应该是96KB或者128KB,你debug进去看SIM_SOPT1寄存器的RAMSIZE值就知道了
    linker file指定的stack size只是用于编译器编译链接时判断是否stack会溢出,未必是MCU跑起来一定要预留这么大size的stack,比如MCU实际用到最大stack size是16KB,即使linker里设了32KB,最终其实用的还是16KB
    关于Keil scf文件规则还是需要自己去看相关帮助文档来领悟,靠别人讲很难通透
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11

    主题

    91

    帖子

    0

    高级会员

    Rank: 4

    积分
    661
    最后登录
    2020-3-4
     楼主| 发表于 2014-10-15 14:04:04 | 显示全部楼层
    henjay724 发表于 2014-10-15 13:30
    K22FN512的RAM不止64KB,应该是96KB或者128KB,你debug进去看SIM_SOPT1寄存器的RAMSIZE值就知道了
    linker  ...

    那我如何判断stack是否会溢出呢?关于Keil scf文件我需要看哪些帮助文档呢?能不能推荐一下?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    65

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    233
    最后登录
    1970-1-1
    发表于 2014-10-20 14:55:11 | 显示全部楼层
    MK22FN512VLH12 的 SRAM 是 SRAM_L size 64KB , SRAM_U size 64KB , 总共128KB。 你注意看 SCF 文件, stack 跟 heap 应该是一个 在 SRAM_L, 一个在SRAM_U 的。(不确定...)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    13

    帖子

    0

    新手上路

    Rank: 1

    积分
    46
    最后登录
    1970-1-1
    发表于 2014-10-20 16:19:08 | 显示全部楼层
    LFang 发表于 2014-10-15 14:04
    那我如何判断stack是否会溢出呢?关于Keil scf文件我需要看哪些帮助文档呢?能不能推荐一下? ...

    stack溢出的话在编译时会报错的。
    scf文件规则看\Keil\mdk500\ARM\Hlp\armlink和armlinkref即可
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    802

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1763
    最后登录
    1970-1-1
    发表于 2014-10-29 16:43:32 | 显示全部楼层
    一般stack溢出,都是死循环造成的
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-8 03:25 , Processed in 0.095239 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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