远程升级程序过程

前言:

在很多消费电子设备中,都有远程升级的功能,它的优点能给设备增加新功能,以及以新增新功能为理由的修复bug。

框架:

一个有远程升级的设备有两个程序,一个是bootloader,另一个是设备程序。bootloader自然是引导程序,它的作用是启动哪一个程序。

bootloader一般是处于内存的开始的地址,即设备启动就会去运行它。

升级包:

用keil把程序编译为一个bin文件,然后上位机将bin文件处理成多帧(具体看实际传输设备),向设备发送。

bootloader:

bootloader一启动,首先检查一个标志位,这个标志位我管它叫app_flag,如果它为1时则将pc指针跳转至App1的地址,为2时则跳转到2。

    if(user_app_flag_addr==APP2_FLAG) //运行第二个应用程序
        {
            if(((*(vu32*)(APP2_FLASH_ADDR+4))&0xFF000000)==0x08000000)//判断是否为0X08XXXXXX.
            {
                iap_load_app(APP2_FLASH_ADDR);//执行FLASH APP代码
            }
        }
     else    //运行第一个应用程序
     {
             if(((*(vu32*)(APP1_FLASH_ADDR+4))&0xFF000000)==0x08000000)//判断是否为0X08XXXXXX.
            {
                iap_load_app(APP1_FLASH_ADDR);//执行FLASH APP代码
            }
     }

远程升级框架:

首先涉及两个点:

1.协议制订

比如协议里面规定控制码为0x10为远程升级,数据长度为两个字节,并且最高位如果置为1则为发送结束。

  1.1 当主站发送第一帧数据时,要准备一块区域(EEPROM)保存升级程序,保存之前先进行清空,每收到一帧,就把数据保存在该区域。

  1.2 协议里应该有校验位,确保每一帧发来的数据是正确的。

  1.3 设备接收到每一帧数据都要向主站发送回应,如果网络问题,导致主站没有收到回应数据,那么主站应该要向设备再次发送这一帧数据,虽然设备已经有了这一帧数据,但可以把这一帧视为重复帧,重复帧不做任何处理。因此,在程序中还要有一个记录当前为第几帧。

  1.4 当数据到达最后一帧时,数据长度的最高位置1,程序判断为结束。

2.接受完数据的处理

  2.1 程序接收到最后一帧数据时,应该提前回复主站,再做处理。

  2.2 程序根据自身处理APP1或APP2,把程序放在APP1或APP2。比如当前程序为APP1,接收到的升级包就应该放在APP2地址帧,如果放在APP1地址中,程序一定会奔溃的。

       2.3 程序复制好地方后,进行一波软复位,首先就会执行bootloader,引导程序就会判断app_flag,在复制的时候已经把标志位置为新的APP地址处,那么设备就会运行新程序。

FTP远程文件同步更新程序 版本:2.1.0.0 新版本v2.1.0.0改动 1.解决了2G以上文件传输时的bug,能够正确比对传输大型文件。 2.支持了程序启动后自动开始同步操作的功能。 3.修正了前版本中的多处bug,进一步提高了长时间无人值守状态下运行的稳定性。 --------------------------------------------------------------------------------------- 版本v2.0.0.0改动 1.程序新增多任务传输功能,通过该功能用户同时可将本地多处不同点的文件向服务器不同目录下上传。 2.自动同步的时间间隔最短可以设置为1分钟。 3.修正了前版本中的多处bug,极大的提高了长时间无人值守状态下运行的稳定性。 --------------------------------------------------------------------------------------- 版本v1.1.0.0改动 1.程序新增支持同步传输子文件夹的功能。 2.修正了前版本中的多处bug,当同步上传大量文件时程序更加稳定。 --------------------------------------------------------------------------------------- 版本v1.0.0.0 1.本程序实现了自动定时检测本地指定文件夹内文件是否更新,如果发生了更新或者添加,则 自动将更新或者添加的文件通过FTP传输到远程电脑指定的文件夹中的功能。用户可对检测间隔时 间,上传文件类型进行设置。程序同时记录了详细的传输日志。 2.如果远程文件夹中的文件出现了丢失,可以通过删除传输日志内的相关记录,重新上传该文 件。如果清空传输日志,程序则自动判定所有指定文件都做出了更新,并且重新上传所有指定 文件,同时再次写入传输日志。 3.第一次运行本程序之后,请先进入参数设置界面设置相关传输参数。 4.由于本程序建立在FTP传输协议的基础上运作,没有FTP服务器的用户可以通过使用FTP服务器 架构软件轻松架构FTP服务器,从而达到使用本程序自动定时向FTP服务器上传更新的文件的功能。 ---------------------------------------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值