こんにちは、
私はMCXN947を使ったプロジェクトに取り組んでいます:Core0にはZephyr、Core1にはベアメタル(Zephyrイメージ内に埋め込み)です。内部フラッシュのファームウェアサイズは~800KBで、残りはMCUboot + OTAスロットに割り当てられています。
EUサイバーレジリエンス法(CRA)に準拠した、安全なOTAアップデートを実装する必要があります。できれば外部メモリは使用しないことが望ましいです。
SB3のフォーマットを調べましたが、いくつか疑問があります:
- ゼファーと互換性がありますか?
- 画像の受信と検証に外部メモリが必要ですか?
この構成にはどのような解決策をお勧めしますか?
よろしくお願いします。
こんにちは、 @Jorini さん。
投稿ありがとうございます!
1. ZephyrはSB3ファイルをネイティブでサポートしていないので、ROM APIを使って処理できます。
2. 実装によります。MCX N94x Over-The-Air(OTA)アップデート by SB3ファイルに関するアプリケーションノート:外部フラッシュを使ってSB3ファイルを保存・処理し、その後に二次画像領域を上書きしてください。
もし署名済みのファームウェアのバージョンだけを管理したいなら、mcubootからZephyrで直接管理できます:ZephyrでMCUbootをビルディングし使用する方法
こんにちは、
良い代替案のように思えます。とにかく、MongooseがSB3に対応しているのか、また外部メモリが必要なのか知りたいです。
こんにちは、
MCXN947 + Zephyrプロジェクトでは、Mongoose Web ServerとそのOTA機能を組み合わせて利用できます。MCXN947 OTAサポートがあり、アップデートは非アクティブなフラッシュエリアに直接書き込まれます。
以下はZephyrの上MCXN947サンプルプロジェクトです。そこから始めてください。
https://mongoose.ws/wizard/#/output?board=mcxn947&ide=Zephyr&rtos=baremetal&file=README.md
ワークステーションにダウンロードするには、そのURLにアクセスし、「設定」タブから「ソースコードジェネレーター」セクションのディレクトリを選択し、ページ右上の青い「C/C++コード生成」ボタンをクリックしてください。
このプロジェクトは、Mongooseを搭載した最新のダッシュボードを備えており、ボードに新しいファームウェアをアップロードするためのボタンが含まれています。
プロジェクトを開き、`mongoose_config.h`に以下を追加してください。
#define MG_OTA MG_OTA_MCXN
#define MG_IRAM __attribute__ ((noinline, section(".ramfunc")))
署名付きファームウェアの場合は、キーを生成し、Mongoose の `resources/sign.js` を使用してイメージに署名します。Mongooseの公式リポジトリで見つかりました。
node sign.js キー生成ツール
node sign.js sign firmware.bin
`keygen`は公開鍵の定義を出力します。それを`mongoose_config.h`に追加してください。あまりにも:
#define MG_OTA_PUBLIC_KEY { /* 生成された 64 バイトの公開鍵 */ }
それだけで署名付きイメージを生成するのに十分でしょう。Mongoose OTAの機能や画像署名に関するさらなるドキュメントについては、このドキュメントページにアクセスできます。
お知らせ:私はMongooseの開発チームの一員です。この情報があなたの作業の助けになれば幸いです。