打印

关于软件版本升级维护的一些讨论

[复制链接]
2029|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
假设版本1.0.0中,要写到flash中的信息是 model_data,
struct TelemetryBroadcast{
  uint8_t   state:1;            //状态

  uint8_t   repeatTime:6;         
  uint8_t   interal;            
  uint8_t   repeatInteral;      
};

struct Volume{
  uint8_t   voice[6];
  uint8_t   vibration[4];
};

struct model_data{
        ...
        TelemetryBroadcast     radio;
        ...
        Volume                volume;
};
按照之前版本升级的一个操作,我们通常都是在 Volume volume 后面追加新的成员,防止影响到之前的数据,
但这样又有一个问题了,后续一直在后面追加,这样就造成了这个结构体混乱,如 想在 radio 结构体中新增一个成员,只能放到后面去,长久这样下去,这些信息就比较乱了。
但是如果像这种方法(插入)进行新增成员的话,可以更好的保证结构体的完整性 和 可读性

这样又有一个问题了,在版本1.0.0  到1.0.1时,若上电不初始化flash的模型数据,那么就会造成数据错乱,这样不利于进行版本升级(保存上一版本信息)

今天突然想到这问题,想和大家一起讨论讨论,望大家多多指点!

s.png (25.61 KB )

s.png

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

134

帖子

3

粉丝