本資料では,VMK180 評価キット上にCGRA型アクセラレータIMAX3を構築する.
前提環境
- Ubuntu 20.04.4 LTS
- Vivado v2022.1.2 (64-bit)
- PetaLinuxツール v2022.1
- Versal Prime Series VMK180 Evaluation Kit (EK-VMK180-G)
IMAX3 Block Design
あらかじめVivadoでGenerate Device Image 完了後、File→Export→Export Hardwareと進み、Include device imageを選択し、XSAファイルを出力する.
PetaLinuxツール(2022.1)のインストーラのダウンロード
パッケージ群のインストール
- 以下の資料を参考にPetalinuxツールのインストール要件であるパッケージ群を導入する.
- Xilinx document UG1144 (v2022.1)の「インストール要件」
- https://docs.xilinx.com/r/2022.1-English/ug1144-petalinux-tools-reference-guide/Overview
実際に実行したコマンド
sudo apt-get install tofrodos gawk xvfb git libncurses5-dev tftpd zlib1g-dev zlib1g-dev:i386 libssl-dev flex bison chrpath socat autoconf libtool texinfo gcc-multilib libsdl1.2-dev libglib2.0-dev screen pax libtinfo5
# エラーに従い追加でパッケージをインストールする.
Petalinuxツールのインストール
$ sudo mkdir -p /opt/pkg/petalinux/2022.1
$ sudo chown -R <account name> /opt/pkg/petalinux/2022.1
$ petalinux-v2022.1-04191534-installer.run /opt/pkg/petalinux/2022.1
ハードウェア環境のビルド
- 既に上記関連パッケージ,ツールがインストール済みならここから始めます.
Petalinux作業環境のセットアップ
-
UG1144の「PetaLinux作業環境のセットアップ」に従って,
source /opt/pkg/petalinux/2022.1/settings.sh
を実行する. -
例えば,現環境では以下のように
source /opt/xilinx/PetaLinux/2022.1/settings.sh
petalinux-create --type project --template versal --name vmk180
ハードウェアコンフィギュレーションのインポート
- UG1144の「ハードウェアコンフィギュレーションのインポート」に従い,Vivadoによって作成したハードウェア記述ファイル(.xsa)をproject directory直下に置き以下のコマンドでインポートする.
petalinux-config --get-hw-description=./
Configure subsystem level configuration
- rootfs読み込みとUIOを有効にするため,boot argsを変更する.
DTG Settings --->
() MACHINE_NAME
versal-vmk180-reva-x-ebm-01-reva
Kernel Bootargs --->
[ ] generate boot args automatically
user set kernel bootargs
console=ttyAMA0 earlycon=pl011,mmio32,0xFF000000,115200n8 clk_ignore_unused root=/dev/mmcblk0p2 rw rootwait uio_pdrv_genirq.of_id="generic-uio"
rootfs boot setting
- Root filesystem type をINITRDからEXT4に変更する.
Image Packaging Configuration --->
Root filesystem type (INITRD) --->
(X) EXT4 (SD/eMMC/SATA/USB)
device-tree編集
- 「project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi」に変更・追加分を記述する.
最終的な system-user.dtsi の内容
$ cat system-user.dtsi
/include/ "system-conf.dtsi"
/ {
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
reserved: buffer@0 {
reg = <0x00000500 0x00000000 0x00000001 0x80000000>;
};
};
amba_pl@0 {
emax6@20100000000 {
compatible = "generic-uio";
};
dma@a4000000 {
compatible = "generic-uio";
};
};
ddr_high@050000000000 {
compatible = "generic-uio";
reg = <0x00000500 0x00000000 0x00000001 0x80000000>;
};
};
&gem0 {
local-mac-address = [00 0a 35 07 aa f1];
};
システムイメージのビルドと,ブートイメージの生成
- UG1144の「システム イメージのビルド」および「Zynq UltraScale+ MPSoC用ブート イメージの生成」に従う.
petalinux-build
- buildが成功したら,下記のコマンドを実行する.
petalinux-package --boot --force --u-boot
SD cardへの書き込み
- 32GBのSD cardをパーティション分割しフォーマットする.
fdisk /dev/sdx
- 例えば以下のように分割する.
Device Boot Start End Sectors Size Id Type
/dev/sdx1 * 2048 2099199 2097152 1G 83 Linux FAT32 (LBA)
/dev/sdx2 2099200 62357503 60258304 28.7G 83 Linux
- それぞれフォーマットする.
mkfs.vfat -F 32 -n boot /dev/sdx1
mkfs.ext4 -L root /dev/sdx2
- bootパーティションに, 「
image/linux
」内の「BOOT.BIN
」「boot.scr
」および「image.ub
」をコピーする.
cp BOOT.BIN boot.scr image.ub <sd_card_path>/boot/
- 64ビット版のdebianファイルシステムをダウンロード,展開する.
wget -c https://rcn-ee.com/rootfs/debian-arm64/2022-03-09/debian-11.2-xfce-arm64-2022-03-09.tar.xz
tar xf debian-11.2-xfce-arm64-2022-03-09.tar.xz
- rootパーティションにファイルシステムをロードする.
cd <sd_card_path>/root/
sudo su
tar xfvp <path>/debian-11.2-xfce-arm64-2022-03-09/arm64-rootfs-debian-bullseye.tar -C .
chmod 755 <sd_card_path>/root/
- イメージを展開する.
cd <PetaLinux_project>/images/linux
dd bs=64 skip=1 if=rootfs.cpio.gz.u-boot of=ramdisk.cpio.gz
gunzip ramdisk.cpio.gz
mkdir ramdisk && cd ramdisk
sudo su
cpio -i -F ../ramdisk.cpio
- rootパーティションにコピーする.
cd <sd_card_path>/root/lib/
cp -rf <PetaLinux_project>/images/linux/ramdisk/lib/modules .
RootFSの設定
- SDカードをVMK180のスロットに挿入し,電源を入れる.
- 初期パスワードでログイン後,ルート権限を取得する.
完成
関連
参考