RT-Thread学习笔记(六):RT_Thread系统死机日志定位

RT_Thread系统死机日志定位

一、RT_Thread系统死机日志定位

RT-Thread 系统发生hardfault死机时,系统默认会打印出一系列寄存器状态帮助用户定位死机问题。那么要定位死机问题,必须先明白相关寄存器含义。

二、Cortex-M3 / M4架构知识

2.1 Cortex-M3 / M4架构概述

2.2 寄存器用途

  • R0~R12,通用目的寄存器

    • R0~R7为低寄存器,许多16位指令只能访问低寄存器;
    • R8~R12位高寄存器,可用于32位指令和几个16位指令,如 MOV
  • R13,栈指针(SP) :存储当前任务的栈顶地址

    • MSP 主栈指针:
    • PSP 进程栈指针 : 用于嵌入式OS
    • 注 : 栈用于存储函数调用、局部变量和中断处理等
  • R14, 链接寄存器(LR) : 存储函数调用指令的返回地址

    • 当函数调用结束时,该地址用于返回到调用函数的位置。
  • R15, 程序计数器(PC)

    此外还有以下寄存器

  • 状态寄存器(PSR):存储处理器的状态信息,包括标志位、中断使能位和处理模式等

  • 控制寄存器(CONTROL):用于控制处理器的特殊功能,例如处理器模式的切换和栈指针的选择

  • 中断控制器(NVIC)寄存器:这些寄存器用于配置和控制中断。包括中断使能寄存器(ISER)、中断禁用寄存器(ICER)、中断优先级寄存器(IPR)等

三、排查步骤

  1. 找到MCU打印的hardfault日志,RT-Thread系统已集成,裸机或其他RTOS系统可移植cmbacktrace库;日志会包含上述描述寄存器和各线程栈的运行状态、线程栈占用情况
  2. 分析LR指针,定位hardfault前运行函数
    2.1 结合map表所有函数首地址范围,定位.
  3. 在定位位置上下关联排除查看分析
相关推荐
CappuccinoRose14 小时前
Rust学习文档(二)
开发语言·后端·学习·rust
集芯微电科技有限公司14 小时前
替代LM4890音频功率放大器低电磁干扰辐射
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设
冻感糕人~15 小时前
大模型学习指南:收藏这份AI Agent四层工程地图(小白程序员必备)
java·大数据·人工智能·学习·大模型·agent·大模型学习
曲三酒馆15 小时前
“强比命打,钱娃D写”——这8个字就是我人生的全部了![特殊字符]
学习·生活·娱乐
统计学小王子15 小时前
《数学少年-确定与不确定》(第四章:“骰子不骗人“)
学习·初中数学科普
ysa05103015 小时前
优先队列贪心dp
c++·笔记·算法·板子
ACP广源盛1392462567315 小时前
国产算力互联IX8024@ACP#Kimi K3 开源后的端侧部署硬件架构分析
大数据·人工智能·分布式·单片机·嵌入式硬件
其实防守也摸鱼15 小时前
前端应用的离线暂停更新策略:构建稳定可靠的渐进式部署方案
服务器·前端·数据库·学习·ai·命令行·linux系统
MartinYeung516 小时前
[论文学习]Mamba:具有选择性状态空间的线性时间序列建模
学习
j7~16 小时前
【数据结构初阶】队列的实现(链式队列 + 循环队列)--详解
c语言·开发语言·数据结构·学习·队列·queue·c\c++