12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 一直注意:交付的时候,APP1区要做写保护。
- /*2025_08_06
- 485中断接收架构: UART + DMA + 空闲中断(IDLE)
- 不使用HAL_UART_RxCpltCallback,因为他是自动跳转的,主动触发的回调是用于固定长度的,对于空闲中断不定长的数据是用自定义函数。
- */
- /*2025_08_10版本
- 补全06 10 的应答参数
- 缩小堆空间
- Stack_Size EQU 0x400
- Heap_Size EQU 0x200
- */
- /*2025_08_12版本
- Stack_Size EQU 0x400
- Heap_Size EQU 0x250
- 控制台命令按照文档改完
- */
- */2025_08_14版本
- 升级标志位:
- 起始帧里:
- 0100: 文件大小存到缓存体,存到数据库2区;
- 0200: 文件大小存到缓存体,存到数据库2区;
-
- 结束帧里:
- 0100: 验证APP缓存区计算和收到的MD5码16字节是否一致,一致表示APP缓存区的数据接收和写入的没问题。
-
- 0200: 验证APP缓存区计算和收到的MD5码4字节是否一致,一致表示APP缓存区的数据接收和写入的没问题。
- 校验通过,则将APP缓存区数据复制到APP2区。
- 计算一遍APP2区MD5是否和APP数据缓存区一致,以确保复制过程没问题。
- MD5码存到缓存体,存到数据库2区;
- 写入APP缓存区之后,验证MD5通过后,将 iapLoadStatus 置300;重启;
- 重启之后,
- 读取 iapLoadStatus 置了0 ,则继续运行APP1
- 读取 iapLoadStatus 置了2 ,则跳转到APP2运行。
- 读取 iapLoadStatus 置了300,
- 则开始擦除APP2区,然后将APP缓存区数据复制到APP2区 ,
- 复制完之后校验APP2区MD5码是否正确,如果错误则 ubootback = 401,iapLoadStatus =0;
- 如果正确则 ubootback = 0, iapLoadStatus = 2,重启;
- ubootback = 400 的情况是,是程序运行在APP2区,但是每次重启后发现是由看门狗导致的复位次数超过了5次,
- 则置 ubootback = 400;iapLoadStatus = 0,重启后会回到APP1运行。
- 收到回退到APP1指令时,将 ubootback = 1, iapLoadStatus =0,重启。
- 升级成功次数增加在哪里判断
- */
- */2025_08_15版本
- 将标定结构体划到业务结构体里
- 每次控制台修改数据库的时候也要将对应的结构体刷新掉
- 数据库初始化到结构体的时候将标定的结构体参数也都初始化上。
- 要做的事:
- 2025/08/15
- Modbus 06 和 10 改结构体数据后要同步到数据库。
- 增加滑动窗口以及传感器数据存到队列的时间节奏
- */
- /*2025/08/20版本
- 修复IAP升级的一些小问题
- 要做的事:
- 硬件版本要在开始时强制写入
- */
|