完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
rt-thread studio 2.1.0 + rtthread 4.0.3 + STM32F407ZGT6 + ESP8266 http ota 需使用https, 在setting中启用 mbedtls 支持 在获取文件时出现如下错误 |
|
相关推荐
8个回答
|
|
确认一下用pc浏览器能成功下载
|
|
|
|
1、PC浏览器https可以成功下载,将下载后的文件通过ymodem可正常升级 2、MCU通过http OTA下载是没有问题的 3、添加NTP,模拟RTC后,MCU https 问题依旧。 ![]() |
|
|
|
|
|
|
|
打开mbedtls调试信息,显示mbedtls的交互是正常的,如下: ![]() 但此处出现[E/at.skt.esp] no memory receive buffer(2824).错误。 |
|
|
|
也需要增加线程栈的大小。
|
|
|
|
这个就是 at socket 的问题了,0x7200是 mbedtls 的报错。
recv_buf = (char *) rt_calloc(1, bfsz); if (recv_buf == RT_NULL) { LOG_E("no memory receive buffer(%d).", bfsz); /* read and clean the coming data */ while (temp_size < bfsz) { if (bfsz - temp_size > sizeof(temp)) { at_client_obj_recv(client, temp, sizeof(temp), timeout); } else { at_client_obj_recv(client, temp, bfsz - temp_size, timeout); } temp_size += sizeof(temp); } return; } 2K 多的空间都没有办法申请?这问题就有点大了。 |
|
|
|
初始化完成后 HEAP_BEGIN = 0X20001FC8, HEAP_END = 0X20020000,动态堆约120K (407的片内RAM是128K,如下图) ![]() 另写了小程序,连续rt_calloc地址: rt_size_t bfsz = 2824; //上速出错时,需要分配的大小 ptr = rt_calloc(1, bfsz); 可成功分配40个内存块(40*2824 = 约110K),分配第41个时出错 则证明上面展示的代码处,已经分配不大2K大小的连续内存,可能是RAM几乎被全部占用,或全被碎片占用,分配不到2K的连续空间。 |
|
|
|
建议小内存分配算法更换为其他的内存算法,如果问题推进到内存管理算法的问题,这也不太合理。内存回收策略是在 idle 线程里合并相邻的内存块。
再更换内存算法无果后,建议查到其他方面的问题;比如: 是不是在添加 mbedtls 后剩余的 raw 空间太小,可以考虑优化 mbedtls 的空间占用; 处理其他线程 malloc 逻辑是否合理,是否有内存泄露的情况; 如果都没有问题,建议更换资源更大的芯片。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AI模型部署边缘设备的奇妙之旅:边缘端设备的局域网视频流传输方案
1681 浏览 0 评论
1541 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
6815 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1893 浏览 0 评论
4456 浏览 0 评论
79121 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-9 12:49 , Processed in 0.543742 second(s), Total 52, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191