处理可远程升级的嵌入式系统的版本号

时间:2011-02-01 16:51:08

标签: embedded versioning

我目前正在开发一系列嵌入式产品,这些产品将通过电话与PC交换信息。目前,家庭的不同成员以不同的方式存储和交换信息,但是任何特定类型的单元将仅以单一格式存储和交换信息。 PC能够为任何远程单元提供新固件,该固件将在下次重启远程单元时加载(PC可以请求重新启动)。

目前,当一个单位打电话时,它会报告单位类型(字符串),版本号(每个版本的增量)和构建日期; PC将在数据库中查找单元类型,并检查数据库固件是否比单元中的固件更新。如果是这样,它会将数据库固件加载到设备中并要求它重新启动并回拨(重新启动将断开连接)。

这个方案有效,但看起来有点蠢。在某些错误修复之前禁止使用固件版本可能是可取的,但我不确定如何最好地编码。应用程序的每个版本是否都有针对每种硬件类型的最低可接受固件转速的硬编码列表?如果较新的固件版本添加了新的内存字段或通信数据包样式,那么如何最好地处理互操作性?说“如果FirmwareRev> 1.23458那么Mem(29)= BeeperFrequency Else Mem(29)= 0”似乎相当粗糙。

我有一个想法是固件转录描述包含各种功能的位掩码,但我不知道如何明智地分配这些位,以避免使用太多位来指定最终总是会去的功能一起(因此用完了比特)或使用一个比特来控制最后被分离的特征。

还有其他人处理过此类问题吗?他们如何最好地解决?

1 个答案:

答案 0 :(得分:1)

我只是让单位报告他们的MAC地址,这些地址与您的其他信息一起保证是唯一的,然后只需在服务器上保留一个小数据库,让它管理升级决定。您可能希望降级以及升级,因此我会将智能设备保留在服务器上。