STM32堆栈方面知识点

news2024/11/30 0:52:37

最近弄json,发现经常的堆溢出,然后找问题。因为对STM32堆栈问题没有深刻认识,就花时间好好研究下了堆栈并且做了验证

1.栈地址区间确定

首先找到启动文件,我的启动文件在startup_stm32f40xx.s,一般的启动文件也都在startup_stm32fxxxx.s文件里

__initial_sp      这个参数是栈顶地址,因为栈的增长是向下增长,所以这个参数我们可以理解为栈的起始地址,我设置的栈尺寸是0x400,所以栈的地址范围是 __initial_sp  ~ (__initial_sp  - 0x400),__initial_sp 这个参数是keil编译代码之后计算出来的,有多种方法确定。

2.确定__initial_sp数值

(1)方法:1:编译代码,编译完成之后,在代码所在文件夹里找到一个.map的文件,放入keil

(2)方法2:Debug执行代码,然后查看0x08000000这个地址的数据,前四个字节就是

 (3)方法3:直接根据RW-data + ZI-data

因为SRAM的基地址是0x20000000,所以上面的地址应该加上基址,也就跟上面吻合了

2.栈的功能

(1)函数中的局部变量是保存在栈里的,确认方法如下

 

地址为 0x200007a8  在 0x200007b0  ~  0x200003B0范围里,所以在栈里。

3.堆相关

(1)网上有网友说,全局变量、静态变量是放在堆里的,这个是错误的。堆的知识点,回头有时间我再研究一下。

(2)函数名是存放在flash中的!

4.总结

(1)函数内部局部变量是放在栈里面的

(2)函数名是存放在flash中的

(3)如果运行freertos时,在任务里调用函数时,此时这个函数中内部的变量是存放在freertos分配的内存中,而不是栈里

(4)堆只有调用malloc时,分配的空间才在堆中

(5)实际使用过程中,函数局部变量占空空间大于栈分配空间时,会自动占用堆空间,而不会导致程序挂掉

(6)栈的起始点是栈顶,从顶部向下增长

(7)堆是从底部向上增长,堆栈是连接在一起的

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

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

相关文章

Linux之命令搜索

目录 Linux之命令搜索 Whereis命令 定义 基本信息 举例 which命令 定义 与whereis命令的区别 基本信息 举例 locate 命令 定义 优点 缺点 基本信息 案例 Linux之命令搜索 Whereis命令 定义 whereis --- 搜索系统命令的命令(像绕口令一样&#xff09…

Revit中如何为曲面墙体开洞口,一键开洞?

一、Revit中如何为曲面墙体开洞口 直线墙体开洞可以直接通过编辑轮廓来绘制洞口形状即可,或者可以通过选中墙体选择“墙-洞口”命令来开洞口。 但是曲面墙体开洞并没有那么简单,曲面墙体不能够编辑轮廓,并且选中曲面墙体“墙-洞口”命令只能够…

C++const函数的运用:深度解析const函数的魅力

C 深度解析const函数的魅力 1. C const函数的基本概念(Basic Concepts of const Functions in C)1.1 const函数的定义与特性(Definition and Characteristics of const Functions)1.2 const函数的使用场景(Usage Scena…

docker磁盘空间爆满 通过overlay2 目录名查找对应容器

docker磁盘空间爆满 通过overlay2 目录名查找对应容器 1、docker文件系统占用分析2、使用shell脚本通过overlay2 目录名查找对应容器 1、docker文件系统占用分析 du -sh /var/lib/docker/*看到占用磁盘空间最大的目录是docker存储根目录下的overlay2目录 再查看docker存储根目…

Android智能指针SP WP

1.概述 Android的C部分代码中有大量的sp/wp存在,意思是strong pointer和weak pointer,看字面意思就是指针相关的东西。C是通过new和delete进行内存的分配和释放的,但是有时候开发者会忘记使用delete导致内存泄露,所以Android中就…

设计师们都在用的AI作图神器,你还不抓紧入手一款

人工智能在机器和计算机控制的机器人中模拟人类智能过程。这允许计算机系统执行繁重的任务,帮助人类专注于更重要的事情。因此,多年来,工作场所对 AI 集成的需求不断增加。 同样,人工智能正迅速成为设计行业的一部分。在平面设计…

MyBatis与Spring的整合

学习目标: 掌握Spring与MyBatis的集成 掌握使用SqlSessionTemplate实现整合 掌握使用MapperFactoryBean实现整合 掌握Spring的事务切面实现声明式事务处理 掌握使用注解实现声明式事务处理 学习内容: 1.整合思路梳理 思路梳理 以上流程可以全部移…

RHCE 作业二

1. 第一步:配置服务端server 1>安装chrony [rootserver ~]# yum install chrony -y 2>编辑配置文件,修改为阿里的时间服务地址 [rootserver ~]# vim /etc/chrony.conf 3> 重启服务 [rootserver ~]# systemctl restart chronyd 4>测试 5>…

证件照制作教程:如何使用在线工具制作高质量的证件照

证件照制作:让你的形象更加完美 介绍 证件照是人们在日常生活、工作和学习中必不可少的一项证明身份的重要文件。而证件照的质量好坏不仅会直接影响到证件审核的效率,还会影响到自己形象的好坏。为了让自己的形象更加完美,我们需要制作高质…

公网使用SSH远程连接安卓手机Termux - Android手机服务器

文章目录 1.安装ssh2.安装cpolar内网穿透3.远程ssh连接配置4.公网远程连接5.固定远程连接地址 转载自cpolar极点云的文章:公网SSH远程连接Termux – 电脑使用安卓Termux 「无需公网IP」 使用安卓机跑东西的时候,屏幕太小,有时候操作不习惯。不…

Python期末复习题库(下)——“Python”

小雅兰期末加油冲冲冲!!! 1. (单选题)下列关于文件打开模式的说法,错误的是( C )。 A. r代表以只读方式打开文件 B. w代表以只写方式打开文件 C. a代表以二进制形式打开文件 D. 模式中使用时,文件可读可写 2. (单选题)下列选项中,以追加…

【操作系统】04.设备管理

IO软件层次 IO设备 机械部件 分类 设备控制器 寄存器编址 IO控制方式 程序直接控制方式 中断驱动方式 DMA方式 通道控制方式 中断处理程序 设备驱动程序 设备独立性软件 IO调度 设备保护 设备分配与回收 静态分配和动态分配 数据结构 设备分配步骤 改进 缓冲区管理 缓冲区的…

5款冷门小工具,让你的电脑变得与众不同

每个人的电脑中都会安装很多软件,可能还保留着很多不为人知的冷门软件。不过虽然冷门,但绝不意味着低能,相反很多冷门软件的功能十分出色。闲话少说,接下来我就给大家推荐5款冷门小工具,看一看有没有你喜欢的。 1.图标…

供应商评估时要考虑的 5 个关键因素

在任何供应商评估中,无论是新供应商还是现有供应商,衡量其生产能力、业绩、风险、质量和环境影响都很重要。然而,如果没有一个有组织的评估方法和一个较大的框架来使评估信息为你所用,单靠衡量这些因素将无济于事。 为什么要进行…

跨部门沟通:这8条方法和建议,让跨部门协作不再难搞!

想要在公司里做出成绩,跨部门沟通是至关重要的。但是,很多人都会遭遇跨部门协作困难的问题。别担心,我们来给你解决方案! 1.保持开放和透明 让你的队友们知道你的想法和工作计划,让他们能够对你提出反馈意见。 2.要…

点成分享丨ELISA实验的类型及原理

ELISA实验,即酶联免疫吸附测定(Enzyme-Linked Immunosorbent Assay)实验,是免疫学中的经典实验之一,它是一种利用抗原抗体特异性结合进行免疫反应的定性和定量检测方法,目前已被广泛应用于生物学、医学、植…

ai语音机器人接听自动外呼配置

一,添加能转接到机器人的拨号方案 {cti_robot_flow_exists({destination_number})} 这是判断路由条件设置的机器人话术是否存在 cti_robot ${destination_number} 启动机器人流程 set park_timeout3600 设置park最大的时间,机器人和用户最大的通话时间…

ChatGPT智能聊天系统重磅升级!新增分销功能!快来体验吧!

ChatGPT智能聊天系统更新至v1.1.2版本啦~主要更新内容如下: 新增功能 注册账号 生成对话海报 分销功能 支持小程序 会员功能控制 敏感词库 用户支持加入黑名单 后台-用户列表新增用户开通会员的筛选 细节优化 对话内容markdown渲染 用户条数用完&#xf…

性能测评:2核2G4M腾讯云轻量应用服务器CPU内存带宽系统盘

腾讯云轻量2核2G4M服务器配置三年396元,一年112元,一定要选择三年,因为续费比较贵,腾讯云轻量应用服务器具有100%CPU性能,系统盘为50GB SSD盘,4M带宽下载速度512KB/秒,月流量300GB,折…

Spring:什么是Spring框架?①

一、Spring简介由来 技术创新就是为了简化技术开发,无数大师耗费心力目的只有一个,如何让开发更为简洁? Spring应运而生,Spring:泉水,春天。意味让技术开发如春天的泉水那般流畅自然。 二、Spring是什么&am…