程序内存空间的分配

本文探讨了MCU如RL78/G14的内存布局,包括Code flash, Special function register, Data flash, Mirror, RAM等区域。RAM区中,程序运行时的堆栈、自动变量与不同类型的C语言变量的存储位置被详细阐述,尤其是静态变量存储在RAM的高地址部分。" 133313066,20038978,Matlab点云随机采样至固定数量,"['点云处理', 'Matlab工具', '数据采样']

关于程序内存空间的分配

MCU的memory中分为不同的area,比如说RL78/G14的memory map如下图:


其中不同的memory area有不同的用途。按照从下向上的顺序:

1、  Code flash memory
这个顾名思义就是目标程序所占据的位置。这里应该更确切的说一下,程序中涉及到代码的部分肯定是占据这个空间的。

2、  Special function register (2nd SFR)
这个还需要在研究一下,应该是Renesas单片机独有的memory区域。

3、  Data flash memory
掉电不丢失的存储区域。只能被flash memory programmer或者是外部设备写,CPU只能读取data flash memory。这里的外部设备,可以是DMA,这一点我曾经验证过。

4、  Mirror
这个区域有可能也是Renesas所特有,功能再述。

5、  RAM
这个区域也是比较容易理解的,程序在运行过程中创建的变量都会处在这个区域中。既然是运行过程中的,那么当然是自动变量(Auto)都会被分配到这里来。
这里需要详细说明一下程序运行过程中,会有自己的堆栈区,SP的初始指向应该在该区域内。当程序运行时,每当函数创建一个变量时,就会将该变量压入当前堆栈当中,当该函数执行完成返回时,又将会压入栈中的数据弹回到相应的变量……
这个区域是最有意思的区域。这里需要先交代一下在C语言源程序中变量的分类。按照存储类型分为

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值