リモートファームウェア更新Arduino Nano


8

私はArduino Nano (2Kbがブートローダーで使用される32Kbフラッシュメモリ、2Kb SRAM、1Kb EEPROM)に取り組んでいます

マイクロコントローラーは、RS485モジュールを介して電気機器から入力を受け取り、GPRS A6モジュールを使用してリモートサーバーに読み取ったデータをポストします。製品はリモートサーバーと対話し、データを定期的に送信することになっています。

統合部分を完了しました。デバイスは正常に動作し、データを収集してサーバーに投稿します(appx 10-15 Km先)。私が直面している唯一の課題は、そのようなデバイスが100あり、リモートサーバー(または他の適切なメカニズム)を使用してファームウェアを更新する必要ある場合、どうすればよいかということです。

私は、ISPとして別のArduinoを使用することを提案する多くの投稿を経てきましたが、これは私の最後のアプローチになる可能性があります(製品の最終的なコストが増加するため)。

無線によるファームウェアのアップデートは、ローエンドマイクロコントローラーのStack Exchangeコミュニティの場合と同様、まだはっきりしていません。どんな議論も多くの人にとって大きな助けとなります。


「遠隔地」、10メートル、1 km、10 kmの距離をユーザーに説明してください。
Bence Kaulics

@BenceKaulicsでは、GPRSモジュールを使用して、約10 km離れたマイクロコントローラーにリクエストを送信しています。
Ashish K

3
ソフトウェアスタックを含め、ユースケースをより明確に説明する必要があります。その他の無線更新に関する質問をご覧ください。
Sean Houlihane

これは新しい開発ですか、それとも既存の製品に改造しようとしていますか?
Sean Houlihane

@ SeanHoulihane新しい開発です。私は、離れた場所(10 Km)のサーバーにデータを送信できるマイクロコントローラー(コストが唯一の制限)を選択することができます。GPRSモジュールを使用してデータを送信しましたが、現在ファームウェアをリモートで更新する方法が直面している唯一の課題です。
Ashish K

回答:


9

短い答え:可能です。

長い答え:それは複雑です。これが非常に多くの非常に悪い実装がそこにある理由です。

少なくとも、リモート/無線アップデートプロセスには2つのステップがあります。

  1. ファームウェアの送信
  2. ファームウェアのインストール。

もちろん、これは最低限必要なことです。イテレーションで作業している場合も、非常に有効な最初のステップです。複数のデバイスがある場合は、正しいファームウェアを正しいデバイス関連付けることができる必要があります。あなたのデバイスをbrickingの機会を減らすためにしたい場合は、あなたがする方法をお勧めします更新前と更新後にお使いのデバイスの状態を確認し、あなたもしたいと思うの輸送を確保し、可能な限り信頼できるとして輸送を作ると、天然持っ更新エラーの場合のフォールバック戦略を

これは、信頼できる製品を実現するための5つのステップです。これらにはベストプラクティスがありますが、プロジェクトの環境によって異なります。多分それは安くて、アップデートの失敗率5%は大丈夫です、多分それはペースメーカーであり、致命的なシナリオにつながるので、合計で1つのエラーでさえ許容できません。あなたの製品に合うこれらの基本的な解決策を見つける必要があります。

さらに、考慮すべき点が数十あります。顧客はいますか?それらに通知する必要がありますか?彼らは更新のタイミング/インストールに発言権がありますか?デバイスはさまざまな国にありますか?法的規制は適用されますか?規範的な基準は適用されますか?いくつのデバイスを更新していますか?1?ダース?何百?何百万?

5つのデバイスを更新する場合、プロセスは非常におしゃべりになることがあります。数百万を更新している場合、非常に高価になる可能性があります。そして、はい、それは私がステップ1としてリストしたものに影響を与え、ファームウェアを送信します。おそらく、ペースメーカーを作成し、更新ごとに数百メッセージのプロセスコストで代替案を検討してもかまいません。

これらは私が2分間で書き留めた質問だけなので、このリストは確かに完全ではありません。私のポイントは、私たちが実際に適切にあなたを助けることができないシナリオに関する情報なしです。


@Helmarに感謝します。できるだけ詳細に質問を更新します。その上で実行されているOSをサポートしないマイクロコントローラーの場合、リモートファームウェアの更新はあいまいであり、優れた明確な解決策は私だけでなく、ローエンドの開発ボードで作業している多くの人にとっても役立ちます。更新後も確認をお願いします。
Ashish K

1
可能ですが、プラットフォームでフラッシュを少なくとも3つの領域に分割できる場合(または、再フラッシュ中にRAMから実行し、スペアがたくさんある場合、またはリモートで展開可能なJTAGがある場合)。
Sean Houlihane

@SeanHoulihane ATmegaシリーズ RAMから実行できません
Chris Stratton
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.