参考:https://blog.csdn.net/aichirourou_66/article/details/79401243
用的ZET6+FreeRTOS开发一款产品,程序经常跑着跑着就死机(运行时间大概在10-20分钟之间),猜测可能是堆栈溢出的问题。
Program Size: Code=31844 RO-data=1020 RW-data=276 ZI-data=29548
Code:指代码的大小;
Ro-data:指除了内联数据(inlinedata)之外的常量数据;
RW-data:指可读写(RW)、已初始化的变量数据;
ZI-data:指未初始化(ZI)的变量数据
Code、Ro-data:位于FLASH中;
RW-data、ZI-data:位于RAM中;
提醒:RW-data已初始化的数据会存储在Flash中,上电会从FLASH搬移至RAM中。
关系如下:
RO Size = Code + RO Data
RW Size = RW Data + ZI Data
ROM Size = Code + RO Data + RW Data
另外:在另一篇文章中看到一句话(出处:https://blog.csdn.net/l_w_zeng/article/details/73502095),说是如果没有用到标准库函数malloc来分配内存的话,可以把.s文件中的Heap_Size设置为0,
修改为:Heap_Size EQU 0x00000000
//---------------------------------------------------------------------------------------------------------------------------------------
跑死机的问题已经找到
我将串口数据的解析和组包封装到了一个独立的文件中,提供两个公共函数,给三个串口使用,这种情况下就经常死机。
我把这个公共函数取消后,在每个串口文件的内部用不同的函数名弄一个内部的解析和组包函数就好了。
眼下还不知道这是为什么。