はじめに
最近のバージョンの U-Boot(v2019.10 以降)をビルドすると、Preloader(U-Boot SPL)と U-Boot の両方を含むイメージファイル「u-boot-with-spl.sfp」が生成されます。この記事では、Windows PC 環境で「u-boot-with-spl.sfp」を SD カードへ書き込む方法を紹介します。
ポイント: SoC FPGA エンベデッド開発スイート(以下、SoC EDS)v20.1_Std 以降、Cyclone® V の U-boot を SD Card に書き込むツールが、Linux PC 限定となりました。
参考: Building Bootloader > Cyclone V SoC - Boot from SD Card > C. Prepare SD Card Image
ポイント: ここで紹介する方法では、SoC EDS v18.1 に付属のツールを使用します。開発に SoC EDS v20.1 を使用する場合でも SoC EDS v18.1 を別途インストールする必要があります。
注記: この記事で紹介している手順は動作を保証するものではないこと、ご了承ください。
使用するツール
-
SoC EDS v20.1_Std 以降:
U-boot の生成に使用します。 生成方法は下記コンテンツをご参照ください。
参考:はじめての インテル® SoC FPGA 演習マニュアル v20.1(Atlas-SoC / DE10-Nano ボード版)
-
SoC EDS v18.1_Std :
SoC EDS Command Shell(Embedded Command Shell)を使用します。
インストール方法は下記をご参照ください
参考:SoC FPGA エンベデッド・デベロップメント・スイート(SoC EDS)のインストール方法
-
バイナリーエディター:
U-boot のバイナリーデータの編集で使用します。
参考:今回は、Stirling というツールを使用します。
ポイント: このページで紹介する方法でバイナリーを書き込む際には、ファイルサイズが 512Byte 倍長となるように調整が必要となります。
手順
手順①:U-boot のバイナリーファイルを編集します
Quartus® Project Directory > software > spl_bsp > uboot-socfpga の階層に、
【図 1】のように u-boot-with-spl.sfp が生成されていることを確認します。
生成されていない場合は、下記コンテンツを参考に Build を実行ください。
参考:はじめての インテル® SoC FPGA 演習マニュアル v20.1(Atlas-SoC / DE10-Nano ボード版)
【図 1】u-boot-with-spl.sfp の格納場所
バイナリーエディターで、u-boot-with-spl.sfp を開きます。
【図 2】のように、データの最後の領域 0x000CE1F0 まで 0 を追加して保存します。
【図 2】u-boot-with-spl.sfp の編集
手順②:ver18.1_Std の SoC EDS Command Shell で SD Card に書き込みます
PC に SD Card を差し込みます。
SD Card を差し込んだ後、【図 3】のように、SD Card のドライブ名を把握し、もしポップアップが出たらキャンセルを押します。
【図 3】SD Card の挿入
ver18.1_Std の SoC EDS Command Shell を Windows のスタートメニューから起動します。
【図 4】のように手順①で編集した u-boot-with-spl.sfp がある、Quartus® Project Directory > software > spl_bsp > uboot-socfpga まで、"cd" で移動します。
"alt-boot-disk-util.exe" を使って、u-boot-with-spl.sfp を SD Card に書き込みます。
注記: PC によってドライブ名が異なります。SD Card 以外のドライブを書き換えないよう注意してください。
コマンド例)
$ alt-boot-disk-util.exe -B u-boot-with-spl.sfp -a write -d <ドライブ名>
【図 4】SD Card に u-boot-with-spl.sfp を書き込み
ポイント: Preloader(U-Boot SPL)と U-Boot はそれぞれ個別に生成されていますので、下記コマンドを使うことで、別々に SD Card に書き込むことができます(その際、バイナリーの編集は必要ありません)。
1. Preloader (U-Boot SPL) だけ書き換える場合
$ alt-boot-disk-util.exe -p spl/u-boot-splx4.sfp -a write -d <ドライブ名>
2. U-Boot だけ書き換える場合
$ alt-boot-disk-util.exe -b u-boot.img -a write -d <ドライブ名>
3. Preloader (U-Boot SPL) + U-Boot を書き換える場合(イメージファイルを別々に所持している場合)
$ alt-boot-disk-util.exe -p spl/u-boot-splx4.sfp -b u-boot.img -a write -d <ドライブ名>
参考: バージョンによっては、spl/u-boot-splx4.sfp が生成されない場合があります。その際は、u-boot-with-spl.sfp を使った書き込みをご検討ください。
手順③:SoC Kit に SD Card を差し込み、Tera Term 等で U-Boot の起動を確認します
SD Card を SoC Kit に差し込み、電源を入れます。
UART 用のケーブルを PC に接続しておくと、【図 5】のように Tera Term 等で起動を確認できます。
【図 5】U-boot 起動確認
まとめ
今回紹介した方法で、Windows でも最新 U-boot を SD Card に書き込むことができます。U-boot 起動後の検証を行いたい時などに使用できますので、デバッグ 目的でぜひご利用ください。