嵌入式单片机开发 - 嵌入式系统中 Flash(闪存)与 RAM(随机存储器)
概述
- 在嵌入式系统中,Flash 和 RAM 就像的 “长期记忆的硬盘 和 “临时便签”,分工明确
一、Flash(闪存)
1、基本介绍
-
Flash 用于存储程序代码、常量数据
-
Flash 在系统配置等断电后不丢失的内容
2、特点
-
速度较慢:读取速度比 RAM 慢,写入速度更慢
-
寿命有限:Flash 有擦写次数限制(通常 10 万次左右
-
非易失性:在系统配置等断电后不丢失的内容
3、使用场景
-
存储固件程序,例如,单片机一上电就从 Flash 读取代码执行
-
保存用户设置,例如,Wi-Fi 密码、校准参数等
二、RAM(随机存储器)
1、基本介绍
-
RAM 用于存放程序运行时的临时数据
-
RAM 在断电后数据丢失
2、特点
-
速度快:CPU 可直接高速读写
-
可随机访问:能直接修改任意地址的数据
-
易失性:断电后数据丢失
3、使用场景
-
存储函数内的局部变量,例如,
int temp = 10;
-
动态内存分配,例如,使用
malloc()
申请的堆空间 -
实时数据缓存,如传感器采集的临时数据
三、运行流程
-
单片机运行程序,上电启动:CPU 从 Flash 中读取程序代码,开始执行,类比,打开电脑时从硬盘加载操作系统
-
运行程序,全局变量、常量存在 Flash 中,函数内的局部变量、计算中间值存在 RAM 中
如果调用了 printf("Hello");字符串 "Hello" 存在 Flashprintf 的栈帧存在 RAM 中
- 断电重启:RAM 中的数据丢失,Flash 中的程序依然完好