所有错误描述
[CPU] 写 LP SRAM 时指令执行乱序导致死锁
描述
HP CPU 从 LP SRAM 取指运行时,若依次执行的两条指令 A 和 B 满足以下模式:
指令 A 是写内存指令,例如 sw/sh/sb
指令 B 是只访问指令总线的指令,例如 nop/jal/jalr/lui/auipc
指令 B 的地址未四字节对齐
则仅当 B 指令执行完后,A 指令写的数据才会真实写入内存。这种情况可能带来风险:若在 A 指令写内存之后,B 指令存在无限循环的情况,则 A 指令的写操作永远无法完成。
变通方法
遇到该问题或汇编代码出现上述模式时,
在指令 A 与无限循环间添加 fence 指令,在 ESP-IDF 中可使用 rv_utils_memory_barrier 接口。
使用 wfi 指令替代无限循环,在 ESP-IDF 中可使用 rv_utils_wait_for_intr 接口。
在编译 LP SRAM 中的程序时,禁用 RV32C(压缩)指令扩展,以避免产生非四字节对齐的指令。
解决方案
已在芯片版本 v0.2 中修复。
[时钟] RC_FAST_CLK 时钟无法校准
描述
ESP32-C6 芯片 RC_FAST_CLK 时钟源的频率过于接近参考时钟 (40 MHz XTAL_CLK),导致无法校准,用户无法获取 RC_FAST_CLK 的准确时钟频率,进而对使用 RC_FAST_CLK 且对其准确时钟频率要求较高的外设产生影响。
使用 RC_FAST_CLK 的外设,详见 《ESP32-C6 技术参考手册》 > 章节 复位和时钟 [PDF]。
变通方法
使用 RC_FAST_CLK 之外的其他时钟源。
解决方案
已在芯片版本 v0.1 中修复。
[复位] RTC 看门狗定时器触发的系统复位记录错误
描述
RTC 看门狗定时器 (RWDT) 触发的系统复位无法被正确记录,读取的复位源代码随机,可能有误。
变通方法
无变通方法。
解决方案
已在芯片版本 v0.1 中修复。
[SPI] flash 自动暂停功能启用时,可能导致读出数据异常
描述
启用 flash 自动暂停功能后,SPI0 总线的读取操作和 SPI1 总线的擦除、写入操作可以并发执行。软件通过 SPI1 擦除或写入 flash、且 cache 通过 SPI0 不定时读取 flash 时,如果先执行擦除或写入操作,预期的请求顺序是 擦除或写入 > 暂停或等待空闲 > 读取。
实际先执行擦除或写入操作时,出现的请求顺序是 擦除或写入 > 读取,可能导致读出数据异常,程序运行出现问题。
变通方法
禁用自动暂停功能。
解决方案
已在芯片版本 v0.2 中修复。
[RMT] RMT 启用持续发送模式时,空闲信号电平可能出错
描述
在 ESP32-C6 的 RMT 模块中,如果启用了持续发送模式,那么预期发送通道在发送 RMT_TX_LOOP_NUM_CHn 次数据后会停止数据传输,之后空闲状态的信号电平应由结束标志中的 level 段决定。
但在实际数据传输中,停止数据传输后,通道空闲状态的信号电平并不由结束标志中的 level 段决定,而是由回卷数据携带的电平决定,最终的电平不能确定。
变通方法
建议用户置位 RMT_IDLE_OUT_EN_CHn,从而仅使用寄存器来控制空闲状态的信号电平。
从首个支持持续发送模式的 ESP-IDF 版本 (v5.1) 开始已自动绕过该问题。在这些版本的 ESP-IDF 中,空闲状态的信号电平只能由寄存器控制。
解决方案
暂无 修复计划。
[SAR ADC] SAR ADC 访问 GDMA 时可能出现数据重复
描述
SAR ADC 访问 GDMA 时,如果 AHB_CLK 的时钟频率和 APB_CLK 的时钟频率不同,就会触发多次 GDMA 访问,重复次数和频率比例正相关,导致同一个数据重复存储,浪费存储空间。
变通方法
使用 SAR ADC 时,分频 AHB_CLK 产生 APB_CLK 时将分频系数配置为 1(将 PCR_APB_DIV_NUM 字段配置为 0,即默认值)。
解决方案
已在芯片版本 v0.2 中修复。
[SAR ADC] SAR ADC 低四位精度缺失
描述
SAR ADC 数据位的低四位缺失,造成对应位的精度缺失。
变通方法
无。
解决方案
已在芯片版本 v0.2 中修复。
[Wi-Fi] ESP32-C6 无法作为 802.11mc 精确时间测量 (FTM) 的发起方
描述
802.11mc FTM 中 T3 的时间(即发起方发送 ACK 的时间)无法正确获取,因此无法作为 FTM 的发起方。
变通方法
无变通方法。
解决方案
已在芯片版本 v0.2 中修复。