Kei MDKl编译后代码大小和RAM空间解释

一般 MCU 包含的存储空间有:片内 Flash 与片内 RAM,RAM 相当于内存,Flash 相当于硬盘。编译器会将一个程序分为好几个部分,分别存储在 MCU 不同的存储区。

Keil 工程在编译完之后,会有相应的程序所占用的空间提示信息,如下所示:

Program Size: Code=12266 RO-data=790 RW-data=232 ZI-data=8096

上面提到的 Program Size 包含以下几个部分:

1)Code:代码段,存放程序的代码部分;

2)RO-data:只读数据段,存放程序中定义的常量;

3)RW-data:读写数据段,存放初始化为非 0 值的全局变量;

4)ZI-data:0 数据段,存放未初始化的全局变量及初始化为 0 的变量;

编译完工程会生成一个. map 的文件,该文件说明了各个函数占用的尺寸和地址,在文件的最后几行也说明了上面几个字段的关系:

Total RO Size (Code + RO Data) 13056 ( 12.75kB)

Total RW Size (RW Data + ZI Data) 8328 ( 8.13kB)

Total ROM Size (Code + RO Data + RW Data) 13288 ( 12.98kB)

1)RO Size 包含了 Code 及 RO-data,表示程序占用 Flash 空间的大小;

2)RW Size 包含了 RW-data 及 ZI-data,表示运行时占用的 RAM 的大小;

3)ROM Size 包含了 Code、RO Data 以及 RW Data,表示烧写程序所占用的 Flash 空间的大小。

**Code:代码占用大小;
RO-data:只读常量和指令;
RW-data:已初始化的可读可写全局变量;
ZI-data:未初始化的或为0的可读可写全局变量。

RO size =code+R0-data (程序占用flash大小)
RW size= Code+R0-data+RW-data (烧写程序Flash大小)
RAM = RW-data+ZI-data (内存运行时RAM大小)
**

    程序运行之前,需要有文件实体被烧录到 STM32 的 Flash 中,一般是 bin 或者 hex 文件,该被烧录文件称为可执行映像文件。如下面左图中所示,是可执行映像文件烧录到 STM32 后的内存分布,它包含 RO 段和 RW 段两个部分:其中 RO 段中保存了 Code、RO-data 的数据,RW 段保存了 RW-data 的数据,由于 ZI-data 都是 0,所以未包含在映像文件中。

    STM32 在上电启动之后默认从 Flash 启动,启动之后会将 RW 段中的 RW-data(初始化的全局变量)搬运到 RAM 中,但不会搬运 RO 段,即 CPU 的执行代码从 Flash 中读取,另外根据编译器给出的 ZI 地址和大小分配出 ZI 段,并将这块 RAM 区域清零,如下右图所示;其余RAM空间作为动态内存堆使用。

在这里插入图片描述

作者:风清无际
链接:https://www.jianshu.com/p/8824bcc37d42
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
据我所知,Kei MDK和C51是两个不同的实体,分别代表着不同的组织或个体。如果Kei MDK和C51合并,可能会有一些影响和变化发生。 首先,合并可能会带来资源整合。由于合并,双方可能会共享各自的资源和技术,从而提高整体实力和竞争能力。例如,合并后的组织可能可以更好地利用资金、设备和人才,进而提供更加高效和优质的服务。 其次,合并可能会产生更强大和多元化的产品或服务。Kei MDK和C51可能在不同领域或市场有各自的特长或专业知识。通过合并,他们可以整合各自的优势资源,创造出更具竞争力的产品或服务,满足市场多样化的需求。 此外,合并还可能会带来组织结构和人员调整。一旦合并完成,双方可能需要重新规划组织结构,将重叠的职能进行整合,以确保运营的高效性。同时,可能还需要对员工进行培训和职位安排的调整,以适应新的工作环境和要求。 最后,合并可能会带来市场格局的变化。如果合并后的组织变得更为强大和竞争力更强,可能会对相关市场产生一定的影响。竞争对手可能需要调整自己的策略和战略以适应新的竞争环境。 综上所述,Kei MDK和C51的合并可能会带来资源整合、产品或服务的多元化、组织结构和人员的调整以及市场格局的变化。然而具体情况还需进一步了解相关背景和详细信息才能做出更准确的判断。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值