嵌入式堆栈、ARM寄存器

ops/2024/9/20 7:25:19/ 标签: arm开发

栈里面存放的内容:局部变量和系统信息,函数调用链路也是系统信息的一环

ARM寄存器
LR:程序跳转的时候,返回到的地址就保存到此处
PC:程序计数器,pc 要执行的下一条指令地址,就存放在此处,每次指令执行完,就自动+4
SP{MSP、PSP}:
MSP的含义是Main_Stack_Pointer,即主栈
PSP的含义是 Process_Stack_Pointer,即任务栈

**堆和栈 相向生长,**最好的办法就是让堆和栈一个向上涨,一个向下涨,这样它们就可以最大程度地共用这块剩余的地址空间,达到利用率的最大化!!
主堆栈指针(MSP),或写作 SP_main。这是缺省的堆栈指针,它由 OS 内核、异常服务例程 以及所有需要特权访问的应用程序代码来使用.
进程堆栈指针(PSP),或写作 SP_process。用于常规的应用程序代码(不处于异常服用例 程中时)

在这里插入图片描述
在OS开发中,当运行中断服务程序的时候CONTROL的bit1是0,SP使用的是MSP;当运行线程程序的时候CONTROL的bit1是1,SP使用的是PSP

MDK Debug方法:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

ARM运行模式

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ARM指令和Trumb指令:

在debug查找链路时,要是偶数地址,如果SP指向的地址,栈里面的地址是奇数,一般是减1.
在 32 位 ARM 状态下执行 字对齐的 ARM 指令,
当处理器执行在ARM状态:
1)所有指令32bits宽
2)所有指令必须 word 对齐
3)所有 pc 值由 [31:2] 决定,bits[1:0] 未定义( 所以指令不能 halfword/byte对齐 )
在 16位 Thumb 状态下,执行半字对齐的Thumb指令。
在 Thumb 状态下,程序计数器 PC (Program Counter) 使用位[1]选择另一个半字。

汇编语句:

PUSH: 把寄存器的地址往堆栈里面压,堆栈的地址从高到低使用,一个寄存器就占4个字节。

HardFault:结合寄存器保留的值,可以去map表查找是什么变量,以及结合SP查看代码运行到哪里
找到MSP指向的地址的上一个函数。

RTOS查看任务目前运行到哪个地方:
用TCB_t去看

通过pxTopOfStack 可以看目前任务运行的地方,可以通过pcTaskName 来确定目前任务是哪个


http://www.ppmy.cn/ops/97199.html

相关文章

设计模式六大原则(四)--接口隔离原则

1. 简介 1.1. 概述 接口隔离原则(Interface Segregation Principle,简称ISP)是设计模式六大原则之一,它指出在一个系统中,应该尽量将接口拆分成更小、更具体的接口,避免出现过大、过于臃肿的接口。这个原则强调了接口的设计应该尽可能地符合“单一职责”原则,即每个接…

C# Unity 面向对象补全计划 之 Switch 表达式(c# 8.0++)

前置知识:lambda表达式,枚举与Switch(传统语法)C# & Unity 面向对象补全计划 之 匿名函数与Lambda表达式-CSDN博客 C# 8.0引入了 switch 表达式,是一个语法糖(类的属性get set就是一种语法糖&#xff0…

ubuntu 安装node

安装node 由于项目使用node 16.x开发,因此在Jenkins上,安装node 16.x 使用curl下载NodeSource的安装脚本: curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - 安装Node.js: sudo apt-get install -y nodejs验证…

[Day 59] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

區塊鏈的共識算法優化 前言 區塊鏈作為一種顛覆性的分布式賬本技術,其核心在於共識機制的設計。不同的共識算法如比特幣的工作量證明(Proof of Work, PoW)、以太坊的權益證明(Proof of Stake, PoS)以及其他如授權證明(Proof of Authority, PoA)、委託權益證明(Delegated Proof…

杭州百腾教育科技 TiDB 6.5 to 7.5 升级记录

作者: reAsOn2010 原文来源: https://tidb.net/blog/612103f3 背景 使用 TiDB 作为我们的全量数据库已经有六七年了,当时还是 2.0 版本。早期TiDB的迭代和新特性的发布对于实际使用的影响还是很大的,所以从那个时候开始就有每…

Windows Server 2012 R2服务器安装CVE-2024-38077补丁KB5040456的安装及问题解决

Windows 远程桌面授权服务远程代码执行漏洞CVE-2024-38077,该漏洞影响: 远程执行代码,漏洞最高严重性: 严重。本文记录了Windows Server 2012 R2服务器补丁KB5040456的安装及报错“此更新不适用于你的计算机”的问题解决过程。 一、漏洞相关信息 1.影响…

「OC」探索CALayer:基础知识与实用技巧简要介绍

「OC」探索CALayer:基础知识与实用技巧简要介绍 文章目录 「OC」探索CALayer:基础知识与实用技巧简要介绍前言认识CALayerCALayer的相关属性 UIView和CALayer区别联系创建UIView和CALayer的原因 开始创建CALayer视图层级CALayers 和 Sublayersposition与…

鸿蒙HarmonyOS实战:IPC与RPC设备内进程通信

基本 IPC(Inter-Process Communication)与RPC(Remote Procedure Call)用于实现跨进程通信,不同的是前者使用Binder驱动,用于设备内的跨进程通信,后者使用软总线驱动,用于跨设备跨进…

如何快速进入医疗器械维修行业

在当今医疗技术飞速发展的时代,医疗器械维修行业作为医疗服务的重要支撑,展现出了广阔的发展前景和就业机会。对于那些有志于进入这一领域的人来说,掌握正确的方法和途径至关重要。 首先,扎实的知识储备是进入医疗器械维修行业的…

以太网交换基础

1.以太网协议介绍 以太网是当今现有局域网(Local Area Network, LAN)采用的最通用的通信协议标准,该标准定义了在局域网中采用的电缆类型和信号处理方法。 冲突域 冲突域是指连接在同一共享介质上的所有节点的集合,冲突域内所有…

Graphpad Prism for Mac 医学绘图软件教程

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功 三、运行测试安装完成!!! 效果 一、下载软件 下载软件…

数据库学习(进阶)

数据库学习(进阶) Mysql结构:连接层:服务层(核心层):存储引擎层:系统文件层: 存储引擎(概述):存储引擎特点:InnoDB存储引擎:(为并发条…

day23-测试自动化之Appium的滑动和拖拽事件、高级手势ActionChains、手机操作API

目录 一、滑动和拖拽事件 1.1.应用场景 1.2.swipe滑动事件 1.3.scroll滑动事件 1.4.drag_and_drop拖拽事件 1.5.滑动和拖拽事件的选择 二、高级手势ActionChains 2.1.应用场景 2.2.使用步骤 2.3.注意点 2.4.方法 1).手指轻敲操作 (掌握) 2).手势按下和抬起操作(掌握&#xff0…

响应式Web设计:纯HTML和CSS的实现技巧-1

响应式Web设计(Responsive Web Design, RWD)是一种旨在确保网站在不同设备和屏幕尺寸下都能良好运行的网页设计策略。通过纯HTML和CSS实现响应式设计,主要依赖于媒体查询(Media Queries)、灵活的布局、可伸缩的图片和字…

React 入门第一天:从Vue到React的初体验

作为一名合格的前端工程师,怎么能只会Vue呢?学习React不仅是一场新技术的探索,更是对前端开发思维的一次重新审视。在这里,我将分享学习React的心得,希望能帮助那些和我一样从Vue转向React的开发者。 1. 为什么选择Re…

playbook(剧本)基本应用、playbook常见语法、playbook和ansible操作的编排

playbook(剧本): 是ansible⽤于配置,部署,和管理被控节点的剧本。⽤ 于ansible操作的编排。 使⽤的格式为yaml格式 一、YMAL格式 以.yaml或.yml结尾 ⽂件的第⼀⾏以 "---"开始,表明YMAL⽂件的开始(可选的) 以#号开头为注释 列表中的所有成员都开始于…

思特科技案例:北京欢乐谷光影乐园

01      在北京欢乐谷的亲子领域,藏着一处“面积近400平米,炫酷堪比魔法世界的、美轮美奂的光影空间,做到了“让娃来了不想走,一玩就是一下午”。    思特科技案例:北京欢乐谷光影乐园      02      作…

STM32之SPI读写W25Q128芯片

SPI简介 STM32的SPI是一个串行外设接口。它允许STM32微控制器与其他设备(如传感器、存储器等)进行高速、全双工、同步的串行通信。通常包含SCLK(串行时钟)、MOSI(主设备输出/从设备输入Master Output Slave Input&…

Godot关于fbx格式文件导入

查看文档fbx格式是支持,看我的文件也是存在,就是在编辑器中文件系统找不到。解决方案如下 确保你开启了fbx导入,之后自动重启就可以导入了,unity的模型也可以用。什么立方体胶囊之类的。

水利机械5G智能制造工厂物联数字孪生平台,推进制造业数字化转型

在当今这个科技日新月异的时代,水利机械行业正经历着一场深刻的变革,其中5G智能制造工厂物联数字孪生平台的引入,无疑是推动制造业数字化转型的重要驱动力。工业物联数字孪生平台是智能制造工厂的核心组成部分,它基于物理世界的真…