Page 1 of 1

【已解决】BT3L(tlsr8253)代码溢出问题

Posted: 2023年 Mar 23日 16:04
by wt呃呃

在开发智能水阀控制器的时候,添加定时数据处理部分,按键功能部分无效了,重新上电才可以,还有就是显示的灌溉时长不对,这个怎么处理啊,怎么看代码是否溢出?堆栈的空间


Re: BT3L(tlsr8253)代码溢出问题

Posted: 2023年 Mar 23日 16:21
by jinyuan

找到编译出来的 .lst 文件, 然后对着找到 7 .retention_bss 这一行, 其中 ALLOC 这列的数值低于0x848000 ,内存就没有溢出。
在函数中用了大数组也可能导致栈溢出异常,进而修改一变量值,这个也要注意


Re: BT3L(tlsr8253)代码溢出问题

Posted: 2023年 Mar 23日 16:23
by jinyuan

提问时信息要尽量充足, 这样可以提高回复效率。提问模板见:viewtopic.php?t=303


Re: BT3L(tlsr8253)代码溢出问题

Posted: 2023年 Mar 23日 16:45
by wt呃呃

.lst文件参数:
6 .retention_data 0000013c 0084749c 0001e1d0 0002f49c 22
CONTENTS, ALLOC, LOAD, DATA
7 .retention_bss 000036d0 008475d8 0001e30c 0002f5d8 2
2
ALLOC
8 .comment 0000003e 00000000 00000000 0002f5d8 2**0

我在函数中用了大数组,这个怎么改?大数组的数据格式,不好改,可以改栈的大小吗?


Re: BT3L(tlsr8253)代码溢出问题

Posted: 2023年 Mar 28日 15:59
by NICE

尽量避免函数内大数组定义,建议使用内存动态分配处理,如果一定要用可加static声明 。


Re: BT3L(tlsr8253)代码溢出问题

Posted: 2023年 Mar 29日 09:40
by wt呃呃

已解决