Ultra96-V2 ブートイメージ作成

  Ultra96-V2

開発環境の確認のため、Linuxが起動されるだけのまっさらなブートイメージを作成する。

 

Contents

BSP ダウンロード

基本的にZynq開発には、基本的な関数群が用意されているBSP(Board Support Package)を使うことになる。
各Zynq毎に基本となるBSPはXilinxにて用意されており、実際に使用されているシステム構成を元にそれを改変して使う。

ただ、かなり大変な作業(仕事で使うなら、かなり膨大なハードウェア仕様書の作成が必要なはず)なので、ZedBoardで公開しているPetaLinux 2019.1用のBSPをダウンロードする。
http://zedboard.org/support/design/28476/181

 

PetaLinuxビルド

Ultra96-V2 開発環境構築でインストールしたPetaLinuxツールは、Zynqを開発するためのエンベデッドLinux ソフトウェア開発キット (SDK)であり、これを使ってブートイメージを作成する。

参考にしたのは96Boardsが公開している、PetaLinux Build Guide for Ultra96-V2
v2018.3用の記事だけど、v2019.1に読み替えて実施。

 

PetaLinuxプロジェクト作成

ダウンロードしたBSPから新規のPetaLinuxプロジェクトを作成する。

 

ビルド実行

新規プロジェクトに移動してビルド実行

4時間ほどかかり、ERROR: Failed to build projectでエラー終了。

再度ビルド実行すると、以下の1件のみに減少。

やはり、モジュールのダウンロードに余りに時間がかかりタイムアウトしてることが一つの原因になってる。
前に、あまりに遅すぎるため、ローカルにリポジトリサーバを立てることになったはず。

chromiumがコンパイルできないのは、メモリオーバーかな???
スワップ領域を増やしてみる。

 

スワップ領域拡張

Ubuntu18.04は、デフォルトでは2GBのスワップ領域を持ってる。

実メモリの2倍の16GBのスワップファイルを作成

fstabを修正して、新規で作成したswap0をスワップ領域に設定する。
$ sudo vim /etc/fstab

システム再起動

 

再度ビルド実行

6時間ほどかかったが、正常に完了。
chromiumのコンパイルが4~5時間ほどかかった。

 

ブートイメージ作成

<path_to>/ultra96v2_oob_2019_1/images/linux配下に格納されている、
 ・zynqmp_fsbl.elf
 ・system.bit
 ・pmufw.elf
を指定してブートイメージを作成。

<path_to>/ultra96v2_oob_2019_1/images/linuxの下にBOOT.BINが作成される。

 

microSDフォーマット

パーティション作成

fdiskで/dev/sdbをフォーマット。
“p”を入力してパーティション情報を表示。
今回は空になっている。

次に、/dev/sdb1を1GBで区切る。
 ”n”でパーティションの作成
 ”p” ->”1″でprimaryのパーティション番号1を指定
 ”2048″から+1GB分の領域を確保。

次は/dev/sdb2に残りの全容量を割り当てる。
 ”n”
 ”p”->”2″
 ”2099200″~”62333951″を割り当て。

/dev/sdb1のファイルタイプをFAT32にして、
 ”t” -> “1” -> “b”
Bootable Flagをつける。
 ”a” -> “1”

最後に”w”で設定を書き込み終了。
再度fdiskでパーティション情報を確認

 

フォーマット

/dev/sdb1をFAT32でフォーマット。ラベルは”boot”とする。

 

/dev/sdb2をext4でフォーマット。ラベルは”rootfs”とする。

 

 

microSDにブートイメージをコピー

<path_to>/ultra96v2_oob_2019_1/images/linux配下のBOOT.BINとimage.ubを/dev/sdb1にコピーする。

/ultra96v2_oob_2019_1/images/linux配下のrootfs.ext4を/dev/sdb2に展開する。

 

 

Ultra96-V2起動

UART接続して起動してみたが、kernel panicで起動失敗。
以下がログ。

initが見つからなくて死んでる。
/dev/sdb2に作成したrootfsが読み込めていない模様。

再フォーマットして、ddコマンドも進捗状況確認して書き込みを行ってみる。

microSDを書き直して起動したところ、正常にLinuxがブートした。
以下にログを残す。
ちなみに初期ユーザ/パスワードはroot/root。

LEAVE A COMMENT