大家好!有个问题要请教下:
我要使用RS485方式对PIC18F45K80系列单片机进行在线升级(官方有介绍使用MMC这个工具生成的Bootloader方式进行升级),官方的文档只介绍了使用串口,先将Bootloader程序烧写在Flash指定的区域,例如:地址0x00-0x2FF,从0x300开始的地址用于存储主应用 程序,如果我使用RS4585这样可行吗?主程序正常运行时是有RS485通信的,用于和上位机的交互,我就是觉得单片机重启后RS485功能都没有了(通过 RS485控制芯片来进行发送/接收),怎么来接收升级包呢?
我的思路是这样的:
1、单片机程序在运行时,通过RS485收到上位机发送的升级指令后,改写单片机Flash存储器的最后一个字节,标识要重启,单片机重启;
2、重启后Bootloader运行,检测Flash存储器的最后一个字节,如果未被改写则检测是否有有效的程序可以运行,如果有则将控制权交给主程序,如果没有则继续留在Bootloader等待用户发送升级包;
3、当把升级包成功写入Flash并校验后,Bootloader改写Flash存储器的最后一个字节,标识为已升级成功;
4、重启单片机,Bootloader检测到有效的应用程序,那么运行升级后的程序。
不知这样可不可行,还望大家指教一下。