esp32开发常见问题

文章讲述了ESP32在处理HTTPS请求时可能出现的错误29312的解析,内存优化技巧,如使用NimBLE减小蓝牙资源消耗,以及如何进行证书认证和分区表规划以优化存储空间,特别关注于HTTPSOTA升级和资源分配的合理配置。
摘要由CSDN通过智能技术生成

1. esp32作为https服务端,接收客户端https请求时,报如下错误:

日志打印如下:Dynamic Impl: mbedtls_ssl_fetch_input error=29312

分析:

将错误码29312转换成16进制为0x7280,通过代码定义可知道是MBEDTLS_ERR_SSL_CONN_EOF,即大概率是对端关闭了连接导致的。

复现:

 通过postman测试工具,如将请求超时时间设置为4s,在网络比较差的情况下,是有概率出现对端关闭了连接,导致客户端没有收到应答数据,所以客户端在https请求数据时设置超时时间要适当加长。

2. esp32运行内存优化

  • 对支持psram扩展的芯片,可以勾选上Support for external,SPI-connected RAM选项扩大内存

  • 对于需要使用到蓝牙的场景,如果只是实现类似配网功能,可以选用只支持低功耗蓝牙BLE功能的NimBLE,减少蓝牙占用内存资源

  • mbedtls内存优化,可以去掉勾选保留对端证书(keep peer certificate after handshake completion)来减少内存占用

  • 更多内存优化可以参考官方链接:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-guides/performance/ram-usage.html

3. Https OTA升级关于证书认证问题

        对于不需要进行相关证书认证的,可以勾选跳过证书认证(skip server certificate verification by default)

4. 分区表规划

 对于项目中需要同时使用蓝牙功能、wifi功能以及ota功能的,会使得编译后程序占用flash资源比较多,一般会超过1M空间,所以在分区表规划的时候需要预留足够的ota分区。esp32原本的分区表是一个固件(factory)和两个OTA(ota_0,ota_1),而固件(factory)分区是用来兜底的,但是这部分可以用ota_0或ota_1来作为兜底的功能分区。那么固件(factory)分区是可以删除,把这部分的flash长度平均到ota_0和ota_1,来扩大可编程flash空间

nvs,      data, nvs,    0x9000,        0x4000,  16k
otadata,  data, ota,    0xD000,        0x2000,   8k
phy_init, data, phy,    0xF000,        0x1000,   4k
ota_0,  app,  ota_0,    0x10000,       0x1C0000, 1792k 
ota_1,  app,  ota_1,    0x1D0000,      0x1C0000,

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值