STM32程序占用的内存容量计算

STM32中程序占用内存容量

Keil MDK下Code, RO-data,RW-data,ZI-data这几个段:

  • Code存储程序代码。
  • RO-data存储const常量和指令。
  • RW-data存储初始化值不为0的全局变量。
  • ZI-data存储未初始化的全局变量或初始化值为0的全局变量。

占用的Flash=Code + RO Data + RW Data;

运行消耗的最大RAM= RW-data+ZI-data;

这个是MDK编译之后能够得到的每个段的大小,例如下图Program Size 中的Code R0 RW ZI

可以计算出占用的FLASH = 34456+456+172=34.26kB,占用的RAM=172+18908=18.63kB

STM32F103芯片的内存资源如下:

那么堆栈是如何分配的呢,堆栈的内存占用就是在上面RAM分配给RW-data+ZI-data之后的地址开始分配。

堆:编译器调用动态内存分配的内存区域。

栈:程序运行的时候局部变量的地方,先进后出,这种结构适合程序调用,所以局部变量用数组太大了都有可能造成栈溢出

堆栈溢出容易导致HaltFault。

堆栈大小的设置在启动文件start_stmf103xb.s中(以STM32F103为例):

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

域名解析

搭建网站:要将域名指向主机服务商提供的IP地址,请选择「A记录」;要将域名指向主机服务商提供的另一个域名,请选择「CNAME记录」。建立邮箱:需要设置「MX记录」,根据邮箱服务商提供的MX记录填写。A记录&…

【原创】最值得推荐wince应用和wince驱动入门书籍

作者:wogoyixikexiegliet应用方向? C,c#----------本人不做应用只知道用这两个语言用到,不敢推荐 -------也来补充一下。《PROGRAMMING MICROSOFT WINDOWS CE.NET》第三版英文原著Inside Windows CE - John Murray Programm…

oracle中错位函数,Oracle中的一些函数

select initcap(ename) from emp; 该语句能够使 ename 列的首字母大写。select concat(hello ,world) from dual; 该语句是hello 和 world 被连接起来 concat()select ename, substr(ename,-2,2) from emp; 该语句呢,这个substr(ename , -2 ,2 ) 我一直有个疑问 , 那就是 …

Bash数组操作教程

From: http://zengrong.net/post/1518.htm 一、定义数组 1. 使用[]操作符 ?View Code BASH1 2names[0]zrong names[1]jacky 2. 使用()直接赋值 ?View Code BASH1 2 3names(zrong jacky) # 或 names([0]zrong [1]jacky) 3. 使用declare -a定义数组。这种方法可以将一个空的…

matlab生成exe-在没有安装matlab的电脑上运行matlab生成的exe

在没有安装matlab的电脑上运行matlab生成的exe 本文介绍如何将matlab生成exe,并将该exe在没有安装matlab的电脑上运行,与以前的博文相似地,不说废话,直接干货。 1、编写函数 2、用mcc 生成exe mcc -m testexe.m 3、在matlab命令…

摄象机的格式发展史

大家可能都知道什么是摄象机,也可能经常听说各种各样的摄象机,什么,V8,D8,DV... ...在这么多陌生的名词中,你是否感觉到一 些迷茫,到底它们都代表着什么,到底里面有这怎样的一些门道…

Androd开发之广告栏设计

对于做Android开发的工程师对于这个效果的实现一定不陌生,本篇我将带领大家先简单实现这个效果,再为大家介绍一下其中的原理,方便新手学习,老手复习,内容简单易懂,没有基础一样学习,不扯没用的了…

oracle数据库归档闪回,[Oracle]Oracle的闪回归档

Oracle的闪回归档场景需求,由于管理数据库的一些核心表,在实施初期会有人为误删除的问题。Oracle 11gR2提供了闪回归档的特性,可以保证不用RMAN来恢复误删除的数据。实践如下:1.创建一个公共的闪回表空间。用于各个业务模块都可以使用的闪回区…

在exe执行机上安装MCR环境(matlab运行环境)

未安装matlab的执行机上运行matlab生成的exe,需要提前安装好MCR。此文介绍安装方法。 1、 D:\MATLAB\R2016a\toolbox\compiler\deploy\win64 中MCRinstaller.exe 安装到该计算机上 2、 Mbuild –setup 安装合适的编译器 3、 将M 文件编译为可执行文件的语法是 mc…

终端乱码的终极解决方案

From:http://handao.blog.techweb.com.cn/archives/193.html 初入linux的程序员们,经常会受到乱码的问候。可谓“始乱终弃”。因为乱码,并且最终放弃了linux的不在少数。好吧,言归正传,先看看各类乱码是怎么形成的。 中文字符乱码…

锐捷官方提供122套实验题.

锐捷官方提供122套实验题.http://u.115.com/file/f058c9459e转载于:https://blog.51cto.com/lidai/430896

db2存储结构换Oracle,DB2中实现Oracle的功能

1.如何实现分页显示的Oracle和DB2的写法Oracle 可以这样实现﹕SQL>select rownum,* from BSEMPMS where rownum >5 and rownum <100;DB2 可以这样实现﹕select * from (select ROW_NUMBER() over() as a, db2admin.bsempms.* fromdb2admin.bsempms) as temp where a&g…

iOS中assign、copy 、retain等关键字的含义

assign&#xff1a; 简单赋值&#xff0c;不更改索引计数copy&#xff1a; 建立一个索引计数为1的对象&#xff0c;然后释放旧对象retain&#xff1a;释放旧的对象&#xff0c;将旧对象的值赋予输入对象&#xff0c;再提高输入对象的索引计数为1 Copy其实是建立了一个相同的对象…

公布生成cscope.out, cscope.files, tags的脚本文件

通过VIM搭建一个IDE&#xff0c;网上的文章有很多&#xff0c;这里就不献丑了。 下面记录下生成tags&#xff0c;cscope.out&#xff0c; cscope.files的脚本文件 一、windows版本(.bat) del cscope.out cscope.files tags echo del "cscope.out cscope.files tags&qu…

Qt Label自适应显示Logo图片

一、要求 Qt Creator Ui中的Label标签控件显示一张Logo图片&#xff0c;要求图片自适应控件的大小。 二、实现&#xff08;代码&#xff09; QImage Image;//声明QImage 对象 Image.load(":/image/image/logo.jpg");//加载图片&#xff0c;前提是该图片存在项目的…

外刊评终极平板电脑十大功能:防眩目屏幕在列

在目前的平板电脑市场&#xff0c;还没有哪一款产品能够满足消费者的所有需求。因此美国著名IT杂志《PCWorld》网站专栏作家评出终极平板电脑的十大功能特点。1. 重量和外形尺寸 目前市场的多数平板电脑的厚度都至少有0.5英寸&#xff08;约合1.27厘米&#xff09;&#xff0c;…