- 公開日:2025年03月10日
- | 更新日:2025年04月01日
MCUbootを用いてルネサスマイコンのファームウェアアップデートをしてみた
- ライター:Takao S
- マイコン
はじめに
ルネサスは、MCUbootを用いたファームウェアアップデートのアプリケーションノートとサンプルプログラムを提供しています。
アプリケーションノートでは、ルネサスFlexible Software Package (FSP)で提供されるMCUbootモジュールの適用方法を解説し、サンプルプログラムと合わせて、MCUbootを用いたファームウェアアップデートを実装していきます。
アプリケーションノート:MCUboot とフラッシュデュアルバンクを使用した RA6 セキュアファームウェアアップデート
サンプルプログラム:RA6 MCU Advanced Secure Bootloader Design using MCUboot and Code Flash Dualbank Mode
リンクは2025年3月のものです。
MCUboot
先ず、MCUbootとは、ソフトウェアの起動時に検証をおこなってブートをおこなう、オープンソースのセキュアなブートローダです。詳細は、MUCboot公式ウェブサイトを参照ください。https://www.MUCboot.com
次に、新しいファームウェアへの切り替え方式です。MCUbootでは主に次の切り替え方式があります。
- Overwriteモード
- Swapモード
- Direct XIPモード
この内、ルネサスのアプリケーションノートとサンプルプログラムでは、コードフラッシュ(ROM)をデュアルバンクで用いた、Direct XIPモードを提供しています。このモードでは、MCUbootはブートの度にそれぞれのバンクにあるアプリケーションのバージョンを比較します。そして、新しいバージョンを見つけ、認証すると、新しいバージョンのアプリケーションで起動します。
また、デュアルバンクなので、セカンダリーアプリケーションの書き込み時にエラーが発生しても、プライマリーアプリケーションは残っていて安心です。
ファームウェアアップデートの動作
実装は、サンプルプログラムをアプリケーションノートを参照しながら、FSPでバージョンなどを入力して、ビルドするだけです。
では、手順と実装されたプログラムの動作を見ていきます。なお、繰り返しになりますが、デュアルバンクを用いた、Direct XIPモードです。
- 書き込みツール(Renesas Flash Programmerや、SEGGER J-Flash Liteなど)を用いて上側バンクにブートローダを書き込みます
- e2 studioを用いて下側バンクにブートローダを書き込み、その後、プライマリアプリケーションを書き込み、起動します。
- ここで一旦リセットおこないます。つまり、e2 studioに依存せず、下側バンクのブートローダと、プライマリアプリケーションが起動します。
- プライマリアプリケーションに実装された、ダウンロード機能を用いて、セカンダリーアプリケーションを上側バンクにダウンロードします。ダウンロードが完了すると、プライマリーアプリケーションの実装によりリセットがかかります。
- 下側バンクのブートローダが、プライマリーアプリケーション(下側)とセカンダリーアプリケーション(上側)のバージョンを比較します。セカンダリーアプリケーション(上側)のバージョンが新しい場合、検証を行い、認証されるとバンクアドレスのスワップ設定を行います。このスワップ設定は、その後のリセットで有効になりますので、直ちにリセットがかかります。
- 上側バンクのブートローダとセカンダリーアプリケーションが起動します。
5.のバージョンの比較でバージョンアップが確認できない場合は、スワップ設定は行われず、リセットもかかりませんので、現状のバージョンのままとなります。
おわりに
ここまで、ざっくりとルネサスが提供する、MCUbootを用いたファームウェアアップデートを見てきましたが、イメージはつきましたでしょうか?
このように、ルネサスではArmコアマイコンのRAファミリとFSPを用いて、MCUbootによるファームウェアアップデートの開発環境を提供しております。
また、同様の開発環境をGUIで提供するQE(Quick Effective)もあります。今後、このようなMCUbootを用いたファームウェアアップデートの開発手順は、ルネサスオリジナル コア マイコンのRL78ファミリ、RXファミリにも展開されていきます。
ルネサスマイコンでMCUbootを用いたファームウェアアップデートを実現してみませんか?
ルネサス製品をお探しの方は、メーカーページもぜひご覧ください。