『その3』のVivado MLで作ったハード情報のdesign_ultra96v2_wrapper.xsa をPetaLinuxに取り込んでultra96v2用のLinuxをビルドして、いよいよmicroSDでUltra96v2でLinuxを起動してみます。 2023.1でも試してみました。 使い勝手は2022.2とほぼ同じですが、2023.1はVitisが固まりやすくなっています。 またKernelは6.1.5_xlnxになっています。
準備
進める前に以下準備が必要です。
以下、このサイトを参考にしています。
空き容量の確認
PetaLinuxでビルドするには最低でも100GBは空きが必要と思います。 私の場合、260GBの空きがあったのにいつの間にか193GBになっていました。(2022.2版)
$ df -h Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 794M 2.0M 792M 1% /run /dev/sda5 457G 241G 193G 56% / tmpfs 3.9G 140M 3.8G 4% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock : : :
PetaLinuxのプロジェクトディレクトリ下に生成される容量をみたら、PetaLinux 2023.1プロジェクトディレクトリは、56GBになっていました。 ここに、PetaLinux KernelソースとルートファイルシステムとSysroot(Vitisで必要)が入っています。 Vivadoはまだ0.1GB程度でした。
$ sudo du -h -d 1 . | sort -h 4.0K ./project_3.sim 8.0K ./Packages 16K ./project_3.hw 60K ./project_3.cache 528K ./gittest 660K ./project_3.srcs 18M ./project_3.runs 33M ./project_3.ip_user_files 37M ./project_3.gen 7.9G ./pfm 56G ./ultra96_peta_proj3 64G .
PetaLinuxプロジェクト作成
私の場合、『その3』でVivadoから~/ultra96/vivado/project_3/にdesign_ultra96v2_wrapper.xsaファイルを作っているので、~/ultra96/vivado/project_3/にPetaLinuxのプロジェクトディレクトリ『ultra96_peta_proj3』を作ります。 『~/ultra96/vivado/project_3/ultra96_peta_proj3』が以後でてくる、<PETA_PROJ_DIR>です。(PetaLinuxプロジェクトディレクトリ) また、PetaLinuxインストールディレクトリ<PETA_INSTALL_DIR>は、『PetaLinux 2022.2インストール方法』でPetaLinuxをインストールした『/tools/Xilinx/PetaLinux/』(2023.1は、『/tools/Xilinx/PetaLinux/2023.1/』です)
$ cd ~/ultra96/vivado/project_3 $ source <PETA_INSTALL_DIR>/settings.sh //<---これをしないとpetalinux-configを実行できません。 // 私の場合は以下のsettings.shを実行します。 // $ source /tools/Xilinx/PetaLinux/settings.sh //<--私の2022.2場合 // $ source /tools/Xilinx/PetaLinux/2023.1/settings.sh //<--私の2023.1場合 // 次のpetalinux-createの--nameで指定したultra96_peta_proj3のディレクトリが生成されます。
$ petalinux-create --type project --template zynqMP --name ultra96_peta_proj3 INFO: Create project: ultra96_peta_project INFO: New project successfully created in
PetaLinux プロジェクト設定
2023.1も2022.2も同じです。
- PetaLinuxのProjectディレクトリ(以下、<PETA_PROJ_DIR>)に移動して
- ディレクトリが異なるので、再度、source <PETA_INSTALL_DIR>/settings.sh を実行して、
- xsaファイルを指定してpetalinux-configコマンドでプロジェクトを設定します。
- これで<PETA_PROJ_DIR>/project-spec/configディレクトリの下に、configファイルとrootfs_configファイルが出来きます。
- 注意、『=』と『..』の間はスペース不可です。
- PetaLinuxでビルドして、configを色々変更した後でVivadoでハード変更して新しい.xsaを生成した場合は、この『petalinux-config –get-hw-description=』を実行すると、これまで設定したPetaLinuxの内容を失うこと無く再ビルド出来ます。 また最初の1回目ビルドのように色々ダウンロードしないので、短時間でビルドができます。 なのでVivadoでハード変更しても一からPetaLinuxのプロジェクトを作り直す必要はありませんでした。
$ cd ultra96_peta_project3/ $ petalinux-config --get-hw-description=../design_ultra96v2_wrapper.xsa
System Configutation 設定
System Configurationのmenuconfigが立ち上がりましたね。 操作は、『組込みLinux Beaglebone Black でやってみる その5 ツールチェーン、U-Bootビルド』でmenuconfigの操作方法も記載していますのでよかったらご参考ください。 『検索(/)』や『ヘルプ(?)』も知っていたら便利です。
(*Linux KernelをRT化などカスタマイズする際は、次のpetalinux-config -c kernelをする前にgithubのlinux-xlnxをgit cloneで取ってきて、Linux Components selectionでlinux-xlnxのパスを設定して置かないとKernel Version Sanity checkエラーでビルド出来ない。)
- トップメニューの『DTG settings』に入り、
- 『MACHINE_NAME』に『avnet-ultra96-rev1』と入れる。(これはavnet-ultra96-rev1のbspを入れているので、avnet-ultra96-rev1.dtsiをincludeさせるため。 bspがない場合は、初期値の『template』のままにしておく事。)
- Ultra96v2のUART用の4ピンJ1コネクタにはZynq UltraScale+のUART1がつながっているので、
- トップメニューに戻り『Subsystem AUTO Hardware Settings』に入り、
- 『Serial Settings』に入り、
- 全て『psu_uart_1』に変更して、
- 『ESC』->…->『ESC』->『Y』でsaveする
microSDからLinuxを起動するので、トップメニュから『Image Packaging Configuration』に入り『Root filesystem type』を『EXT4(SD/eMMC/SATA/USB)』にする。
下の表示になるまで『ESC』を押して、『Yes』を選択して保存して抜ける。
『Exit』した後にメッセージを見たら、やっぱり4行目にKconfig、5行目にmenuconfigとでていますね。 『組込みLinux Beagleboneでやってみる』シリーズでも出てきたように、PetaLinuxの環境設定もmenuconfigを使っているのですね。 Linaroの個別ビルドもBuildrootでビルドもPetaLinuxやYoctoでビルドも全てmenuconfigを使っていて、menuconfigの操作だけを覚たらいいので記憶力の悪い私は助かります。
[INFO] Sourcing buildtools INFO: Getting hardware description... INFO: Renaming design_ultra96v2_wrapper.xsa to system.xsa [INFO] Generating Kconfig for project [INFO] Menuconfig project configuration written to /home/ichiri/ultra96/vivado/project_2_ultra96_xsa_tutorial/ultra96_peta_project/project-spec/configs/config *** End of the configuration. *** Execute 'make' to start the build or try 'make help'. [INFO] Sourcing build environment [INFO] Generating kconfig for Rootfs [INFO] Silentconfig rootfs [INFO] Generating plnxtool conf [INFO] Adding user layers [INFO] Generating workspace directory
各種 Configuration
petalinux-configで.xsaを取り込むと、System Configurationのmenuconfigが立ち上がりましたが、その他にも私が知っているだけで、PetaLinux合計4つのmenuconfigがあります。
- System Configuration
- 次回から<PETA_PROJ_DIR>で、petalinux-configをオプションなしで実行すると、System Configurationのmenuconfigが表示されます。
- Kernel Configuration
- Rootfs Configuration
- openssh、python3、dnf、wget、curl、sudo、rpm、opensslのrootfsへの組込みは、petelinux-config -c rootfsでrootfs_config用のmenuconfigで設定します。
- BusyBox Configuration
- Tips
- petalinux-configコマンドでエラーと成る場合は、-vで詳細メッセージ出力してデバッグします。
- <PETA_PROJ_DIR>で、再度xsaを取り込んでも、system menuconfigとkernel meuconfig の変更した設定は残っていた。
- デバッグ時は、<PETA_PROJ_DIR>/config.logの内容を確認したほうが良い。
次回からSystem Configurationのmenuconfigを表示するには、<PETA_PROJ_DIR>で以下を実行します。source /tools/Xilinx/PetaLinux/settings.sh
$ cd <PETA_PROJ_DIR> $ source <PETA_INSTALL_DIR>/settings.sh //<----私の場合は、/tools/Xilinx/PetaLinuxです。 $ petalinux-config
Kernel Configuration 設定
- 『petalinux-config -c kernel』でKernelのmenuconfigを立ち上げ、(30分ほどかかった)
- linux-xlnx-6.1.5-xlinx-v2023.1+gitAUTOINC+716921b6d7-r0をフェッチするのに3分かかった。Wifi遅いので、将来ha2.5G Lanにしよう。
- 最大7コアまで使って立ち上げてた。新しいPCで5分かかった。
- トップメニューから『Library routines』に入り
- 『Size in Mega bytes』に入り
- 以下の様に『1024』に変更する
- トップメニューから『CPU Power Mangement』〜『CPU Idle』〜『CPU idle PM support』のチェック[*]を外す。(初期値は外れてました) トップメニューに戻る時も気をつけること。 間違えてmenuconfigから抜けたらまたビルドが始まり、8分くらい時間がかかります。(新しいPCで1分半)
- ップメニューから『CPU Power Mangement』〜『CPU Frequency scaling』〜『CPU Frequency scaling』チェックを外す。(以下の様に)
- 保存して抜けます。
Vitis Taget Platform に必要なxrt、zocl、opencl等を追加
user-rootfsconfig設定
<PETA_PROJ_DIR>/project-spec/meta-user/conf/user-rootfsconfig に以下を追加する (参考)。 私はviを使いましたが、nanoでも構いません。
$ sudo vi user-rootfsconfig //<---- user ichirには書込権限なかったのでsudoで実行 CONFIG_xrt CONFIG_xrt-dev CONFIG_zocl CONFIG_opencl-clhpp-dev CONFIG_opencl-headers-dev CONFIG_packagegroup-petalinux-opencv
Rootfs Configuration 設定
- <PETA_PROJ_DIR>に移動して、
- rootfsのmenuconfigを開き、
- 『user packages』に入り、
- 以下の様に『*』を入れて、
- 保存して終了する。
$ cd <PETA_PROJ_DIR> $ petalinux-config -c rootfs
デバイスツリー編集
次に、<PROJECT_DIR>/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi を以下のようにします。(&amba以下を追加) どうもsystem-user.dtsiはユーザーがデバイスツリーを上書き出来るようになっているみたいです。 きっとオーバーレイみたいに、最後にインクルードされるのでしょうね。
先頭のインデントは全て半角スペースを使用しました。
$ cd <PROJECT_DIR>/project-spec/meta-user/recipes-bsp/device-tree/files $ sudo vi system-user.dtsi //<---- user ichirには書込権限なし /include/ "system-conf.dtsi" / { } /*amba = "/axi"; となっているので、これはaxiを指している*/ &amba { zyxclmm_drm { compatible = "xlnx,zocl"; status = "okay"; interrupt-parent = <&axi_intc_0>; interrupts = <0 4>, <1 4>, <2 4>, <3 4>, <4 4>, <5 4>, <6 4>, <7 4>, <8 4>, <9 4>, <10 4>, <11 4>, <12 4>, <13 4>, <14 4>, <15 4>, <16 4>, <17 4>, <18 4>, <19 4>, <20 4>, <21 4>, <22 4>, <23 4>, <24 4>, <25 4>, <26 4>, <27 4>, <28 4>, <29 4>, <30 4>, <31 4>; }; }; &axi_intc_0 { xlnx,kind-of-intr = <0x0>; xlnx,num-intr-inputs = <0x20>; interrupt-parent = <&gic>; interrupts = <0 0x59 4>; }; &amba_pl { zyxclmm_drm { compatible="ichiri_disabled,jcl"; status="disabled"; }; };
- 最初は『&amba_pl/zyxclmm_drm』の部分はなしでVitisでvaddプロジェクトを作っていましたが、krnl_vadd_1インスタンスに7回に1回しか接続しなかったりして、ほとんどの場合『No krnl_vadd_1』エラーとなり不安定でした。
- そこで、Kernelメッセージを追っていくと、どうもamba_plバスを採用した時に失敗して、axiバスを採用した時に成功する事が分かりました。
- Vitisが使っているであろうSystem.dtbを逆変換して中身を確認すると、zyclmm_drmノードが2つあり、それぞれaxiバスとamba_plバスの下にありました。 それぞれのcompatible propertyは同じで、『compatible = “xlnx,zocl”;』となっていました。 その為、zoclのKernelドライバが両方とも見つけて、minor1とminor2で2つのドライバインスタンスを作っていました。
- なので、amba_plに接続されたzyclmm_drmノードをdisabledにして、念の為マッチもしないように、compatibleの値も上記のように上書きして、必ずaxiのzyclmm_drmノードしか採用しないようにしています。
- これでやっと安定して必ず成功するようになりました。(解決に1ヶ月かかった。Xilinxの英語のforumやelement14などにも問い合わせましたが、回答なしでした。 その他、ChatGTPなどありとあらゆる検索をしたのですが、解決策が見つからず、上記が私がたどり着いた解決策です。)
- 2023.1でも2022.2でも同じ現象でして。 2020のTutorial等では問題になっていないみたいです。
- もっと良い解決方法が見つかったら追って掲載します。
ビルド
- プロジェクトディレクトリでビルドを実行します。
- インターネットにアクセスして大量のファイルをダウンロード(10GBくらいかな)するので、インターネットに接続した状態でビルド。
- 90分くらいかかりました。 私のPCは12年前のi7 2コアPCにuBuntu を入れてHDD(480GB)なので遅いと思います。 スレッドは4つありますが、全スレッドは、ビルド中ずっと100%に入り付いていました。 メモリは8GBで50%強だったので、メモリ量よりプロセッサ性能とコア数を上げるのと、ファイルを大量に書き込むのでSSDにしたら10倍位速くなるのではと思います。(速いPCにしても1回目はダウンロードが多いので、25分かかりました。デバイスツリーを変更してビルドのやり直しは4分くらいでした。)
$ cd <PROJECT_DIR> $ petalinux-build
*エラーとなったら、『petalinux-build』を実行する前に、以下を実行してみたらいいようです。
// 引用: https://support.xilinx.com/s/question/0D52E00006hptJuSAI/what-does-bsp-contain?language=ja $ cd <PETA_PROJ_DIR> $ rm -rf components/plnx_workspace $ petalinux-build -x mrproper //<---これをしてもmenuconfigは残っていた。 5分ほどかかる。
以下のように一番下に『Successfully built project』と出ました!
$ petalinux-build [INFO] Sourcing buildtools [INFO] Building project [INFO] Sourcing build environment [INFO] Generating workspace directory INFO: bitbake petalinux-image-minimal NOTE: Started PRServer with DBfile: /home/ichiri/ultra96/vivado/project_2_ultra96_xsa_tutorial/ultra96_peta_project/build/cache/prserv.sqlite3, Address: 127.0.0.1:46413, PID: 77668 Loading cache: 100% | | ETA: --:--:-- Loaded 0 entries from dependency cache. Parsing recipes: 100% |##################################################| Time: 0:15:18 Parsing of 4461 .bb files complete (0 cached, 4461 parsed). 6497 targets, 579 skipped, 1 masked, 0 errors. NOTE: Resolving any missing task queue dependencies NOTE: Fetching uninative binary shim file:///home/ichiri/ultra96/vivado/project_2_ultra96_xsa_tutorial/ultra96_peta_project/components/yocto/downloads/uninative/126f4f7f6f21084ee140dac3eb4c536b963837826b7c38599db0b512c3377ba2/x86_64-nativesdk-libc-3.4.tar.xz;sha256sum=126f4f7f6f21084ee140dac3eb4c536b963837826b7c38599db0b512c3377ba2 (will check PREMIRRORS first) Initialising tasks: 100% |###############################################| Time: 0:00:16 Checking sstate mirror object availability: 100% |#######################| Time: 0:01:31 Sstate summary: Wanted 1631 Local 0 Network 1409 Missed 222 Current 0 (86% match, 0% complete) NOTE: Executing Tasks NOTE: Tasks Summary: Attempted 4361 tasks of which 3855 didn't need to be rerun and all succeeded. INFO: Failed to copy built images to tftp dir: /tftpboot [INFO] Successfully built project
ビルド後ファイル確認
<PETA_PROJ_DIR>/images/linux下に各種必要ファイルが出来ていますね。
$ cd <PETA_PROJ_DIR>/images/linux $ ls bl31.bin image.ub rootfs.cpio.gz.u-boot u-boot.bin zynqmp-qemu-arm.dtb bl31.elf pmufw.elf rootfs.ext4 u-boot-dtb.bin zynqmp-qemu-multiarch-arm.dtb boot.scr pmu_rom_qemu_sha3.elf rootfs.jffs2 u-boot-dtb.elf zynqmp-qemu-multiarch-pmu.dtb config pxelinux.cfg rootfs.manifest u-boot.elf Image rootfs.cpio rootfs.tar.gz vmlinux Image.gz rootfs.cpio.gz system.dtb zynqmp_fsbl.elf
system.dtbを逆変換してデバイスツリーがどうなっているか覗けます。 先程編集した、/system-user.dtsiの内容も反映されているはずです。
$ cd <PETA_PROJ_DIR>/images/linux $ dtc -I dtb -O dts system.dtb -o a.dts $ vi a.dts
QEMU
Zynq UltraScale+のCoretex-A53用にビルドしたKernelやU-BOOTが正常に動作するか、x86系のuBuntu PC上でPetaLinuxに組み込まれているQEMUを使って実行してデバッグすることが出来るようです (<PETA_PROJ_DIR>で実行します。) QEMUはスキップしても構いません。
- System Configurationで『EXT4(SD/eMMC/SATA/USB)』を選択すると、『petalinux-boot –qemu –kernel』は『EXT4でない』となり、QEMU出来ませんでした。 初期値のままだとQEMUできました。 以下は、『EXT4(SD/eMMC/SATA/USB)』を選択せずにビルドしたファイルで実行した結果です。
- 『petalinux-boot –qemu –u-boot』は『EXT4(SD/eMMC/SATA/USB)』でも動作しました。
- 初期のユーザー名は『petalinux』です。
- パスワードは、最初にログインした時に設定するようメッセージがでます。 私は、パスワードも『petalinux』にしました。
- 因みに、petalinux-config -c rootfsで『root:root』となっていますが、2021からPetaLinuxでは『root』ログインは禁止されたようです。
- 『root』ログインするには、PAMプロファイルに『auth sufficient pam_rootok.so』と『account sufficient pam_rootok.so』が必要のようですが、やりかががわかりません。(/etc/pam.d/other(debian), /etc/pam.d/rstudio(RedHat/CentOS))
$ petalinux-boot --qemu --kernel ultra96petaproject login: petalinux You are required to change your password immediately (administrator enforced). New password: Retype new password: [ 317.438866] audit: type=1006 audit(1679294753.287:2): pid=504 uid=0 old-auid=4294967295 auid=1000 tty=(none) old-ses=4294967295 ses=1 res=1 [ 317.440310] audit: type=1300 audit(1679294753.287:2): arch=c00000b7 syscall=64 success=yes exit=4 a0=8 a1=ffffc115b9f0 a2=4 a3=ffffbc7026b0 items=0 ppid=1 pid=504 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=1 comm="(systemd)" exe="/lib/systemd/systemd" key=(null) [ 317.444096] audit: type=1327 audit(1679294753.287:2): proctitle="(systemd)" ultra96petaproject:~$
- MicroBlaze
- <PETA_PROJ_DIR>/images/linux/image.elfをブート(Kernelイメージ)
- Zynq-7000
- <PETA_PROJ_DIR>/images/linux/zImageをブート(Kernelイメージ)
- Zynq UltraScale+
- <PETA_PROJ_DIR>/images/linux/Imageをロードして(Kernelイメージ)
- <PETA_PROJ_DIR>/images/linux/bl31.elfをブートして(TF-Aイメージ)
- <PETA_PROJ_DIR>/images/linux/Imageをブートして
- PMU Firmwareをバックグラウンドで走らせる
- Versal ACAP
- <PETA_PROJ_DIR>/images/linux/Imageをロードして(Kernelイメージ)
- <PETA_PROJ_DIR>/images/linux/bl31.elfをブートして(TF-Aイメージ)
- <PETA_PROJ_DIR>/images/linux/Imageをブートして
- PLMとPMU Firmwareをバックグラウンドで走らせる
カスタムU-BOOTやカスタムKernelやdtb設定
U-BOOT
$ petalinux-boot --qemu --u-boot
QEMU終了方法
$ Ctrl+A, X // <---終了方法
SDK(Sysroot)ビルド
- 上記がビルドできたら、Target(この場合Ultra96V2)用のLinuxアプリやKernelモジュールを開発するためにはsysrootが必要なのでビルドします。
- Vitisは、vaddに接続するため、Kernelモジュールやアプリも作るので、SDKのビルドは必ず必要です。
- 上記同様、プロジェクトディレクトリ(<PETA_PROJ_DIR>)で実行します。
- 数時間必要です。 私の場合、友人と飲みに行く前に実行して返ってきたらビルド出来ていました。
- 再度ビルドしたら130分かかっていました。
- 以下コマンドでビルド開始。
$ petalinux-build --sdk
これもCPU稼働はべったり100%に貼り付いています。 しかhし8GBしか無いメモリでもまだ余裕があったので、Chromeも開きっぱなしでも大丈夫でした。(Vitisはメモリ食うので、他のアプリを終了して実行しました。)
新しいPCです。 見事に100%に張り付いていますね。 これはネットアクセスが落ち着いていろいろコンパイルしている時です。クロックはPコア6個は4.5GHz(最高は4.77GHz)で、Eコア8個は3.5GHzになってました。 温度は一番高いところで62℃でクロックは落ちませんでした。 19分でした。 タスク1つでコンパイルする時間が6分くらいあったので、LANにしても後1~2分くらいしか短縮できない感じがします。 2回目以降はダウンロードがないのと、既にある生成されたファイルを使うようで8分くらいでした。
sdk.sh実行
- <PETA_PROJ_DIR>/imges/linuxに移動して
- 生成された、『./sdk.sh』でsdk.shを実行します
- 何処にインストールするのか聞いてくるので、『../../』とすると<PETA_PROJ_DIR>/sysrootsにインストールされました。(『../../』で2つ上のディレクトリに移動してます。)
- 5分くらいかかりました(新しいPCでは1分弱)
- 作り直す時は、『If you continue, existing files will be overwritten! Proceed [y/N]? 』と出てくるので『y』
$ cd ~/ultra96/vivado/project_3/ultra96_peta_proj3/images/linux/ $ ./sdk.sh PetaLinux SDK installer version 2023.1 ====================================== Enter target directory for SDK (default: /opt/petalinux/20232.1): ../../ You are about to install the SDK to "/home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/". Proceed [Y/n]? y Extracting SDK.................................................................................................................................................................................done Setting it up...done SDK has been successfully set up and is ready to be used. Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g. $ . /home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/environment-setup-cortexa72-cortexa53-xilinx-linux
その他
SDKを使う時は、シェルに入ったら毎回以下を実行する必要があるようです。 今回は以下の実行は必要ありません。 SDKはVitisのプラットフォーム作成時に必要なので、./sdk.shの実行までは必要です。
$ source /home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/environment-setup-cortexa72-cortexa53-xilinx-linux //または、『source』代わりに『.』 $ . /home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/environment-setup-cortexa72-cortexa53-xilinx-linux
LinuxだけをUltra96V2で走らせてみる
まずここまでできたら、ビルドしたKernelやブートローダーやルートファイルシステムが動作するか、microSDカードを使ってUltra96V2でLinuxを起動させてみましょう。
microSD書込
GParted(GNOME Partition Editor)で書き込みます。(一番簡単なので) uBuntuには入っていないので、GPartedがまだインストールされていなければ、uBuntuのソフトウェアセンタでインストールして下さい。
- microSDをuBuntu PCのSDスロットに差し込みます(SDアダプタ必要)。 microSDは8GB以上がいいと思います。
- そして、GPartedを起動します
- (重要)起動したら、まず赤線枠の部分のデバイスリスト選択でmicroSDカードが選ばれているか、容量やデバイス名を必ず確認します。 $ cdPCにもよりますが、大体SDカードは/dev/mmcblkとなってることが多いです。 これを間違えると、PCの中身をすべて消してします。 もしデバイスの選択にmicroSDが見当たらない場合は、メニューから『GParted』〜『デバイスを更新』を実行してみて下さい。
これから、パーティションを2個作ります。
- 第一パーティション — fat32ファイルシステムフォーマット、BOOT、bootフラグ付き
- 第二パーティション — ext4ファイルシステムフォーマット、ROOTFS
- 作成する前に既存のパーティションを削除します。 /dev/mmcblk1p1のfat32のオレンジの部分で右クリックして削除します。
- 『削除』したら『未割り当て』となるので『未割り当て』上で右クリックして『新規』を選択。
- 『新規パーティションの作成』画面が開くので、以下のように設定して『追加』を押す。
- 新しいサイズ:『2048』
- 作成:『基本パーティション』(Primary Partition)
- ファイルシステム:『fat32』
- ラベル:『BOOT』
- 『新規パーティション#1』が予約されました。(画面下に『2件の操作を保留中』と表示されています。 最後に全ての保留を実行します。)
- オレンジ色の『未割り当て』上で右クリックして『新規』を選択して、2つめのパーティションを作成します。
- 『新規パーティションの作成』画面が開くので、以下のように設定して『追加』を押す。
- 新しいサイズ:何も変更しない
- 作成:『基本パーティション』(Primary Partition)
- ファイルシステム:『etx4』
- ラベル:『ROOTFS』
- 以下の用に『BOOT』と『ROOTFS』の新規パーティションが2つ表示されます。 しかし、これらは実際にはまだ『保留中』で出来ていないので、メニューの『編集』〜『保留中の全ての操作を適用する』を選ぶ。 そして『適用』をクリックする。
- 『BOOT』パーティションの上で右クリックして『フラグを編集』を選び『boot』にチェックをいれて閉じる。
『0件の操作を保留中』となっていて、以下のようになっていれば成功です。 GPartedを終了します。
- 後でファイルをコピーするので、私はmicorSDカードをスロットから抜いて、再度スロットに挿すとuBuntuが自動的にマウントしてくれました。 マウントされたら、uBuntuの左のメニューに『BOOT』と『ROOTFS』の2つのSDカードのアイコンが表示されGUIでファイルコピーができるので、私はFile Explorerでコピーしました。 (後で説明します。)
- 自動でマウントされなかったら、マウントしなければなりません。 microSDの『BOOT』は、すぐ上の図の『パーティション』と記載された部分、私の場合は『/dev/mmcblk1p1』と表示されています。『/mnt』ディレクトリに新しいディレクトリを作ってからマウントします。 私の場合は、『/media/ichiri/』の下に予め『BOOT』と『ROOTFS』ディレクトリをつくっています。『sudo mkdir -p /media/ichiri/BOOT 』として、『sudo mount /dev/mmcblk1p1 /media/ichiri/BOOT』とすると、/media/ichiri/BOOTにアクセス出来るようになります。 microSDを壊さない様に、抜く前にアンマウントすることを忘れないようにして下さい。 『ROOTFS』もマウントする必要があります。
- 『BOOT』の所有者はichiriですが、『ROOTFS』は何故かrootになっているので、後にファイルをコピーしやすいように『sudo chown ichiri:ichiri /medhia/ichiri/ROOTFS/』を実行して所有者をichiriにしておきます。
BOOT.BINを生成
Vitisは独自にBOOT.BINを生成して、そのBOOT.BINを使用しなくてはなりませんが、ここではPetaLinuxが正常に動作するかどうかを確認するため、BOOT.BINを生成します。
- <PETA_PROJ_DIR>/images/linuxに移動して、
- 以下の様に『petalinux-package …』を実行
- 『design_ultra96v2_wrapper.bit』以外は、カレントディレクトリにあるので、ファイル名だけ設定
- <PETA_PROJ_DIR>/images/linuxに『BOOT.BIN』が生成されます。
- 普通のARMなどは、u-boot-spl.bin、u-boot.img, dtb を起動時に個別にロードしますが、Zynq SoCは、BOOT.BINにそれら以外にもビットストリーム(FPGAコンフィギュレーション)等も含まれています。
petalinux-package --boot --format BIN --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga ../../../project_3.runs/impl_1/design_ultra96v2_wrapper.bit --force
$ cd <PETA_PROJ_DIR>/images/linux $ source /tools/Xilinx/PetaLinux/settings.sh $ petalinux-package --boot --format BIN --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga ../../../project_3.runs/impl_1/design_ultra96v2_wrapper.bit --force [INFO] Sourcing buildtools INFO: File in BOOT BIN: "/home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/images/linux/zynqmp_fsbl.elf" INFO: File in BOOT BIN: "/home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/images/linux/pmufw.elf" INFO: File in BOOT BIN: "/home/ichiri/ultra96/vivado/project_3/project_3.runs/impl_1/design_ultra96v2_wrapper.bit" INFO: File in BOOT BIN: "/home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/images/linux/bl31.elf" INFO: File in BOOT BIN: "/home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/images/linux/system.dtb" INFO: File in BOOT BIN: "/home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/images/linux/u-boot.elf" INFO: Generating zynqmp binary package BOOT.BIN... ****** Bootgen v2023.1 **** Build date : Apr 7 2023-10:18:04 ** Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. ** Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved. [INFO] : Bootimage generated successfully INFO: Binary is ready. WARNING: Unable to access the TFTPBOOT folder /tftpboot!!! WARNING: Skip file copy to TFTPBOOT folder!!!
『Unable to access the TFTPBOOT folder /tftpboot!!!』の警告は無視して進みます。 多分、ルートにtftpbootディレクトリをichiri:ichiriで作ったらこの警告は表示されなくなると思います。でも今TFTPでのブートは使わないので今度にしておきます。
- microSDの『/BOOT/』にファイルをコピーします。
- 『sudo tar -zxvf rootfs.tar.gz -C /media/ichiri/ROOTFS』でルートFSを解凍して、microSDの第二パーティションの『ROOTFS』に入れる。
$ sudo mkdir -p /media/ichiri/BOOT $ sudo mkdir -p /media/ichiri/ROOTFS $ sudo chown ichiri:ichiri /media/ichiri/BOOT $ sudo mount /dev/mmcblk1p1 /media/ichiri/BOOT $ sudo mount /dev/mmcblk1p1 /media/ichiri/ROOTFS $ cd <PETA_PROJ_DIR>/images/linux $ cp BOOT.BIN boot.scr image.ub /media/ichiri/BOOT $ sudo tar -zxvf rootfs.tar.gz -C /media/ichiri/ROOTFS $ sync $ umount /media/ichiri/BOOT $ umount /media/ichiri/ROOTFS
- microSDの『BOOT』と『ROOTFS』をアンマウントする。 コマンドラインの場合は両方アンマウントする必要があります。 私は、uBuntuの左のメニューの『BOOT』を右クリックして『Eject』とすると、『BOOT』と『ROOTFS』の両方をアンマウントしてくれます。
Ultra96V2起動
- microSDをuBuntu PCから抜き、Ultra96V2に装着する。
- minicomを立ち上げておく。
- Ultra96V2に電源を入れて『SW4』を押す
- minicomにbl31メッセ-ジが表示され、u-bootメッセージが表示され、Kernelメッセージが表示され、ログインを聞いてきます。 *Bluetoothが接続されリトライしているので、login表示の後にもKernelメッセージがでていますが、文字が切れても気にせず半角で『petalinux』と打てば問題なくログインできます。 パスワードも同じです。
- ログイン名は『petalinux』です。
- パスワードを聞いてくるので、私は『petalinux』にしましたが、短いほうが良かったです。
- *2021より、rootログインは強制禁止されました。
次は、いよいよVitisです。
おしまい
その他
メモ用です。 知識が付いてきたら追々整理していきます。
参考
PetaLinux ツール資料リファレンス ガイド UG1144 (v2021.1)
PetaLinux Tools Documentation: Reference Guide (UG1144) 2023.5-16
Ultra96用Vitisプラットフォームの作り方(BASE編)
PetaLinux コマンド 抜粋
PetaLinux commands UG1144 2022-10-19
$ petalinux- // <---一覧表示 petalinux-create petalinux-config petalinux-config -c kernel //<--10分以上かかった petalinux-config -c rootfs //<--1分かからない petalinux-config -c u-boot petalinux-config -c busybox //<--表示に3分ほどかかった。 終了にも1分かかった。 petalinux-build petalinux-build --sdk //<---sysroot生成 petalinux-build -x mrproper //<--ビルドしたプロジェクト全体をクリーンアップ petalinux-boot petalinux-boot --jtag petalinux-boot --qemu --u-boot //<--QEMUで実行出来る petalinux-boot --qemu --kernel //<--QEMUで実行出来る petalinux-package petalinux-package --sysroot -s petalinux-package --wic // BOOT.BINが必要。 images/linux ディレクトリで実行。 petalinux-util petalinux-upgrade petalinux-devtool $ petalinux-build -c rootfs -x distclean // <--もしかしたらこれでmenuconfigの初期化ができるのかな。 $ petalinux-config -c rootfs // <--- これでrootfsの設定が出来る。 // <PETA_PROG_DIR>/build/misc/rootfs_config/Kconfig $ petalinux-config -c kernel // <--- これでKernelの設定が出来る。 5分くらいかかった。 // menuconfigが終わった後も処理がある。
- 別ディレクトリから実行する際は、-p <PETA_PROJ_DIR> を指定して実行。
- -h ヘルプ
- -v 詳細表示
使い方 petalinux-build [options] オプション: -h, --help ヘルプ -p, --project <PROJECT> path to PetaLinux SDK project. Default is working project. -c, --component <COMPONENT> Specify the component 指定したコンポーネントと依存関係をビルドする E.g. -c rootfs E.g. -c myapp -x, --execute <tasks of bitbake> Specify a bitbake task of the component To know the list tasks for a component: E.g. -x do_listtasks -f, --force Force run a specific task ignoring the stamps Force run has to be for a component or its tasks E.g. -c myapp -f E.g. -c myapp -x compile -f -v, --verbose 詳細のコンパイルメッセージ表示 -s, --sdk Build SDK ==> do_populate_sdk -e, --esdk Build Minimal eSDK ==> do_populate_sdk_ext -a|--archiver This will create archiver.tar.gz in the images/linux folder which contains sources and licenses. EXAMPLES: Build the project: $ petalinux-build the bootable images are in <PROJECT>/images/linux/. Build project with archiver: $ petalinux-build -a | --archiver Build SDK : $ petalinux-build --sdk | -s the equivalent bitbake task is do_populate_sdk, built sdk is deployed at <PROJECT>/images/linux/sdk.sh Build Minimal eSDK : $ petalinux-build --esdk | -e the equivalent bitbake task is do_populate_sdk_ext built esdk is deployed at <PROJECT>/images/linux/esdk.sh This can be imported to petalinux tool with user source changes Build SDK with archiver: $ petalinux-build --sdk --archiver Build kernel only: $ petalinux-build -c kernel Compile kernel forcefully: $ petalinux-build -c kernel -x compile -f Deploy kernel forcefully: $ petalinux-build -c kernel -x deploy -f Build kernel and update the bootable images: $ petalinux-build -c kernel $ petalinux-build -x package Build rootfs only: $ petalinux-build -c rootfs Build myapp of rootfs only: $ petalinux-build -c myapp List all rootfs sub-components: $ petalinux-build -c rootfs -h Clean up u-boot and build again: $ petalinux-build -c u-boot -x distclean ## above command will remove tmp files and sstate cache of u-boot. $ petalinux-build -c u-boot Clean up the project build and build again: $ petalinux-build -x distclean //<---これをしたらmenuconfigの設定はは消える。 ## above command will remove tmp files and sstate cache files. $ petalinux-build Clean up the project build and the generated bootable images: $ petalinux-build -x mrproper //<---これをしてもmenuconfigは残っていた。 5分ほどかかる。 ## above command will remove tmp files, <PROJECT>/images/, <PROJECT>/build/ and <PROJECT>/components/plnx_workspace directories
boot.scr場所
Zynqはu-boot.imgでなくBOOT.binを使う?
Petalinux2019かPetalinux2020くらいからFAT32の領域にboot.bin, image.ub(Kernelイメージ?)に加えてboot.scr
dts場所
プロジェクトのデバイスツリー?
ダウンロードしなくても、avnet-ultra96-rev1.dtsiも入っている。 PetaLinuxを再ビルドした時に自動生成されたみたい。
./components/plnx_workspace/device-tree/device-tree/
-rw-r--r-- 1 ichiri ichiri 10929 3月 23 16:21 avnet-ultra96-rev1.dtsi -rw-r--r-- 1 ichiri ichiri 9495 3月 23 16:22 device-tree.mss -rw-r--r-- 1 ichiri ichiri 4788756 3月 23 16:21 hardware_description.xsa drwxr-xr-x 3 ichiri ichiri 4096 3月 23 16:22 include -rw-r--r-- 1 ichiri ichiri 2646 3月 23 16:22 pcw.dtsi -rw-r--r-- 1 ichiri ichiri 950358 3月 23 16:21 psu_init.c -rw-r--r-- 1 ichiri ichiri 950716 3月 23 16:21 psu_init_gpl.c -rw-r--r-- 1 ichiri ichiri 1630154 3月 23 16:21 psu_init_gpl.h -rw-r--r-- 1 ichiri ichiri 1629550 3月 23 16:21 psu_init.h -rw-r--r-- 1 ichiri ichiri 50587 3月 23 16:21 psu_init.html -rw-r--r-- 1 ichiri ichiri 859449 3月 23 16:21 psu_init.tcl -rw-r--r-- 1 ichiri ichiri 245 3月 23 16:23 system-conf.dtsi -rw-r--r-- 1 ichiri ichiri 531 3月 23 16:23 system-top.dts -rw-r--r-- 1 ichiri ichiri 6303 3月 23 16:21 zynqmp-clk-ccf.dtsi -rw-r--r-- 1 ichiri ichiri 31233 3月 23 16:21 zynqmp.dtsi
ユーザーが変更を加えられるデバイスツリー
./project-spec/meta-user/recipes-bsp/device-tree/files
-rw-r--r-- 1 ichiri ichiri 168 3月 15 16:43 pl-custom.dtsi -rw-r--r-- 1 ichiri ichiri 146 3月 23 16:52 system-user.dtsi
一般的なデフォルトデバイスツリーライブラリ
Beagle Boneblackなどいろんな機種のdtsやdtsiがある。
./build/tmp/work/zynqmp_generic-xilinx-linux/u-boot-xlnx/v2021.01-xilinx-v2022.2+gitAUTOINC+b31476685d-r0/git/arch/arm/dts/
最終的に生成され使用されるデバイスツリー system.dtb
./images/linux
No currently running tasks エラー
このエラーにも3週間ほどめっちゃ苦しみました。 最終r的には、PetaLinuxを上書きインストールしたら解決しました。
XRTをインストールする前に、最初一回目にKernelやU-Bootをビルドした時は、問題無くビルドされました。その後、Vitis用のプラットフォームを作るためにXRTをインストールしてpetalinux-buildやpetalinux-config -c kernelをしたら、このエラーメッセージが表示され止まってしまう現象があり、3週間ほど色々調べたのですが、なかなか解決しませんでした。 以下実施も解決せず。
- XRTをアンインストールしたけど解決せず。
- mrpoperも解決しませんでした。
- distcleanも解決しませんでした。 distcleanやcleanすら、No currently running tasksで止まりました。
- apt upgrade で全てのパッケージをupgradeしましたが解決せず。
PetaLinuxはアンインストール出来ないので、ディレクトリ全て削除するらしいですがやっていません。 しかし、PetaLinuxを上書きで同じディレクトリに再インストールしたら解決したようです。 uBuntuのアップデートかXRTのインストールでPetaLinuxで使う何かが上書きされたのかもしれません。
NOTE: Started PRServer with DBfile: /home/ichiri/ultra96/vivado/project_2_ultra96_xsa_tutorial/ultra96_peta_project/build/cache/prserv.sqlite3, Address: 127.0.0.1:33527, PID: 17085 Loading cache: 100% | | ETA: --:--:-- Loaded 0 entries from dependency cache. Parsing recipes: 100% |#######################################################################| Time: 0:13:30 Parsing of 4461 .bb files complete (0 cached, 4461 parsed). 6497 targets, 579 skipped, 1 masked, 0 errors. NOTE: Resolving any missing task queue dependencies NOTE: Fetching uninative binary shim file:///home/ichiri/ultra96/vivado/project_2_ultra96_xsa_tutorial/ultra96_peta_project/components/yocto/downloads/uninative/126f4f7f6f21084ee140dac3eb4c536b963837826b7c38599db0b512c3377ba2/x86_64-nativesdk-libc-3.4.tar.xz;sha256sum=126f4f7f6f21084ee140dac3eb4c536b963837826b7c38599db0b512c3377ba2 (will check PREMIRRORS first) Initialising tasks: 100% |####################################################################| Time: 0:00:29 Checking sstate mirror object availability: 100% |############################################| Time: 0:02:13 Sstate summary: Wanted 2418 Local 0 Network 2078 Missed 340 Current 0 (85% match, 0% complete) NOTE: Executing Tasks No currently running tasks (3 of 2418/0 of 6271) 0% |
Upgrade glibcで解決すると書いてありましたが、解決しませんでした。 私の場合は2.31だったけどこのエラーが出た。
$ ldd --version ldd (Ubuntu GLIBC 2.31-0ubuntu9.9) 2.31 Copyright (C) 2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Roland McGrath and Ulrich Drepper. $ sudo vi ./home/ichiri/ultra96/vivado/project_2_ultra96_xsa_tutorial/ultra96_peta_project2/components/yocto/layers/core/meta/conf/distro/include/yocto-uninative.inc UNINATIVE_MAXGLIBCVERSION = "2.34"
このエラーの解決方法は他には、以下の3種類の原因の可能性があるらしいのですが、どう修正したらいいかわからなかった。 3.は実施しましたが解決しませんでした。
Making some search on google seems 3 possible reasons:
1. Config is broken – make sure you properly configured DISTRO and MACHINE names
2. conf/local.conf is broken – double check what you posted there
3. Try to remove the build folder and re-make all the config steps again and try to issue again the bitbake command.
デバイスツリー
Ultra96V2を立ち上げただけではWifiは動作しないので、以下のデバイスツリーに追加しないといけならしい。
<PROJECT_DIR>/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
//ここの部分はWifi &sdhci1 { bus-width= <0x4>; /* non-removeable; */ /* mmc-pwrseq = <&sdio_pwrseq>; */ max-frequency = <50000000>; /delete-property/cap-power-off-card; // This is not compatible with the WILC3000 and means the WILC will always be powered on status = "okay"; #address-cells = <1>; #size-cells = <0>; wilc_sdio@1 { compatible = "microchip,wilc3000"; reg = <0>; // interrupt-parent = <&gpio>; // Microchip driver DOES NOT use gpio irq any more! // interrupts = <76 2>; /* MIO76 WILC IRQ 1V8 */ // Microchip driver DOES NOT use gpio irq any more! // irq-gpios = <&gpio 76 0>; // Microchip driver DOES NOT use gpio irq any more! bus-width= <0x4>; status = "okay"; }; // Remove TI child node from U96 V1 DT /delete-node/wifi@2; }; //microSDは起動時書込不可であれば、これで可能になる。 //書込不可だとルートファイルシステムにファイルを作れないが、system.dtbはすでにdisable-wpになっていたので以下は不要。 &sdhci0 { disable-wp; };
This is not supported OS
- 意図したわけではないのですが、uBuntu20.04.6だからか、このWarningがでます。
- しかしuBuntu20.04.6で今のところ問題なくビルド出来ています。
- サポートされているのは、20.04では.4までと記載されています。
ichiri@ichiri-VPCF128FJ:~/ultra96/vivado/project_3/ultra96_peta_proj3$ source /tools/Xilinx/PetaLinux/settings.sh PetaLinux environment set to '/tools/Xilinx/PetaLinux' WARNING: This is not a supported OS INFO: Checking free disk space INFO: Checking installed tools INFO: Checking installed development libraries INFO: Checking network and other services
wicimage作成
将来の参考
$ petalinux-package --wic --bootfiles "ramdisk.cpio.gz.u-boot boot.scr Image system.dtb" --outdir wicimage/
qspiboot.bif
qspiを使う時のbifファイルとsystem-user.dtsiの将来の参考
the_ROM_image: { [bootloader, destination_cpu=a53-0] ./images/linux/zynqmp_fsbl.elf [destination_cpu=pmu] ./images/linux/pmufw.elf [destination_device=pl] ./images/linux/system.bit [destination_cpu=a53-0, exception_level=el-3, trustzone] ./images/linux/bl31.elf [destination_cpu=a53-0] ./images/linux/system.dtb [destination_cpu=a53-0, exception_level=el-2] ./images/linux/u-boot.elf [offset=0x01500000, destination_cpu=a53-0] ./images/linux/image.ub [offset=0x03E80000, destination_cpu=a53-0] ./images/linux/boot.scr }
<PROJECT_DIR>/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi に以下を追加。
/* QSPI */ &qspi { #address-cells = <1>; #size-cells = <0>; status = "okay"; flash0: flash@0 { compatible = "jedec,spi-nor"; spi-max-frequency = <40000000>; reg = <0x0>; #address-cells = <1>; #size-cells = <1>; };
2023.1 Fetcher failure ビルドエラー
PetaLinux2023.1でビルドすると<PETA_PROJ_DIR>/build/sstate-cacheディレクトリーで.zstが見つからない12個くらいのERRORが表示されて、トドメに『ERROR: Failed to build project.』となりました。 しかし、sstate-cacheを見ていくとこれらのファイルは全て存在していました。 sstate-cacheはビルド時間短縮する為にネット上のファイルをcacheとして取り込むので、もしかしたら取り込むタイミングと読み込むタイミングのズレ(バグ)でエラーになったのかなと思い、再度petalinux-buildしたら『[INFO] Successfully built project』となりました。 使うPCのスピードやスレッド数によってタイミングが違うので、こんな事が起こったのかな。
WARNING: python3-attrs-22.1.0-r0 do_populate_lic_setscene: Failed to fetch URL file://71/d6/sstate:python3-attrs::22.1.0:r0::10:71d668b5a67a3f7e43fc23c9440ff4cc5a874f5a2e3c10e8205b06eccfd75fb1_populate_lic.tar.zst;downloadfilename=71/d6/sstate:python3-attrs::22.1.0:r0::10:71d668b5a67a3f7e43fc23c9440ff4cc5a874f5a2e3c10e8205b06eccfd75fb1_populate_lic.tar.zst, attempting MIRRORS if available ERROR: python3-attrs-22.1.0-r0 do_populate_lic_setscene: Fetcher failure: Unable to find file file://71/d6/sstate:python3-attrs::22.1.0:r0::10:71d668b5a67a3f7e43fc23c9440ff4cc5WARNING: python3-attrs-22.1.0-r0 do_populate_lic_setscene: Failed to fetch URL file://71/d6/sstate:python3-attrs::22.1.0:r0::10:71d668b5a67a3f7e43fc23c9440ff4cc5a874f5a2e3c10e8205b06eccfd75fb1_populate_lic.tar.zst;downloadfilename=71/d6/sstate:python3-attrs::22.1.0:r0::10:71d668b5a67a3f7e43fc23c9440ff4cc5a874f5a2e3c10e8205b06eccfd75fb1_populate_lic.tar.zst, attempting MIRRORS if available ERROR: python3-attrs-22.1.0-r0 do_populate_lic_setscene: Fetcher failure: Unable to find file file://71/d6/sstate:python3-attrs::22.1.0:r0::10:71d668b5a67a3f7e43fc23c9440ff4cc5a874f5a2e3c10e8205b06eccfd75fb1_populate_lic.tar.zst;downloadfilename=71/d6/sstate:python3-attrs::22.1.0:r0::10:71d668b5a67a3f7e43fc23c9440ff4cc5a874f5a2e3c10e8205b06eccfd75fb1_populate_lic.tar.zst anywhere. The paths that were searched were: /home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/build/sstate-cache WARNING: python3-attrs-22.1.0-r0 do_package_write_rpm_setscene: Failed to fetch URL file://23/07/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:2307a1799edcebdee3ae35cf6f95fb9cccffc13eaff5bdc06e028f25d2f6abae_package_write_rpm.tar.zst;downloadfilename=23/07/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:2307a1799edcebdee3ae35cf6f95fb9cccffc13eaff5bdc06e028f25d2f6abae_package_write_rpm.tar.zst, attempting MIRRORS if available WARNING: m4-1.4.19-r0 do_packagedata_setscene: Failed to fetch URL file://86/05/sstate:m4:cortexa72-cortexa53-xilinx-linux:1.4.19:r0:cortexa72-cortexa53:10:8605e3861a68ec19dec49e09c1329e54e621e9d582773bd3f40a19fec616d8d2_packagedata.tar.zst.siginfo;downloadfilename=86/05/sstate:m4:cortexa72-cortexa53-xilinx-linux:1.4.19:r0:cortexa72-cortexa53:10:8605e3861a68ec19dec49e09c1329e54e621e9d582773bd3f40a19fec616d8d2_packagedata.tar.zst.siginfo, attempting MIRRORS if available WARNING: liberror-perl-0.17029-r1 do_packagedata_setscene: Failed to fetch URL file://f3/2f/sstate:liberror-perl:cortexa72-cortexa53-xilinx-linux:0.17029:r1:cortexa72-cortexa53:10:f32f4fcbe241220a4f82f3dcc964731216abbbd3914316014424d84e3fe29857_packagedata.tar.zst;downloadfilename=f3/2f/sstate:liberror-perl:cortexa72-cortexa53-xilinx-linux:0.17029:r1:cortexa72-cortexa53:10:f32f4fcbe241220a4f82f3dcc964731216abbbd3914316014424d84e3fe29857_packagedata.tar.zst, attempting MIRRORS if available ERROR: python3-attrs-22.1.0-r0 do_package_write_rpm_setscene: Fetcher failure: Unable to find file file://23/07/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:2307a1799edcebdee3ae35cf6f95fb9cccffc13eaff5bdc06e028f25d2f6abae_package_write_rpm.tar.zst;downloadfilename=23/07/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:2307a1799edcebdee3ae35cf6f95fb9cccffc13eaff5bdc06e028f25d2f6abae_package_write_rpm.tar.zst anywhere. The paths that were searched were: /home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/build/sstate-cache WARNING: python3-attrs-22.1.0-r0 do_populate_sysroot_setscene: Failed to fetch URL file://e7/5a/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:e75a4b0468e89eeccf9a4caa558d0dc5e2bbc2b6f5cff716b08552e8444bdea6_populate_sysroot.tar.zst;downloadfilename=e7/5a/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:e75a4b0468e89eeccf9a4caa558d0dc5e2bbc2b6f5cff716b08552e8444bdea6_populate_sysroot.tar.zst, attempting MIRRORS if available ERROR: m4-1.4.19-r0 do_packagedata_setscene: Fetcher failure: Unable to find file file://86/05/sstate:m4:cortexa72-cortexa53-xilinx-linux:1.4.19:r0:cortexa72-cortexa53:10:8605e3861a68ec19dec49e09c1329e54e621e9d582773bd3f40a19fec616d8d2_packagedata.tar.zst.siginfo;downloadfilename=86/05/sstate:m4:cortexa72-cortexa53-xilinx-linux:1.4.19:r0:cortexa72-cortexa53:10:8605e3861a68ec19dec49e09c1329e54e621e9d582773bd3f40a19fec616d8d2_packagedata.tar.zst.siginfo anywhere. The paths that were searched were: /home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/build/sstate-cache ERROR: python3-attrs-22.1.0-r0 do_populate_sysroot_setscene: Fetcher failure: Unable to find file file://e7/5a/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:e75a4b0468e89eeccf9a4caa558d0dc5e2bbc2b6f5cff716b08552e8444bdea6_populate_sysroot.tar.zst;downloadfilename=e7/5a/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:e75a4b0468e89eeccf9a4caa558d0dc5e2bbc2b6f5cff716b08552e8444bdea6_populate_sysroot.tar.zst anywhere. The paths that were searched were: /home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/build/sstate-cache ERROR: liberror-perl-0.17029-r1 do_packagedata_setscene: Fetcher failure: Unable to find file file://f3/2f/sstate:liberror-perl:cortexa72-cortexa53-xilinx-linux:0.17029:r1:cortexa72-cortexa53:10:f32f4fcbe241220a4f82f3dcc964731216abbbd3914316014424d84e3fe29857_packagedata.tar.zst;downloadfilename=f3/2f/sstate:liberror-perl:cortexa72-cortexa53-xilinx-linux:0.17029:r1:cortexa72-cortexa53:10:f32f4fcbe241220a4f82f3dcc964731216abbbd3914316014424d84e3fe29857_packagedata.tar.zst anywhere. The paths that were searched were: /home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/build/sstate-cache a874f5a2e3c10e8205b06eccfd75fb1_populate_lic.tar.zst;downloadfilename=71/d6/sstate:python3-attrs::22.1.0:r0::10:71d668b5a67a3f7e43fc23c9440ff4cc5a874f5a2e3c10e8205b06eccfd75fb1_populate_lic.tar.zst anywhere. The paths that were searched were: /home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/build/sstate-cache WARNING: python3-attrs-22.1.0-r0 do_package_write_rpm_setscene: Failed to fetch URL file://23/07/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:2307a1799edcebdee3ae35cf6f95fb9cccffc13eaff5bdc06e028f25d2f6abae_package_write_rpm.tar.zst;downloadfilename=23/07/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:2307a1799edcebdee3ae35cf6f95fb9cccffc13eaff5bdc06e028f25d2f6abae_package_write_rpm.tar.zst, attempting MIRRORS if available WARNING: m4-1.4.19-r0 do_packagedata_setscene: Failed to fetch URL file://86/05/sstate:m4:cortexa72-cortexa53-xilinx-linux:1.4.19:r0:cortexa72-cortexa53:10:8605e3861a68ec19dec49e09c1329e54e621e9d582773bd3f40a19fec616d8d2_packagedata.tar.zst.siginfo;downloadfilename=86/05/sstate:m4:cortexa72-cortexa53-xilinx-linux:1.4.19:r0:cortexa72-cortexa53:10:8605e3861a68ec19dec49e09c1329e54e621e9d582773bd3f40a19fec616d8d2_packagedata.tar.zst.siginfo, attempting MIRRORS if available WARNING: liberror-perl-0.17029-r1 do_packagedata_setscene: Failed to fetch URL file://f3/2f/sstate:liberror-perl:cortexa72-cortexa53-xilinx-linux:0.17029:r1:cortexa72-cortexa53:10:f32f4fcbe241220a4f82f3dcc964731216abbbd3914316014424d84e3fe29857_packagedata.tar.zst;downloadfilename=f3/2f/sstate:liberror-perl:cortexa72-cortexa53-xilinx-linux:0.17029:r1:cortexa72-cortexa53:10:f32f4fcbe241220a4f82f3dcc964731216abbbd3914316014424d84e3fe29857_packagedata.tar.zst, attempting MIRRORS if available ERROR: python3-attrs-22.1.0-r0 do_package_write_rpm_setscene: Fetcher failure: Unable to find file file://23/07/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:2307a1799edcebdee3ae35cf6f95fb9cccffc13eaff5bdc06e028f25d2f6abae_package_write_rpm.tar.zst;downloadfilename=23/07/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:2307a1799edcebdee3ae35cf6f95fb9cccffc13eaff5bdc06e028f25d2f6abae_package_write_rpm.tar.zst anywhere. The paths that were searched were: /home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/build/sstate-cache WARNING: python3-attrs-22.1.0-r0 do_populate_sysroot_setscene: Failed to fetch URL file://e7/5a/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:e75a4b0468e89eeccf9a4caa558d0dc5e2bbc2b6f5cff716b08552e8444bdea6_populate_sysroot.tar.zst;downloadfilename=e7/5a/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:e75a4b0468e89eeccf9a4caa558d0dc5e2bbc2b6f5cff716b08552e8444bdea6_populate_sysroot.tar.zst, attempting MIRRORS if available ERROR: m4-1.4.19-r0 do_packagedata_setscene: Fetcher failure: Unable to find file file://86/05/sstate:m4:cortexa72-cortexa53-xilinx-linux:1.4.19:r0:cortexa72-cortexa53:10:8605e3861a68ec19dec49e09c1329e54e621e9d582773bd3f40a19fec616d8d2_packagedata.tar.zst.siginfo;downloadfilename=86/05/sstate:m4:cortexa72-cortexa53-xilinx-linux:1.4.19:r0:cortexa72-cortexa53:10:8605e3861a68ec19dec49e09c1329e54e621e9d582773bd3f40a19fec616d8d2_packagedata.tar.zst.siginfo anywhere. The paths that were searched were: /home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/build/sstate-cache ERROR: python3-attrs-22.1.0-r0 do_populate_sysroot_setscene: Fetcher failure: Unable to find file file://e7/5a/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:e75a4b0468e89eeccf9a4caa558d0dc5e2bbc2b6f5cff716b08552e8444bdea6_populate_sysroot.tar.zst;downloadfilename=e7/5a/sstate:python3-attrs:cortexa72-cortexa53-xilinx-linux:22.1.0:r0:cortexa72-cortexa53:10:e75a4b0468e89eeccf9a4caa558d0dc5e2bbc2b6f5cff716b08552e8444bdea6_populate_sysroot.tar.zst anywhere. The paths that were searched were: /home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/build/sstate-cache ERROR: liberror-perl-0.17029-r1 do_packagedata_setscene: Fetcher failure: Unable to find file file://f3/2f/sstate:liberror-perl:cortexa72-cortexa53-xilinx-linux:0.17029:r1:cortexa72-cortexa53:10:f32f4fcbe241220a4f82f3dcc964731216abbbd3914316014424d84e3fe29857_packagedata.tar.zst;downloadfilename=f3/2f/sstate:liberror-perl:cortexa72-cortexa53-xilinx-linux:0.17029:r1:cortexa72-cortexa53:10:f32f4fcbe241220a4f82f3dcc964731216abbbd3914316014424d84e3fe29857_packagedata.tar.zst anywhere. The paths that were searched were: /home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/build/sstate-cache : : : : Summary: There were 31 WARNING messages. Summary: There were 16 ERROR messages, returning a non-zero exit code. ERROR: Failed to build project. Check the /home/ichiri/ultra96/vivado/project_3/ultra96_peta_proj3/build/build.log file for more details...
新しいPC
14コアで20スレッドがあるので、petalinux-build時は20スレッドを使って実行しています。 一回目のビルドは25分、2回目は2分ほどでした。(古いPCでは1回目が90分、2回目でも20~30分かかってました) 1回目はファイルをダウンロードするのに時間がかかっているようです。 今はWifiのアンテナの位置が悪く40Mbpsしか出ていないので、2.5Gbps LANにすると25分は10分以下に短縮できるのではと思っています。
- i5 13500 14 core, 20 thread — ゲーム用でないので、ビルドには13600Kや13700Kはマザーボードや水冷含め高すぎるので、これでちょうどいいと思います。 今の所めっちゃ静かです。
- H670
- DDR4-3600 64GB
- NVMe Gen4x4 7400MB/s, 6500MB/s 2TB
- 650W 電源ユニット
- AK400 CPU用クーラー
microSDに入れる準備 (.bifファイル)不要
- ここは不要なので飛ばしてください。 Vitisでは『Generate bif』でbifを生成します。 特に2023.1では生成されたbifの記述が変更されています。
- 参考にしていたサイトではbifの作成が必要となっていましたが、2023.1では以下の作成したbifではビルドできませんでした。 しかし記述例として残しておきます。
- <PETA_PROJ_DIR>/images/linux下に、Vitisでプロジェクトビルド時用に、linux.bifファイルを作ります。 Vitisは、この.bifファイルを元にBOOT.BINを生成します。
- linx.bifには、以下を記述します。<PETA_PROJ_DIR>は、置き換えて下さい。
- 私もよく分っていませんが、.bifファイルでブートに呼び出す順番を記載しておくそうです。
- .bit(VivadoでGenerate Streamで生成下ファイル)を探して記述する。 相対パスでも絶対パスでもOKです。 私は、Vivadoプロジェクトディレクトリで『sudo find -name *.bit』を実行して見つけました。 Vivadoの『Export Project』で生成した『design_ultra96v2_wrapper.xsa』と同じファイル名が付いています。
- 見つけた『~/ultra96/vivado/project_3/project_3.runs/impl_1/design_ultra96v2_wrapper.bit』を、相対指定で『../../../project_3.runs/impl_1/design_ultra96v2wrapper.bit』で記述しました。
the_ROM_image: { [bootloader, destination_cpu=a53-0] ./zynqmp_fsbl.elf [destination_cpu=pmu] ./pmufw.elf [destination_device=pl] ../../../project_3.runs/impl_1/design_ultra96v2_wrapper.bit [destination_cpu=a53-0, exception_level=el-3, trustzone] ./bl31.elf [destination_cpu=a53-0] ./system.dtb [destination_cpu=a53-0, exception_level=el-2] ./u-boot.elf }
2023.1 Generated bif
<>は相対アドレスを示すみたい。 最初の行が追加されているのと、記述が異なる。
/* linux */ the_ROM_image: { [fsbl_config] a53_x64 [bootloader] <fsbl.elf> [pmufw_image] <pmufw.elf> [destination_device=pl] <bitstream> [destination_cpu=a53-0, exception_level=el-3, trustzone] <atf,bl31.elf> [load=0x00100000] <dtb,system.dtb> [destination_cpu=a53-0, exception_level=el-2] <uboot,u-boot.elf> }
コメント