RT-Thread的内存分布

RT-Thread的内存分布

MCU个人电脑
RAM内存
Flash硬盘

编译器会将程序分为好几类,分别存储在不同的存储区中

linking...
Program Size: Code=48008 RO-data=5660 RW-data=604 ZI-data=2124
After Build - User command \#1: fromelf --bin.\\build\\rtthread-stm32.axf--output rtthread.bin
".\\build\\rtthread-stm32.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed: 00:00:07

Code--------------代码段
RO-data----------(Read Only)只读数据段,存放程序中定义的常量(const,字符串等)
RW-data----------(Read Write)读写数据段,存放程序中已经初始化为非0的全局变量
ZI-data------------(Zero Initialize)0数据段,存放程序中未初始化或者初始化为0的变量

观察.map文件发现:
RO Size包括Code以及Ro-data,表示程序占用Flash的大小
RW Size包括RW-data以及ZI-data,表示运行时占用RAM的大小
ROM Size包括Code,RO-data以及RW-data,表示烧写程序所占用的Flash空间大小

在这里插入图片描述
烧录时将将RO段和RW段((代码,只读数据),读写数据)全都烧到Flash里面,
STM32上电启动之后默认从Flash启动,启动之后会将RW段中的RW-data(即已经初始化的全局变量)拉进RAM中,不会搬移RO段的代码和只读数据。最后将根据编译器给出的ZI地址和大小分配出ZI段,再将这块RAM清零。

这样CPU可以从Flash执行代码,从内存中读写RW段ZI段的数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值