首页 > 其他分享 >RT-Thread 中 HardFault_Handler 分析

RT-Thread 中 HardFault_Handler 分析

时间:2023-12-23 23:01:02浏览次数:24  
标签:RT r0 Thread Handler lr HardFault

进 HardFault_Handler 前,CPU自动把 r0~r3, r12, lr, pc, psr 一个8个寄存器入栈,再把 lr 值改为 EXC_RETURN

代码解析:

220:把MSP值赋值给r0

221:TST指令 : 执行按位与操作,直接结果更新到状态寄存标志位Z,这个指令通常与EQ、EN这些条件码来组合使用,必须注意测试后的结果全部位为0时候,标志位Z=1,此时EQ成立,反之Z= 0,NE成立。

223:把PSP值赋值给r0

226:把r4 ~ r11的值放入r0指向的地址

230:把 lr 的值放入r0指向的地址

240:241调用函数会改变 lr 的值,所以入栈保存

241:rt_hw_hard_fault_exception的入参是 r0,内存存放的数据分别是 exc_return, r4~r11, r0~r3, r12, lr, pc, psr,正好和下面结构体对上

 

标签:RT,r0,Thread,Handler,lr,HardFault
From: https://www.cnblogs.com/god-of-death/p/17923795.html

相关文章

  • Android平台RTMP推送|轻量级RTSP服务能力封装代码实现
    好多开发者问我们,有没有针对Android平台RTMP直播推送、轻量级RTSP服务模块的进一步封装,可以更便捷的调用大牛直播SDK接口。为此,我们分享下我们针对Android平台SmartPublisher做的二次封装代码:packagecom.daniulive.smartpublisher;importandroid.util.Log;importjava.nio.By......
  • OpenPLC官方文档简单翻译(一)Get Started
    参考网址:https://autonomylogic.com/docs/openplc-overview/网站更新时间:2022-10-051.1 OpenPLCOverviewOpenPLC是一个开源的基于软件的可编程逻辑控制器。OpenPLC是基于IEC61131-3标准(PLCs的基本软件架构和编程语言的标准)。(这里有个视频简单介绍OpenPLC的使用和功能。视......
  • BeanFactory后置处理器之PropertySourcesPlaceholderConfigurer
    有的时候,我们需要读取配置文件中的属性,将其作为成员变量赋给对应的Bean,如下通过xml配置:<beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource"init-method="init"destroy-method="close"><propertyname="url"val......
  • 英语一课一练一年级扩展阅读02Art Class and Drawings-艺术课和绘画
    PDF格式公众号回复关键字:YYYKYLY02记忆树1Itistimefortheartclass.翻译现在是艺术课的时间。简化记忆艺术课句子结构1"Itistimefor":这是一个固定句型,用来表示做某件事情的时间到了。"it"(它)是形式主语,真正主语是"timefor"(做某件事情的时间);"for"(对于)是介词......
  • 神经网络量化流程(第一讲TensorRT)
    TensorRT量化工具,支持PTQ和QAT量化基本流程:读取模型-》转化为IR进行图分析,做一些优化策略一、TensorRT量化模式TensorRT有两种量化模式:分别是implicitly以及explicitly量化,前者是隐式量化,在7.0及之前版本用的较多;后者显式量化在8.0版本后才完全支持,就是可以加载带有QDQ信息的模......
  • ICEE-SPI-debug最好用 SPI 和 JTAG 或更优的(高达104MHz的)SPI通信保障飞速的debug响
    S25FL032P:32-MbitCMOS3.0VoltFlashMemorywith104-MHzSPI(SerialPeripheralInterface)MultiI/OBusSPANSIONZentelSDRAM;https://www.zerodayinitiative.com/blog/2019/9/2/mindshare-hardware-reversing-with-the-tp-link-tl-wr841n-routerhttps://openw......
  • C++ Qt开发:Charts折线图绘制详解
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QCharts折线图的常用方法及灵活运用。折线图(LineChart)是一种常用的数据可视化图表,用于展示随着......
  • Spring MVC 源码分析 - HandlerMapping 组件(三)之 AbstractHandlerMethodMapping
    HandlerMapping组件HandlerMapping组件,请求的处理器匹配器,负责为请求找到合适的 HandlerExecutionChain 处理器执行链,包含处理器(handler)和拦截器们(interceptors)handler 处理器是Object类型,可以将其理解成HandlerMethod对象(例如我们使用最多的 @RequestMapping 注解所标......
  • archlinux virtualbox 使用usb
    参照https://linux.cn/article-15287-1.html1.安装virtualbox扩展包(1)从archlinuxcn社区库安装sudopacman-Svirtualbox-ext-oracle该包的描述为OracleVMVirtualBoxExtensionPack(2)或者从virtualbox官网中下载扩展包OracleVMVirtualBoxExtensionPack再在virtu......
  • Java Spring Boot 配置读取进阶篇-@ConfigurationProperties && @Value
    之前我们学习了在SpringBoot如何读取application.properties/application.yaml配置文件的配置信息,在上文中我们主要是简单地实践了些简单的设置,这次我们带着同样的问题,如果配置更加复杂,我们的配置读取又应该怎么处理呢。本文的学习主要基于SpringBoot自带的库来解析配置,......