2020/02/24

petalinux ビルドと起動 2018.3 (ultra96 V2 環境構築)

XILINX   

次に、petalinuxのビルドを行う

以下のサイトが参考になった、petalinuxのビルド様子を動画で配信しているので困ったらみるとよいと思う。

https://www.96boards.org/documentation/consumer/ultra96/ultra96-v2/build/peta-linux.md.html

最初に開発環境を有効にする。

soruce /opt/pkg/petalinux/setting.sh

成功すると

echo $PETALINUX

でインストールディレクトリの場所を表示する。

次に、ビルドをしていく、

ultra96用にディレクトリを作成する。

mkdir ultra96
cd ultra96

そして、プロジェクトを生成する。使用する。.bspファイルは、
http://downloads.element14.com/downloads/zedboard/ultra96/ultra96v2_oob_2018_3.zip
からダウンロードして使う。
最初にcreateする。ダウンロードしたbspを使う。
petalinux-create -t project -s ../ultra96v2_oob_2018_3.bsp
生成したプロジェクトのディレクトリに移動する。
cd ultra96v2_oob_2018_3/
ビルドする。これがすごい時間がかかって、1~2時間ぐらいかかると思う。
petalinux-build
BOOT.BINのファイルを作成する。
cd mages/linux
petalinux-package  –boot –fsbl zynqmp_fsbl.elf –fpga system.bit –u-boot
最初、 system.bitを指定せずに、実行したが、Kernelを起動して、「raid6: using intx1 recovery algorithm」という箇所で、止まった。
ここによると、FPGAの設定がダメだとそこでとまるらしい。
で生成されたBOOT.BINとimage.ubとrootfs.ext4をSDカードにコピーして起動する。
SDカードはパーティションをfdiskで、2個に分離する必要があるので注意すること。

SDカードのパーティション分割について説明する

fdiskを起動する

sudo fdisk /dev/sdb

最初にdコマンドでパーティションを削除する。
dリターン
リターン(default)

コマンド (m でヘルプ): d
パーティション番号 (1,2, default 2):

Partition 2 has been deleted.

もともも2個あったのでもう1個削除する。
dリターン

コマンド (m でヘルプ): d
Selected partition 1
Partition 1 has been deleted.

全部パーティションを削除したところで1度pコマンドで表示する
pリターン

コマンド (m でヘルプ): pDisk /dev/sdb: 7.6 GiB, 8168931328 bytes, 15954944 sectorsUnits: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x31df9ea2

1個のパーティションを作成する。
nで新しいパーティションを作成して、typeはPrimaryなのでpを入力する。パーティション番号はデフォルトで、First sectorはデフォルト、Lastsectorは+1024Mを指定する。typeはFAT32を指定する

nリターン
pリターン
リターン
リターン
+1024Mリターン
tリターン
cリターン

コマンド (m でヘルプ): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
パーティション番号 (1-4, default 1):
First sector (2048-15954943, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-15954943, default 15954943): +1024M

Created a new partition 1 of type ‘Linux’ and of size 1 GiB.

コマンド (m でヘルプ): t
Selected partition 1
Partition type (type L to list all types): c
Changed type of partition ‘Linux’ to ‘W95 FAT32 (LBA)’.

次のパーティションを作成する。
nでパーティションを作成して、pでプライマリーで作成する。FirstとLast sectorのサイズはデフォルトにする。typeはデフォルトのまま(Linux)とする。

nリターン
pリターン
リターン
リターン
リターン

コマンド (m でヘルプ): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
パーティション番号 (2-4, default 2):
First sector (2099200-15954943, default 2099200):
Last sector, +sectors or +size{K,M,G,T,P} (2099200-15954943, default 15954943):

Created a new partition 2 of type ‘Linux’ and of size 6.6 GiB.

pコマンドで状態を確認する

コマンド (m でヘルプ): ppDisk /dev/sdb: 7.6 GiB, 8168931328 bytes, 15954944 sectorsUnits: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x31df9ea2
デバイス 起動 Start 最後から セクタ Size Id タイプ/dev/sdb1 2048 2099199 2097152 1G c W95 FAT32 (LBA)
/dev/sdb2 2099200 15954943 13855744 6.6G 83 Linux

最後に設定した内容を書き込むために、wを入力する。
wリターン

コマンド (m でヘルプ): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

これでパーティションを作成されたはずだ。

次に、作成したSDカードにデータをコピーする。

mkdir sd

sudo mount /dev/sdb1 sd
sudo cp BOOT.BIN image.ub ./sd/
umount sd

sudo dd if=rootfs.ext4 of=/dev/sdb2

ddコマンドで結構確率で、I/O Errorが発生した。SDカードを抜き差ししたり、アダプタを変えたりして、エラーがでなくなるまで根気よくすること。(自分のとこだけかも)

SDカードを、ultra96 v2にさして起動したら起動した!!

起動しない場合は、環境が原因かもしれないので、ここを参照して、Factory状態で起動するか確認するのがよいと思う。

Prev:«

Next: »