文章写的很好,待整理

1.【STM32】HardFault问题详细分析及调试笔记

https://blog.csdn.net/m0_54916619/article/details/129979222

需备注:

cortex m4:  实际行为是,寄存器按照编号从小到大的顺序在栈帧中从数值较小地址往数值较大的地址排列.    进入异常时自动入栈R0-R3 R12 LR PSR

2.   stm32死机问题的处理

https://blog.csdn.net/qq_27087571/article/details/84580532

void hard_fault_handler_c(unsigned int * hardfault_args)
{
static System_Crash_Info crash_info;
memset(&crash_info, 0, sizeof(System_Crash_Info)); crash_info.is_crash = 1;
crash_info.crash_time = (unsigned int)HAL_GetTick(); crash_info.stacked_r0 = ((unsigned long) hardfault_args[0]);
crash_info.stacked_r1 = ((unsigned long) hardfault_args[1]);
crash_info.stacked_r2 = ((unsigned long) hardfault_args[2]);
crash_info.stacked_r3 = ((unsigned long) hardfault_args[3]);
crash_info.stacked_r12 = ((unsigned long) hardfault_args[4]);
crash_info.stacked_lr = ((unsigned long) hardfault_args[5]);
crash_info.stacked_pc = ((unsigned long) hardfault_args[6]);
crash_info.stacked_psr = ((unsigned long) hardfault_args[7]); crash_info.MFSR = (*((volatile unsigned char *)(0xE000ED28))); //存储器管理fault状态寄存器
crash_info.BFSR = (*((volatile unsigned char *)(0xE000ED29))); //总线fault状态寄存器
crash_info.UFSR = (*((volatile unsigned short int *)(0xE000ED2A)));//用法fault状态寄存器
crash_info.HFSR = (*((volatile unsigned long *)(0xE000ED2C))); //硬fault状态寄存器
crash_info.DFSR = (*((volatile unsigned long *)(0xE000ED30))); //调试fault状态寄存器
crash_info.MMAR = (*((volatile unsigned long *)(0xE000ED34))); //存储管理地址寄存器
crash_info.BFAR = (*((volatile unsigned long *)(0xE000ED38))); //总线fault地址寄存器 u8 ret = STMFLASH_EraseSector(STMFLASH_GetFlashSector(SYS_CRASH_INFO_ADDR));
u8 ret2 = STMFLASH_Write(SYS_CRASH_INFO_ADDR, (u32 *)(&crash_info), (3+sizeof(System_Crash_Info))/4); while (1);
}

这里的潜在意思是, ARM平台的C函数入参,按顺序,依次可以获取到R0 R1 R2 R3 等,所以可以通过静态的crash_info将其记录下来。

3.  RTOS任务切换和异常的相关性很大

基于STM32 F103 CM3内核 freeRTOS 任务切换原理

https://zhuanlan.zhihu.com/p/599020378

.

cortex-m3 m4 异常机制的更多相关文章

  1. 【ARM-Linux开发】ARM7 ARM9 ARM Cortex M3 M4 有什么区别

    ARM7 ARM9 ARM Cortex M3 M4 区别 arm7 arm9 可以类比386和奔腾, 不同代,arm9相比arm7指令集和性能都有所增强,arm7和arm9都有带mmu和无mmu的版 ...

  2. ARM 架构、ARM7、ARM9、STM32、Cortex M3 M4 、51、AVR 之间有什么区别和联系?(转载自知乎)

    ARM架构:  由英国ARM公司设计的一系列32位的RISC微处理器架构总称,现有ARMv1~ARMv8种类. ARM7:       一类采用ARMv3或ARMv4架构的,使用冯诺依曼结构的内核. ...

  3. 【freertos】002-posix模拟器设计与cortex m3异常处理

    目录 前言 posix 标准接口层设计 模拟器的系统心跳 模拟器的task底层实质 模拟器的任务切换原理 cortex M3/M4异常处理 双堆栈指针 双操作模式 栈帧 EXC_RETURN 前言 如 ...

  4. STM32学习之路入门篇之指令集及cortex——m3的存储系统

    STM32学习之路入门篇之指令集及cortex——m3的存储系统 一.汇编语言基础 一).汇编语言:基本语法 1.汇编指令最典型的书写模式: 标号 操作码        操作数1, 操作数2,... ...

  5. stm32和cortex M3学习内核简单总结

    1.stm32综述 2.寄存器组 3.操作模式和特权级别 4.存储器映射 5.中断和异常 6.其他 Stm32综述 这可以说是我第一款认真学习的单片机了,学完这个就要开启我通往arm9的大门了,接下来 ...

  6. Atitit 异常机制与异常处理的原理与概论

    Atitit 异常机制与异常处理的原理与概论 1. 异常vs 返回码1 1.1. 返回码模式的处理 (瀑布if 跳到失败1 1.2. 终止模式  vs 恢复模式(asp2 1.3. 异常机制的设计原理 ...

  7. C++ 异常机制分析

    C++异常机制概述 异常处理是C++的一项语言机制,用于在程序中处理异常事件.异常事件在C++中表示为异常对象.异常事件发生时,程序使用throw关键字抛出异常表达式,抛出点称为异常出现点,由操作系统 ...

  8. 【转载】C++异常机制的学习

    参考了这篇文章:http://blog.chinaunix.net/uid-24517549-id-4079174.html 关于线程 进程和线程的概念相信各位看官早已耳熟能详.在这里,我只想带大家回 ...

  9. Java异常机制

    Java异常分类 异常表明程序运行发生了意外,导致正常流程发生错误,例如数学上的除0,打开一个文件但此文件实际不存在,用户输入非法的参数等.在C语言中我们处理这类事件一般是将其与代码正常的流程放在一起 ...

  10. 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)

    ---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...

随机推荐

  1. 题解:AT_arc173_b [ARC173B] Make Many Triangles

    背景 前几天打了比赛,崩麻了,所以来水一篇题解.LC真睿智 题意 给你 \(n\) 个点,问最多能组成几个三角形. 分析 听说可以随机化.这道题就是一个简单贪心. 我们考虑,如果没有共线的点,那么答案 ...

  2. Python 实时获取任务请求对应的Nginx日志

    需求描述 项目需求测试过程中,需要向Nginx服务器发送一些用例请求,然后查看对应的Nginx日志,判断是否存在特征内容,来判断任务是否执行成功.为了提升效率,需要将这一过程实现自动化. 实践环境 P ...

  3. ByteHouse高性能向量检索实践——“以图搜图”

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   随着 LLM 技术的发展,向量检索与向量数据库也受到业界持续关注,它们能够为LLM提供外置记忆单元,通过提供与 ...

  4. 蒸馏网络中的bias是指什么? —— 论文《Distilling the Knowledge in a Neural Network》—— 知识蒸馏

    论文地址: https://arxiv.org/pdf/1503.02531.pdf 在蒸馏网络中会遇到手动调整bias的说法,但是这个bias在论文中又没有明细说明是怎么个bias,具体论文出处: ...

  5. pytorch 第三方模块 GraphNAS 安装成功记录

    实验室的小师妹要安装pytorch的第三方模块,经过多方努力没有安装上,后来我接手后也是感觉头疼. 该模块地址:   https://github.com/GraphNAS/GraphNAS 该模块主 ...

  6. 【转载】How to Use t-SNE Effectively —— (机器学习数据可视化) t-SNE使用指南

    原文地址:https://distill.pub/2016/misread-tsne/ 说明: 原文是比较有名的一个指南性博文,讲的就是t-SNE技术的一些使用注意事项和说明,属于说明性文章,内容很不 ...

  7. [USACO22FEB] Paint by Rectangles P 题解

    前言 没用线段树的小常数.小短码. 题目链接:洛谷. 题意简述 给出 \(n\) 个平行于坐标轴的矩形,各边所在直线互不重合,钦定最外面为白色,对这个平面图黑白染色,分别求黑色块数和白色块数. 题目分 ...

  8. 【干货】Apache DolphinScheduler2.0升级3.0版本方案

    升级背景 因项目需要使用数据质量模块功能,可以为数仓提供良好的数据质量监控功能.故要对已有2.0版本升级到3.0版本以上,此次选择测试了3.0.1 和 3.1.1 两个版本,对进行同数据等任务调度暂停 ...

  9. 聚焦OLAP性能提升,火山引擎ByteHouse发布六大场景解决方案

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群.   性能在数据分析中至关重要,它直接决定数据处理的效率与及时性,进一步对数据驱动的企业决策造成影响.   举个例 ...

  10. 电脑打不开CHM格式文件解决办法

    如图所示 比如说jdk1.8的api 双击打开后,这个样子 就ok了