# Analysis tool for mcu **Repository Path**: mcscv/analysis-tool-for-mcu ## Basic Information - **Project Name**: Analysis tool for mcu - **Description**: 用于调试单片机程序死机跑飞问题,比如触发ARM单片机Hardfault,通过分析调用栈定位是哪个函数哪一行代码导致的。 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 14 - **Created**: 2024-11-23 - **Last Updated**: 2024-11-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Analysis tool for mcu #### 介绍 用于调试单片机程序死机跑飞问题,比如触发ARM单片机Hardfault,通过分析调用栈定位是哪个函数哪一行代码导致的。 #### 软件架构 软件架构说明: - `GUI.py`: 主界面程序,内部负责输入信息的处理,输出的显示,中间内容涉及到各组态控件的回调函数的处理。 - `jlink_operations.py`: Jlink库函数实现的主要部分,主要目的之一是驱动Jlink能够访问MCU的寄存器信息。 - `stack_tracer.py`: 栈回溯的主要实现部分,通过得到的MCU寄存器信息,以及编译产物,进行栈回溯,得到调用栈信息。 #### 安装教程 打包的可执行程序,配套了GUI界面,无需安装直接运行即可。 #### 使用说明 0. 死机的设备不要断电,连上JLINK 1. 选择DLL文件,点击浏览按钮,选择去Jlink的驱动安装路径下选择“JLink_x64.dll”打开 2. 选择`.axf`文件,去工程编译的“Object”路径下,选择对应工程的`.axf`文件打开 3. 选择`.map`文件,去工程编译的“Listings”路径下,选择对应工程的`.map`文件打开 4. 根据需要配置栈分析的起始地址,以及需要分析的长度,默认从0x20000000开始,长度0x4000 5. 点击“提取”获取寄存器的信息,在日志输出对话框里面可以看到对应的启动过程信息,寄存器信息等等,同时会保存相应的寄存器数据 6. 点击“分析”会通过寄存器信息,结合.axf文件和.map文件分析原因,相应的分析结果与过程信息,也会展示在日志输出里面