大家好!
我现在要做个软件升级程序,升级的大概流程是这样的:
1、上位机通过RS485发送Hex文件到单片机,单片机需要将这些内容保存在外部Flash存储器中,比如MX25L1605D;
2、接收完文件并校验后根据上位机的指令,重启,擦除旧程序,从外部Flash读取Hex的内容并写入到程序存储器ROM中;
3、程序更新成功则运行新程序,否则仍然运行旧程序(保存在外部Flash中);
因为受内存及ROM的限制,不能使用文件系统,有如下问题要请教下:
1、上位机发送HEX文件时,是按照hex文件的原格式发送吗?比如:一个hex文件的一行是这样的:
:10751E00A019D8A4120056EC2FF0000E0101A06F96,16个数据,起始地址是:0x751E,类型是数据,校验是:0x96,请问上位机在发送时是直接发送这些16进制吗(包括地址)?这个冒号不用发送吧?
2、上位机在发送hex文件时是一次发送一行hex文件内容好还是一次发送固定长度的字节呢?
3、单片机在保存上位机发送来的数据时以什么样的方式保存在外部Flash中比较好呢?每一行的hex内容如何和其他行的区别开来呢?就是在从外部Flash读取hex文件的内容时如何知道哪些数据写入到ROM的哪个区域及数据长度?
在此先谢谢大家了!