[FPGA] Arty Z7-20에 PetaLinux 올리기 - 다양한 Package 추가하기(4)
지난 포스팅에서는 Petalinux를 이용하여 부팅 가능한 기본 환경구성을 완료하였다.
이번 포스팅에서는 Petalinux에서 사용 가능한 Package(python, gcc, iperf3...)를 추가하는 방법에 대해 알아보겠다.
petalinux-config
지난 게시글에서 petalinux-config 명령을 이용해 H/W description을 가져오고 menuconfig를 변경하는 부분이 있었는데, 특별히 변경할 부분이 없어서 넘어간 부분이 있다.
petalinux sdk는 기본적으로 yocto project를 이용하는데, menuconfig를 이용하여 yocto project에서 제공하는 Opensoruce package를 간단하게 설치 할 수 있도록 구성해 놓은 것이 특징이다.
아래의 명령을 통해 지난번에 넘어갔던 menuconfig를 자세히 관찰해보자.
# petalinux-config -c <Linux OS component to configure>
# rootfs의 설정을 변경하는 경우. 패키지를 추가하는 경우에 해당된다.
petalinux-config -c rootfs
# u-boot의 deconfig를 수정하는 경우
# petalinux-config -c u-boot
# Linux kernel의 defconfig를 수정하는 경우
# petalinux-config -c kernel
python 추가하기
menuconfig를 이용해 아래의 경로로 이동한다.
Petalinux Package Groups->packagegroup-petalinux-python-modules로 이동한다.
기본적인 python interpreter, pip 등과 함께 간단한 package(numpy...)가 함께 설치된다.
gcc(buildessential) 추가하기
menuconfig를 이용해 아래의 경로로 이동한다.
Filesystem Packages-> misc-> packagegroup-core-buildessential
코드를 빌드 할 수 있는 compiler(gcc)와 함께 관련된 유틸들(gdb, cmake...)등이 함께 설치된다.
opencv 추가하기
동일한 방법으로 menuconfig를 이용해 아래의 경로로 이동한다.
Petalinux Package Groups->packagegroup-petalinux-opencv
아래의 opencv package가 설치된다.
│ libopencv-core
│ libopencv-highgui
│ libopencv-imgproc
│ libopencv-objdetect
│ libopencv-ml
│ libopencv-calib3d
│ libopencv-ccalib
iperf3 추가하기
iperf는 ethernet의 benchmark를 위한 Opensource package이다.
해당 package는 menuconfig로 제공되지 않아, yocto project 구성 방법을 이용해 수동으로 추가해줘야한다.
vi project-spec/meta-user/conf/petalinuxbsp.conf
해당 파일의 최하단에 아래의 Line을 추가해준다.
IMAGE_INSTALL:append = " iperf3 "
petalinux-build
원하는 패키지의 추가가 완료되면, menuconfig를 save한 뒤, petalinux를 빌드한다.
# 1. Petalinux 빌드
petalinux-build
# 2. 부팅 이미지 생성
petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga ./images/linux/system.bit --u-boot ./images/linux/u-boot.elf --force
# 3. SD카드용 이미지 생성
petalinux-package --wic --bootfiles "BOOT.BIN image.ub system.dtb boot.scr" --rootfs-file ./images/linux/rootfs.tar.gz
package 확인
SD Card에 image를 write한 뒤 부팅시켜본다.
추가한 패키지들이 정상적으로 install되었다.
Troubleshoot
petalinux-build 명령을 통해 빌드 중 아래와 같은 오류 메세지가 출력되는 경우가 있다.
패키지를 추가하면서 rootfs의 크기 제한을 초과하기 때문이다.
아래의 파일을 수정하여 오류를 피해 갈 수 있다.
vi project-spec/meta-user/conf/petalinuxbsp.conf
파일 최하단에 아래의 2줄을 추가한다.
IMAGE_FSTYPES:remove = "cpio cpio.gz cpio.bz2 cpio.xz cpio.lzma cpio.lz4 cpio.gz.u-boot"
IMAGE_FSTYPES_DEBUGFS:remove = "cpio cpio.gz cpio.bz2 cpio.xz cpio.lzma cpio.lz4 cpio.gz.u-boot"