stm32 单片机 flash以ram的理解
发布网友
发布时间:2024-09-25 22:49
我来回答
共1个回答
热心网友
时间:2024-10-05 10:09
本文旨在解析STM32单片机中的Flash和RAM功能以及程序启动逻辑,以STM32F429ZIT6为例。该单片机配备2048KB的NOR Flash和256KB SRAM,其中包含CCM(64KB)等不同区域。Flash相当于嵌入式系统中的硬盘,存储程序和数据,即使断电也能保持数据不丢失,NOR Flash允许程序直接运行无需读入RAM。STM32F429的Flash起始地址为0x8000000,与程序启动和中断向量表位置紧密相关。
SRAM包括CCM和连续的三部分,CCM专为CPU设计,可加快数据访问速度,其他组件如DMA不能访问。RAM中,64KB的CCM独立于其他区域,而剩余的112K、16K和64K地址连续。使用MDK Keil时,注意分散加载文件配置,以确保正确映射内存大小。
程序启动过程涉及boot引脚设置和启动文件(startup_XXX.s)的执行,通常在Flash的0x8000000开始。运行时,编译后的map文件会显示Code、Ro-data(Flash)、RW-data(RAM,上电时从Flash加载)和ZI-data(RAM,已初始化)的分配。默认情况下,程序从Flash启动,执行时会先加载RW-data到RAM,然后CPU从Flash逐条读取代码,RW-data在RAM中执行,体现了NOR Flash的特性。
热心网友
时间:2024-10-05 10:14
本文旨在解析STM32单片机中的Flash和RAM功能以及程序启动逻辑,以STM32F429ZIT6为例。该单片机配备2048KB的NOR Flash和256KB SRAM,其中包含CCM(64KB)等不同区域。Flash相当于嵌入式系统中的硬盘,存储程序和数据,即使断电也能保持数据不丢失,NOR Flash允许程序直接运行无需读入RAM。STM32F429的Flash起始地址为0x8000000,与程序启动和中断向量表位置紧密相关。
SRAM包括CCM和连续的三部分,CCM专为CPU设计,可加快数据访问速度,其他组件如DMA不能访问。RAM中,64KB的CCM独立于其他区域,而剩余的112K、16K和64K地址连续。使用MDK Keil时,注意分散加载文件配置,以确保正确映射内存大小。
程序启动过程涉及boot引脚设置和启动文件(startup_XXX.s)的执行,通常在Flash的0x8000000开始。运行时,编译后的map文件会显示Code、Ro-data(Flash)、RW-data(RAM,上电时从Flash加载)和ZI-data(RAM,已初始化)的分配。默认情况下,程序从Flash启动,执行时会先加载RW-data到RAM,然后CPU从Flash逐条读取代码,RW-data在RAM中执行,体现了NOR Flash的特性。