petalinuxやってみた
References
- Zynq UltraScale+ MPSoC VCU TRD 2020.2
- https://github.com/Xilinx/meta-xilinx/tree/master/meta-xilinx-bsp
PetaLinux Toolsってなに?
- Custom BSP(デバドラとか)がつくれる
- Custom Linux(というか組み込みLinux?)がつくれる
- ↑これをパッケージできる
インストールしてみる
- UG1144 – PetaLinux Tools Documentation: Reference Guide (v2020.2)
- フォルダをつくってインストールする(他のバージョンと共存できる)
- % cd
- % mkdir -p petalinux/2020.2
- % cd petalinux/2020.2
- % petalinux-v2020.2-final-installer.run
- PetaLinuxを動くようにするおまじない
- % source ~/petalinux/2020.2/settings.sh
- フォルダをつくってインストールする(他のバージョンと共存できる)
TFTP サーバの設定(imgをSDに書かずに、LANで送れるようになる)
- PCにtftpd-hpaを インストールする
- % sudo apt-get install tftpd-hpa
- % sudo service tftpd-hpa status
- TFTPサーバの設定をする
- % sudo cp /etc/default/tftpd-hpa /etc/default/tftpd-hpa.ORIGINAL
- % sudo gedit /etc/default/tftpd-hpa
- # /etc/default/tftpd-hpa
TFTP_USERNAME=”tftp”
TFTP_DIRECTORY=”/srv/tftpboot”
TFTP_ADDRESS=”:69”
TFTP_OPTIONS=”–secure –create”
- # /etc/default/tftpd-hpa
- TFTPで使うフォルダをつくっておく
- % sudo mkdir -p /srv/tftpboot
- % sudo chown -R tftp /srv/tftpboot
- % sudo chmod 777 -R /srv/tftpboot
- TFTPサーバを再起動する
- % sudo service tftpd-hpa restart
Petalinux projectをつくる(zcu106_trdをつかう)
- % export TRD_HOME=~/tmp/vcu_trd/rdf0428-zcu106-vcu-trd-2020.2
- % cd $TRD_HOME/apu/vcu_petalinux_bsp
- % petalinux-create -t project -n lab -s xilinx-vcu-zcu106-v2020.1-final.bsp
petalinux-configする
- % cd lab
- % petalinux-config –get-hw-description=$TRD_HOME/pl/prebuild/zcu106_trd/
- ビルドしたイメージをtftpサーバフォルダにコピーする設定をする
- Image Packaging Configuration
- –> [*] Copy final images to tftpboot (/srv/tftpboot) tftpboot directory (NEW)
- Image Packaging Configuration
- U-bootの設定をSDに書き込めるようにしておく
- -*- Subsystem AUTO Hardware Settings
- –> [*] Advanced bootable image storage settings
- –> u-boot env partition settings
- –> image storage media (primary flash)
- –>(X) primary sd
- –> image storage media (primary flash)
- –> u-boot env partition settings
- –> [*] Advanced bootable image storage settings
- -*- Subsystem AUTO Hardware Settings
U-Bootの設定
- % petalinux-config -c u-boot
- SPL / TPL
- –> [*] Support an environment [*] Support save environment
- Command line interface
- –> [*] Network commands
- –> [*] serverip variable takes precedent over DHCP server IP.
- –> [ ] Enable UBIFS – Unsorted block images filesystem commands
(ここはチェックを外しておく)
- –> [*] Network commands
- Environment
- –> [ ] Environment it not stored (ここもチェックを外しておく)
- [*] Environment is in a FAT filesystem
- (mmc) Name of the block device for the environment (NEW)
- (0:auto) Device and partition for where to store the environment
- (uboot.env) Name of the FAT file to use for the environment (NEW)
- (0x8000) Environment Size
- [ ] SPL Environment is not stored
- [*] SPL Environment is in a FAT filesystem (NEW)
- SPL / TPL
設定してつくったU-boot, Device Tree, Linuxカーネルが消えないように
- % gedit project-spec/meta-user/conf/petalinuxbsp.conf
- # Keep U-boot, Device Tree and Kernel build artifacts
- RM_WORK_EXCLUDE += ” u-boot-xlnx”
- RM_WORK_EXCLUDE += ” device-tree”
- RM_WORK_EXCLUDE += ” linux-xlnx”
petalinux-buildとpetalinux-package
- U-boot, Device Tree, Linux Kernelをビルドする
- % time petalinux-build
- うまくいくと、/srv/tftpbootに保存されるはず
- % time petalinux-build
- パッケージしてSDでも起動できるようにしておく
- % petalinux-package –boot –format BIN –fsbl images/linux/zynqmp_fsbl.elf –u-boot images/linux/u-boot.elf –pmufw images/linux/pmufw.elf –fpga images/linux/system.bit –-force
- % cd images/linux
- % cp BOOT.BIN boot.scr image.ub system.dtb /media/<user>/<SD CARD>
TFTPブートできるように、U-Bootを設定する
- U-Boot の設定をして、SDにセーブする(これで次回から電源ONでTFTPブートできる)
- ZCU106の電源を入れて、U-BootのところでEnterを押して止める
- serverip(TFTPするPCのアドレス)を設定する
- ZynqMP> setenv serverip <Host pc ip_addr>
- もとのブートコマンドを一応保存しておく
- ZynqMP> setenv bootcmd_old ${bootcmd}
- dhcp:ボードのIPアドレスを取得する
- pxe get:PXEブート設定をPCからダウンロードする
- pxe boot:PCからブートイメージを取ってきて実行する
- ZynqMP> setenv bootcmd “dhcp;pxe get;pxe boot;”
- dhcpのautoloadをoffにしておく
- ZynqMP> setenv autoload off
- fdt_high:device treeをlower DDRのupperに設定する
kernel_addr_r:カーネルロードのアドレスをDDRのbaseに変更する
こうしておくとDDRの連続領域を大きく取れるようになる
VCUのvideoバッファで使うCMAに使える- ZynqMP> setenv fdt_high
- ZynqMP> setenv kernel_addr_r 0x0
- 設定した変数をFATに書き込んで、書き込めたことを確認する
- ZynqMP> saveenv
- ZynqMP> fatls mmc 0:1
- 32768 uboot.env
- これで電源を入れ直すとTFTPでブートするはず
RootFSにappをいれておく方法
- % cd $TRD_HOME/apu/vcu_petalinux_bsp/lab/project-spec/meta-user/
- % cd recipes-apps/lab-api-examples
- % gedit lab-api-examples.bb
- install -m 0755 ~~~
コメント