当前位置: 首页 > article >正文

STM32的内存分区

1.C语言的内存分为以下几个区

  • 代码区:存放函数的二进制代码
  • 全局区(又叫静态区):
    • 分为bss和data:bbs存放未初始化全局变量和静态变量;data存放已初始化的全局变量和静态变量。
    • .bbs段会在代码执行之前,初始化为0。
  • 堆区:动态分配的内存,即存放程序员malloc的内存
  • 栈区:局部变量,函数入参,返回值

局部常量存在栈中
全局常量存在.data中

2.STM32中的内存分区

  • STM32中,除了代码区和全局区的data段存在FLASH中,其余全部存在SRAM中

  • .data会在运行时,复制到SRAM中,全局常量除外

  • stm32内存分布如下
    在这里插入图片描述

  • 局部常量存在栈区、即sram中

  • 全局常量存在全局区的.data即FLASH中
    在这里插入图片描述

  • keil中内存计算
    build之后,build output串口显示以下值,可以通过计算得到SRAM和FLASH占用

RAM = RW-data + ZI-data // SRAM = 已初始化可读写变量 + 未初始化可读写变量
ROM = Code + RO-data + RW-data // FLASH = 代码段 + 常量 + 已初始化可读写变量


http://www.kler.cn/a/449790.html

相关文章:

  • 工业相机镜头选型知识详解
  • 使用 acme.sh 申请域名 SSL/TLS 证书完整指南
  • 动态规划<四> 回文串问题(含对应LeetcodeOJ题)
  • 【前端】入门指南:Vue中使用Node.js进行数据库CRUD操作的详细步骤
  • CASA(Carnegie-Ames-Stanford Approach) 模型原理及实践
  • 第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
  • 【python】数据结构之栈与队列
  • 51单片机仿真摇号抽奖机源程序 12864液晶显示
  • Flink集群批作业实践:七析BI批作业执行
  • 【源码阅读系列】(六) Android 中的进程和线程
  • kubevirt网络
  • Jmeter测试脚本编写技巧
  • 从零开始学前端之HTML(三)
  • 咸虾米壁纸微信小程序下载图片到相册saveImageToPhotosAlbum功能修改
  • PLSQL 客户端连接 Oracle 数据库配置
  • 算法day_3数组中的单一元素和二进制位颠倒
  • autMan奥特曼机器人-相关命令
  • 【漏洞复现】F5 BIG-IP Next Central Manager SQL注入漏洞(CVE-2024-26026)
  • (10)YOLOv8算法基本原理
  • EasyPlayer.js播放器在React项目中应如何使用?
  • Jenkins Api Token 访问问题
  • MySQL 数据备份与恢复详解
  • 压缩为zip和gzip工具类
  • MySQL快速扫描
  • ios按键精灵脚本开发:ios悬浮窗命令
  • PHP中替换某个包或某个类