基板にあわせて必要なソフトウェアのカスタマイズ項目について、比較的回路構成がシンプルなSTマイクロエレクトロニクスのエントリー向けマイクロプロセッサSTM32MP13シリーズを例に説明します。
プロセッサに電源が投入されてから、OS上のユーザープログラムが実行されるまでには、いくつかの過程があります。これらをブートプロセスと呼びます。
まず、初めに起動するプログラムはROMコードです。ROMコードはブートピンの設定もしくはOTPの設定に従って、起動するブートソースを決定します。代表的なブートソースとブートピンの設定を示します(表1)
ブートソース1 | ブートソース2 | ブートピン(BOOT0-2)の設定 |
---|---|---|
シリアル/USB | - | 000 |
QSPI NORフラッシュメモリ | シリアル/USB | 001 |
eMMC | シリアル/USB | 010 |
パラレルNANDフラッシュメモリ | シリアル/USB | 011 |
なし(開発者モード) | - | 100 |
SDカード | シリアル/USB | 101 |
シリアル/USB | シリアル/USB | 110 |
QSPI NANDフラッシュメモリ | シリアル/USB | 111 |
表1:代表的なブートソースとブートピンの設定例 |
ROMコードはブートピンの設定に従い、ブートソース1からのブートを試みます。ブートソース1からのブートが失敗すると、ブートソース2からのブートを試みます。ROMコードからの起動からユーザープログラムが立ち上がるまでは、多段階になっており、表2に示す順番で起動します。ROMコードはブートローダ―と呼ばれる起動プログラムをロードし、実行します。ブートローダ―は電源やクロック、ブートデバイスのメモリ設定など、ブートに必要な初期化処理を行います。
順番 | 名称 | プログラム実行領域 | 代表的なソフトウェア | 起動時の主な初期化処理 | ボードに依存した部分の カスタマイズ方法 |
起動の確認方法 (STM32MP13シリーズ) |
---|---|---|---|---|---|---|
1 | ROMコード | プロセッサ内蔵 のROM |
半導体ベンダーに依存 | ブートソースの選択 | OTP | エンジニアリング モード時にデバッグ用 LED(PA13)が点滅 |
2 | ファースト ステージ ブートローダ― (FSBL) |
プロセッサ内蔵 のSRAM(SYSRAM) |
TF-A | ピン設定 シリアルコンソール 電源 システム時間 クロックツリー DDRメモリ ブートデバイス ファイアウォール |
TF-Aの デバイスツリー |
デバッグ用 LED(PA13)が消灯 |
3 | セキュアモニター | 外部DDRメモリ | OPTEE | ファイアウォール | OPTEEの デバイスツリー |
|
4 | セカンド ステージ ブートローダ― (SSBL) |
外部DDRメモリ | U-Boot | U-Bootの デバイスツリー |
||
5 | OS カーネル空間 |
外部DDRメモリ | Linux | Linuxの デバイスツリー |
||
6 | OS ユーザー空間 |
外部DDRメモリ | Systemd等 | - | ||
表2:ブートの順番とソフトウェア |
Copyright © ITmedia, Inc. All Rights Reserved.