MCU Hardfault

Hardfault错误

查看SP寄存器,定位出错原因。

定义一个全局变量,在可能出错的地方赋值不同,以此定位错误原因。

Scatter压缩解压缩

ROM常量和code

RAM全局变量和

起始地址字节未4字节对齐定义错误导致的。

应该对每个区域进行起始地址和长度的合理分配。

注意寄存器只读,只写操作。对于此种情况,不要做读写的额外操作。

system_init里做SCB->SHCSR改动,不直接进hardfault。

野指针赋值操作等

大数组超过栈大小,用内存申请

共享资源加锁,以防资源并发被共用,被另一个进程的数值改变。

递归函数内部的局部变量导致栈溢出。

inline函数,用于一句话执行句子,可不用再SP LR重新赋值,压栈操作。

内存申请非空判断操作,以防对空指针操作导致的异常。

注意锁和解锁匹配使用,特别是函数中异常推出的出口,记得解锁。

编译器未报出错误的类型传参导致的hardfault

你可能感兴趣的:(MCU Hardfault)