#include "HardFaultAnalysis.h" #include #include int main(int argc, char** argv){ // HardFaultDump_t pyocd_data = { // .r0 = 0x00000000, // 比如 R0 是 0,引发空指针 // .r1 = 0x20001000, // .r2 = 0x00000005, // .r3 = 0x080015B4, // .r12 = 0x00000000, // .sp = 0x20004FB0, // .lr = 0x080012CE, // 调用发生崩溃函数的上级函数地址 // .pc = 0x080011A4, // 死机代码行对应的指令地址 // .xpsr = 0x21000000, // // // 以下是通过 PyOCD 读取的 SCB 寄存器物理地址数据 // .hfsr = 0x40000000, // FORCED = 1 // .cfsr = 0x00008200, // BFARVALID = 1, PRECISERR = 1 (精确总线错误) // .bfar = 0x00000004, // 芯片在尝试访问 0x00000004 地址时崩溃 // .mmfar= 0x00000000 // }; if (argc < 2) { printf("Usage: %s \n", argv[0]); return EXIT_FAILURE; } HardFaultDump_t pyocd_data={0}; HardFaultAnalysis_Load(argv[1], &pyocd_data); HardFaultAnalysis(&pyocd_data); return 0; }