大家好!

我现在要使用PIC18F45K80系列单片机进行在线升级,遇到了些问题想请教下大家,具体情况如下


1、          使用的是PIC18F45K80系列单片机,项目要求使用RS485进行升级处理;


2、         要求有两份程序,即准备升级的新程序和旧程序,如果升级失败则能够运行旧的程序,考虑到单片机Flash的容量问题,已经被程序占用了80%,肯定放不下两个程序了,只有考虑使用外部Flash存储器了;


3、         我使用Microchip官方提供的Bootloader和它的一个上位机程序UnifiedHostApplication是可以通过485升级的,但这种方法是直接擦除旧程序,然后写入新程序,如果升级失败或者485连接失败,则会一直停留在Bootloader;


4、         如果使用外部存储器,那该如何保存Hex文件呢?因为Hex文件既包含数据长度、存储地址,又有数据及校验信息,我是要将Hex文件的所有信息都写入外部存储器吗?然后在准备升级写入单片机的Flash的时候将地址和数据信息解析出来对吗?


5、我目前的思路是这样的:升级包文件是先通过485发送给单片机保存在外部存储器中并同时写入版本信息,单片机会检测版本信息,如果和旧的程序版本不同,则执行升级,将外部存储器中的程序解析并写入到Flash,不知这样是否可行?


可否麻烦大家提供个思路?在此先谢谢了!