1. 存储器概述:嵌入式系统的记忆基石
在调试STM32F103的I2C接口时,我曾遇到过一段令人抓狂的经历。当时外接的EEPROM芯片死活不响应,用逻辑分析仪抓取波形发现所有信号都正常,最后发现是地址引脚没接上拉电阻导致电平不稳。这个教训让我深刻认识到——理解存储器特性与硬件设计同等重要。
嵌入式系统中的存储器就像人类大脑的不同记忆区域:有的反应极快但容量有限(如SRAM),有的需要"回忆时间"但能永久保存(如Flash),还有的像随身笔记本可以随时擦写(如EEPROM)。作为开发者,我们必须根据数据特性选择最合适的存储介质。比如智能手环中,计步数据需要高频写入适合用FRAM,而固件程序则存储在Nor Flash中。
从1984年Intel推出第一款商用Flash存储器至今,嵌入式存储技术已发展出数十种分支。现代MCU通常集成多种存储单元:Cortex-M3内核的STM32F103就包含64KB SRAM和512KB Flash,还能通过FSMC接口扩展外部存储器。这种混合架构正是为了平衡速度、成本和功耗的三角关系。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 易失性存储器:系统运行的临时工作区
2.1 SRAM:高速缓存的首选方案
在树莓派4B的PCB上,紧挨着博通处理器的就是4颗美光D9WFL系列SRAM芯片。这种采用6晶体管结构的存储单元之所以昂贵,源于其独特的双稳态电路设计——两个交叉耦合的反相器形成正反馈,使得数据在通电期间永不丢失。某次我用示波器测量SRAM的访问时序发现:当CPU以1.8GHz频率访问时,其读写延迟仅3.2ns,比DRAM快20倍以上。
但SRAM的密度瓶颈令人头疼。同样1GB容量,DRAM芯片只需1颗,SRAM则需要8颗并联。这也是为什么STM32H743虽然主频高达400MHz,但片上SRAM仍然只有1MB。在无人机飞控系统中,我们通常将卡尔曼滤波算法需要的矩阵运算数据放在SRAM中,而把地图数据存放在外部SDRAM。
实战经验:使用CCM RAM(紧耦合存储器)时要特别注意——这块位于Cortex-M内核内部的64KB SRAM虽然零等待周期,但DMA无法直接访问。我在开发电机控制算法时,就曾因为误将DMA缓冲区设在CCM区域导致数据传输出错。
2.2 DRAM:大容量存储的经济之选
拆开任一款智能手机,你会发现D
