[其他ST产品] cubeMX lwip 出错

[复制链接]
 楼主| 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库对内存对齐有严格要求,如果内存对齐不正确,可能会导致程序崩溃

江河千里 发表于 2024-10-9 04:00 | 显示全部楼层
有时,调试器配置不正确也可能导致程序在进入main函数后立即停止

远山寻你 发表于 2024-10-9 05:00 | 显示全部楼层
代码优化级别过高可能导致某些函数或变量未正确初始化,从而导致程序崩溃

光辉梦境 发表于 2024-10-9 06:00 | 显示全部楼层
建议可以考虑降低代码优化级别。在Keil中,进入Options for Target -> C/C++。将Optimization级别降低到Level 0Level 1

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

淡漠安然 发表于 2024-10-9 08:00 | 显示全部楼层
可以用仿真看看你的堆栈是不是弄小了啊

一秒落纱 发表于 2024-10-9 09:00 | 显示全部楼层
一般情况可以考虑用官方的例程,在其基础上修改,这样会好点

冰春彩落下 发表于 2024-10-9 10:00 | 显示全部楼层
尝试使用不同的调试器配置,或者在调试器中禁用某些高级功能(如硬件断点

略略u 发表于 2024-10-11 21:55 来自手机 | 显示全部楼层
不带LWIP库,可以仿真都正常,选中LWIP库后
Stahan 发表于 2024-10-13 21:15 | 显示全部楼层
堆栈空间的问题吗
公羊子丹 发表于 2025-2-5 09:24 | 显示全部楼层
这个问题看起来像是LWIP库初始化出问题,程序在某个地方触发了断点。你可以检查一下LWIP的初始化函数,看看是不是在某个地方进入了异常状态。
周半梅 发表于 2025-2-5 09:27 | 显示全部楼层
这个“BEAB BKPT 0xAB”通常是调试器触发的断点,可能是LWIP的堆栈初始化或内存配置出了问题。试着在LWIP的配置文件里调低堆栈大小,看看问题是否解决。
帛灿灿 发表于 2025-2-5 09:28 | 显示全部楼层
你使用的LWIP库配置是否正确?如果没有正确配置内存池或者缓冲区,可能会导致程序卡在某个地方触发断点。你可以检查一下LWIP的内存管理配置。
童雨竹 发表于 2025-2-5 09:30 | 显示全部楼层
这有可能是初始化顺序问题。可能是在LWIP初始化之前有中断或外设已经初始化,导致资源冲突。建议确认所有外设和中断的初始化顺序。
万图 发表于 2025-2-5 09:31 | 显示全部楼层
你可以尝试把代码中与LWIP相关的初始化部分逐步注释掉,查看是哪一部分触发了这个断点。这样可以帮助你更快定位问题。
Wordsworth 发表于 2025-2-5 09:33 | 显示全部楼层
有时候这个问题是由于FreeRTOS和LWIP堆栈一起使用时的堆栈溢出引起的。检查一下FreeRTOS任务的堆栈大小,确保没有溢出。
Bblythe 发表于 2025-2-5 09:35 | 显示全部楼层
可能是由于调试器本身的断点设置问题,导致程序停留在那个位置。你可以尝试用其他调试器或者在编译时关闭所有不必要的调试信息,看是否还会触发这个问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

824

主题

4298

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部