做电影网站看电影算网站流量吗,网页免费模板,html做电商网站,seo软件推荐点击上方蓝字关注我哦#xff5e;01前言STM32片上自带FLASH和SRAM#xff0c;简单讲FLASH用来存储程序的#xff0c;SRAM是用来存储运行程序中的中间变量。本文详细分析下如何查看程序中FLASH和SRAM的使用情况。本文开发工具: keil5芯片: STM32F105VCT602FLASH和SRAM介绍FLA… 点击上方蓝字关注我哦01前言STM32片上自带FLASH和SRAM简单讲FLASH用来存储程序的SRAM是用来存储运行程序中的中间变量。本文详细分析下如何查看程序中FLASH和SRAM的使用情况。本文开发工具: keil5芯片: STM32F105VCT602FLASH和SRAM介绍FLASH存储器又成为闪存它与EEPROM都是掉电后数据不丢失的存储器但是FLASH的存储容量都普遍的大于EEPROM在存储控制上最主要的区别是FLASH芯片只能一大片一大片地擦除而EEPROM可以单个字节擦除。SRAM是静态随机存取存储器。它是一种具有静止存取功能的内存不需要刷新电路即能保存它内部存储的数据。STM32F1系列可以通过FSMC外设来拓展SRAM。注意SRAM和SDRAM是不相同的SDRAM是同步动态随机存储器同步是指内存工作需要同步时钟内部的命令的发送与数据的传输都以它为基准动态是指存储阵列需要不断的刷新来保证数据不丢失随机是指数据不是线性依次存储而是自由指定地址进行数据读写。STM32的F1系列是不支持SDRAM的。stm32不同型号的SRAM和FLASH大小是不相同的可在datasheet中查看如下图03编译结果分析在keil中编译结果如下图打开生成的map文件拉到最后可看到如下编译结果里面几个的含义Code代码空间本质是ARM指令( FLASH)。RO-data即 Read Only-data 表示程序定义的常量如 const 类型( FLASH)。RW-data即 Read Write-data 非0初始化的全局和静态变量占用的RAM大小同时还要占用等量的ROM大小用于存放这些非0变量的初值(FLASHRAM)。ZI-data即 Zero Init-data 0初始化的内存区的大小(该区域3个用途0初始化的全局和静态变量堆区栈区)(RAM)。由上可知程序占用FLASHCode RO-data RW-data 即map文件中ROM size 程序占用RAM RW-data ZI-data 即map文件中RW size常见的俩个疑问1、RW-data为什么会即占用Flash又占用RAM空间由前文知道RAM掉电数据会丢失RW-data是非0初始化的数据已初始化的数据需要被存储在掉电不会丢失的FLASH中上电后会从FLASH搬移到RAM中。2、为什么烧录的镜像文件不包含ZI-data呢我们都知道在烧写程序的时候需要烧写bin文件或者hex文件到STM32的flash中被烧写的文件称为镜像像文件image。image的内容包含这三个Code 、 RO-data 和 RW-data。通过第一个问题大家应该有所理解因为ZI数据是0没必要包含只要在程序运行前把ZI数据区域一律清零即可包含进去反而浪费Flash存储空间。扫码关注我们看更多嵌入式案例喜欢本篇内容请给我们点个再看