現在、私は情報を交換するためにPCに電話をかける組み込み製品ファミリに取り組んでいます。現在、家族のさまざまなメンバーがさまざまな方法で情報を保管し交換しますが、特定のタイプのユニットは情報を単一の形式で保存し交換します。 PCは、リモートユニットに新しいファームウェアを供給することができます。新しいファームウェアは、次にリモートユニットが再起動されたときにロードされます(PCは再起動を要求できます)。リモートでアップグレード可能な組み込みシステムのバージョン番号の扱い
現在、ユニットが電話をかけると、ユニットタイプ(文字列)、バージョン番号(各ビルドごとに増分)、およびビルド日付がレポートされます。 PCはデータベース内のユニットタイプを検索し、データベースファームウェアがユニット内のものより新しいかどうかをチェックします。そうであれば、ユニットにデータベースファームウェアをロードし、再起動してコールバックするように要求します(再起動すると接続が切断されます)。
このスキームは機能しますが、少し混乱しているようです。特定のバグ修正の前にファームウェアバージョンの使用を禁止することが望ましいかもしれませんが、どのようにコード化すればよいか分かりません。アプリケーションの各ビルドに、各ハードウェアタイプの最小許容ファームウェア回転数のハードコードされたリストが必要ですか?新しいファームウェア改訂版で新しいメモリフィールドや通信パケットのスタイルが追加された場合、相互運用性をどのようにして処理するのが最適でしょうか? 「FirmwareRev> 1.23458ならばMem(29)= BeeperFrequency Else Mem(29)= 0」と言っているのは、やや粗悪なようです。
私は、ファームウェアのRevの説明にはさまざまな機能のビットマスクが含まれていましたが、私はそのようなビットを分かりやすく割り当てて、常に多くのビットを使用して、 (したがって、ビットが不足している)、または1ビットを使用して、後に分離される機能を制御することができる。
誰もこのような問題に対処しましたか?彼らはどのようにして最も解決されますか?
私はあなたが解決しようとしている問題はよく分かりません。フィールド内のユニットが強制的にではなく、バックエンドと通信することができますが、古いバージョンのソフトウェアを継続して実行できるようにしたいですか?アップグレード? –
私は混乱しています - 段落の最初の2つのカップルはファームウェアについてしか話しませんが、突然第3段落であなたは "アプリケーション"と何をするのかと心配しています。このアプリケーションとは何ですか、どのように更新されますか、それはファームウェアとは別のものですか? –
私は今夜質問を書き直してより明確にします。 – supercat