在线升级
本帖最后由 程浥 于 2017-5-22 09:25 编辑在线升级的作用:
不用带个调试器到用户那里去给用户下载程序。
在线升级过程:
某个设备使用一种通讯手段,将文件发送给单片机(app),单片机将这段代码暂时存储到某个介质(考别去)里面,然后它(boot)将自身(app)覆盖掉。
升级通信过程:
动作对象 动作 命令
1. 上位机 开始升级 (发送升级命令)
2. 下位机 准备升级 (发送升级开始)
3. 上位机 发送文件 (传输文件)
4. 下位机 进行文件接收和判断 (发送接收文件成功/失败命令)
下位机运行流程:
Flash分区图:
Boot:
装载boot程序,负责代码搬运,开机时运行
无升级标志则跳转至app,
有升级标志将flash2的程序放到flash1
Flash1:
装载app程序,运行用户程序
接收升级文件,
接收成功后,设置升级标志
拷贝区:
装载升级文件,
备份:
预留存储
发的什么玩意儿??:@ 胡小均 发表于 2016-9-12 17:49
发的什么玩意儿??
被我删除了 后面补上 6666666666666666666666666666666666666666666 本帖最后由 程浥 于 2017-5-22 09:38 编辑
实现例子:
例程使用串口做传输介质,选择超级终端为发送端,传输协议为ymodem文件协议。
0.这个程序的pc平台是 超级终端或者secureCRT单片机是STM32F4
1.升级流程:首先给一个值使单片机进入ymodem接收,收到文件成功后将升级标志,重启单片机让iap帮你干活
2.ymodem移植是基于stm32官方给的iap升级程序做的,但他们的ymodem坐在了iap里
不符合上个帖子所讲的
3.ymodem升级需要一个操作让单片机来进入升级,当然此处的串口使用不符合正常的用法,
一般用法都是使用空闲中断DMA接收,或者中断接收定时器鉴别包间隔,这个需要自行修改
4.正常的在线升级还可以添加bin文件加密,比如aes、des什么的.
这个就需要上位机加密,原文件发送,最后在iap搬运时候解密
5.iap里面做app校验,升级储存区校验也是相当不错的,更加安全
6.当然gprs,网络,usb等都挺好玩的。
附件代码:
附图:
页:
[1]