所有错误描述
[RMT-176] RMT 启用持续发送模式时,空闲信号电平可能出错
描述
在 ESP32-P4 的 RMT 模块中,如果启用了持续发送模式,那么预期发送通道在发送 RMT_TX_LOOP_NUM_CHn 次数据后会停止数据传输,之后空闲状态的信号电平应由结束标志中的 level 段决定。
但在实际数据传输中,停止数据传输后,通道空闲状态的信号电平并不由结束标志中的 level 段决定,而是由回卷数据携带的电平决定,最终的电平不能确定。
变通方法
建议用户置位 RMT_IDLE_OUT_EN_CHn,从而仅使用寄存器来控制空闲状态的信号电平。
从首个支持持续发送模式的 ESP-IDF 版本 (v5.2) 开始已自动绕过该问题。在这些版本的 ESP-IDF 中,空闲状态的信号电平只能由寄存器控制。
解决方案
已在芯片版本 v3.0 中修复。
[I2C-308] 在分多次读操作中,主机无法正确读取从机数据
描述
如果启用了 I2C 从机 non-FIFO 模式且主机多次对从机进行读操作时,主机无法正确从从机中读取正确的数据。
变通方法
配置从机的 I2C_FIFO_ADDR_CFG_EN 和 I2C_SLV_TX_AUTO_START_EN 为 1,并配置 I2C_FIFO_PRT_EN 为 0。
配置完成后,主机必须使用 RSTART -> WRITE (slave addr, fifo addr) -> RSTART -> WRITE (slave addr) -> READ (NACK) -> STOP 的命令序列对从机进行访问,每次读取仅限一个字节。
解决方案
已在芯片版本 v3.0 中修复。
[MSPI-749] 芯片在上电或唤醒过程中失败,并打印 “Load access fault” 错误信息
描述
在 ESP32-P4 进行上电或唤醒过程中,由于 MSPI IP 内部读数据请求通道处理异常,MSPI 不能正确处理 AXI 系统总线发起的首次及第二次访问请求,从而概率性返回不应出现的错误响应,导致启动流程失败。
变通方法
上电流程:上电流程固定,若流程失败,系统仅能依靠看门狗超时复位芯片,实现“二次上电”。在“二次上电”后,flash MSPI 模块可恢复正常工作。
唤醒流程:在休眠唤醒过程中,LP memory 区域未掉电,其内容得以保持。可在休眠前预先在 LP memory 中部署一段可执行程序,该程序能够执行两次 dummy 读访问。唤醒时,CPU 将先执行该程序,再跳转至 ROM code 继续正常启动流程。代码如下:
REG32_WR(0x500ca000, 0x23);
CLEAR_PERI_REG_MASK(0x5008c03c, 0x80000000);
// 关闭 CPU 获取错误响应
SET_PERI_REG_MASK(0x500e51a4, 0x00000007);
// 使能 AXI
REG32_WR(0x500ca000, 0x23);
SET_PERI_REG_MASK(0x5008c03c, 0x00000001);
// 置 1 个 MSPI MMU 表项,用于将 AXI 地址映射到 flash 地址
REG32_WR(0x500ca000, 0x23);
SET_PERI_REG_MASK(0x5008c380, 0x0);
REG32_WR(0x500ca000, 0x23);
SET_PERI_REG_MASK(0x5008c37c, 0x1000);
// AXI 读取 flash MSPI 的第一次和第二次访问
REG32_RD(0x80000000);
REG32_WR(0x500ca000, 0x23);
REG32_RD(0x80000040);
REG32_WR(0x500ca000, 0x23);
// 重新使能 CPU 获取错误响应
CLEAR_PERI_REG_MASK(0x500e51a4, 0x00000007);
SET_PERI_REG_MASK(0x50111014, 0x8000);
SET_PERI_REG_MASK(0x50111014, 0x2000);
PSRAM MSPI:PSRAM MSPI 初始化时,在正式 AXI 读访问前插入两次 dummy 读,可有效规避初始访问异常。
解决方案
已在芯片版本 v3.1 中修复。
[MSPI-750] PSRAM 非对齐 DMA 读操作在地址重叠时可能读取到旧数据
描述
通过 DMA 或 CACHE 随机访问 PSRAM 时,若对同一地址区间先进行写操作后进行读操作,可能出现数据读取错误。触发条件:
任意写请求被执行。
读操作为过 DMA 发起的突发长度为 1 字节或 2 字节的读请求,且访问地址未按 4 字节对齐。
读操作访问的地址区间与先前的写操作地址区间存在重叠。
在上述条件下,读操作可能无法获取到写操作写入的新数据,而是返回了写操作之前存在于 PSRAM 中的旧数据。
根本原因:MSPI IP 内部的“地址重叠检测”功能在处理上述非对齐读请求时,其地址区间计算存在异常。实际用于检测的地址范围,其尾端比该读请求本应访问的地址范围可能少 1 至 3 字节。此缺陷导致重叠检测功能可能失效,进而引发数据读取错误。
变通方法
建议在软件应用时,为所有可能发起非 4 字节对齐访问(如 Burst Size 为 1 或 2 字节)的主机(如 USB、SDMMC)强制实施 4 字节地址对齐,可避免该问题。
解决方案
已在芯片版本 v3.1 中修复。
[MSPI-751] MSPI IP 地址重叠检测功能因异步时序问题导致在特定频率条件下读写重叠地址时数据错误
描述
通过 DMA 或 CACHE 随机访问 PSRAM 时,若对同一地址区间先进行写操作后进行读操作,在特定时钟频率配置下,可能出现数据读取错误。触发条件:
DMA 或 CACHE 对 PSRAM 的随机访问中,存在对同一地址的“先写后读”序列。
AXI 总线频率 freq_axi 与 MSPI 核心频率 freq_core 的比值关系超出安全范围。具体的安全范围取决于 AXI 拼接功能的启用状态以及芯片的实际时序表现。
在上述条件下,读操作可能无法获取到写操作写入的新数据,而是返回了写操作之前存在于 PSRAM 中的旧数据。此错误将导致数据一致性被破坏,可能影响芯片的正常功能。
根本原因:MSPI IP 内部的“地址重叠检测”功能存在异步时序问题。当时钟频率比处于临界状态时,该时序问题会导致检测逻辑失效,无法正确识别地址重叠,进而引发数据读取错误。
变通方法
为确保系统稳定,软件配置需根据 AXI 拼接功能的启用状态以及时序条件,满足以下频率约束:
时序场景 |
AXI 拼接功能状态 |
频率约束条件 |
|---|---|---|
考虑时序不佳 |
启用 |
3 × freq_core ≥ freq_axi |
禁用 |
freq_core ≥ freq_axi |
|
考虑时序正常 |
启用 |
4 × freq_core ≥ freq_axi |
禁用 |
2 × freq_core ≥ freq_axi |
解决方案
已在芯片版本 v3.1 中修复。
[ROM-764] ROM 中安全启动缓冲区地址错误导致验证失败
描述
在 ROM 中,安全启动阶段缓冲区的起始地址配置错误。该地址指向了 L2 缓存数据存储器 (0x4FF0_0000),该区域属于 L2 缓存的一部分,CPU 无法写入。
由于此错误配置,存储在安全启动缓冲区中的数据可能会丢失,可能导致安全启动过程中的哈希计算失败或签名验证失败。
变通方法
请勿启用安全启动功能。
解决方案
已在芯片版本 v3.1 中修复。
[Analog-765] 当外设电源域关闭时,输出调压器无法正常供电
描述
当外设电源域被关闭时,输出调压器无法正常供电。
变通方法
如果希望使用输出调压器为外部 PCB 组件供电,请勿在 Light-sleep 模式下关闭外设电源域。
解决方案
已在芯片版本 v3.1 中修复。
[DMA-767] DMA 通道 0 事务 ID 重叠引发权限管理冲突
描述
在使用 AHB DMA 通道 0 执行内存间传输时,该传输会被分配事务 ID “a”,此 ID 与 RMT 外设 DMA 使用的事务 ID 相同。
由于此 ID 重叠,通道 0 上的内存间传输会共享 RMT 外设的权限设置,导致无法独立控制其访问权限。在需要实施隔离权限管理的系统中,此冲突可能引发非预期或越权访问行为。
变通方法
避免使用内存间传输通道 0。所有内存间传输操作均应使用通道 1 或通道 2 执行。
解决方案
已在芯片版本 v3.1 中修复。
[APM-560] 未授权的 AHB 访问可能会阻塞后续对 PSRAM 或 flash 的访问
描述
当多个 AHB Master(USB OTGFS、USB OTGHS、GMAC、SDMMC、Trace0/1、AHB PDMA、L2MEM Monitor、TCM Monitor 等)并发访问 PSRAM 或 flash 时,如果其中某个 Master 不具备访问权限,DMA APM 的访问权限检查会正确拦截该越权访问。
在拦截过程中,DMA APM 并未正确屏蔽下游响应,导致后续传输异常。因此,一旦发生越权访问,此后即便是由具备权限的 AHB Master 发起的正常访问,也可能被阻塞。
变通方法
避免触发对 PSRAM 或 flash 的越权访问。如果无法避免越权访问且系统已经进入上述卡死状态,唯一可用的恢复方式是执行系统复位。
解决方案
已在芯片版本 v3.1 中修复。
[ROM-770] 安全下载模式下 flash 上电失败
描述
为同时支持 1.8 V 和 3.3 V flash,ESP32-P4 引入了一种电源控制机制:在 Joint Download 模式,PMU 默认不会为 flash 上电。在正常下载流程中,软件会先确定 flash 工作电压、更新 eFuse PXA0_TIEH_SEL_0 并配置相关寄存器(此序列已集成到 esptool 下载命令中),从而在烧录前为 flash 上电。
然而,ROM 包含一项安全下载功能。当通过 eFuse ENABLE_SECURITY_DOWNLOAD 启用此功能时,ROM 会拒绝寄存器读写命令,仅允许 flash 烧录。因此,软件无法配置 flash 电源控制寄存器,导致 flash 无法上电,进而使下载过程失败。
变通方法
不启用 Secure Download 模式。
或在板级电路设计中,提供 flash 内部/外部供电切换方案,使 flash 在下载阶段可正常上电。如使用外部电源为 flash 供电,进入 sleep mode 前需切换回 flash 内部供电,否则会影响休眠功能。
解决方案
预计将在 下个芯片版本 中修复。