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

[复制链接]
2426|0
 楼主| chenyuanjiyi 发表于 2021-7-23 15:34 | 显示全部楼层 |阅读模式
假设版本1.0.0中,要写到flash中的信息是 model_data,
  1. struct TelemetryBroadcast{
  2.   uint8_t   state:1;            //状态

  3.   uint8_t   repeatTime:6;         
  4.   uint8_t   interal;            
  5.   uint8_t   repeatInteral;      
  6. };

  7. struct Volume{
  8.   uint8_t   voice[6];
  9.   uint8_t   vibration[4];
  10. };

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

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

134

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部