petalinux

petalinux

petalinuxやってみた

References

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”
  • 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)
  • 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

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
        (ここはチェックを外しておく)
    • 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)

設定してつくった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に保存されるはず
  • パッケージして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 ~~~

コメント

タイトルとURLをコピーしました