当前位置:网站首页>RTOS 多线程下hardfault问题总结

RTOS 多线程下hardfault问题总结

2022-06-25 07:34:00 *_仰望星空_*

问题

使用minIni以INI文件形式保存系统参数到littlefs多线程下读写导致的hardfault问题

解决过程

0、通过RT-Thread自定义hardfault处理函数打印hardfault信息,发现hardfault发生在lvgl gui线程;

1、通过调试器将hardfault打印的lr寄存器地址减去5回溯地址找到发生hardfault的语句为STM32 HAL库的SPI 传输函数,按道理库函数应该没问题,无法理解

2、想到hardfault问题多是指针越界或堆栈溢出导致的,增大lvgl GUI线程堆栈,再次调试发现还是hardfault,不过hardfault发生在事件处理线程

3、增大事件处理线程堆栈,hardfault问题解决


总结

通过解决过程可以发现推测原因:可能是由于使用littlefs调用了HAL库,minIni调用littlefs的接口,多层函数嵌套调用需要使用很多栈空间,而给lvgl GUI线程和事件处理线程的堆栈才1K,所以给线程分配的堆栈不能太吝啬。

RTOS多线程下hardfault问题多数是由于堆栈溢出导致的。

增大lvgl gui线程后,再次调试发现hardfault发生在事件处理线程,增大事件处理线程的堆栈,hardfault问题解决

原网站

版权声明
本文为[*_仰望星空_*]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_36413982/article/details/125447744