ESP32-P4: 使用 mbedTLS 内存在 PSRAM 中的 TLS 会在 mspi_psram_isr_handler_wrapper 中中止 (在未对齐的 PSRAM 缓冲区上运行 AES-DMA) (IDFGH-18295)
- 回答清单。
- 我读了文件ESP-IDF编程指南,但问题没有在这里讨论。
- 我已把以色列国防军分支(主机或释放机)更新到最新版本,并核实那里存在这个问题。
- 我搜索过问题追踪器 类似的问题,没有找到类似的问题。
以色列国防军版本。
v6.1 (tag v6. 1, 承诺fff9895c82d, espressif/idf:v6.1 Docker图像).
Espressif SoC修订版.
ESP32-P4芯片修订版 v1.3 (ROM esp32p4-eco2-20240710),32 MB AP HEX PSRAM 在200 MHz,16 MB闪光
使用QQ操作系统.
窗口
你是如何构建你的项目的?
其他(请在更多信息中说明)
QQ 如果您正在使用 Windows, 请指定命令行类型 。
CMD 磁盘
QQ 开发 Kit.
自定义多氯联苯
使用电力供应。
外部 3.3V
什么是预期的行为?
启用了CONFIG MBEDTLS EXTERNAL MEM ALLOC=y'和硬件AES/SHA(默认),由esp https-server'提供TLS连接,数据正常流动。 AES-DMA和SHA-DMA驱动程序处理PSRAM中任何地方的缓冲,包括非16字节对齐的相抵. 这应当取决于`CONFIG SPIRAM ECC ENABLE'是否打开或关闭,以及是否启用了闪存加密。
什么是实际行为?
一个谈判`TLS AES 256 GCM SHA384'的TLS连接在握手时中止设备。 通常是靴子后的第一个连接,绝不晚于第三个.
中止( ) 在 0 上 PC 0x4000d863 调用0x4000d863'解码为mspi psram isr handler wrapper' (`组件/esp psram/ system layer/esp psram mspi.c:79'),MSPI PSRAM出错中断. 处理器自己的“ MSPI PSRAM 错误” 消息和事件比特在中止前不会出现在控制台上 。
相同的固件和负载( 200 TLS 1. 3 个连接, 每个连接得到448 KB 响应):
MbedTLS内存 ^ “ CONFIG SPIRAM ECC ENABLE” ^ AES/SHA DMA驱动程序 → Cepher套件 → 结果 → |-|-|-|-. PSRAM QQ y v 6.1 已运出 QQ TLS AES 256 GCM SHA384 在第一个连接上中止 QQ QQ PSRAM # # # # # # #v 6.1 已运出 # # # TLS AES 256 GCM SHA384 # # # #在第一个连接上中止 # # # # #
QQ PSRAM y v 6.1 已运出 QQ TLS CHACHA20 POLY1305 SHA256 只 QQ 200/200 OK QQ
在内部RAM("CONFIG MBEDTLS INTRENAL MEM ALLOC=y")中带有mbedTLS内存,同一服务器运行时没有中止.
补丁行修改了efuse hal flash-centration uplied ()'中的mbedtls/port/aes/dma/esp aes dma core.c'和mbedtls/port/sha/core/sha.c'中的efuse hal flash-centration unitation-unitation () ' 四个字,因此,在`CONFIG SPIRAM ECC-ENABL'确定时,现有的16字节调整也适用。
esp crypto shared gdma.c'以max data burst size = 16'配置加密 TX 通道。 从不相通的 PSRAM 地址开始的16字节突起似乎触发了 PSRAM 控制器出错 。 在v6.1中,驱动程序仅在启用闪存加密时重新调整PSRAM缓冲.
. . . . . . .
内容来源: espressif/esp-idf