cbb 1223be9ca9 fix(boot): 修复SPI OTA协议中的ACK丢失死锁和缓冲区管理问题
- 修复ACK丢失导致的死锁问题:修改onCsRelease()逻辑,只有在ESP32发送
  有效v2请求帧时才清除s_txPending,避免dummy poll误清待发ACK

- 优化缓冲区管理和信用机制:实现增量式flash缓冲区排空(drainFlashBufferOne),
  避免一次性排空阻塞主循环;CREDIT计算同时考虑ISR DATA队列待处理数量

- 添加重复序列处理增强:当DATA仍在主循环排队时优先回复ACK(type=0x80),
  避免ESP32长时间接收WAIT导致连接中断

- 修复缓冲区满时的数据包丢失:在handleLinkMessage中同步排空已写入槽位,
  腾出空间后继续处理当前包,防止永久DUP-SEQ错误

- 优化主循环处理顺序:先处理ISR DATA队列并及时回复ACK,再进行flash写入,
  减少ESP32超时重发导致的断续问题

- 增加FLASH写入错误检查:验证fmc_word_program返回状态,写入失败时及时
  返回避免数据损坏
2026-07-14 12:10:25 +08:00
S
Description
No description provided
1.2 MiB
Languages
C 81.2%
C++ 17.3%
Assembly 1.5%