Technology
ブートローダ
(ブートローダ)
ブートローダとは、マイコンや組込機器の電源投入直後に動作し、メインプログラムの起動、動作確認、更新処理などを行う小規模なプログラムです。製品出荷後に通信や外部メモリからファームウェアを書き換える機能にも利用されます。
ブートローダを適切に設計すると、機器を分解せずにソフトウェア更新ができ、更新失敗時にも旧プログラムへ戻す構成を実現できます。一方、書換え途中の停電や不正データへの対策が不十分だと、機器が起動できなくなる可能性があります。
ハカルプラスでは、マイコン、メモリ容量、通信方式、保守方法を確認し、安全な起動とファームウェア更新に対応するブートローダを検討します。
電源投入後の動作
マイコンへ電源が入ると、あらかじめ決められたリセットベクタからプログラムを開始します。ブートローダを搭載する場合は、最初にブートローダが起動します。
ブートローダは、更新要求の有無、メインプログラムの正常性、起動条件などを確認し、問題がなければメインプログラムへ制御を移します。
主な役割
- メインプログラムの正常性確認
- ファームウェア更新モードへの移行
- 通信データの受信と書込み
- 書込みデータの検証
- 旧バージョンへの切戻し
- 異常時の保守モード起動
更新モードへの入り方
ブートローダの更新モードへ入る方法には、スイッチ入力、通信コマンド、特定の電源投入手順、メインプログラムからの要求などがあります。
通常運転中に誤って更新モードへ入らないよう、複数条件や認証を組み合わせます。現場保守では、操作しやすさと誤操作防止の両方が必要です。
通信による更新
USB、シリアル通信、Ethernet、CAN、無線通信などを利用し、新しいファームウェアを受信します。
通信速度だけでなく、通信断、パケット欠損、再送、更新時間を考慮します。長距離通信や無線では、途中で接続が切れることを前提に設計します。
外部メモリからの更新
SDカード、USBメモリ、外部フラッシュメモリなどへ更新ファイルを保存し、電源投入時に読み込む方式があります。
通信環境がない現場でも更新できますが、ファイル名、対象機種、バージョン、データ破損を確認する必要があります。
書込みデータの検証
受信したファームウェアが正しいかを、チェックサムやCRCで確認します。機種違いのデータを書き込まないよう、製品識別子、基板バージョン、対象マイコンも照合します。
セキュリティが必要な機器では、電子署名を検証し、正規に作成されたファームウェアだけを受け入れます。
停電対策
ファームウェア書換え中に停電すると、メインプログラムが途中までしか書き込まれず、起動できなくなる可能性があります。
ブートローダ領域を保護し、メインプログラムが不完全でも再び更新モードへ入れる構成とします。更新完了フラグは、全データの書込みと検証が終了した後に設定します。
二重バンク方式
十分なフラッシュメモリ容量がある場合、現在使用中のプログラムと新しいプログラムを別領域へ保存する二重バンク方式を使用できます。
新しいプログラムの書込みと検証が完了してから起動先を切り替えます。新バージョンが正常起動しない場合は、旧バージョンへ戻せます。
ロールバック
新しいファームウェアが起動しても、一定時間内に正常起動完了を記録できない場合は、旧プログラムへ戻す方法があります。
ウォッチドッグリセットの繰返しや、自己診断異常をロールバック条件として使用します。
ブートローダ領域の保護
ブートローダ自身が破損すると更新機能を失うため、通常の書換え処理から保護します。マイコンのメモリ保護機能や書込み禁止設定を利用します。
ブートローダ更新が必要な場合は、専用の製造・保守手順を設けます。
メインプログラムへの移行
メインプログラムへ制御を渡す前に、割込み、スタック、クロック、周辺回路などの状態を整えます。
ブートローダで使用した通信機能や割込みが残っていると、メインプログラムの初期化へ影響する場合があります。
バージョン管理
ブートローダ、メインプログラム、基板の各バージョンを管理します。更新ファイルに対象機種とバージョン情報を含め、誤った組合せを防止します。
更新日時、更新前後のバージョン、成否を不揮発性メモリへ保存すると、保守履歴として利用できます。
セキュリティ
通信経由でプログラムを書き換えられる機器では、不正なファームウェアの導入を防ぐ必要があります。
認証、暗号化、電子署名、更新権限などを使用します。更新用パスワードを製品共通の固定値だけに依存しない設計も重要です。
製造工程での利用
製造時にブートローダだけを書き込み、その後の検査工程で製品ファームウェアを通信書込みする方法があります。
製品ごとの設定値、シリアル番号、校正値を同時に登録する場合は、プログラム領域と設定領域を分けて管理します。
異常時の確認
更新モードへ入れない場合は、起動条件、通信設定、ブートローダ領域、電源を確認します。更新後に起動しない場合は、データ検証、対象機種、ベクタ設定を点検します。
更新途中で停止する場合は、通信タイムアウト、電源低下、メモリ書込みエラーを確認します。
ハカルプラスの対応
ハカルプラスでは、マイコンのメモリ構成、通信方式、現場での更新手順を確認し、ブートローダの起動条件と更新処理を設計します。
停電対策、CRC検証、二重バンク、ロールバック、更新履歴を組み合わせ、保守しやすい組込機器を検討します。
よくある質問
Q. ブートローダがなくても機器は動作しますか?
A. 動作できますが、製品出荷後のファームウェア更新や異常復旧が行いにくくなります。
Q. 更新中に停電すると機器は起動できなくなりますか?
A. 対策がない場合は起こり得ます。ブートローダ保護や二重バンクで復旧できる構成を検討します。
Q. USBメモリから更新できますか?
A. USBホスト機能とファイル読込み処理を備えれば、更新ファイルから書き換えられます。
Q. 古いバージョンへ戻せますか?
A. 旧プログラムを保持する二重バンク方式などを採用すれば、切戻しが可能です。
Q. 不正なファームウェアを防止できますか?
A. 電子署名や認証を用いて、正規の更新データだけを受け入れる構成にできます。
関連ワード
同じカテゴリの『ハカル技術辞典』を見る