keil编译信息

名词解析

字段全称含义存储位置说明
CodeCode代码Flash程序代码(函数,语句)的大小
RO-dataRead Only data只读数据Flash存储在Flash中的常量,比如const变量,字符串字面量"hello"
RW-dataRead Write data已初始化的可读写数据Flash->RAM在定义时被显式初始化的全局变量和静态变量。上电后,启动代码会将这些数据从Flash拷贝到RAM中。
ZI-data

Zero Initialized

data

未初始化或初始化为0的数据RAM未初始化的全局/静态变量,或被初始化为0的全局/静态变量。启动代码会在main()函数执行前将这片内存区域清零。

  • .text:对应Code段,这里可以查看每个函数占用了多少字节。

  • .constdata:对应RO-data段,查看字符串和常量的大小。

  • .data:对应RW-data段,查看已初始化的全局/静态变量。

  • .bss:对应ZI-data段,查看未初始化的全局/静态变量。.bss段在运行时会被初始化为0。

如何计算Flash和RAM的实际占用?

  • Flash占用 (下载到芯片的文件大小)

  • Flash = Code + RO-data + RW-data

    • 示例:6320 + 336 + 44 = 6700 字节

    • 为什么包括RW-data?因为初始值需要保存在Flash中,上电后再拷贝到RAM。

  • RAM占用 (运行时所消耗的内存)

  • RAM = RW-data + ZI-data

    • 示例:44 + 1024 = 1068 字节

    • RW-data和ZI-data在运行时都存在于RAM中。

内存溢出判断

如果Code + RO-data + RW-data > 芯片Flash大小,会提示错误。如果RW-data + ZI-data > 芯片RAM大小,程序运行时行为不可预测( hardfault 等异常)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值