当前位置: 首页 > news >正文

十四、从0开始卷出一个新项目之瑞萨RZN2L之栈回溯(Default_Handler/hartfault)

目录

一、概述

二、参考资料

三、代码

四、日志

五、定位函数调用

六、README和工具


一、概述

  • 软件开发中常见的比较棘手的问题就是hartfault/Default_Handler/dump,俗称跑飞了。

  • 参考cmbacktrace,在瑞萨RZN2L/T2M实现栈回溯,串口打印栈回溯信息。

  • 使用add2line或Python打印发生错误函数位置。

  • 循环打印栈回溯信息和编译日期,便于追溯bug。

二、参考资料

https://github.com/armink/CmBacktrace/tree/master
https://cloud.tencent.com/developer/article/1736680
https://www.segger.com/downloads/application-notes/AN00016
https://stackoverflow.com/questions/47331426/stack-backtrace-for-arm-core-using-gcc-compiler-when-there-is-a-msp-to-psp-swit/50923698#50923698
https://blog.csdn.net/laviolette/article/details/51376751
https://blog.csdn.net/Teminator_/article/details/143177973?ops_request_misc=&request_id=&biz_id=102&utm_term=cmbacktrace&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-143177973.142^v100^pc_search_result_base9&spm=1018.2226.3001.4187
https://github.com/RT-Thread-Studio/sdk-bsp-rzn2l-etherkit

三、代码

  • 1、加入rzn2_rzt2_backtrace.c

  • 2、void Default_Handler (void)
    {
    extern void rzt2_rzn2_backtrace(void);
    rzt2_rzn2_backtrace();
    while(1);
    /** A error has occurred. The user will need to investigate the cause. Common problems are stack corruption

    • or use of an invalid pointer. Use the Fault Status window in e2 studio or manually check the fault status

    • registers for more information.
      */
      BSP_CFG_HANDLE_UNRECOVERABLE_ERROR(0);
      }

四、日志

  • 循环打印栈回溯信息和编译日期

date:Dec 17 2024 time:11:47:45 file:../src/rzn2_rzt2_backtrace.c func:backtrace_fault,line:110 hello world! current:lr=807,sp=106480 ====== Main stack information ====== main_stack_start_addr:105510, main_stack_size:1000 ====== code addr information ====== code_start_addr=100, code_size=84c4 ====== sp information ====== stack_pointer: 106480 ====== stack data information ====== line address value 1 106510 92043202 2 10650c 106510 3 106508 0 4 106504 1020e4 5 106500 78787a8 6 1064fc 1023b5 7 1064f8 106500 8 1064f4 921 9 1064f0 1064f8 10 1064ec 2 11 1064e8 f8 12 1064e4 3e8 13 1064e0 2 14 1064dc 1f4 15 1064d8 40490fda 16 1064d4 9d54 17 1064d0 2 18 1064cc 86 19 1064c8 8d20 20 1064c4 3ef 21 1064c0 1064d0 22 1064bc 1 23 1064b8 8d18 24 1064b4 311 25 1064b0 1064b8 26 1064ac 1 27 1064a8 f8 28 1064a4 2f3 29 1064a0 1064a8 30 10649c 1 31 106498 78787a8 32 106494 2d5 33 106490 106498 34 10648c e000ed14 35 106488 78fb261 36 106484 1 37 106480 9d6c ====== result information ====== addr2line.exe -e rzt2m_cmbacktrace.elf -afpiC 8cd 889 703 6e5 6c7 python -u backtrace.py rzt2m_cmbacktrace.elf 8cd 889 703 6e5 6c7 921 3ef 311 2f3 2d5

五、定位函数调用

Jerry.Chen@WTNB-6719 MINGW64 /e/RS_workspace/rzt2m_cmbacktrace/Debug $ python -u backtrace.py rzt2m_cmbacktrace.elf 8ef 3ef 311 2f3 2d5 elf: rzt2m_cmbacktrace.elf main --> hal_entry --> func_a --> func_b --> func_c Jerry.Chen@WTNB-6719 MINGW64 /e/RS_workspace/rzt2m_cmbacktrace/Debug $ ./addr2line.exe -e rzt2m_cmbacktrace.elf -afpiC 8ef 3ef 311 2f3 2d5 0x000008ef: main at E:\RS_workspace\rzt2m_cmbacktrace\Debug/../rzt_gen/main.c:6 0x000003ef: hal_entry at E:\RS_workspace\rzt2m_cmbacktrace\Debug/../src/hal_entry.c:144 0x00000311: func_a at E:\RS_workspace\rzt2m_cmbacktrace\Debug/../src/hal_entry.c:93 0x000002f3: func_b at E:\RS_workspace\rzt2m_cmbacktrace\Debug/../src/hal_entry.c:87 0x000002d5: func_c at E:\RS_workspace\rzt2m_cmbacktrace\Debug/../src/hal_entry.c:81

六、README和工具

#rzt2/n2 栈回溯 1、加入rzn2_rzt2_backtrace.c 2、void Default_Handler (void) { extern void rzt2_rzn2_backtrace(void); rzt2_rzn2_backtrace(); while(1); /** A error has occurred. The user will need to investigate the cause. Common problems are stack corruption * or use of an invalid pointer. Use the Fault Status window in e2 studio or manually check the fault status * registers for more information. */ BSP_CFG_HANDLE_UNRECOVERABLE_ERROR(0); } 3、addr2line.exe -e rzt2m_cmbacktrace.elf -afpiC 8cd 889 703 6e5 6c7 或python -u backtrace.py rzt2m_cmbacktrace.elf 8cd 889 703 6e5 6c7 4、工具在工程根目录

图片

相关文章:

十四、从0开始卷出一个新项目之瑞萨RZN2L之栈回溯(Default_Handler/hartfault)

目录 一、概述 二、参考资料 三、代码 四、日志 五、定位函数调用 六、README和工具 一、概述 软件开发中常见的比较棘手的问题就是hartfault/Default_Handler/dump,俗称跑飞了。 参考cmbacktrace,在瑞萨RZN2L/T2M实现栈回溯,串口打印…...

联通光猫怎么自己改桥接模式?

环境: 联通光猫 ZXHN F677V9 硬件版本号 V9.0 软件版本号 V9.0.0P1T3 问题描述: 联通光猫怎么自己改桥接模式 家里用的是ZXHN F677V9 光猫,最近又搞了个软路由,想改桥接模式 解决方案: 1.拿到最新超级密码&…...

突围边缘:OpenAI开源实时嵌入式API,AI触角延伸至微观世界

当OpenAI宣布开源其名为openai-realtime-embedded-sdk的实时嵌入式API时,整个科技界都为之震惊。这一举动意味着,曾经遥不可及的强大AI能力,如今可以被嵌入到像ESP32这样的微型控制器中,真正地将AI的触角延伸到了物联网和边缘计算…...

springBoot Maven 剔除无用的jar引用

目录 Used undeclared dependencies found Unused declared dependencies found 当项目经过一段时间的开发和维护后,经常会遇到项目打包速度变慢的问题。这通常与项目中包含大量的jar依赖有关,这些依赖之间的关系错综复杂。这种情况在项目维护过程中是…...

malloc 分配大堆块(128KB)的一次探索

前言 一次意外执行了 malloc(0x5000)&#xff0c;结构使用 gdb 调试发现其分配的位置在 TLS 区域&#xff0c;这令我不解&#xff08;&#xff1a;最后去看了下 malloc 源码和 mmap 源码实现&#xff0c;发现似乎可能是 gdb 插件的问题&#xff0c;乐 场景复现 #include <…...

Android -- 双屏异显之方法二

Android – 双屏异显之方法二: DisplayManager PS: 1. 使用改方法主板需连接至少两个输出显示屏&#xff1b; 2. 副屏内部实现与MediaRouter下一样&#xff1b;使用方法 # 主屏activity内&#xff1a; private SecondDisplay secondDisplay;private void dualScreen3288() {D…...

电脑使用CDR时弹出错误“计算机丢失mfc140u.dll”是什么原因?“计算机丢失mfc140u.dll”要怎么解决?

电脑使用CDR时弹出“计算机丢失mfc140u.dll”错误&#xff1a;原因与解决方案 在日常电脑使用中&#xff0c;我们时常会遇到各种系统报错和文件丢失问题。特别是当我们使用某些特定软件&#xff0c;如CorelDRAW&#xff08;简称CDR&#xff09;时&#xff0c;可能会遇到“计算…...

使用RDMA技术构建无损网络

如何使用RDMA构建无损网络&#xff1f; 在深入研究RDMA和无损网络领域后&#xff0c;会经常遇到两个基本问题&#xff1a;为什么采用无损网络至关重要&#xff1f;这些先进技术有什么优势&#xff1f; 无损网络是一种新型的网络技术&#xff0c;它可以在不丢失数据包的情况下传…...

vscode 识别git目录

vscode 偶尔无法识别使用git 新托管的项目。 以下是我提供的解决方案——重启 git.enabled VS Code配置问题&#xff1a; 有时候&#xff0c;VS Code的配置可能会导致无法识别.git文件夹。确保你的VS Code配置中启用了Git的相关功能。你可以通过”Settings”&#xff08;设置…...

OpenCV相机标定与3D重建(26)计算两个二维点集之间的部分仿射变换矩阵(2x3)函数 estimateAffinePartial2D()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算两个2D点集之间的具有4个自由度的最优有限仿射变换。 cv::estimateAffinePartial2D 是 OpenCV 库中的一个函数&#xff0c;用于计算两个二维…...

StarRocks 生产部署一套集群,存储空间如何规划?

背景&#xff1a;StarRocks 3.2&#xff0c;存储一体 使用场景&#xff1a;多分析、小查询多单但不高、数据量几百T FE 存储 由于 FE 节点仅在其存储中维护 StarRocks 的元数据&#xff0c;因此在大多数场景下&#xff0c;每个 FE 节点只需要 100 GB 的 HDD 存储&#xff0c…...

JVM执行引擎JIT深度剖析

前端编译与后端编译 Java 程序的编译过程是分两个部分的。一个部分是从java文件编译成为class文件&#xff0c;这一部分也称为前端编译。另一个部分则是这些class文件&#xff0c;需要进入到 JVM 虚拟机&#xff0c;将这些字节码指令编译成操作系统识别的具体机器指令。这一部…...

【DOCKER】基于DOCKER的服务之DUFS

文件上传下载服务器&#xff1a;https://github.com/sigoden/dufs # 拉取镜像 docker pull sigoden/dufs# 创建数据卷文件夹 mkdir -p /data/.docker/volumes/dufs# 创建容器 docker run -id --restartalways --name dufs \-p 51080:5000 \-v /data/.docker/volumes/dufs:/dat…...

加密货币地址的基本概念

什么是地址&#xff1f; 在日常生活中&#xff0c;地址可能指房屋、电子邮件或官网的位置&#xff0c;用来精确定位在系统中的特定位置或端点。在加密货币领域&#xff0c;地址也起着类似的基础作用&#xff0c;只不过是在数字环境中。 加密货币地址是区块链网络中使用的唯一…...

如何在 Linux 服务器上部署 Pydio Cells 教程

简介 Pydio Cells 是一个开源的文档共享和协作平台&#xff0c;专为你的组织设计。它允许你在组织内部分享文档和文件&#xff0c;并让你完全掌控文档共享环境。 在本教程中&#xff0c;我们将向你展示如何在 Alma Linux 9 服务器上安装 Pydio Cells。你将使用 MariaDB 数据库…...

Halcon例程代码解读:安全环检测(附源码|图像下载链接)

安全环检测核心思路与代码详解 项目目标 本项目的目标是检测图像中的安全环位置和方向。通过形状匹配技术&#xff0c;从一张模型图像中提取安全环的特征&#xff0c;并在后续图像中识别多个实例&#xff0c;完成检测和方向标定。 实现思路 安全环检测分为以下核心步骤&…...

Selenium 全面指南

Selenium 是一个强大的 Web 自动化工具&#xff0c;支持多种浏览器和语言绑定。 1. Selenium 的基本概念 WebDriver&#xff1a;Selenium 提供的核心接口&#xff0c;用于控制浏览器操作。显式等待&#xff1a;等待特定条件满足后再执行操作。隐式等待&#xff1a;全局设置一个…...

#error: WinSock.h has already been included解决方案

原因&#xff1a; 在工程中使用了 Boot 库之后&#xff0c;使用了socket、tcp 相关的头文件&#xff0c;在其他地方还是包括了头文件<windows.h>&#xff0c;该头文件内包含了<winsock.h>。导致遇到报错问题&#xff1a;WinSock.h has already been included 解决…...

2.Couchbase 的增量查询优化

在 Couchbase 中实现增量查询的优化是关键&#xff0c;尤其当数据量庞大时。通过合适的策略&#xff0c;可以显著提高增量查询的效率&#xff0c;确保系统在处理实时数据时的响应速度和性能。下面是一些针对 Couchbase 增量查询的优化策略。 1. 使用索引优化查询 为了提升增量…...

汽车IVI中控开发入门及进阶(46):FFmpeg

概述: FFmpeg 是领先的多媒体框架,能够解码、编码、 转码、复用、解复用、流、过滤和播放 几乎所有人类和机器创建的东西。它支持最模糊的古老格式,直到最前沿。无论它们是由某个标准委员会、社区还是公司设计的。它还具有高度的可移植性:FFmpeg 在各种构建环境、机器架构…...

Spring Boot 中的 @Scheduled 定时任务以及开关控制

Scheduled注解是Spring框架&#xff08;包括Spring Boot&#xff09;中用于实现定时任务的一种方式。以下是对Scheduled注解的详细解析&#xff1a; 一、基本概念 Scheduled注解允许开发者在Spring容器中定义定时任务。通过简单地在一个方法上添加Scheduled注解&#xff0c;S…...

服务器证书原理

CA&#xff08;Certificate Authority&#xff09;证书是由 证书颁发机构&#xff08;CA&#xff09;本身签名的。具体来说&#xff0c;这取决于 CA 的类型和其在信任链中的位置&#xff1a; 1. 自签名证书 根 CA 证书 是信任链的起点&#xff0c;由 CA 自己签名。它们是信任链…...

重温设计模式--代理、中介者、适配器模式的异同

文章目录 1、相同点2、不同点 1、相同点 目的都是为了更好地处理对象之间的关系&#xff1a;这三种模式都是在软件设计中用于处理对象之间的关联和交互&#xff0c;以达到优化系统结构、增强可维护性等目的。它们都在一定程度上隐藏了对象之间的某些细节或者复杂性&#xff0c…...

2024第十六届蓝桥杯模拟赛(第二期)-Python

# 2024第十六届蓝桥杯模拟赛&#xff08;第二期&#xff09;-Python题解 # 自己改注释# -----------------------1------------------------ # def prime(x): # if x < 2: # return 0 # for i in range(2, int(x ** 0.5) 1): # if x % i 0: # …...

分布式系统中的防抖策略一致性与性能优化

目录 引言分布式系统的挑战防抖策略简介确保多实例间一致性的方法 幂等操作TTL缓存 分布式一致性事件总线或消息队列异步任务调度器客户端或API网关层面的防抖一致性哈希与分区限流和熔断机制 避免锁竞争导致的性能瓶颈Java示例代码结论 引言 在现代软件架构中&#xff0c;…...

项目代码第6讲:UpdownController.cs;理解 工艺/工序 流程、机台信息;前端的“历史 警报/工艺 记录”

一、UpdownController.cs 1、前端传入 当用户在下图的“记录查询”中的 两个界面选项 中,点击“导出”功能时,向后端发起请求,请求服务器下载文件的权限 【权限是在Program.cs中检测的,这个控制器里只需要进行“谁在哪个接口下载了文件”的日志记录】 【导出:是用户把…...

【计算机视觉基础CV-图像分类】03-深度学习图像分类实战:鲜花数据集加载与预处理详解

本文将深入介绍鲜花分类数据集的加载与处理方式&#xff0c;同时详细解释代码的每一步骤并给出更丰富的实践建议和拓展思路。以实用为导向&#xff0c;为读者提供从数据组织、预处理、加载到可视化展示的完整过程&#xff0c;并为后续模型训练打下基础。 前言 在计算机视觉的深…...

大模型应用技术系列(一):大模型应用整体技术栈浅析

RAG相关的技术学习暂时告一段落了,接下来尝试探索新的学习方向。这就引入一个问题:接下来该做什么?为了能进一步推进,我需要有一个整体的视角,从更上层来看整个技术栈,从而确定接下来感兴趣的方向。本文主要探索从更上层的视角来看构建大模型的技术栈,从而进一步确定研究…...

绿色环保木塑复合材料自动化生产线设计书

《绿色环保木塑复合材料自动化生产线设计书》 一、项目概述 随着全球对环境保护和可持续发展的日益重视,绿色环保材料的研发与生产成为了热门领域。木塑复合材料作为一种新型的绿色环保材料,它将木材纤维与塑料通过特定工艺复合而成,兼具木材与塑料的双重特性,具有防水、…...

Sourcegraph 概述

Sourcegraph 报告 Sourcegraph 是一款强大的代码搜索和智能导航工具&#xff0c;专为大型代码库、分布式系统和跨多个仓库的开发环境设计。它能显著提高开发者对复杂系统的理解和维护效率&#xff0c;帮助团队在庞大的代码库中快速找到关键信息。本文将详细讲解 Sourcegraph 的…...