下記は、当製品のハードウェア拡張図です。
1. PCとメインボードはTCPで接続されています
2. メインボードは4つのサブボードに4つのSPIバスを介して接続されており、サブボードの機能は同じです
3. メインボードのUART4は、シリアルポートのスイッチを介して4つのサブボードのうちUART1に切り替えることができます
foreverwlh2025_0-1789970732170.png
プロジェクトの要件により、 PCは4つのサブボード(RT1064)からTCPまでのファームウェアプログラムをアップグレードする必要があります。ハードウェア拡張に基づいて、上位コンピュータ開発、メインボード開発、サブボード開発の作業負荷を考慮して、サブボードファームウェアのアップグレードに最も簡単な解決策を提供できますか?
ご質問ありがとうございます。
単一サブボードのアップグレード手順(ステップバイステップ):
サブボードNでRESET信号をアサートし、BOOT_MODE[1:0]を01(シリアルダウンローダーモード)に設定する。
シリアルスイッチチップを切り替えてUART4をサブボードNのUART1に接続します
リリースRESET — サブボードNがRT1064 ROMブートローダーに入り、UARTコマンドを待つ
TCP↔UART4バイト転送を有効にする
RESETを切り替えてBOOT_MODEを通常に戻すと、サブボードNが新しいファームウェアで起動します。
シリアルセレクタを次のサブボードに切り替えて繰り返します
実装前に、以下のハードウェア条件が満たされていることをご確認ください。
メインボードは、各サブボードのBOOT_MODE[1:0]ピンを独立してGPIO制御できます。
メインボードは、各サブボードのRESETピンを個別にGPIO制御できます。
シリアルスイッチチップはメインボードのGPIOで制御可能で、4つのサブボードすべて間のスイッチングをサポートします
ご質問や、導入の詳細についてさらに話し合いたい場合は、お気軽にご連絡ください。
ファームウェアのアップグレードに関するお客様のシナリオに対し、弊社が推奨するソリューションの概要を以下にご説明いたします。
1. PCツール
PC側では blhost というオープンソースのコマンドラインクライアントを提供しており、NXPのMCUブートローダープライベートフレーミングプロトコル(BSD/MITライセンス)を実装しています。デバイス側プロトコルはMCUオンチップROMブートローダーによって実装されます。これら2つの機能により、ファームウェアのダウンロードとデバイスの設定が可能になります。
このツールはUSBとUART1に対応していますが、TCPには対応していません。
オープンソースリポジトリ: https://github.com/nxp-mcuxpresso/spsdk
blhostとROMブートローダーは独自のフレーミングパケットプロトコルで通信します。ご参照ください: MCU Bootloader v2.5.0 リファレンス・マニュアル(MCUBOOTRM)
ファームウェアイメージの生成およびパッケージングについては、NXPのSPSDK(Secure Provisioning SDK)に含まれるnxpimageツールをご利用ください。
2. 推奨ソリューション:マザーボード経由のTCP透過転送
あなたのシナリオ(PC→マザーボード→サブボード)の場合、最小限の手間で済む方法は、マザーボードを透過的なTCP-UARTブリッジとして機能させ、blhostを少し変更してシリアルデータをTCPでラップすることです。
建築:
PC (modified blhost)
↓ TCP packet (include original UART byte stream)
Main Board (TCP Server)
↓ Unpack and forward to sub-board via UART
Sub-board (ROM Bootloader)
主な変更点:
blhostトランスポート層の変更:blhostソースコードに新しいTCPトランスポートモジュールを追加します。既存のUARTバイトストリーム(フレーミングパケット)は、送信経路ではそのままTCPパケットにラップされ、受信経路ではアンラップされる。
メインボードはTCPサーバーを実装しています。PCからTCPデータを受信し、ペイロードをバイト単位でUART1経由でサブボードに転送します。サブボードからの応答は、同じ透過的な方法でTCP経由でPCに転送されます。
サブボードに変更は不要です。サブボードMCUは単にISPモードでROMブートローダーが動作し、標準UARTコマンドを待つだけで済みます。
4. TCP↔UART4バイト転送を有効にする
すみません、このデータ伝送のステップのために、追加の上位コンピュータを開発する必要があるのでしょうか?例えば、PCは画像データをどのような形式で送信すべきか、サブボードから返された応答データをどのように解析すべきか、そしてどのように相互作用すべきか、といった点です。