readme.txt 2.5 KB

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