Cortex-M3与Aurix的堆栈

汽车电子嵌入式 2024-05-29 07:35

1. 在ARM Cortex-M3架构中,堆栈通常由两个寄存器来管理:主堆栈指针(MSP)进程堆栈指针(PSP)

1.1MSP是处理器的默认堆栈指针,用于保存中断处理程序的现场。当芯片复位或发生中断时,处理器会自动将MSP的值保存到堆栈中,并使用一个新的堆栈来保存中断处理程序的现场。MSP的值可以通过专门的寄存器进行读写,以便在需要时进行堆栈切换。

1.2. PSP是用于保存应用程序现场的堆栈指针。在应用程序执行期间,PSP用于保存当前执行线程的现场。当发生中断时,处理器会自动将PSP的值保存到堆栈中,并使用MSP来保存中断处理程序的现场。PSP的值也可以通过专门的寄存器进行读写,以便在需要时进行堆栈切换。

1.3. 其实说白了就是如果你跑的是裸机程序,他用的就是一个堆栈的机制,就是只跑MSP的堆栈。但是如果你要跑操作系统,他就要用到双堆栈机制,比如程序正在顺序执行,突然产生一个中断,处理器把TASK的信息现场保存在PSP栈中,然后进入中断服务程序,中断服务程序中使用MSP栈,退出中断时从PSP栈中还原现场,返回用户程序。还有就是TASK的切换也是在PSP里切的,比如在一个时间片里TASK1没有执行完,他就会把TASK的现场保存在PSP栈中,之后执行TASK2,当TASK2执行完后,在还原PSP栈中TASK1的现场继续执行。

1.4 堆栈是一种用于保存函数调用现场和局部变量的数据结构,它的操作是先进后出(Last-In-First-Out,LIFO)。栈帧(stack frame)是在函数调用期间在堆栈上分配的一块内存区域,用于存储函数的局部变量、参数和返回地址等信息。在函数调用过程中,每个函数都会分配一个新的栈帧,用于保存它的执行上下文。当函数返回时,栈帧被弹出堆栈,释放内存空间,并将控制权返回给调用者所以说白了栈就是嵌入式RAM的一块连续内存空间,当程序执行时,会将相关数据压入栈中,栈指针会向下移动,分配新的内存空间。当函数执行出栈操作时,栈指针会向上移动,释放内存空间

2. 上面说的是Cortex-M3内核的指针堆栈寄存器,但是TC397与Cortex-M3不同,他是有5个核,每个核都有自己的堆栈空间,它分为内核堆栈(core stack)和用户堆栈(user stack)和中断堆栈(interrupt stack)。如下图,下图没有说内核堆栈(core stack),是因为(core stack)是用于跑OS的。内核堆栈用于保存操作系统内核的执行上下文,而用户堆栈用于保存应用程序的执行上下文。中断栈(interrupt stack)则是用于保存中断处理程序执行上下文的堆栈空间。上面说的3个堆栈空间,其实就是说在跑操作系统和中断的时候用的是MSP,跑任务,用的用户堆栈,也就是PSP。所谓的内核堆栈和用户堆栈是基于OS的堆栈指针的指向是根据当前处理器所处的模式(特权模式或用户权模式)来确定的

2.1 在特权模式下,处理器可以访问所有的处理器资源和指令,包括特殊的系统寄存器、中断控制器、内存管理单元等。也就是说,在特权模式下,处理器可以访问用户模式下的堆栈。处理器可以使用PSP指针来访问用户堆栈,并读取或写入用户堆栈上的数据。

2.2 而在用户模式下,处理器只能访问受限的处理器资源和指令。用户模式下,处理器只能访问用户的数据和代码,无法访问系统的关键资源。这样可以确保用户代码不会对系统的稳定性和安全性产生影响。

也就是说内核堆栈是在特权模式下,并且用的MSP,但是他可以方访问PSP。而中断也是在特权模式下的MSP里,可以方访问PSP。用户堆栈就是在非特权模式下只能用的PSP

 2.3 因为中断和异常处理通常需要访问操作系统内核代码和资源,而这些资源只能在特权模式下访问,所以中断堆栈必须位于特权模式下。

 2.4 中断堆栈包含了一些重要的信息,如 CPU 寄存器、程序计数器、堆栈指针等,这些信息用于在中断或异常处理完成后恢复原来的执行上下文。

2.5 内核堆栈和用户堆栈用于保存执行上下文,中断堆栈用于保存中断处理程序的执行上下文。

除此之外还有三个寄存器,一个是SP也就是A[10],一个ISP,还有一个PSW.

A[10]这个就在GPR中,也称之为SP(Stack Pointer),与传统内核的SP类似.如下图:

ISP在CSFR中,专用于中断的Stack.进入中断后自动切换使用ISP,以防止对主任务Stack的误操作.

PSW中的IS用于标记当前Stack Pointer状态. PSW.IS==0时,表示Upper Context已经被保存,A10(SP)已经装入ISP的值.当PSW.IS==1时,表示已经使用的ISP的值(比如中断嵌套),此时SP已经是ISP的值,无须再装入ISP的值.

3. 代码中的堆栈

3.1 栈(操作系统):存局部变量、函数,调用函数时会开辟栈区,函数结束时就自动回收,遵循后进先出的原则,从高地址向低地址增长。

静态内存分配:静态内存是程序编译执行后系统自动分配,由系统自动释放,静态内存是栈分配的,特点:不持久。

使用静态内存分配的变量有:全局变量&静态变量

3.2 堆(操作系统): malloc、realloc、calloc等开辟的内存就在堆,从低地址向高地址增长,由程序员分配和释放,系统不自动回收,所以一定要记得申请了就要释放,以免溢出。

在嵌入式系统中,使用堆内存相对于栈内存来说是比较少的。嵌入式系统通常拥有有限的内存资源,而使用堆内存可能会导致内存碎片和性能问题。在嵌入式系统中,通常会限制堆内存的大小,并且使用堆内存时需要非常小心,以确保不会出现内存泄漏或者堆溢出等问题。在某些情况下,嵌入式系统需要使用堆内存,例如当需要动态创建对象或者动态分配数组时。在这种情况下,程序员需要小心地管理堆内存,以确保不会出现内存泄漏或者堆溢出等问题。

动态内存分配:动态内存是开发者手动分配的,是堆分配的。特点:持久。

在C语言中,全局变量分配在内存中的静态存储区,非静态的局部变量【动态局部变量】(包括形参)是分配在内存的动态存储区,该存储区被称为栈。除此之外,c语言还允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要是随时释放。这些数据临时存在一个特别的自由存储区,称为堆区。

4. 如何调试

————————————————                       

原文链接:https://blog.csdn.net/xiandang8023/article/details/131724885



End

「汽车电子嵌入式在CSDN上同步推出AUTOSAR精进之路专栏,本专栏每个模块完全按实际项目中开发及维护过程来详细介绍。模块核心概念介绍、实际需求描述、实际工程配置、特殊需求介绍及背后原理、实际工程使用经验总结。目的是让读者看完每一个章节后能理解原理后根据需求完成一个模块的配置或者解决一个问题。」


点击文章最后左下角的阅读原文可以获取更多信息


或者复制如下链接到浏览器获取更多信息

https://blog.csdn.net/qq_36056498/article/details/132125693


文末福利




1
.如需汽车电子嵌入式收集的学习文档,
后台回复“

资料

即可免费下载;

2.为便于技术交流,创建了汽车电子嵌入式技术交流群,可尽情探讨AP,CP,DDS,SOME/IP等前沿热点话题,后台回复“加群”即可加入;



注:本文引用了一些第三方工具和文档,若有侵权,请联系作者删除!


推荐阅读

汽车电子嵌入式精彩文章汇总第一期:20210530-20230703

汽车电子嵌入式精彩文章汇总第2期

TC3xx芯片GTM模块-CMU,CCM,TBU详解

TC3xx芯片GTM模块-TOM详解

AUTOSAR架构下PWM模块配置实践

TC3xx芯片GTM模块-TIM详解

AUTOSAR架构下ICU模块配置实践

TC3xx芯片电源管理系统PMS详解

TC3xx DMA模块详解

TC3xx芯片SMU模块详解

如何监控TC3xx芯片PFlash的ECC错误

TC3xx芯片RAM的错误检测

TC3xx芯片的总线内存保护

AUTOSAR架构下MCAL Modules软件分区问题分析

AUTOSAR架构下内部看门狗复位检测

TC3xx芯片时钟监控

TC3xx芯片电压监控和温度监控

嵌入式基础:环形缓冲区ring buffer

【OS】AUTOSAR架构下的中断和异常向量表

【OS】AUTOSAR Os是如何启动第一个Task的

编译链接专题第1篇-make和makefile介绍

编译链接专题第2篇-初识makefile结构

编译链接专题第3篇-初识makefile中的伪目标

编译链接专题第4篇-变量和变量的不同赋值方式

编译链接专题第5篇-预定义变量的使用

编译链接专题第6篇-变量的高级主题(上)

编译链接专题第7篇-变量的高级主题(下)

编译链接专题第8篇-条件判断语句




End


欢迎点赞,关注,转发,在看,您的每一次鼓励,都是我最大的动力!

汽车电子嵌入式

微信扫描二维码,关注我的公众号

评论
  • 随着通信技术的迅速发展,现代通信设备需要更高效、可靠且紧凑的解决方案来应对日益复杂的系统。中国自主研发和制造的国产接口芯片,正逐渐成为通信设备(从5G基站到工业通信模块)中的重要基石。这些芯片凭借卓越性能、成本效益及灵活性,满足了现代通信基础设施的多样化需求。 1. 接口芯片在通信设备中的关键作用接口芯片作为数据交互的桥梁,是通信设备中不可或缺的核心组件。它们在设备内的各种子系统之间实现无缝数据传输,支持高速数据交换、协议转换和信号调节等功能。无论是5G基站中的数据处理,还是物联网网关
    克里雅半导体科技 2025-01-10 16:20 449浏览
  •   在信号处理过程中,由于信号的时域截断会导致频谱扩展泄露现象。那么导致频谱泄露发生的根本原因是什么?又该采取什么样的改善方法。本文以ADC性能指标的测试场景为例,探讨了对ADC的输出结果进行非周期截断所带来的影响及问题总结。 两个点   为了更好的分析或处理信号,实际应用时需要从频域而非时域的角度观察原信号。但物理意义上只能直接获取信号的时域信息,为了得到信号的频域信息需要利用傅里叶变换这个工具计算出原信号的频谱函数。但对于计算机来说实现这种计算需要面对两个问题: 1.
    TIAN301 2025-01-14 14:15 113浏览
  • 新年伊始,又到了对去年做总结,对今年做展望的时刻 不知道你在2024年初立的Flag都实现了吗? 2025年对自己又有什么新的期待呢? 2024年注定是不平凡的一年, 一年里我测评了50余块开发板, 写出了很多科普文章, 从一个小小的工作室成长为科工公司。 展望2025年, 中国香河英茂科工, 会继续深耕于,具身机器人、飞行器、物联网等方面的研发, 我觉得,要向未来学习未来, 未来是什么? 是掌握在孩子们生活中的发现,和精历, 把最好的技术带给孩子,
    丙丁先生 2025-01-11 11:35 463浏览
  • 01. 什么是过程能力分析?过程能力研究利用生产过程中初始一批产品的数据,预测制造过程是否能够稳定地生产符合规格的产品。可以把它想象成一种预测。通过历史数据的分析,推断未来是否可以依赖该工艺持续生产高质量产品。客户可能会要求将过程能力研究作为生产件批准程序 (PPAP) 的一部分。这是为了确保制造过程能够持续稳定地生产合格的产品。02. 基本概念在定义制造过程时,目标是确保生产的零件符合上下规格限 (USL 和 LSL)。过程能力衡量制造过程能多大程度上稳定地生产符合规格的产品。核心概念很简单:
    优思学院 2025-01-12 15:43 530浏览
  • 数字隔离芯片是现代电气工程师在进行电路设计时所必须考虑的一种电子元件,主要用于保护低压控制电路中敏感电子设备的稳定运行与操作人员的人身安全。其不仅能隔离两个或多个高低压回路之间的电气联系,还能防止漏电流、共模噪声与浪涌等干扰信号的传播,有效增强电路间信号传输的抗干扰能力,同时提升电子系统的电磁兼容性与通信稳定性。容耦隔离芯片的典型应用原理图值得一提的是,在电子电路中引入隔离措施会带来传输延迟、功耗增加、成本增加与尺寸增加等问题,而数字隔离芯片的目标就是尽可能消除这些不利影响,同时满足安全法规的要
    华普微HOPERF 2025-01-15 09:48 83浏览
  • 随着数字化的不断推进,LED显示屏行业对4K、8K等超高清画质的需求日益提升。与此同时,Mini及Micro LED技术的日益成熟,推动了间距小于1.2 Pitch的Mini、Micro LED显示屏的快速发展。这类显示屏不仅画质卓越,而且尺寸适中,通常在110至1000英寸之间,非常适合应用于电影院、监控中心、大型会议、以及电影拍摄等多种室内场景。鉴于室内LED显示屏与用户距离较近,因此对于噪音控制、体积小型化、冗余备份能力及电气安全性的要求尤为严格。为满足这一市场需求,开关电源技术推出了专为
    晶台光耦 2025-01-13 10:42 510浏览
  • 根据Global Info Research(环洋市场咨询)项目团队最新调研,预计2030年全球无人机电池和电源产值达到2834百万美元,2024-2030年期间年复合增长率CAGR为10.1%。 无人机电池是为无人机提供动力并使其飞行的关键。无人机使用的电池类型因无人机的大小和型号而异。一些常见的无人机电池类型包括锂聚合物(LiPo)电池、锂离子电池和镍氢(NiMH)电池。锂聚合物电池是最常用的无人机电池类型,因为其能量密度高、设计轻巧。这些电池以输出功率大、飞行时间长而著称。不过,它们需要
    GIRtina 2025-01-13 10:49 201浏览
  • 流量传感器是实现对燃气、废气、生活用水、污水、冷却液、石油等各种流体流量精准计量的关键手段。但随着工业自动化、数字化、智能化与低碳化进程的不断加速,采用传统机械式检测方式的流量传感器已不能满足当代流体计量行业对于测量精度、测量范围、使用寿命与维护成本等方面的精细需求。流量传感器的应用场景(部分)超声波流量传感器,是一种利用超声波技术测量流体流量的新型传感器,其主要通过发射超声波信号并接收反射回来的信号,根据超声波在流体中传播的时间、幅度或相位变化等参数,间接计算流体的流量,具有非侵入式测量、高精
    华普微HOPERF 2025-01-13 14:18 493浏览
  • 食物浪费已成为全球亟待解决的严峻挑战,并对环境和经济造成了重大影响。最新统计数据显示,全球高达三分之一的粮食在生产过程中损失或被无谓浪费,这不仅导致了资源消耗,还加剧了温室气体排放,并带来了巨大经济损失。全球领先的光学解决方案供应商艾迈斯欧司朗(SIX:AMS)近日宣布,艾迈斯欧司朗基于AS7341多光谱传感器开发的创新应用来解决食物浪费这一全球性难题。其多光谱传感解决方案为农业与食品行业带来深远变革,该技术通过精确判定最佳收获时机,提升质量控制水平,并在整个供应链中有效减少浪费。 在2024
    艾迈斯欧司朗 2025-01-14 18:45 68浏览
  • ARMv8-A是ARM公司为满足新需求而重新设计的一个架构,是近20年来ARM架构变动最大的一次。以下是对ARMv8-A的详细介绍: 1. 背景介绍    ARM公司最初并未涉足PC市场,其产品主要针对功耗敏感的移动设备。     随着技术的发展和市场需求的变化,ARM开始扩展到企业设备、服务器等领域,这要求其架构能够支持更大的内存和更复杂的计算任务。 2. 架构特点    ARMv8-A引入了Execution State(执行状
    丙丁先生 2025-01-12 10:30 471浏览
  • PNT、GNSS、GPS均是卫星定位和导航相关领域中的常见缩写词,他们经常会被用到,且在很多情况下会被等同使用或替换使用。我们会把定位导航功能测试叫做PNT性能测试,也会叫做GNSS性能测试。我们会把定位导航终端叫做GNSS模块,也会叫做GPS模块。但是实际上他们之间是有一些重要的区别。伴随着技术发展与越发深入,我们有必要对这三个词汇做以清晰的区分。一、什么是GPS?GPS是Global Positioning System(全球定位系统)的缩写,它是美国建立的全球卫星定位导航系统,是GNSS概
    德思特测试测量 2025-01-13 15:42 498浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦