[技术问答] M487 修改堆空间之后引起的异常问题

[复制链接]
 楼主| probedog 发表于 2025-2-21 12:52 | 显示全部楼层 |阅读模式
M487, ap, he, DHCP, HC, ip
SDK默认的Heap_Szie大小,我修改为0x00002800去调试,
修改Heap_Size是因为在开发过程中,发现malloc失败,想修改一下堆空间。但是遇到一个问题,不修改Heap_size的值,通过DHCP获取IP正常,修改了Heap_Size后,通过DHCP 拿不到ip了,不知道什么原因,求大佬帮忙看看
lix1yr 发表于 2025-5-10 11:24 | 显示全部楼层
在M487JIDAE开发中修改堆空间(Heap_Size)后导致DHCP获取IP失败的问题,通常与内存分配冲突或动态内存管理异常有关
g0d5xs 发表于 2025-5-10 12:37 | 显示全部楼层
默认Heap_Size(如0x1000)可能已被SDK的底层网络协议栈(如LwIP)静态分配了一部分内存,修改堆空间后可能覆盖了协议栈的关键内存区域。
d1ng2x 发表于 2025-5-10 13:46 | 显示全部楼层
DHCP协议依赖动态内存:DHCP过程中会频繁调用malloc/free,若堆空间不足或与其他模块重叠,会导致分配失败。
b5z1giu 发表于 2025-5-10 15:09 | 显示全部楼层
链接脚本(.ld文件):检查RAM区域的分配是否合理。
suw12q 发表于 2025-5-10 16:23 | 显示全部楼层
恢复默认Heap_Size并排查malloc失败原因
w2nme1ai7 发表于 2025-5-10 18:12 | 显示全部楼层
检查内存泄漏:使用malloc/free的调试工具(如mtrace)确认是否有未释放的内存
p0gon9y 发表于 2025-5-10 20:52 | 显示全部楼层
可以考虑在malloc失败时打印剩余堆空间
tax2r6c 发表于 2025-5-11 08:26 | 显示全部楼层
优化内存使用,减少全局变量或大数组,改用动态分配。
y1n9an 发表于 2025-5-11 11:09 | 显示全部楼层
可以考虑调整LwIP内存池大小(如MEM_SIZE、PBUF_POOL_SIZE)。
lamanius 发表于 2025-5-11 13:11 | 显示全部楼层
调整堆空间并验证内存布局,在链接脚本中显式划分堆、栈和LwIP内存池,在代码中初始化堆时传入正确的边界,检查LwIP配置,确保lwipopts.h中的内存配置与堆空间兼容
玫瑰凋零日记 发表于 2025-7-5 16:19 | 显示全部楼层
修改 M487 堆空间后异常,可能因堆大小超出 RAM 范围或破坏栈空间导致。
与人间浪漫 发表于 2025-7-7 18:15 | 显示全部楼层
修改 M487 堆空间后异常,可能因越界、大小不当或与栈冲突导致内存错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

486

主题

3268

帖子

4

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

486

主题

3268

帖子

4

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