MCU死机定位问题

这篇具有很好参考价值的文章主要介绍了MCU死机定位问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

将两篇文章合并了,方便阅读 2023/08/31

Ozone 调试

什么是Ozone?

Ozone 是 Segger 公司开发的一个调试工具,用于 Trace 程序的运行。

OZONE是用于嵌入式系统调试的开源调试器。它提供了一套工具和界面,用于帮助开发人员调试嵌入式设备上的软件和硬件问题。OZONE主要用于ARM Cortex-M微控制器的调试,但也可以扩展到其他体系结构。

以下是OZONE调试器的一些主要特性和用法:

  1. 图形化调试界面: OZONE提供了一个直观的图形用户界面,允许开发人员以可视化方式查看、监控和控制目标设备的运行状态。

  2. 调试功能: OZONE支持基本的调试功能,如断点、单步执行、观察寄存器值、查看内存内容等。

  3. Trace支持: OZONE支持硬件追踪器(如ETM)来捕获和显示实时的执行跟踪信息,帮助分析代码的执行路径。

  4. 事件跟踪: 它可以记录和显示事件,例如中断、异常和系统调用,以帮助开发人员理解系统的行为。

  5. RTOS支持: OZONE可以集成到各种实时操作系统(RTOS)中,以提供对多任务和多线程应用程序的调试支持。

  6. 触发条件: OZONE允许设置触发条件,当某些事件发生时自动暂停目标设备的执行,以便进行调试。

  7. 外设仿真: 它可以模拟外设的输入和输出,帮助调试与外部设备交互的代码。

使用OZONE进行嵌入式调试通常需要以下步骤:

  1. 安装OZONE: 下载并安装OZONE调试器,它通常与支持的开发环境(如Eclipse)一起使用。

  2. 连接目标设备: 将OZONE调试器与目标嵌入式设备连接。这可能需要硬件调试适配器,如JTAG或SWD适配器。

  3. 配置调试会话: 在OZONE中配置目标设备的连接和调试选项,例如选择正确的调试适配器、设备型号、通信接口等。

  4. 加载程序: 将要调试的程序加载到目标设备的内存中。

  5. 设置断点: 在代码中设置断点,以便在特定位置暂停执行以进行调试。

  6. 运行和调试: 启动目标设备并运行程序。使用OZONE的调试界面监控程序的执行状态,使用各种调试功能进行问题分析。

  7. 数据查看和分析: 在OZONE中查看寄存器的值、内存内容和事件记录,以便分析程序的行为。

  8. 解决问题: 根据调试信息,定位和解决程序中的问题。

OZONE调试器在嵌入式开发中提供了强大的工具,帮助开发人员更轻松地诊断和解决问题。具体的使用方法和步骤可能会因为目标设备的体系结构、硬件适配器等而有所不同,建议参考OZONE的官方文档和指南以获取详细的操作指导。

1. AXF文件反汇编

在C:\Keil_v5\ARM\ARMCC\bin下 fromelf -c xxx.axf -o xxx.txt 生成一个txt文件

2. Ozone调试AXF

非侵入式调试首选,连接之后不复位,重新下载,并选择AXF文件进行调试。
MCU死机定位问题,单片机学习,单片机,嵌入式硬件

查看Register窗口,如果LR寄存器数值为0XFFFF_FFF9 表示为返回线程模式,并使用主堆栈(SP=MSP)
如果LR寄存器数值为0XFFF_FFFD 表示为使用线程堆栈(SP=PSP)

LR寄存器非以上值时,SHIFT+F10 跳过while(1),直到HardFault_Handler顶层目录,再查看LR寄存器
MCU死机定位问题,单片机学习,单片机,嵌入式硬件

优先查看PSP寄存器,找到对应内存信息后保存该片信息。

分析时找到上面保存的内存片信息中的flash地址(通常为0x08xxxxxxxxx)找到

再将flash地址最低位清零,在反汇编文件中找对应地址

把内存片中的flash地址 遍历一遍找到调用关系

3. 错误分析

MCU死机定位问题,单片机学习,单片机,嵌入式硬件
可以通过Registers->CPU->Peripherals->SCB 中查看错误标志分析

cm_backtrace

打开该组件后会在HardFault时打印AXF文件名称、出错线程、堆栈信息、寄存器信息。
找到addr对应data中的flash地址
使用addr2line -e xxx.axf -a -f deadbeef 0800xxxx 就可以输出对应函数和所在.c的行号

Ozone及addr2line.exe在我的链接中自取。

使用Keil进行非侵入式调试 保姆级教程

MCU死机定位问题,单片机学习,单片机,嵌入式硬件
Options for Target -> Debug界面,见下图
① 取消Load Application at Startup
② 加载一个特殊的ini文件

load %L INCREMENTAL

Setup();                             // Setup for Running

g, main

主要就是模拟硬件复位,像从0地址获取SP,PC的值一样,这边是从指定的地址0x20000000去获取SP、PC、中断向量表,然后从当前PC值运行,直到到main,停下来。
用于加载.axf,获取调试信息。
③ 点击 Settings
MCU死机定位问题,单片机学习,单片机,嵌入式硬件
④ 取消Reset after Connect
MCU死机定位问题,单片机学习,单片机,嵌入式硬件
⑤ 选择Do not Erase 后面的Program什么的全部取消
MCU死机定位问题,单片机学习,单片机,嵌入式硬件
⑥ 进入调试模式 点一下暂停后在watch窗口输入变量查看文章来源地址https://www.toymoban.com/news/detail-690412.html

到了这里,关于MCU死机定位问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • MCU死机定位问题

    MCU死机定位问题

    将两篇文章合并了,方便阅读 2023/08/31 Ozone 是 Segger 公司开发的一个调试工具,用于 Trace 程序的运行。 OZONE是用于嵌入式系统调试的开源调试器。它提供了一套工具和界面,用于帮助开发人员调试嵌入式设备上的软件和硬件问题。OZONE主要用于ARM Cortex-M微控制器的调试,但也

    2024年02月10日
    浏览(22)
  • 【单片机/嵌入式】最完整学习路线

    【单片机/嵌入式】最完整学习路线

            关于这个问题我在网上寻找到 了 相关文章解释得很详细,不了解的同学可以参考一下这篇文章: 到底什么是嵌入式?什么是单片机? - 知乎         一个人学习是孤独的,如果你是一名学生,建议加入学校的电子社团或者实验室,有老师的帮助和同学的互助

    2024年02月03日
    浏览(19)
  • 【唠唠嵌入式】__如何学习单片机?

    【唠唠嵌入式】__如何学习单片机?

    目录 前言 个人定位,从事软件还是硬件? 学习内容 (* ̄︶ ̄)创作不易!期待你们的 点赞、收藏和评论喔。 作为一个老司机,多年来跟 单片机 、 Keil 、 C语言 、 AD 、 烙铁 、 风枪 、 示波器 、 电子元器件 纠缠不清。期间经历了不少磨练,熬过了很多夜晚,也掉了大把头

    2024年02月06日
    浏览(14)
  • 嵌入式开发:单片机嵌入式Linux学习路径

    嵌入式开发:单片机嵌入式Linux学习路径

    SOC(System on a Chip)的本质区别在于架构和功能。低端SOC如基于Cortex-M架构的芯片,如STM32和NXP LPC1xxx系列,不具备MMU(Memory Management Unit),适用于轻量级实时操作系统如uCOS和FreeRTOS。高端SOC如基于Cortex-A架构的芯片,如三星、高通、飞卡、全志和瑞芯微等,具备MMU,支持虚拟内

    2024年02月15日
    浏览(18)
  • 嵌入式一开始该怎么学?学习单片机

    嵌入式一开始该怎么学?学习单片机

    学习单片机: 模电数电肯定必须的,玩单片机大概率这两门课都学过,学过微机原理更好。 直接看野火的文档,芯片手册,外设手册。 学单片机不要纠结于某个型号,我认为stm32就OK,主要是原理和感觉。 看 野火文档 的时候,可以做笔记(记忆力好的人可以忽略),各种手

    2024年02月14日
    浏览(15)
  • 单片机STM32看门狗详解(嵌入式学习)

    单片机STM32看门狗详解(嵌入式学习)

    单片机STM32的看门狗(Watchdog)是一种硬件定时器,用于监控系统的运行状态并在出现故障或死锁时采取措施以恢复正常操作。看门狗的主要功能是定期检查系统是否正常运行,并在系统出现问题时触发复位操作。 STM32系列单片机通常配备了内置的看门狗定时器(通常称为独立

    2024年02月13日
    浏览(13)
  • 要单片机和RTOS有必要学习嵌入式linux吗?

    要单片机和RTOS有必要学习嵌入式linux吗?

    学习嵌入式 Linux 是否有必要,取决于你的项目需求和职业发展目标。以下是一些考虑因素: 项目需求:如果你的项目需要处理复杂的网络、文件系统、多任务管理等功能,嵌入式 Linux 可能是更适合的选择。Linux 提供了丰富的开源软件包和驱动程序,可以加速开发过程并提供

    2024年02月14日
    浏览(14)
  • 【嵌入式开发学习】__扒一扒单片机串口IAP原理

    【嵌入式开发学习】__扒一扒单片机串口IAP原理

    目录 一、什么是IAP? 二、串口IAP实验 1. 实验说明 2. 工程说明 IAP工程: LED工程: 3. IAP源码说明  (1)主函数: (2)主菜单函数Main_Menu (3)下载程序功能函数SerialDownload  4、下载验证 (1)下载IAP程序  (2)通过IAP程序引导下载LED程序 (* ̄︶ ̄)创作不易!期待你们的 点

    2024年02月20日
    浏览(16)
  • FreeRTOS学习之路,以STM32F103C8T6为实验MCU(序章——浅谈单片机以及FreeRTOS)

    FreeRTOS学习之路,以STM32F103C8T6为实验MCU(序章——浅谈单片机以及FreeRTOS)

    学习之路主要为FreeRTOS操作系统在STM32F103(STM32F103C8T6)上的运用,采用的是标准库编程的方式,使用的IDE为KEIL5。 注意!!!本学习之路可以通过购买STM32最小系统板以及部分配件的方式进行学习,也可以通过Proteus仿真的方式进行学习。 后续文章会同时发表在个人博客(jaso

    2024年02月06日
    浏览(10)
  • MCU-51:单片机LCD1602详解

    MCU-51:单片机LCD1602详解

    LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符 显示容量:16×2个字符,每个字符为5*7点阵 点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应

    2023年04月09日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包