单片机调试技巧--栈回溯

 

 

 

 

 

 

 

 

 

在启动文件中修改 

					IMPORT rt_hw_hard_fault_exceptionEXPORT HardFault_Handler
HardFault_Handler    PROC; get current contextTST     lr, #0x04               ; if(!EXC_RETURN[2])ITE     EQMRSEQ   r0, msp                 ; [2]=0 ==> Z=1, get fault context from handler.MRSNE   r0, psp                 ; [2]=1 ==> Z=0, get fault context from thread.STMFD   r0!, {r4 - r11}         ; push r4 - r11 registerSTMFD   r0!, {lr}               ; push exec_return registerTST     lr, #0x04               ; if(!EXC_RETURN[2])ITE     EQMSREQ   msp, r0                 ; [2]=0 ==> Z=1, update stack pointer to MSP.MSRNE   psp, r0                 ; [2]=1 ==> Z=0, update stack pointer to PSP.PUSH    {lr}BL      rt_hw_hard_fault_exceptionPOP     {lr}ORR     lr, lr, #0x04BX      lrENDP

 

调用的硬件中断函数 

#define rt_uint32_t unsigned int
struct exception_info
{rt_uint32_t exc_return;rt_uint32_t r4;rt_uint32_t r5;rt_uint32_t r6;rt_uint32_t r7;rt_uint32_t r8;rt_uint32_t r9;rt_uint32_t r10;rt_uint32_t r11;rt_uint32_t r0;rt_uint32_t r1;rt_uint32_t r2;rt_uint32_t r3;rt_uint32_t r12;rt_uint32_t lr;rt_uint32_t pc;rt_uint32_t psr;
};/** fault exception handler*/
void rt_hw_hard_fault_exception(struct exception_info * exception_info)
{unsigned int *app_sp;int i;app_sp = (unsigned int *)(exception_info + 1);  /* context + 16*4 */printf("psr: 0x%08x\r\n", exception_info->psr);printf("r00: 0x%08x\r\n", exception_info->r0);printf("r01: 0x%08x\r\n", exception_info->r1);printf("r02: 0x%08x\r\n", exception_info->r2);printf("r03: 0x%08x\r\n", exception_info->r3);printf("r04: 0x%08x\r\n", exception_info->r4);printf("r05: 0x%08x\r\n", exception_info->r5);printf("r06: 0x%08x\r\n", exception_info->r6);printf("r07: 0x%08x\r\n", exception_info->r7);printf("r08: 0x%08x\r\n", exception_info->r8);printf("r09: 0x%08x\r\n", exception_info->r9);printf("r10: 0x%08x\r\n", exception_info->r10);printf("r11: 0x%08x\r\n", exception_info->r11);printf("r12: 0x%08x\r\n", exception_info->r12);printf(" lr: 0x%08x\r\n", exception_info->lr);printf(" pc: 0x%08x\r\n", exception_info->pc);printf("stacks: \r\n");i = 0;for (i = 0; i < 1024; ){printf("%08x ", *app_sp);app_sp++;i++;if (i % 16 == 0)printf("\r\n");}printf("\r\n");while (1);
}

 

 

fromelf  --text  -a -c  --output=xxx.dis  Objects\xxx.axf

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/209739.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9.华为OD技术面手撕代码实录:旋转矩阵

旋转矩阵 给你一幅由 N N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。 示例 1: 给定 matrix = [[1,2,3],[4,5,6],[7,8,9] ],原地旋转输入矩阵,使其变为: [[7,4,1],[8,5,2],[9,6,3] ]示例 2: 给定 matrix = [[ 5, 1, 9,11],[ 2, 4…

VSCode 使用

目录 文章目录 目录插件配置设置代码不显示 git 提示 "xxx months ago | 1 author"设置打开项目不自动选择 CMakeLists 插件 以下插件为 C 开发偏好设置。 C/CCMakeCMake ToolsGitLensRemote DevelopmentRemote Explorer 配置 设置代码不显示 git 提示 “xxx mon…

【项目管理】甘特图(1)——认识甘特图

哈喽&#xff0c;大家好&#xff0c;我是雷工&#xff01; 今天学习下甘特图的绘制&#xff0c;以下为学习笔记。 一、什么是甘特图 甘特图是可以直观展示项目进展随时间走势和联系的条状图。是一种常见的项目管理工具。 项目的时间用横轴表示&#xff0c;项目的进度用纵轴表…

Dubbo框架

1&#xff1a;简介 Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架 Apache Dubbo 是一款 RPC 服务开发框架&#xff0c;用于解决微服务架构下的服务治理与通信问题 这是Dubbo官网的介绍&#xff0c;下面是我对这dubbo的理解 首先介绍下什么是RPC&#xff1a; 常…

PHP 正则式 全能匹配URL(UBB)

PHP 正则式 全能匹配URL&#xff08;UBB&#xff09; 语言&#xff1a;PHP 注明&#xff1a;正则式 无语言限制&#xff08;js、PHP、JSP、ASP、VB、.net、C#...&#xff09;一切皆可。 简介&#xff1a;PHP UBB 正则式 全能匹配URL 自动加超级链接。网上找了很多都不匹配或…

Qt 符号表下载路径

Qt 符号表下载路径 以Qt6.4.2版本为例&#xff1a; 1、选择版本 2、选择编译工具链 3、选择要下载的模块符号表

网络安全等级保护收费标准?

不同省份价格会略有不同&#xff0c;二级等保一般不低于5万元;三级等保不低于9万元&#xff0c;个别省份也可能7万也能办理&#xff0c;根据企业实际情况和省市选定的代理机构确定。 等级保护二级? 第二级等保是指信息系统受到破坏后&#xff0c;会对公民、法人和其他组织的合…

脸爱云一脸通智慧管理平台未授权访问

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 一、漏洞概述 脸爱云一脸通智慧管理平台存在严重漏洞&#xff0c;允许…

京东大数据(京东数据采集):2023年Q3线上投影仪品类销售数据分析报告

11月初&#xff0c;某知名投影仪企业发布了2023年三季度财报。数据显示&#xff0c;今年第三季度&#xff0c;公司营收依然不客观&#xff0c;连续第五个季度业绩持续下滑。 从鲸参谋数据也可以看出&#xff0c;今年Q3&#xff0c;京东平台上该品牌的销量环比下滑约35%&#x…

【精选】改进的YOLOv5:红外遥感图像微型目标的高效识别系统

1.研究背景与意义 随着科技的不断发展&#xff0c;红外遥感技术在军事、安防、环境监测等领域中得到了广泛应用。红外遥感图像具有独特的优势&#xff0c;可以在夜间或恶劣天气条件下获取目标信息&#xff0c;因此在小目标检测方面具有重要的应用价值。然而&#xff0c;由于红…

美创获IDC数据库安全市场代表厂商推荐,一路引领数据库安全

近日&#xff0c;全球领先的IT市场研究和咨询公司IDC发布《IDC Persepctive&#xff1a;中国数据库安全市场洞察&#xff0c;2023》报告。 凭借多年的技术积累和丰富的产品体系与行业实践&#xff0c;美创科技获「代表厂商」推荐&#xff0c;再次彰显专业领先能力&#xff01; …

硅谷“政变”史:当创始人遭遇董事会的冷血背叛!

大数据产业创新服务媒体 ——聚焦数据 改变商业 在硅谷的璀璨星空下&#xff0c;最近发生了一起引人注目的变故&#xff1a;OpenAI&#xff0c;这个人工智能领域的领头羊&#xff0c;令人震惊地将其创始人Altman扫地出门了。当然&#xff0c;这个故事后来又迎来反转。最新消息…