假设版本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的模型数据,那么就会造成数据错乱,这样不利于进行版本升级(保存上一版本信息)
今天突然想到这问题,想和大家一起讨论讨论,望大家多多指点!
|