1.浅谈升级
在线升级,我这里用的是232串口,也可以叫做串口升级吧,其实无论用什么接口打到的效果都是一致的,就是数据的交互,根本的区别在于数据快慢。
数据的交互是双向的,一般我们通过无线或者有线,远程或者在现场去操作这些步骤,通过一个工具将你已经打包好的升级文件写入到通讯端口中,最终这个文件将会被写入到设备的FLASH里面去,然后成为设备的应用程序(APP)。
2.流程概述
上位机我这里在VS2017用Winform写的;界面如下:
下位机我用的STM32F103RCT6MCU,开发环境Keil5;
升级前首先应确保下位机已经烧录了bootloader程序;
- 下位机上电首先根据升级标志检测是否存在APP代码,若存在,则跳转去跑APP代码,若不存在则持续循坏boot代码;
- 上位机需要升级,发出升级指令,下位机返回准备OK同时请求下发代码;
- 下位机接收到数据首先进行校验,校验成功后写入到缓存区中;
- 下位机持续接收数据,接收完成且校验无误后,将数据覆盖FLASH,更新升级标志,而后进行跳转,升级完成;
- 升级过程中发生校验错误延时回滚。
Winform上位机代码:
链接: https://download.csdn.net/download/uyoev123abc/88491762