【IoT】ROM、RAM 和 FLASH 浅析

1、ROM、RAM 和 FLASH 应用

1)ROM

存储固化程序的,存放指令代码和一些固定数值,程序运行后不可改动。

c文件及h文件中所有代码、全局变量、局部变量、'const'限定符定义的常量数据、startup.asm文件中的代码(类似ARM中的bootloader或者X86中的BIOS,一些低端的单片机是没有这个的)通通都存储在ROM中。

2)RAM

程序运行中数据的随机存取(掉电后数据消失),整个程序中,所用到的需要被改写的量,都存储在 RAM 中,“被改变的量”包括全局变量、局部变量、堆栈段。

3)FLASH

存储用户程序和需要永久保存的数据。

例如:

现在家用的电子式电度表,它的内核是一款单片机,该单片机的程序就是存放在 ROM 里的。

电度表在工作过程中,是要运算数据的,要采集电压和电流,并根据电压和电流计算出电度来。

电压和电流时一个适时的数据,用户不关心,它只是用来计算电度用,计算完后该次采集的数据就用完了,然后再采集下一次,因此这些值就没必要永久存储,就把它放在 RAM 里边。

然而计算完的电度,是需要长久保存的,单片机会定时或者在停电的瞬间将电度数存入到 FLASH 里。

2、ROM、RAM 和 FLASH 在运作原理

1)程序经过编译、汇编、链接后,生成hex文件;

2)用专用的烧录软件,通过烧录器将hex文件烧录到ROM中;

注:这个时候的ROM中,包含所有的程序内容:一行一行的程序代码、函数中用到的局部变量、头文件中所声明的全局变量,const声明的只读常量等,都被生成了二进制数据。

对于 Flash 类型的 MCU,ROM 空间的大小通常都是整字节的,即为 ak*8bits。

 

 


refer:

https://blog.csdn.net/junzhu_beautifulpig/article/details/50771807 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

产品人卫朋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值