feat: 新增PD充电带模式设置流程,完善调试开关与升级文档
1. apps/boot/application/main.c: 注释掉跳转APP代码,启用APP_Running循环 2. apps/chrg/applications/thread/chrg_roll_nor.h: 新增5个带模式设置的状态索引 3. apps/chrg/applications/thread/chrg_north.h: 开启Sink协议调试,关闭南向命令调试 4. docs\power_board_upgrade_issues_and_plan.md: 新增功率板升级问题与修改计划文档 5. apps/chrg/applications/thread/chrg_roll_nor.c: 新增模式设置相关状态处理逻辑,适配新增状态索引 6. apps/chrg/applications/thread/chrg_comm.c: 新增YModem超时机制、调试日志与升级控制帧发送逻辑,完善升级流程
This commit is contained in:
@@ -0,0 +1,167 @@
|
||||
# 功率板升级问题与修改计划
|
||||
|
||||
## 1. 升级链路
|
||||
|
||||
```text
|
||||
上位机
|
||||
↓
|
||||
协议板 App
|
||||
↓ 进入升级指令
|
||||
协议板南向 UART
|
||||
↓
|
||||
功率板 Boot
|
||||
↓ 0x06、0x43
|
||||
协议板 App
|
||||
↓
|
||||
上位机
|
||||
进入升级控制帧:
|
||||
03 06 00 0F 00 FF F8 6B
|
||||
跳转 App 控制帧:
|
||||
03 06 00 0F 00 0F F8 2F
|
||||
功率板 Boot 使用裸 BIN + YModem 接收升级数据。
|
||||
2. 已确认的问题
|
||||
2.1 协议板发送日志含义不准确
|
||||
协议板日志:
|
||||
[UPG] CTRL ENTER try=1 tx=0
|
||||
tx=0 只表示发送请求已经提交到南向升级发送流程,不能证明 UART 已经在物理线上发送成功。
|
||||
需要通过串口逻辑分析仪确认实际线路是否出现完整控制帧。
|
||||
2.2 功率板 Boot 控制帧接收依赖一次完整 DMA 回调
|
||||
当前 Boot 主要在以下条件同时满足时识别进入升级帧:
|
||||
received_len == 8
|
||||
usart1_dma_rx_buf[0] == 0x03
|
||||
UPDATE_FRAME_MATCH
|
||||
如果控制帧被 DMA 空闲中断拆成多次接收,当前逻辑可能无法在拼接完成后重新判断控制帧。
|
||||
2.3 功率板 Boot 只有擦除成功后才发送应答
|
||||
处理流程:
|
||||
收到完整控制帧
|
||||
↓
|
||||
Flash_Erase_App_Region()
|
||||
↓
|
||||
擦除成功:发送 0x06、0x43
|
||||
擦除失败:发送 0x15
|
||||
因此:
|
||||
- 完全没有响应:优先检查 UART 接收、帧匹配、通道切换和线路;
|
||||
- 返回 0x15:重点检查 Flash 擦除;
|
||||
- 返回 0x06 但协议板没有收到:检查南向返回线路和协议板接收线程。
|
||||
2.4 Flash 分区注释与实际大小不一致
|
||||
当前配置:
|
||||
APP_FLASH_BASE_ADDR = 0x08003800
|
||||
APP_FLASH_SIZE = 0x0000B000
|
||||
0xB000 实际为 44 KB,而代码注释写成了 40 KB。
|
||||
同时擦除配置为:
|
||||
NbPages = 22
|
||||
PAGE_SIZE = 0x800
|
||||
22 页也是 44 KB。需要确认这是否符合实际功率板 Flash 分区规划。
|
||||
2.5 南向通道和收发方向需要单独确认
|
||||
协议板升级前会执行:
|
||||
chrg_south_switch(ch)
|
||||
串口发送前后还会切换 RS485 收发方向。通道选择错误、方向控制延迟不足或线路未接通,都可能导致功率板无法收到控制帧或协议板收不到 0x06。
|
||||
3. 修改计划
|
||||
3.1 完善功率板 Boot 控制帧接收
|
||||
在 DMA 接收回调中:
|
||||
1. 累积多次接收到的数据;
|
||||
2. 达到 8 字节后统一匹配进入升级帧和跳转帧;
|
||||
3. 匹配成功后设置对应 pending 标志;
|
||||
4. 匹配失败时清理缓存并等待下一帧;
|
||||
5. 增加接收长度和帧内容调试输出,或使用 GPIO 翻转辅助定位。
|
||||
3.2 完善协议板发送状态
|
||||
协议板需要区分:
|
||||
- 发送请求提交成功;
|
||||
- UART 实际发送完成;
|
||||
- 功率板返回 0x06;
|
||||
- 功率板返回 0x15;
|
||||
- 等待超时。
|
||||
日志中应明确打印实际发送长度和发送帧内容。
|
||||
3.3 完善应答重发机制
|
||||
控制帧和 YModem 数据帧均应保留最近一次发送内容:
|
||||
- 等待 ACK 超时后重发;
|
||||
- 收到 NAK 后重发;
|
||||
- 超过最大重试次数后退出升级;
|
||||
- 收到 CAN 后立即中止;
|
||||
- 半帧超时后清理接收缓存并等待下一帧。
|
||||
3.4 核对 Flash 配置
|
||||
需要确认:
|
||||
- 功率板 MCU 型号;
|
||||
- Flash 页面大小;
|
||||
- Boot 起始地址;
|
||||
- App 起始地址;
|
||||
- App 最大容量;
|
||||
- Boot 工程链接地址;
|
||||
- App 工程链接地址;
|
||||
- YModem 文件最大长度。
|
||||
确认后统一修正宏定义、擦除页数和注释。
|
||||
3.5 保持升级状态期间停止普通南向轮询
|
||||
进入升级模式后:
|
||||
- 停止普通 Modbus 轮询;
|
||||
- 锁定目标功率板通道;
|
||||
- 只转发控制帧、YModem 数据帧和单字节应答;
|
||||
- 升级结束或失败后恢复普通轮询。
|
||||
4. 待验证项目
|
||||
4.1 控制帧发送
|
||||
使用逻辑分析仪确认协议板实际发送:
|
||||
03 06 00 0F 00 FF F8 6B
|
||||
确认:
|
||||
- 波特率为 115200;
|
||||
- 数据格式为 8-N-1;
|
||||
- 通道选择正确;
|
||||
- RS485 发送方向正确;
|
||||
- 帧没有被截断。
|
||||
4.2 功率板接收
|
||||
在功率板 Boot 的:
|
||||
HAL_UARTEx_RxEventCallback()
|
||||
检查:
|
||||
Size
|
||||
usart1_dma_rx_buf[0..7]
|
||||
期望:
|
||||
Size = 8
|
||||
03 06 00 0F 00 FF F8 6B
|
||||
4.3 功率板帧处理
|
||||
确认以下变量和流程:
|
||||
g_update_prepare_pending = 1
|
||||
Check_Updata()
|
||||
Ymodem_HandleControlFrame()
|
||||
Flash_Erase_App_Region()
|
||||
记录 Flash 擦除返回值。
|
||||
4.4 功率板应答
|
||||
确认功率板 UART 线上依次发送:
|
||||
06 43
|
||||
其中:
|
||||
- 0x06 表示控制帧处理成功;
|
||||
- 0x43 表示进入 YModem 接收等待。
|
||||
4.5 协议板接收
|
||||
确认协议板南向接收线程能识别:
|
||||
0x06
|
||||
0x15
|
||||
0x43
|
||||
0x18
|
||||
并将应答正确放入 YModem 应答队列。
|
||||
4.6 YModem 数据传输
|
||||
确认:
|
||||
- 上位机发送的是裸 BIN;
|
||||
- 首包为 YModem 元数据包;
|
||||
- 数据包号连续;
|
||||
- 功率板每包返回 0x06;
|
||||
- 丢包或 CRC 错误时返回 0x15;
|
||||
- 重发后包号状态正确;
|
||||
- EOT 流程能够正常结束。
|
||||
4.7 异常场景
|
||||
需要测试:
|
||||
- 控制帧拆包;
|
||||
- 控制帧丢失;
|
||||
- 0x06 丢失;
|
||||
- YModem 数据包丢失;
|
||||
- YModem 数据包 CRC 错误;
|
||||
- 升级中途断电;
|
||||
- 升级中途复位;
|
||||
- BIN 文件超过 App 分区;
|
||||
- Flash 擦除失败;
|
||||
- 跳转帧发送失败。
|
||||
5. 暂停调试时的结论
|
||||
当前暂不进行硬件调试。后续恢复调试时,优先使用逻辑分析仪确认以下最小链路:
|
||||
协议板发送控制帧
|
||||
→ 功率板 DMA 收到 8 字节
|
||||
→ 功率板识别控制帧
|
||||
→ Flash 擦除成功
|
||||
→ 功率板发送 0x06
|
||||
→ 协议板接收到 0x06
|
||||
只有这条链路确认成功后,再继续验证 YModem 数据包传输。
|
||||
Reference in New Issue
Block a user