msp430栈空间分析,栈移除位置分析

MSP430之IAR map文件解析 MSP430之IAR map文件解析 编译环境:IAR for MSP430 5.50.2 MCU:MSP430F4793( 60K ROM 2.5K RAM ) DATA16_AN:本地未初始化数据(寄存器变量)寄存器变量 DATA16_AC:绝对地址常量 (使用@绝对地址) DATA16_N:静态和全局未初始化变量(_ _no_init _ _data16 static and glob... 阅读详情

map文件解析

编译环境:IAR for MSP430 5.50.2
MCU:MSP430F4793( 60K ROM 2.5K RAM )
DATA16_AN:本地未初始化数据(寄存器变量)寄存器变量
DATA16_AC:绝对地址常量 (使用@绝对地址)
DATA16_N:静态和全局未初始化变量(_ _no_init _ _data16 static and global variables)
DATA16_I:静态和全局初始化变量
DATA16_Z:初始化为0的静态和全局变量
DATA16_C:常量
DATA16_ID:DATA16_I中保持初始化值的静态和全局初始化变量
CODE:代码区
CSTART:启动代码区
INTVEC:中断向量表(interrupt vector)
RESET:复位向量(reset vector)

编译之后的map文件最下面三行信息:

36556 bytes of CODE memory
2538 bytes of DATA memory (+ 63 absolute )
246 bytes of CONST memory (+ 23382 absolute )
1
2
3
36 556 bytes of CODE memory
范围:1100-FFDF(占用MCU的ROM)
36 556:代码大小(CODE,CSTART)

2 538 bytes of DATA memory (+ 63 absolute )
范围:0200-0BFF
2538:占用RAM的大小(DATA16_I,DATA16_Z,DATA16_N,TLS16_I,DATA16,CSTACK)
范围:0000-01FF
63:调用的寄存器变量大小(DATA16_AN,不占用单片机RAM)

246 bytes of CONST memory (+ 23 382 absolute )
范围:1100-FFDF(占用MCU的ROM)
246:常量大小(DATA16_C)
23382:绝对地址常量大小(DATA16_AC)

参考博文

------------------------------以上内容参考他人---------------------------------------


栈分析

经过分析栈的深度可以通过map文件的CSTACK得到,CSTACK代表调用这个函数需要的栈空间大小

在这里插入图片描述

堆栈大小设置

在这里插入图片描述

修改后栈空间在map文件中显示位置
在这里插入图片描述

默认栈大小

在这里插入图片描述

生成map文件

在这里插入图片描述

分析栈空间大小

communication_up函数分析

  1. 函数地址在9FD8 - A021 一共(0x4a 字节)
  2. 调用该函数的位置仅仅有classfy_parse这个地方
  3. 这里的栈为8

在这里插入图片描述

在这里插入图片描述

create_header函数分析

  1. 函数地址在8F52 - 8FCB 一共(0x7a 字节)
  2. 调用该函数的位置有14地方这个地方
  3. 这里的栈为4

在这里插入图片描述

引用位置

在这里插入图片描述

read_rtc_rx8130函数分析

在这里插入图片描述

read_hos_data_from_index函数分析

在这里插入图片描述

栈溢出可能位置

  1. 这里申请了0xdc 大小的空间,默认时80字节栈,实际这里使用了220个字节,这就可能导致栈移除

在这里插入图片描述
2. 这里又有可能不会移除,移植栈是向下生长的,如果向下有足够的没有使用的空间,也就不会导致程序崩溃,毕竟他不会破坏有用的数据空间,如下图所示,栈空间特别足,不会使用到全局或静态变量的空间

在这里插入图片描述

IAR map文件分析 【代码】IAR ram统计。 阅读详情

相关推荐

MSP430G2553 LaunchPad开发板全解析:从入门到低功耗项目实战

微控制器(MCU)是嵌入式系统的核心,其通过执行预编程指令来控制硬件外设。MSP430系列MCU以其超低功耗架构闻名,其原理在于精细的时钟门控和多级休眠模式,能显著延长电池供电设备的续航。在物联网和便携式设备等应用场景中,低功耗设计至关重要。本文聚焦于TI MSP430G2553 LaunchPad开发套件,深入剖析其硬件设计,如eZ-FET调试器和BoosterPack生态接口,并详解如何利用EnergyTrace技术进行功耗分析与优化。通过UART、I2C等通信接口的实战示例,展示了如何构建一个完整的低

weixin_30920597的博客 396

IAR中map文件全解析

推荐 分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang 推荐在我的公众号「strongerHuang」或网站(www.strongerhuang.com)阅读以下教程: 1.EWSTM8系列教程01_IAR介绍、下载、安装和注册 2.EWSTM8系列教...

strongerHuang 2万+

IAR将变量定义在指定地址

1、将变量定义在指定地址 IAR中通过操作符@或者#pragma location指令来把全局变量和静态变量放到绝对地址上。 在此操作中,尤其注意的是要满足地址对齐。同时,所有变量必须声明为__no_init。   对于__no_init声明的变量是tentative definition(尝试性定义)。对于这类变量可以在用到它的所有模块中都可以定义。推荐的方式是在该变量定义在头文件中,那个

sunheshan的专栏 1万+

IAR分析内存重要的神器 - map文件全解析

“ 对于使用RTOS进行项目开发的朋友可能会有这样的疑惑,我创建的任务到底需要多大的堆栈空间才够呢?其实,除了使用RTOS开发,就是使用裸机进行开发的朋友同样也会遇到类似...

strongerHuang 1万+

PCL代码:PCD点云文件读取(测试环境配置成功)

/******************************************************************** 创建日期: 2020/10/09 创建时间: 20:11 文件名字: C:\Users\17806\Desktop\pcl教程\3.1\3.1\3.1.cpp -------------------------------------- 文件功能: 读取PCD格式的文件 ----------------

kangjielearning的博客 1417

IAR MAP文件分析

IAR编译器编译产生的MAP文件分析,后缀为.map 文件即可看到程序代码及数据在内存中的情况

MSP430FR59xx/FR58xx Bootloader与JTAG调试实战指南

在嵌入式系统开发中,Bootloader(引导加载程序)和JTAG接口是程序更新与深度调试的核心技术。Bootloader作为固化在芯片内部的独立小程序,其核心原理是为微控制器提供可靠的非侵入式固件更新通道,通常通过UART或I2C等标准通信接口实现。这项技术的核心价值在于支持产品的远程维护与现场升级,极大地延长了产品生命周期并降低了维护成本,广泛应用于物联网终端、智能表计等需要长期部署的场景。JTAG接口则遵循IEEE 1149.1标准,为开发者提供了底层硬件访问能力,支持单步调试、断点设置和内存查看,是

weixin_30787531的博客 360

科技中介服务机构如何构建轻量化、易操作的数智化服务工具?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

MSP430嵌入式信号处理:格型波数字滤波器(LWDF)原理与高效实现

在嵌入式信号处理领域,数字滤波器是实现信号调理与特征提取的核心技术。其原理是通过数学运算对离散时间信号进行频率选择性处理,滤除无用噪声,保留有效信息。从技术价值看,优秀的滤波器结构能在有限的计算资源下,兼顾性能、稳定性与功耗,这对于电池供电的物联网设备、便携式医疗仪器等场景至关重要。传统的IIR滤波器存在稳定性风险,而FIR滤波器则计算开销大。格型波数字滤波器作为一种特殊的IIR结构,因其源于无源模拟网络的波数字理论,先天具备极佳的数值稳定性和对系数量化误差的低敏感性。其核心系数被限制在[-1, 1]区间,

cuanji3287的博客 341

5分钟搞定!用ZLMediaKit搭建GB28181视频监控系统(含避坑指南)

本文提供了一份基于ZLMediaKit搭建GB28181视频监控系统的实战指南。文章详细介绍了从环境准备、核心组件(ZLMediaKit与SIP服务器)部署、摄像头配置到内外网穿透的完整流程,并重点分享了设备ID配置、防火墙设置等关键避坑经验,帮助开发者快速构建稳定可控的监控平台。

apple5的专栏 1072

Mac用户福音:三步搞定PyMol开源版,告别许可证弹窗(附Homebrew/MacPorts安装指南)

本文为Mac用户提供三步安装PyMol开源版的详细指南,帮助科研人员告别许可证弹窗烦恼。通过Homebrew或MacPorts包管理器安装开源核心,并与商业版图形界面整合,实现无干扰的分子可视化研究体验。特别适合MacOS用户快速部署PyMol进行结构生物学分析。

weixin_28743405的博客 191

TI-RTOS内存优化实战:从内核配置到应用编程的嵌入式减负心法

在嵌入式系统开发中,内存管理是核心挑战之一,尤其对于资源受限的微控制器(MCU)。其原理在于通过精细控制代码与数据在有限存储空间中的分配,以平衡功能、性能与成本。有效的内存优化技术能显著降低系统内存占用(Memory Footprint),提升能效比,并允许在更低成本的硬件上部署复杂应用。这在物联网终端、可穿戴设备、工业传感器等对功耗和成本敏感的嵌入式场景中价值巨大。本文聚焦于TI-RTOS这一广泛应用的实时操作系统,深入探讨如何通过内核配置裁剪、驱动库选择、栈空间精细化调整及编程规范优化,系统化地缩减内存

weixin_33713503的博客 362

别再手动算考勤了!教你用Python+企业微信API自动生成月度报表

本文介绍如何利用Python和企业微信API构建自动化考勤分析系统,实现从数据获取到可视化报表生成的全流程自动化。通过企业微信打卡接口获取数据,使用Pandas进行高效清洗和分析,并生成Excel和HTML格式的报表,大幅提升考勤统计效率。系统支持智能判定考勤状态,如迟到、早退等,并可通过定时任务实现月度自动化运行。

weixin_27875131的博客 282

嵌入式面试实战:C语言内存、外设时序与RTOS内核深度解析

嵌入式开发本质是软硬件协同的实时系统工程,其核心在于对内存布局、硬件时序和任务调度的底层掌控。C语言在嵌入式中远不止语法规范,volatile与const组合保障寄存器访问可靠性,结构体对齐与位域陷阱直接影响协议解析正确性;单片机外设操作实为微秒级时序控制艺术,I2C开漏特性、串口波特率动态计算、CAN终端电阻匹配均需硬件电路与驱动代码双重验证;FreeRTOS等实时操作系统则要求深入heap_4内存管理机制、tickless低功耗补偿逻辑及任务状态机设计能力。本文聚焦资源受限场景下的真实调试案例与面试高频

weixin_33997389的博客 218

ArcGIS 10.4 Desktop安装步骤。

步骤 1 :安装 LicenseManager 有了安装包以后,我们进入安装包文件目录,如图所示,首先需要安装ArcGIS license manager,即点击打开图中红色框中exe文件。 PS:安装 LicenseManager,关于 License 的安装路径一般默认即可,因为很小的,装C 盘也无所谓了,当然了自己改了也可以的,但是不建议! 即便修改路径,建议只改盘符,不修改相对路径方式! 如:C:\Program Files (x86)\ArcGIS\License10.6 修改为 D:\.

IT爱好者 2万+

C300 | 5680t | 新格林| AN5516 | 远程ONU升级指导

ONU的远程管理升级 1、ZTE C300 OLT : 1.1 环境拓扑: PC1(filezilla server)------(uplink_default-vlanID)OLT---------ONU | | mng1 1.2 配置部署: 1):PC1(filezilla server): IP:192.168.88.252 255.255.255.0 配置FTP-Server的用户名:gp...

Shelly的博客 3765

.map文件分析

在IAR的工程的Output文件夹中有个.map文件,该文件说明了各个函数占用的尺寸和地址。 "A0": place at 0x08000000 { ro section .intvec }; "P1": place in [from 0x08000000 to 0x08007fff] { ro }; "P2": place in [from 0x20000000 to 0x200027f

石头的博客 1万+

Spring AI 项目实战(十二):Spring Boot +AI + DeepSeek + 百度OCR 公司发票智能处理系统的技术实践(附完整源码)

本文介绍了基于百度OCR API与DeepSeek AI的发票智能处理系统,通过整合AI技术实现发票识别、信息提取和验证的全流程自动化。系统采用Spring Boot 3.2.0架构,结合百度OCR的高精度图像识别和DeepSeek的语义理解能力,显著提升了发票处理效率与准确率。关键技术包括多模型融合、智能错误纠正和自适应学习机制,实现了95%以上的识别准确率,将传统处理效率提升90%以上。该系统为数字化转型中的企业财务管理提供了智能化解决方案,具备高精度识别、实时处理、智能验证等核心优势。

博客 1625

IAR的map文件该如何分析?

存储的内容:.bss段专门存放未初始化的全局变量和未初始化的静态变量(包括函数内定义的静态变量)。,它通常也会被放置在.bss段,因为这同样符合“初始为零”的条件。模块摘要 (MODULE SUMMARY):以模块(源文件或库文件)为单位,统计每个模块占用的只读代码(ro code)、只读数据(ro data)和读写数据(rw data)的大小。存储器使用总计:在文件末尾,会汇总整个工程的存储器占用情况,清晰显示只读代码内存、只读数据内存和读写数据内存的大小,也就是最终程序占用的Flash和RAM总量。

硅农深芯的博客 1165

代谢组数据分析(十五):基于python语言构建PLS-DA分类预测模型

本教程阐述典型代谢组学数据分析工作流程,用于二元分类结果的研究。流程主要步骤如下:首先从 Excel 表格导入代谢物与实验数据,接着基于汇总 QC 进行数据清洗。随后借助主成分分析可视化检查数据质量,再开展两类单变量统计。之后运用偏最小二乘判别分析(PLS - DA)实施多变量分析,此过程涵盖模型优化(对比 R2 与 Q2)、置换测试及明确模型预测指标、确定特征重要性、对模型预测数据进行可视化。最终将统计表格导出至 Excel 表格,完整呈现从数据导入到分析结果输出的全过程。

专注生信领域 2867

am62x A53与R5F通信

AM62x是Ti的一款异构多核芯片。remoteproc驱动,硬编码(写死)了R5F/M4F固件的名字,这样驱动启动时,就会找硬件编码的固件,下面是其对应关系。值得注意的是,linux内核中的M4F remoteproc驱动启动M4F,而linux内核中的R5F remoreteproc驱动不启动R5F,相反,它attach到已经在boot阶段启动的R5F固件上。在/lib/firmware的真实固件名:,而我们生成的固件名如下所示,没有直接对应的,经确认,.out文件就是我们需要的,重命名后即可。

鹰之翔 1352

IAR MSP430设置合理堆栈大小(the stack pointer for stack is outside the stack range)

摘要: 本文给出IAR设置堆栈合理大小的详细方法,并分享一些好博文(icf及map讲解)。 最近在MSP430-169LCD(MSP430F169,RAM为2KB)调试一些ucos演示例子,IAR for MSP430默认的堆栈大小是80字节,编译可以通过,运行结果不确定性,调试过程会提示"the stack pointer for stack is outside ...

weixin_30838873的博客 1115

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IAR软件中查看代码大小

  在使用IAR软件时,各种调试功能使用起来都挺好的,唯一感觉有缺陷的就是不能查看代码大小。不像keil那样代码编译后可以直接看到大小。那么在IAR中有没有办法可以查看到代码的大小呢?当然是可以的,最简单的方法就是通过map文件查看。   什么是map文件呢?简单的说map文件就是代码在编译后,关于代码的各种信息描述的文本文件。比如哪些变量在哪个地址空间存储?每个函数的入口地址是啥?每个变量都占用了多大空间等,在map文件中都会有详细的描述。   现在通过一个简单的例程来演示如何查看map文件。   这是

HXYDJ的博客 4083

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

MSP430单片机C语言编程与实践(入门篇)之一 ----MSP430单片机简介和LaunchPad开发板

简要介绍了MSP430单片机的基本框架和G2系列的LaunchPad开发板

HappyEastpoint的博客 6121

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【IAR学习】学习笔记(摘抄)

 1、怎么生成.map文件: 4、IAR编译器默认支持的指针变量最大为0xFFFF,如果超过0XFFFF,则需要再OPTION内进行设置。Project-->Option-->General-->Target-->Data model选择Large。   原文有图片,请到原文看:http://www.52solution.com/bbs/redi...

我的笔记本 681
上一篇: N32L40x基于串口IAP实现(含升级工具)
下一篇: flash均衡磨损--循环存储--固定大小
Car12
博客等级 码龄14年 4520粉丝 517原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Car12

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值