最近在使用stm32f103vet6芯片调试sim900a模块,使用env工具配置了lwip2.0.2并使用pppos。
在对sim900a模块相关AT配置之后进入ppp流程,会出现tcpip_thread堆栈溢出问题,
表现为tcpip_thread->sp
的值越界。
具体看下图。
图1是tcpip线程初始化完之后的值
图2是tcpip线程溢出之后的值
图3是ppp过程情况及溢出log
感觉不是内存写穿或局部变量导致,不知在什么情况先sp的值被篡改,导致系统进行调度时出错。
也在tcpip_thread->sp
的物理地址打断点调试,会多次停下,
然后由于ppp过程串口接收数据不全导致后续ppp异常,无法定位到sp指针被改成0x2000E0A0
这个值具体位置,且每次溢出都是这个值。
请教各位有什么更好的调试方法或者定位问题的思路?谢谢了,感激不尽:handshake