この記事では、インテル® SoC FPGA で U-Boot を使用する場合に利用可能なスクリプトファイル
「U-Boot スクリプト」の作り方について紹介します。
もくじ
はじめに
U-Boot スクリプトは、U-Boot コマンドを1行1コマンドで記述したテキストファイルにヘッダー情報を付加したファイルです。u-boot.scr という名前で作成したスクリプトファイルをブート用 SD カードのプライマリー・パーティション(FAT)に格納しておくことで、ブート時に U-Boot に実行させるコマンド群を登録しておくことが可能です。
ポイント: QSPI ブートなど FAT パーティションを使用しない環境では使用できません。
以下に作業手順を記載します。
手順1.テキストファイルにスクリプトを記述
U-Boot コマンドを記述したテキストファイルを作成します。ファイル名は何でも構いません。
Cyclone® V SoC / Arria® V SoC の SD カードブート用のリファレンス環境では以下の内容が適用されています(例:u-boot.txt)。
fatload mmc 0:1 $fpgadata soc_system.rbf; fpga load 0 $fpgadata $filesize; run bridge_enable_handoff; run mmcload; run mmcboot;
ポイント: 最初の2行で FPGA コンフィグレーションの実行。3行目で HPS-FPGA 間ブリッジを有効化した上で後段のソフトウェアのロード(mmcload)およびブート(mmcboot)の実行を指示しています。
尚、インテル® Arria® 10 SoC のリファレンス環境では U-Boot スクリプトは使用されていません。上記の例は V シリーズ SoC 用のコマンドとなっているためご注意ください。同じように u-boot.scr を用意することで U-Boot スクリプトを利用すること自体は可能です。
手順2.スクリプトファイルへ変換(mkimage ヘッダ付加)
u-boot.txt にヘッダー情報を付加することで U-Boot スクリプト(u-boot.scr)を完成させます。
Embedded Command Shell を起動して u-boot.txt を保存したディレクトリーへ移動した上で以下のコマンドを実行してください。
$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "My script" -d u-boot.txt u-boot.scr
手順3.ブート用 SD カードにスクリプトファイルを格納
作成したスクリプトファイル(u-boot.scr)をブート用 SD カードに格納したら作業完了です。
Windows エクスプローラーなど、GUI ウィンドウ上でのファイル操作で対応可能です。
Linux のコマンドライン上で作業する場合は以下の例を参考にしてください。
# mkdir -p sdcard # mount /dev/mmcblk0p1 sdcard # cp u-boot.scr sdcard/ # umount sdcard
まとめ
U-Boot スクリプトの利点は、U-Boot のソースコードのカスタマイズや再ビルドをしなくても、ファイルの差し替えのみでブートの動作を変更できる点にあると思います。たとえば、メモリーアクセス用のコマンドを記述することで、後段のソフトウェアを起動する手前でレジスターや RAM 上のデータの設定値を書き換えるような使い方も可能です。
U-Boot コマンドの使い方を理解することでスクリプトの活用範囲が広がりますので、U-boot コマンドの一覧(help コマンド)を参考に各種コマンドの実行を試してみることをお勧めします。
以下の記事でも U-Boot コマンドの活用例を紹介しています。
コメント
0件のコメント
記事コメントは受け付けていません。