前言:
而今小伙伴们对“擦除flash是什么意思”大致比较关心,我们都需要了解一些“擦除flash是什么意思”的相关内容。那么小编同时在网摘上汇集了一些对于“擦除flash是什么意思””的相关文章,希望姐妹们能喜欢,小伙伴们一起来学习一下吧!近期,在调试软件过程中,出现了几次莫名其妙的程序死机。特发文记录,以供后期排查问题查找。
死机:本文指的死机是指程序进入硬件中断:void HardFault_Handler(void) ,而并不是指程序进入死循环中。
发生原因包含如下:
1、在写入或擦除FLASH的时候,没有对写入的空间及长度进行限制,写入到正常运行的程序空间中。导致程序错误,进入死机状态。此种问题需要重新烧录程序才能正常工作。
2、字符串量程溢出:在对字符串或数组操作时,没有对长度进行限制,导致溢出变量分配的存储空间。此问题容易出现在字符串处理函数中,如memcpy,memset等。此类问题的表象为:程序在执行某特定操作时,进入硬件中断。
3、堆栈空间不足:程序运行时,当跳出本函数时,需要对该函数的变量进行缓存,以便系统回来能够正确地执行。针对本问题时,可以采用函数内存帧听的方式来处理uxTaskGetStackHighWaterMark,当发现该问题后,修改设备堆栈大小即可。此类问题的表象为程序部分功能丧失。
修改大小包含如下几方面
A、.S文件中的stack和heap的大小。
B、函数定义过程中的堆栈大小
C、操作系统分配的内存空间大小
4、硬件错误
本次调试过程中,出现了当设备引脚出现不稳定电平时,也可能导致设备的死机。如在按键电路中采用LC电路进行滤波时,按键时会产生不稳定脉冲,也会导致死机。此类死机一般为随机发生,无明显规律。
5、排查死机时,应该首先确定单片机的系统资源是否足够,电源是否稳定,然后再对软件及其他细节部分进行排查。
声明:以上仅为个人在调试过程中遇到的问题及记录,当中有用词不当的地方还请指正。
标签: #擦除flash是什么意思