打印
[其他ST产品]

cubeMX lwip 出错

[复制链接]
1126|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
flycamelaaa|  楼主 | 2024-8-27 10:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32F407ZGT的芯片,cubeMX6.5.0生成Keil文件,不带LWIP库,可以仿真都正常,选中LWIP库后,程序编译后,运行,每次进入Main后程序就停留在

0x08000AE8 BEAB BKPT 0xAB

使用特权

评论回复
沙发
别乱了阵脚| | 2024-10-8 21:21 | 只看该作者
在STM32F407ZGT芯片上使用CubeMX 6.5.0生成Keil项目时,如果选择了LWIP库后程序在进入main函数后立即停止,并且停在BKPT 0xAB指令处,这通常是由于堆栈大小不足导致,LWIP库需要较大的堆栈空间来处理网络协议栈的操作。如果堆栈大小不足,程序可能会在进入main函数后立即崩溃

使用特权

评论回复
板凳
夜阑风雨| | 2024-10-9 02:00 | 只看该作者
LWIP库的初始化可能需要在其他外设初始化之后进行。如果初始化顺序不正确,可能会导致程序崩溃

使用特权

评论回复
地板
暖了夏天蓝了海| | 2024-10-9 03:00 | 只看该作者
LWIP库对内存对齐有严格要求,如果内存对齐不正确,可能会导致程序崩溃

使用特权

评论回复
5
江河千里| | 2024-10-9 04:00 | 只看该作者
有时,调试器配置不正确也可能导致程序在进入main函数后立即停止

使用特权

评论回复
6
远山寻你| | 2024-10-9 05:00 | 只看该作者
代码优化级别过高可能导致某些函数或变量未正确初始化,从而导致程序崩溃

使用特权

评论回复
7
光辉梦境| | 2024-10-9 06:00 | 只看该作者
建议可以考虑降低代码优化级别。在Keil中,进入Options for Target -> C/C++。将Optimization级别降低到Level 0Level 1

使用特权

评论回复
8
三生万物| | 2024-10-9 07:00 | 只看该作者
如果程序在进入main函数后立即停止并停在BKPT 0xAB指令处,通常是由于堆栈大小不足、初始化顺序问题、内存对齐问题、调试器配置问题或代码优化问题。通过检查和调整这些方面,你应该能够解决这个问题

使用特权

评论回复
9
淡漠安然| | 2024-10-9 08:00 | 只看该作者
可以用仿真看看你的堆栈是不是弄小了啊

使用特权

评论回复
10
一秒落纱| | 2024-10-9 09:00 | 只看该作者
一般情况可以考虑用官方的例程,在其基础上修改,这样会好点

使用特权

评论回复
11
冰春彩落下| | 2024-10-9 10:00 | 只看该作者
尝试使用不同的调试器配置,或者在调试器中禁用某些高级功能(如硬件断点

使用特权

评论回复
12
略略u| | 2024-10-11 21:55 | 只看该作者
不带LWIP库,可以仿真都正常,选中LWIP库后

使用特权

评论回复
13
Stahan| | 2024-10-13 21:15 | 只看该作者
堆栈空间的问题吗

使用特权

评论回复
14
公羊子丹| | 2025-2-5 09:24 | 只看该作者
这个问题看起来像是LWIP库初始化出问题,程序在某个地方触发了断点。你可以检查一下LWIP的初始化函数,看看是不是在某个地方进入了异常状态。

使用特权

评论回复
15
周半梅| | 2025-2-5 09:27 | 只看该作者
这个“BEAB BKPT 0xAB”通常是调试器触发的断点,可能是LWIP的堆栈初始化或内存配置出了问题。试着在LWIP的配置文件里调低堆栈大小,看看问题是否解决。

使用特权

评论回复
16
帛灿灿| | 2025-2-5 09:28 | 只看该作者
你使用的LWIP库配置是否正确?如果没有正确配置内存池或者缓冲区,可能会导致程序卡在某个地方触发断点。你可以检查一下LWIP的内存管理配置。

使用特权

评论回复
17
童雨竹| | 2025-2-5 09:30 | 只看该作者
这有可能是初始化顺序问题。可能是在LWIP初始化之前有中断或外设已经初始化,导致资源冲突。建议确认所有外设和中断的初始化顺序。

使用特权

评论回复
18
万图| | 2025-2-5 09:31 | 只看该作者
你可以尝试把代码中与LWIP相关的初始化部分逐步注释掉,查看是哪一部分触发了这个断点。这样可以帮助你更快定位问题。

使用特权

评论回复
19
Wordsworth| | 2025-2-5 09:33 | 只看该作者
有时候这个问题是由于FreeRTOS和LWIP堆栈一起使用时的堆栈溢出引起的。检查一下FreeRTOS任务的堆栈大小,确保没有溢出。

使用特权

评论回复
20
Bblythe| | 2025-2-5 09:35 | 只看该作者
可能是由于调试器本身的断点设置问题,导致程序停留在那个位置。你可以尝试用其他调试器或者在编译时关闭所有不必要的调试信息,看是否还会触发这个问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

694

主题

3308

帖子

0

粉丝