结构基础
结构基础
存储设备
FLASH
传统的ROM基本被淘汰,一旦写入出错芯片就废了,被FLASH闪存替代
FALSH可以修改,分为NAND和NOR
NAND FLASH:
存储单元按“NAND 逻辑门”串联,结构简单(1 个晶体管/单元),相同芯片面积可集成更多存储单元 → 容量大、成本低(如 1TB NAND 芯片很常见)。
NOR FLASH:
**存储单元按“NOR 逻辑门”并联,结构复杂(2-3 个晶体管/单元) → 容量小、成本高(通常最大几百 MB)。
SRAM,SDARM
ARM这里SRAM和X86的里CPU的cache类似,集成在CPU内部
| 对比项 | SRAM | SDRAM |
|---|---|---|
| 存储单元 | 6 晶体管(触发器) | 1 晶体管 + 1 电容 |
| 刷新需求 | 无需刷新 | 需定期刷新(防数据丢失) |
| 速度 | 极快(ns 级,与 CPU 同步) | 较快(10~50ns,与时钟同步) |
| 容量 | 小(KB~MB 级,内置) | 大(MB~GB 级,外置) |
| 成本 | 高(芯片面积大) | 低(适合大容量) |
| 典型位置 | MCU 内部(内部 RAM) | 外部扩展(独立芯片) |
SDRAM(synchrous dynamic)是同步的,CPU还要检测时钟线,还要定时刷新,功耗大,面积很大(看下图)改进·为DDRx
SRAM(static)CPU直接访问,无需其他
地址
嵌入式中,CPU会为所有存储型设备创建统一的地址空间

CPU:STM32F429IGT6,LQFP176,FLASH:1024KB,SRAM:256KB
◆ 外扩 SDRAM:W9825G6KH,32M 字节
◆ 外扩 NAND FLASH:MT29F4G08,512M 字节
◆ 外扩 SPI FLASH:W25Q256,32M 字节
◆ 外扩 EEPROM:24C02,256 字节
编译时会给程序划分字段
程序会被下载到内部FLASH中,运行时再根据需要从FLASH中加载到SDRAM/SRAM(const等只读的不会被频繁访问的片段会被保存在FLASH,其他变量需要频繁访问会被加载到SDRAM/SRAM)
运行时会加载汇编文件初始化各种环境(c语言,中断,堆栈……),在跳转到main.c
外扩的存储设备不和CPU总线相连,不参与地址分配,有独立的地址,用协议访问
外设
外设:内部总线AHB(advanced high bus)不能直接访问的设备
外设分为片上外设和片内外设
片上外设:AHB不能直接访问,APB(advanced peripheral bus)可以访问(PWM,定时器,看门狗)
片外外设:AHB,APB(总线)都不能直接访问,通过片上外设GPIO,I2C,串口来通信
比如外接屏幕(iic协议,SPI),蓝牙模块(串口协议),循迹模块(GPIO)等


