1. MCU存储器架构基础概念
在嵌入式系统开发中,MCU(微控制器单元)的存储器架构是决定其性能和应用场景的关键因素。不同于通用计算机的存储体系,MCU的存储结构通常更为精简,但设计上也更加注重实时性和能效比。
现代MCU的存储器系统主要由三种基本类型构成:Flash存储器、SRAM和特殊功能寄存器。Flash用于存储程序代码和常量数据,特点是断电后数据不丢失;SRAM作为运行时的数据存储,读写速度快但断电后数据会丢失;特殊功能寄存器则用于控制和配置MCU的各种外设。
从物理实现来看,MCU存储器架构可以分为哈佛架构和冯·诺依曼架构两种主要类型。哈佛架构的特点是程序存储器和数据存储器分开编址,可以同时访问,提高了执行效率;而冯·诺依曼架构则使用统一的地址空间,结构更简单但可能存在"冯·诺依曼瓶颈"。目前大多数现代MCU采用改进的哈佛架构,在保持高性能的同时也兼顾了灵活性。
2. Flash存储器的原理与应用
2.1 Flash存储技术基础
Flash存储器是MCU中用于存储程序代码和常量数据的主要非易失性存储器。其基本存储单元是浮栅MOSFET,通过向浮栅注入或释放电荷来改变晶体管的阈值电压,从而表示0或1的状态。
NOR Flash和NAND Flash是两种主要类型。MCU中通常使用NOR Flash,因为它支持随机访问,读取速度接近RAM,适合执行代码(XIP,eXecute In Place)。而NAND Flash主要用于大容量数据存储,如文件系统。
Flash存储器的编程和擦除操作有其特殊性:
- 擦除操作以块(Block)为单位,通常大小在4KB到128KB之间
- 编程操作以页(Page)为单位,通常为256B到2KB
- 每个存储单元有有限的擦写次数(通常10万次左右)
2.2 MCU中Flash的特殊考虑
在MCU应用中,Flash存储器有几个需要特别注意的特性:
-
等待状态(Wait State):随着MCU主频提高,Flash读取速度可能跟不上CPU速度,需要插入等待周期。例如,STM32F4系列在180MHz主频下访问Flash需要5个等待状态。
-
预取缓冲(Prefetch Buffer):现代MCU通常配备预取缓冲机制,提前读取后续指令来提高执行效率。例如,ARM Corte
