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 |
|