[toc]

  1. 试图切入ARM状态造成的用法Fault
    问题:1.可能是内存泄漏 程序中有野指针,导致堆栈破坏;
    个人工程中 排查发现为数组拷贝溢出数组大小,野指针导致堆栈破坏。
    相应报错可能有:
    1.RT_ASSERT 断言死机
    2.rt_object_get_type((rt_object_t)thread) == RT_Object_Class_Thread) has assert failed at
    都是内存泄漏,导致其他变量被改写。导致错误。
    3.使用memchec命令 打印Memory block wrong:
    怀疑到内存管理算法问题,改变内存管理算法。报错会不一样哦。
  2. sr: 0x00000000
    r00: 0x20001268
    r01: 0x10000000
    r02: 0xf0000000
    r03: 0x00000000
    r04: 0x0801a130
    r05: 0x0801a130
    r06: 0x00000000
    r07: 0x0000008c
    r08: 0x00000000
    r09: 0x00000000
    r10: 0x00000000
    r11: 0x00000000
    r12: 0x00000000
    lr: 0x080120f7
    pc: 0x20000170
    hard fault on handler

usage fault:
SCB_CFSR_UFSR:0x02 INVSTATE
在这里插入图片描述

其实就是试图切入ARM状态造成的用法Fault。但是CM组件无效,系统初始化失败。这种问题个人排查为:线程堆栈不足导致。可以对相应文件选择不优化与最小优化编译后看看能不能用。