时间过得可真快,转眼到了七月份的最后一天,一年也过去了一半多,今天算是把远程升级BOOTLOAD的任务告一段落了。
使用SC95芯片,配合用户的通信协议,实现了正常升级和紧急升级功能,还有固件标识符比对功能。
固件标识符比对用到了升级文件的最后8字节,此时升级过程中需要去除这8个字节,进行判断,总大小对(帧数*单帧字节数)取余,若小于8,则舍弃最后一包数据,对倒数第二帧数据只取单帧字节数+余数-8;若大于8,则最后一帧字节数为(余数-8);
正常升级和紧急升级进行区分,因为客户的协议里在正常升级时会发送当前版本号和下一版本号,而紧急升级只发送下一版本号,故在处理接收数据时需要去区分,我将版本号信息写在FLASH区的最后几个字节,每次启动时比较版本号,若一致则进入APP程序,否则等待升级,在升级过程中会将版本号更新,使得版本号不一致,此时断电再上电便会进入紧急升级状态,升级完成后将两个版本号更新为一致,便可以正常启动APP。