cbb
|
59c2bf5527
|
feat(SpiOta): 实现SPI OTA同步协议和主动按铃机制
- 添加SPI OTA同步协议,使用新的帧格式包含信用控制和CRC32校验
- 实现BOOT主动按铃功能,通过SPI Ready线通知ESP32读取数据
- 添加按铃超时保护机制,防止死锁情况发生
- 优化SPI中断处理,统一在CS释放时处理帧避免RX溢出错误
- 修改GPIO配置为开漏输出模式,实现硬件握手信号
- 添加同步帧解析功能,支持帧头偏移扫描和完整性校验
- 实现信用控制机制,当flash缓冲区满时阻止ESP32继续发送数据
- 修复BOOT命令响应逻辑,确保一致性处理裸字节和帧式命令
- 将OTA完成验证移到主循环处理,避免SPI ready线阻塞过久
- 添加详细的调试日志输出便于问题排查
refactor(SpiOta): 重构SPI OTA协议栈
- 使用CRC32替代CRC8进行帧校验,提高数据完整性
- 重命名帧相关常量以匹配新的同步协议格式
- 移除旧的帧处理方法,采用新的同步帧解析流程
- 添加大小端转换辅助函数用于数据编码解码
- 优化内存布局减少RAM使用
- 统一错误处理流程,添加帧校验失败日志记录
|
2026-07-08 02:51:57 +08:00 |
|
cbb
|
52e59876cf
|
feat(SpiOta): 添加SPI OTA协议硬件握手功能
- 添加对BOOT实际支持的OTA协议帧(REQ/DATA/CANCEL)的过滤,
对不支持的帧类型(如CAN bridge命令)返回ERROR响应,避免误处理
- 实现SPI Ready硬件握手功能,复用PB6引脚作为SPI Ready信号输出,
CS下降沿拉低表示从机忙碌,响应完成后拉高表示就绪
- 新增setSpiReady接口用于控制SPI Ready引脚状态,
确保与DCU_APP行为一致,适配ESP32的硬件握手时序
- 修复因未知帧类型被误认为CANCEL而导致OTA状态机被频繁重置的问题
```
|
2026-07-06 19:13:36 +08:00 |
|
cbb
|
0b086d4b86
|
refactor(spi): 优化SPI OTA模块代码结构
- 移除未使用的调试相关变量和函数,包括s_isrLogPending、s_isrLogBuf等
- 简化注释内容,保留核心功能说明
- 优化CS信号处理逻辑,提高代码可读性
- 修正帧处理中的竞态条件问题,提前设置响应标志避免重复处理
feat(boot): 添加BOOT固件版本号管理功能
- 在main.cpp中添加版本号写入逻辑,将BOOT版本号存储到OTA配置页
- 更新OTA配置页结构,从6个word扩展到8个word,增加版本号存储空间
- 实现版本变更检测机制,仅在版本更新时重写配置页
- 优化SpiOta模块的日志系统,移除多余的调试日志和缓冲区管理代码
|
2026-06-03 03:13:30 +08:00 |
|
cbb
|
061bcabc37
|
feat(boot): 添加OTA状态检查避免心跳打印干扰
当OTA激活时,停止心跳打印以减少日志干扰并避免潜在的
并发问题。
fix(ota): 修正boot跳转汇编代码移除错误寄存器操作
移除psplim和msplim寄存器设置,这些寄存器在目标架构中不
需要配置,避免潜在的硬件兼容性问题。
feat(ota): 添加FLASH操作调试日志输出
在FLASH编程、擦除等关键操作时添加调试日志,便于跟踪
固件升级过程中的具体行为。
perf(ota): 优化OTA完成后的外设关闭和跳转流程
重构跳转逻辑,直接使用内联汇编替代naked函数,提高跳转
的确定性和可靠性。
fix(ota): 添加重复包过滤机制避免数据重复处理
实现包序号验证和去重逻辑,防止ESP32超时重传导致的数据
重复写入问题。
fix(ota): 修复FINISHED状态下重传包的处理逻辑
当OTA完成后收到重复数据包时,返回WAIT状态让ESP32重新
发送FINISH命令,而不是重置整个状态机。
feat(ota): 改进应用程序校验逻辑支持调试器烧录
修改CRC校验逻辑,当Flash中未写入CRC值时视为校验通过,
允许通过调试器直接烧录的应用程序正常启动。
|
2026-06-02 22:13:30 +08:00 |
|
cbb
|
c801701783
|
fix(OTA): 移除BOM标记并优化OTA处理逻辑
移除了OTA.cpp文件中的BOM标记,删除了调试打印代码,修复了
缓冲区溢出检查逻辑,并简化了结束确认帧的发送方式。
- 移除文件开头的BOM标记
- 删除DEBUG_PRINT相关的调试输出代码
- 修正缓冲区大小检查条件,使用expected_size替代硬编码值
- 将结束确认改为使用结构化ACK消息发送
|
2026-06-01 21:27:03 +08:00 |
|
cbb
|
4a39028f74
|
feat(bootloader): 添加CRC32完整性校验和SPI OTA优化
添加了硬件CRC32完整性校验机制,在固件更新后计算并验证CRC32,
确保应用区固件完整性;同时优化SPI OTA的数据处理流程,
引入环形缓冲机制解决帧重复处理问题,并增加传输日志记录。
BREAKING CHANGE: 固件布局调整,应用区末尾预留4字节存储CRC32值
|
2026-05-31 01:45:37 +08:00 |
|
cbb
|
b39a78e3fc
|
fix(bootloader): OTA可用版本,修复跳转主应用前的中断关闭及外设清理顺序
- 把关闭中断操作提前到写 Flash 标记前,避免中断嵌套导致栈溢出
- 完整清空 NVIC 中断使能和挂起标志
- 关闭 DMA 通道及相关外设(CAN0、SPI0、EXTI15)并打印调试信息
- 关闭 SysTick 定时器,避免影响主应用运行
- 取消了不必要的时钟切换,简化收尾逻辑,避免引入额外变量
- 通过裸汇编函数安全切换 MSP,并跳转至主应用入口
- 增加十六进制堆栈大小定义调整,将堆栈大小由0x200增大至0x400
|
2026-05-30 20:03:03 +08:00 |
|
cbb
|
ea7a885de4
|
fix(spi-ota): SPI刷写初版已可完整进行刷写流程
- 在SPI OTA ISR处理函数入口立即设置已响应标志,防止帧被重复处理,避免状态机错误推进
- 修正DMA启动前预填SPI发送缓冲区,覆盖旧字节,解决MISO线输出旧ACK字节导致序号错位问题
- 改为SPI从机内部NSS固定低电平,防止因EXTI延迟丢失首字节,提升帧接收稳定性
- 优化CS下降沿处理流程,确保DMA停止后重新配置并启动,避免数据丢失和标志位误触发
- CS上升沿停止DMA但保持内部NSS低电平,提高下一次事务的接收连续性
- SPI中断处理加入对上次事务提前检测和补充分支,增强系统鲁棒性
- 降低调试打印频率,减少ISR日志开销
- 修复看门狗复位检测代码,阻止BOOT跳转至卡死的APP,进入等待OTA修复模式
- 在工程配置文件中添加bin格式输出支持
|
2026-05-30 00:35:56 +08:00 |
|
cbb
|
8590d327e6
|
feat(ota): 优化握手请求处理及OTA会话状态管理
- 新增 OTA 会话激活状态标志 s_otaSessionActive 及其访问接口
- 在设置传输发送器时激活 OTA 会话状态
- OTAHandler 初始化时显式重置状态机,防止旧状态残留
- 严格区分握手请求 payload,避免 SPI OTA 握手误判状态
- 允许更多 OTA 状态接收握手请求,提升协议容错性
- 非空闲状态拒绝新握手请求并发送等待响应
|
2026-05-28 23:39:52 +08:00 |
|
cbb
|
9d4572da13
|
fix(spi-ota): 修复SPI OTA从机接收和状态机处理逻辑
- 调整pollAllLinks执行顺序,先轮询SPI再轮询CAN,减少CAN阻塞对SPI的影响
- SPI内部NSS固定拉低,避免因NSS延迟导致首字节丢失问题
- onCsAssert中全面停止和重启DMA,确保DMA传输第一拍正确发出
- 修正CS断开时DMA停止逻辑,保持内部NSS常低,提升SPI从机响应稳定性
- 增加多缓冲ISR日志区,提升关键事件调试信息完整性
- 完善SPI中断流程,支持缺失EXTI中断时补做CS断言,优化首字节数据处理
- 实现tryProcessCompleteFrame函数,实现RBNE中断内即时帧检测和处理
- OTA模块增加getState和resetToIdle接口,支持BOOT命令重置OTA状态机
- 开启DEBUG_PRINT,启用调试打印输出,便于运行时状态监控和问题排查
|
2026-05-28 21:52:07 +08:00 |
|
cbb
|
d1beb3b615
|
feat(device): SPI OTA模块改用DMA发送替代TBE中断
SPI OTA模块从PendSV延迟响应模式改为DMA发送模式,主要改进包括:
- 添加DMA支持,使用DMA0_CH2自动发送SPI0数据,消除字节错位问题
- EXTI ISR直接完成帧校验+处理+响应准备,不再依赖PendSV
- 移除PendSV相关代码和中断处理函数
- CS释放后直接处理帧数据,响应帧写入s_txBuf由DMA自动发送
- 更新注释文档说明新的工作流程和DMA通道映射关系
|
2026-05-26 02:44:25 +08:00 |
|
cbb
|
747fc56886
|
feat(boot): 添加SPI OTA功能并更新配置
- 添加SpiOta.h和SpiOta.cpp文件以实现SPI OTA功能
- 在项目配置中添加SPI_I2S外设组件支持
- 设置外部晶振值为8MHz (HXTAL_VALUE=8000000U)
- 调整ROM0大小从512KB减小到2KB以适应引导程序需求
- 移除评估板相关文件和看门狗驱动文件以优化存储空间
|
2026-05-25 01:33:00 +08:00 |
|
cbb
|
77fc3f44b0
|
initial:从GD32C103移植(未测试)
|
2026-05-06 01:17:42 +08:00 |
|