翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS IoT 無線 (OTA) ライブラリ
注記
このページのコンテンツは ではない場合があります up-to-date。最新の更新については、Free RTOS.org ライブラリページ
序章
AWS IoT Over-the-air (OTA) 更新ライブラリを使用すると、 HTTP または をプロトコルMQTTとして使用して、無料RTOSデバイスのファームウェア更新の通知、ダウンロード、検証を管理できます。OTA エージェントライブラリを使用すると、ファームウェアの更新とデバイスで実行されているアプリケーションを論理的に分離できます。OTA エージェントは、アプリケーションとネットワーク接続を共有できます。ネットワーク接続を共有することで、大量の を節約できる可能性がありますRAM。さらに、 OTA エージェントライブラリでは、ファームウェアの更新をテスト、コミット、またはロールバックするためのアプリケーション固有のロジックを定義できます。
IoT によって、従来は接続されていなかった組み込みデバイスにインターネット接続機能が導入されました。これらのデバイスは、インターネットで使用可能なデータを通信するようにプログラムでき、リモートでモニタリングや制御ができます。テクノロジーの進歩により、コンシューマー、産業、およびエンタープライズ分野でこれら従来の組み込みデバイスにインターネット機能が急速に普及しています。
IoT デバイスは、通常、大量にデプロイされ、多くの場合人間のオペレータがアクセスすることが困難または実用的でない場所に配置されます。データを漏洩する可能性のあるセキュリティ脆弱性が発見されるシナリオを想像してみてください。このようなシナリオでは、影響を受けるデバイスをセキュリティ修正で迅速かつ確実に更新することが重要です。OTA 更新を実行できないと、地理的に分散しているデバイスを更新することも困難になる可能性があります。技術者にこれらのデバイスを更新してもらうことは、コストがかかり、時間がかかり、しばしば実用的ではありません。これらのデバイスの更新に時間がかかるため、セキュリティ脆弱性に長期間さらされます。更新のためにこれらのデバイスをリコールすることもコストがかかり、ダウンタイムによってコンシューマーに重大なサービスの中断が発生する可能性があります。
無線 (OTA) 更新により、高価なリコールや技術者の訪問なしでデバイスのファームウェアを更新できます。この方法には次の利点があります。
-
セキュリティ: デバイスが現場にデプロイされた後に検出されたセキュリティ脆弱性やソフトウェアバグに迅速に対応できます。
-
イノベーション: 新機能が開発されるたびに頻繁に製品を更新できるため、イノベーションサイクルを促進できます。更新は、従来の更新方法と比較して、最小限のダウンタイムで迅速に有効になります。
-
コスト - OTA 更新は、これらのデバイスの更新に従来使用されていた方法と比較して、メンテナンスコストを大幅に削減できます。
OTA 機能を提供するには、以下の設計上の考慮事項が必要です。
-
安全な通信: 更新では、転送中にダウンロードが改ざんされないように、暗号化された通信チャネルを使用する必要があります。
-
復旧: 断続的なネットワーク接続や無効な更新の受信などにより、更新が失敗することがあります。これらのシナリオでは、デバイスが安定した状態に復旧し、使用不能な状態にならないようにする必要があります。
-
作成者検証: バージョンや互換性の確認など、その他の検証とともに、信頼できるソースからの更新かどうかを検証する必要があります。
無料 でOTAの更新の設定の詳細についてはRTOS、「」を参照してください無料RTOS Over-the-Air更新。
AWS IoT 無線 (OTA) ライブラリ
AWS IoT OTA ライブラリを使用すると、新しく利用可能な更新の通知を管理したり、ダウンロードしたり、ファームウェア更新の暗号化検証を実行したりできます。(OTA) over-the-airクライアントライブラリを使用すると、ファームウェア更新メカニズムを、デバイスで実行されているアプリケーションから論理的に分離できます。(OTA) over-the-airクライアントライブラリは、ネットワーク接続をアプリケーションと共有し、リソースに制約のあるデバイスにメモリを保存できます。さらに、 (OTA) over-the-airクライアントライブラリでは、ファームウェアの更新をテスト、コミット、またはロールバックするためのアプリケーション固有のロジックを定義できます。ライブラリは、Message Queuing Telemetry Transport (MQTT) や Hypertext Transfer Protocol (HTTP) などのさまざまなアプリケーションプロトコルをサポートし、ネットワークタイプや条件に合わせて微調整できるさまざまな設定オプションを提供します。
このライブラリAPIsには、次の主要な関数が用意されています。
-
通知を登録するか、利用可能な新しい更新リクエストをポーリングします。
-
更新リクエストを受け取り、解析し、検証します。
-
更新リクエストの情報に従って、ファイルをダウンロードして検証します。
-
受信した更新をアクティブ化する前にセルフテストを実行して、更新の機能的妥当性を確認します。
-
デバイスのステータスを更新します。
このライブラリは AWS 、サービスを使用して、ファームウェアの更新の送信、複数のリージョンにわたる多数のデバイスのモニタリング、障害のあるデプロイのブラスト半径の短縮、更新のセキュリティの検証など、さまざまなクラウド関連の機能を管理します。このライブラリは、 MQTTまたは HTTPライブラリで使用できます。
このライブラリのデモでは、無料RTOSデバイスのコアMQTT Library and AWS Services を使用した完全な over-the-air更新を示します。
機能
完全な OTA エージェントインターフェイスは次のとおりです。
OTA_Init
-
システムで OTA エージェント (OTA「タスク」) を起動してOTAエンジンを初期化します。OTA エージェントは 1 つだけ存在できます。
OTA_Shutdown
-
シャットダウンするOTAエージェントへのシグナル。OTA エージェントはオプションで、すべてのMQTTジョブ通知トピックのサブスクライブを解除し、進行中のOTAジョブがある場合は停止し、すべてのリソースをクリアします。
OTA_GetState
-
OTA エージェントの現在の状態を取得します。
OTA_ActivateNewImage
-
を通じて受信した最新のマイクロコントローラーファームウェアイメージを有効にしますOTA。(詳細なジョブのステータスはセルフテストになっているはずです)
OTA_SetImageState
-
現在実行中のマイクロコントローラーファームウェアイメージの検証状態 (テスト中、受け入れ済または拒否済) を設定します 。
OTA_GetImageState
-
現在実行中のマイクロコントローラーファームウェアイメージの状態 (テスト中、受け入れ済または拒否済) を取得します 。
OTA_CheckForUpdate
-
Update サービスOTAから次に利用可能なOTA更新をリクエストします。
OTA_Suspend
-
すべてのOTAエージェントオペレーションを一時停止します。
OTA_Resume
-
OTA エージェントオペレーションを再開します。
OTA_SignalEvent
-
OTA エージェントタスクにイベントをシグナルします。
OTA_EventProcessingTask
-
OTA エージェントイベント処理ループ。
OTA_GetStatistics
-
受信、キューに入れ、処理、ドロップされたパケットの数を含むOTAメッセージパケットの統計を取得します。
OTA_Err_strerror
-
エラーコードから文字列へのOTAエラーの変換。
OTA_JobParse_strerror
-
OTA ジョブ解析エラーコードを文字列に変換します。
OTA_PalStatus_strerror
-
ステータスのステータスコードから文字列への変換OTAPAL。
OTA_OsStatus_strerror
-
OTA OS ステータスのステータスコードから文字列への変換。
API リファレンス
詳細については、AWS IoT Over-the-air 「Update: Functions
使用例
MQTT プロトコルを使用する一般的な OTA対応デバイスアプリケーションは、次のAPI呼び出しシーケンスを使用して OTA エージェントを駆動します。
-
AWS IoT コアMQTT エージェントに接続します。詳細については、「コアMQTT エージェントライブラリ」を参照してください。
-
バッファ
OTA_Init
、必要な ota インターフェイス、モノの名前、アプリケーションのコールバックなど、 を呼び出して OTA エージェントを初期化します。コールバックは、OTA更新ジョブの完了後に実行されるアプリケーション固有のロジックを実装します。 -
OTA 更新が完了すると、FreeRTOS はジョブ完了のコールバックを呼び出し、次のいずれかのイベントが発生します。
accepted
、rejected
、またはself test
。 -
新しいファームウェアイメージが拒否された場合 (たとえば検証エラーのため)、アプリケーションは通常、通知を無視して次の更新を待機します。
-
アップデートが有効で、承諾済みとマークされている場合は、
OTA_ActivateNewImage
を呼び出してデバイスをリセットし、新しいファームウェアイメージを起動します。
移植
プラットフォームへのOTA機能の移植の詳細については、「無料RTOS移植ガイド」のOTA「ライブラリの移植」を参照してください。
メモリ使用量
の AWS IoT OTAコードサイズ (ARMCortex-M GCC 用に で生成された例) | ||
---|---|---|
File | -O1 最適化を使用 | -Os 最適化を使用 |
ota.c | 8.3K | 7.5 K |
ota_interface.c | 0.1 K | 0.1 K |
ota_base64.c | 0.6 K | 0.6 K |
ota_mqtt.c | 2.4 K | 2.2 K |
ota_cbor.c | 0.8 K | 0.6 K |
ota_http.c | 0.3 K | 0.3 K |
合計 (概算) | 12.5K | 11.3K |