重工电子论坛

标题: 在线升级 [打印本页]

作者: 程浥    时间: 2016-8-26 17:38
标题: 在线升级
本帖最后由 程浥 于 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
发的什么玩意儿??
作者: 程浥    时间: 2016-9-14 16:16
胡小均 发表于 2016-9-12 17:49
发的什么玩意儿??

被我删除了 后面补上
作者: 张金权-11级电子    时间: 2016-9-27 16:26
6666666666666666666666666666666666666666666
作者: 程浥    时间: 2017-5-22 09:26
本帖最后由 程浥 于 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等都挺好玩的。

附件代码:
win7超级终端.zip (174.32 KB, 下载次数: 1) ymodem升级.zip (2.71 MB, 下载次数: 3)

附图:








欢迎光临 重工电子论坛 (http://www.cqutlab.cn/) Powered by Discuz! X3.1