完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
kernel 版本:5.0.0 chip:STM32F407VGxx RAM 配置大小:128K 使用LWIP + SFUD + FAL + (package:rs485 + cjson + net_server + crclib) 的情况下,还有2个堆栈空间2048的应用线程,使用rt_malloc申请内存空间失败,显示没有内存。经测试,只能申请1200bytes 以下的内存。 啥原因? 测试的代码: void mem_test(int argc, char **argv) { char *buf = RT_NULL; if (argc == 2) { int mem_size = atoi(argv[1]); LOG_D("mem_size = %d", mem_size); buf = rt_malloc(mem_size); if (RT_NULL == buf) { LOG_D("No memory"); } else { rt_free(buf); } } } MSH_CMD_EXPORT(mem_test, memory test); |
|
相关推荐
2个回答
|
|
可以启用 RT_USING_MEMTRACE, 然后用 memcheck 和 memtrace 看看。
|
|
|
|
在使用 RT-Thread 操作系统时,如果遇到内存分配失败的问题,可以尝试以下几种方法来解决:
1. **检查内存配置**:首先,确保你的系统配置正确。在 RT-Thread 的配置文件(通常是 `rtconfig.h`)中,检查 `RT_USING_HEAP` 是否被定义,以确保系统使用堆内存管理。 2. **增加堆内存大小**:在 `rtconfig.h` 文件中,可以调整 `RT_HEAP_SIZE` 的值来增加堆内存的大小。例如,你可以将其设置为更大的值,如 `#define RT_HEAP_SIZE (128 * 1024)`。 3. **优化内存使用**:检查你的应用程序中是否有内存泄漏或不必要的内存分配。使用内存分析工具(如 Valgrind 或 RT-Thread 自带的内存检测工具)来帮助找出问题。 4. **调整线程栈大小**:在 `rtconfig.h` 文件中,可以调整 `RT_THREAD_STACK_SIZE` 的值来减小线程栈的大小,从而为堆内存腾出更多空间。 5. **使用内存池**:如果可能,考虑使用内存池来管理内存。内存池可以减少内存碎片,提高内存分配和释放的效率。 6. **减少模块依赖**:检查你的应用程序是否依赖了不必要的模块。例如,如果你不需要 LWIP、SFUD、FAL 等模块,可以考虑不包含它们,以减少内存占用。 7. **调整编译选项**:在编译时,可以尝试使用不同的编译选项,如优化级别(-Os、-O2 等),以减小生成的二进制文件大小。 8. **使用外部存储器**:如果可能,可以考虑使用外部存储器(如 SD 卡、Flash 等)来扩展系统的内存空间。 9. **调试和日志**:在开发过程中,使用调试工具和日志记录来跟踪内存分配和释放的过程,以便更好地了解内存使用情况。 10. **更新 RT-Thread 版本**:如果你使用的是较旧版本的 RT-Thread,可以考虑升级到最新版本,以获取更好的内存管理和性能。 通过尝试以上方法,你应该能够解决内存分配失败的问题。如果问题仍然存在,请提供更多详细信息,以便进一步分析和解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
152个成员聚集在这个小组
加入小组【Vision Board创客营连载体验】基于RA8D1-Vision Board的自动路径规划小车
868 浏览 0 评论
【Vision Board创客营连载体验】基于Vision Board的垃圾分类
1201 浏览 0 评论
【Vision Board创客营连载体验】使用 Vision Board 做一个 UVC Camera
849 浏览 0 评论
【Vision Board创客营连载体验】TinyMaix进行手写数字识别
1154 浏览 0 评论
【Vision Board创客营连载体验】RA8D1-Vision Board使用7寸屏设置为RGB666大端模式模式成功显示摄像头图案
1144 浏览 0 评论
在RT-Thread Studio中新建的stm32f407-atk-explorer工程运行qemu失败,是什么原因引起的?
206浏览 3评论
STM32F407ZGT6 spi flash片选引脚无法被拉低的原因?怎么解决?
1186浏览 2评论
移植RT-THREAD在stm32开发板上,使用rt_kprintf不能正常打印的原因是什么?怎么解决?
511浏览 2评论
stm32f103zet用rtthread studio生成带finsh的项目程序,串口输入help没有反应是为什么?
513浏览 2评论
rtthread studio已经成功编写了外部flash下载算法,程序也能下载进去但是不能进行调试怎么办?
432浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 13:06 , Processed in 0.471370 second(s), Total 51, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号