打印
[技术问答]

M487 修改堆空间之后引起的异常问题

[复制链接]
1500|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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,若堆空间不足或与其他模块重叠,会导致分配失败。

使用特权

评论回复
5
b5z1giu| | 2025-5-10 15:09 | 只看该作者
链接脚本(.ld文件):检查RAM区域的分配是否合理。

使用特权

评论回复
6
suw12q| | 2025-5-10 16:23 | 只看该作者
恢复默认Heap_Size并排查malloc失败原因

使用特权

评论回复
7
w2nme1ai7| | 2025-5-10 18:12 | 只看该作者
检查内存泄漏:使用malloc/free的调试工具(如mtrace)确认是否有未释放的内存

使用特权

评论回复
8
p0gon9y| | 2025-5-10 20:52 | 只看该作者
可以考虑在malloc失败时打印剩余堆空间

使用特权

评论回复
9
tax2r6c| | 2025-5-11 08:26 | 只看该作者
优化内存使用,减少全局变量或大数组,改用动态分配。

使用特权

评论回复
10
y1n9an| | 2025-5-11 11:09 | 只看该作者
可以考虑调整LwIP内存池大小(如MEM_SIZE、PBUF_POOL_SIZE)。

使用特权

评论回复
11
lamanius| | 2025-5-11 13:11 | 只看该作者
调整堆空间并验证内存布局,在链接脚本中显式划分堆、栈和LwIP内存池,在代码中初始化堆时传入正确的边界,检查LwIP配置,确保lwipopts.h中的内存配置与堆空间兼容

使用特权

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

本版积分规则

441

主题

2893

帖子

3

粉丝