STM32的Code、RO-data、RW-data、ZI-data和RAM以及flash的关系

对于刚接触stm32编程的同学来说,通常不知道如何选择合适型号的芯片来开发自己的项目,下面就分析一下多大的片内ram以及flash能符合我们项目的需求。

不知道大家有没有注意到,我们的项目每次编译完成后,都会出现这个Program Size,然后后面跟着Code、RO-data、RW-data、ZI-data,其实这里就是编译软件在告诉我们,这个项目需要用到多少ram以及flash才能正常运行。

Program Size中各个参数的含义

1.Code(代码)

Code部分包括程序的被调用的函数代码量,如果只是被定义了,不被调用,那么不会增加到Code里面,Code被保存在我们MCU的flash里面。

(1)定义addcode函数前 code为1256

(2)定义addcode函数后,未调用,code依旧为1256

(3)调用addcode函数以后,Code增加到1272字节,由此可见,只有函数被调用以后,才会被存到flash计算到代码量中

2.RO-data(只读数据)

RO-data(只读数据)表示所有被调用的全局常量数据,RO-data被保存在MCU的flash中,因为它们在程序执行期间不会被修改。

(1)定义了常量数组,被调用前,RO-data=460,RO-data没有增加

(2)定义了常量数组,被调用后,RO-data=464,RO-data增加了4,说明我们定义的全局常量只有被调用后才会加入到RO-data中

注意的是,此结果博主亲测只有在Optimization为Level 0的情况下,自己写的这个常量才被加入到RO-data中,在level 1/2/3的时候都被当做冗余量被优化。

3.RW-data(读写数据)

RW-data(读写数据)代表被调用的已经初始且初始化不为0的全局变量,RW-data会先被存储到flash里面,等待程序运行的时候,再被复制到RAM中,所以RW-data既占用一份flash,也会占用一份RAM

(1)定义变量数组,被调用前,RW-data=12字节。

(2)定义变量数组,被调用后,RW-data=1012字节,说明初始化后不为0的常量数组被调用后会增加到RW-data中。

4.ZI-data(零初始化数据)

ZI-data(零初始化数据)是被调用的初始化为0或者未初始化的全局变量,ZI-data被保存在我们MCU的RAM中。

(1)定义未初始化的数组被调用前,ZI-data=1292,无变化。

(2)定义未初始化的数组被调用后,ZI-data=2292,增加了1000,说明被调用到的未初始化的全局变量是存在ZI-data中的。

Program Size和RAM以及flash的关系

由上面分析得出

RAM=RW-data+ZI-data

flash=Code+RO-data+RW-data

我们在挑选单片机芯片的时候,RAM和flash要根据实际项目大于上面算出的容量,才能确保我们的项目能够正常运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/788931.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【uni-app+Vue3】 API请求封装:让接口调用更便捷

前言:uni-app是一款基于Vue.js框架的跨平台开发工具,可以将代码编译成H5、小程序、App等不同平台的应用。在进行uni-app开发时,网络请求是必不可少的环节。为了方便开发,我们可以封装一些网络请求方法,以便在多个页面中…

数学建模美赛论文文档

目录 1. 摘要:1.1 阅读并理解题目1.2 背景介绍1.3 问题提出 2. 目录:2.1 引言(Introduction)2.2 假设与合理性说明(Assumptions and Justifications)2.3 符号说明(Notations)2.4 模型…

185240-00G 同轴连接器

型号简介 185240-00G是Southwest Microwave的2.92 mm连接器。该连接器采用铍铜合金、工具钢和不锈钢等优质材料,并经过金镀层和钝化处理,确保其稳定可靠,经久耐用。它还兼容欧盟 RoHS 和 WEEE 指令,是一位环保使者,致力…

教师管理小程序的设计

管理员账户功能包括:系统首页,个人中心,教师管理,个人认证管理,课程信息管理,课堂记录管理,课堂统计管理,留言板管理 微信端账号功能包括:系统首页,课程信息&…

Linux 防火墙配置指南:firewalld不同服务管理的应用案例(十个)

🏡作者主页:点击! 🐧Linux基础知识(初学):点击! 🐧Linux高级管理专栏:点击! 🔐Linux中firewalld防火墙:点击! ⏰️创作时间&…

高品质标准化诊断肝素诱导性血小板减少症试剂盒—HIT AlertTM Kit

肝素诱导的血小板减少症是一种免疫机制介导的综合征,实验室通常进行免疫学和功能学检测来诊断。免疫学通过检测PF4/肝素抗体来诊断,不考虑其激活血小板能力,比如ELISA,化学发光免疫等检测手段。功能学检测引起肝素依赖性血小板活化…

Scala学习

Scala学习 scala介绍 Scala 是 Scalable Language 的简写,是一门多范式的编程语言 Scala是把函数式编程思想和面向对象编程思想结合的一种编程语言。 大数据计算引擎Spark由Scala编写 scala特点 多范式: 面向对象函数式编程 兼容JAVA: 类库调用互操作 语…

2-1静态库

静态库制作 编写库文件 test.c #include<stdio.h> int main(void){printf("%d\n",add(3,5));return 0; }add.c int add(int a,int b){return ab; }生成.o(目标文件) 用nm查看.o文件 T代表add这个函数的链接性是外部链接&#xff0c;即全局可见&#xff0c;…

从两眼放光到心碎一地《长相思》第二季搞笑爱情转折

这《长相思》第二季的剧情&#xff0c; 简直是心脏按摩器升级版啊&#xff01; 爷爷一开口&#xff0c;要给玱玹安排馨悦当王后 我这小心脏差点就跟着‘嘭’一声 "哎呀&#xff0c;以为要上演宫廷版《速度与激情》 结果小夭女神一出手&#xff0c; 不是醋坛子翻&#…

信创:鲲鹏(arm64)+麒麟(kylin v10)离线部署k8s和kubesphere(含离线部署新方式)

本文将详细介绍&#xff0c;如何基于鲲鹏CPU(arm64)和操作系统 Kylin V10 SP2/SP3&#xff0c;利用 KubeKey 制作 KubeSphere 和 Kubernetes 离线安装包&#xff0c;并实战部署 KubeSphere 3.3.1 和 Kubernetes 1.22.12 集群。 服务器配置 主机名IPCPUOS用途master-1192.168.10…

600Kg大载重起飞重量多旋翼无人机技术详解

600Kg大载重起飞重量的多旋翼无人机是一种高性能的无人驾驶旋翼飞行器&#xff0c;具有出色的载重能力和稳定的飞行特性。该无人机采用先进的飞行控制系统和高效的动力系统&#xff0c;能够满足各种复杂任务的需求&#xff0c;广泛应用于物资运输、应急救援、森林防火等领域。 …

视语坤川大模型智能体平台亮相2024世界人工智能大会

7月4日-7月7日&#xff0c;以“以共商促共享以善治促善智”为主题的2024世界人工智能大会&#xff08;WAIC 2024&#xff09;在上海举办&#xff0c;世界顶级专家学者、知名企业代表、政界人士、高校组织等齐聚上海&#xff0c;共商发展、共话未来。 作为大会的重磅环节——昇…

逻辑运算及其基本概念,定理,算法,规律,卡诺图

逻辑运算及其基本概念&#xff0c;定理&#xff0c;算法&#xff0c;规律&#xff0c;卡诺图 文章目录 逻辑运算及其基本概念&#xff0c;定理&#xff0c;算法&#xff0c;规律&#xff0c;卡诺图开胃小菜运算1、与运算2、或运算3、非运算4、与非&#xff08;都1时为0&#xf…

Science|N型半导体水凝胶(柔性半导体器件/柔性健康监测/导电水凝胶/柔性电子)

2024年5月2日,北京大学雷霆(Ting Lei)课题组在《Science》上发布了一篇题为“N-type semiconducting hydrogel”的论文。论文内容如下: 一、 摘要 水凝胶是一类具有可调机械性能、多样生化功能和良好离子导电性的生物界面材料,但由于缺乏半导体特性,使得水凝胶在电子学中…

数据跨境传输法规日趋完善,企业如何规避合规风险?

随着全球化的发展&#xff0c;跨境数据传输变得日益频繁。在数字化时代&#xff0c;数据安全是企业运营的关键。数据跨境传输由于涉及不同国家和地区&#xff0c;其安全合规性面临着更大的风险和挑战。 2022年&#xff0c;国家网信办发布了《数据出境安全评估办法》&#xff08…

灭世男孩

《血腥复仇与反乌托邦之旅&#xff1a;<灭世男孩>的暴力美学盛宴》 在众多电影的海洋中&#xff0c;有一部独特而引人注目的作品——《灭世男孩》。这部由德国、南非和美国联合制作的电影&#xff0c;以其独特的风格、精彩的动作场面和深刻的主题&#xff0c;为观众带来了…

理解负载组电路-EAK负载电路解释

负载组具有安全、可靠、操作方便、使用寿命长等特点。了解控制、冷却和负载元件电路的布局和功能对于理解负载组的运行、为应用选择负载组和维护负载组非常重要。以下各节将描述这些电路。 EAK负荷组运行概述 负载组接收来自电源的电力&#xff0c;将其转换为热量&#xff0c;…

Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析

章节内容 上一节我们完成了内容&#xff1a; Flume 启动测试Flume Conf编写Flume 测试发送和接收数据 背景介绍 这里是三台公网云服务器&#xff0c;每台 2C4G&#xff0c;搭建一个Hadoop的学习环境&#xff0c;供我学习。 之前已经在 VM 虚拟机上搭建过一次&#xff0c;但…

[AI 大模型] Meta LLaMA-2

文章目录 [AI 大模型] Meta LLaMA-2简介模型架构发展新技术和优势示例 [AI 大模型] Meta LLaMA-2 简介 Meta LLaMA-2 是 Meta 推出的第二代开源大型语言模型&#xff08;LLM&#xff09;&#xff0c;旨在为研究和商业应用提供强大的自然语言处理能力。 LLaMA-2 系列模型包括从…

数电基础 - 数制,码制

目录 一. 简介 数制 码制 二. 进制 十进制&#xff08;Decimal&#xff09;&#xff1a; 二进制&#xff08;Binary&#xff09;&#xff1a; 八进制&#xff08;Octal&#xff09;&#xff1a; 十六进制&#xff08;Hexadecimal&#xff09;&#xff1a; 三. 进制的转…