ZCU102를 위한 PYNQ 이미지 빌드하기

Chulwoo Lee·2022년 5월 26일
0
post-thumbnail
OS: Ubuntu 18.04.01
PYNQ IMAGE: v2.6
BOARD: ZCU-102
Vitis, Vivado: 2020.1
Petalinux: 2020.1

Petalinux Installer

REF: https://www.fpgadeveloper.com/how-to-install-petalinux-2020.1/
petalinux를 설치하기 전에 아래 의존성 패키지를 모두 설치한다.

sudo apt-get -y install iproute2 \
gcc \
g++ \
net-tools \
libncurses5-dev \
zlib1g:i386 \
libssl-dev \
flex \
bison \
libselinux1 \
xterm \
autoconf \
libtool \
texinfo \
zlib1g-dev \
gcc-multilib \
build-essential \
screen \
pax \
gawk \
python3 \
python3-pexpect \
python3-pip \
python3-git \
python3-jinja2 \
xz-utils \
debianutils \
iputils-ping \
libegl1-mesa \
libsdl1.2-dev \
pylint3 \
cpio

Petalinux installer를 Xilinx 사이트로부터 다운받는다.
https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/archive.html

Petalinux를 원하는 디렉토리에 설치한다.

mkdir -p <<원하는 디렉토리>>/petalinux/2020.1
~/Downloads/petalinux-v2020.1-final-installer.run -d <<원하는 디렉토리>>/petalinux/2020.1

zcu104 PYNQ 이미지 v2.6 받기

zcu104 이미지를 prebuild image로 이용하여 zcu102 이미지를 빌드한다. 아래 링크로 v2.6으로 다운받는다.
https://bit.ly/zcu104_v2_6
REF: https://discuss.pynq.io/t/how-to-get-the-2-6-0-version-zcu104-pynq-image/3433

ZCU102 BSP 받기

https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/archive.html

Build PYNQ Image for ZCU102

# pynq
git clone https://github.com/Xilinx/PYNQ.git -b image_v2.6.2 --depth 1
cd PYNQ

# ZCU102 setting
cp -rf ./boards/ZCU104 ./boards/ZCU102
rm -rf ./boards/ZCU102/petalinux_bsp/
mv ./boards/ZCU102/ZCU104.spec ./boards/ZCU102/ZCU102.spec
sed -i -e "s/104/102/g" ./boards/ZCU102/ZCU102.spec

# copy files
cp <<위에서 받은 zcu102 bsp파일>> ./boards/ZCU102/
mkdir ./sdbuild/prebuilt
cp <<위에서 받은 zcu104 v2.6 이미지>> ./sdbuild/prebuilt

# install qemu,crosstool-ng
cd ./sdbuild/
./scripts/setup_host.sh

# path
PATH=/opt/qemu/bin:/opt/crosstool-ng/bin:$PATH
sudo dpkg-reconfigure dash # YES, NO가 나오는데, NO를 선택해야 자동으로 bash를 sh대신 사용함!!
source /<<petalinux 설치 경로>>/Petalinux/2020.1/settings.sh
source /<<vitis 설치 경로>>/Vitis/2020.1/settings64.sh
petalinux-util --webtalk off

# build
sudo echo
make BOARDS=ZCU102 PREBUILT=./prebuilt/zcu104_v2.6.0.img

ERRORS

1) ./scripts/setup_host.sh 실행 후 wget에서 무한 trying

wget을 하지 못하는 문제가 발생하면, PYNQ/sdbuild/scripts/setup_host.sh 파일을 열어 아래와 같이 수정한다.
<<주석처리한 내용>>
tools 디렉토리 생성
crosstool-ng와 qemu를 wget하는 부분

수정 한 뒤엔 wget을 하려한 주소로 이동해서 필요한 파일을 받아오고, 해당 파일을 아래와 같이sdbuild/tools 폴더에 복사한다. 복사 후에 다시 ./scripts/setup_host.sh 를 실행한다.

2) sstate에서 package 불러오지 못함

먼저 petalinux 2020.1 Archive로 이동하여 아래 자료를 다운받는다.
https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/archive.html

다운받은 aarch64 sstate-cache의 압축을 해제하고, 압축내용 전부를 PYNQ/sdbuild/build/ZCU102/petalinux_project/build/sstate-cache 경로에 복사한다.

그 후 PYNQ/sdbuild/build/ZCU102/petalinux_project 디렉토리에서 petalinux-config를 입력한다.

petalinux-config

Yocto Settings -> Local sstate feeds settings 로 이동하여 아래와 같이 aarch64 sstate-cache 디렉토리로 지정한 후 SAVE 해준다.

Yocto Settings 에선 아래와 같이 Enable Network sstate feeds 를 해제하고 Enable BB NO NETWORK에 체크한 후 SAVE 해준다. 그 후 make 한다.

이 부분은 network로부터 받아올 sstate package를 직접 다운받아 저장하게끔 하는건데, 만약 이렇게 해도 안될 경우 다시 Enable BB NO NETWORK를 해제하여 make한다.

3) Wheels for pynq build error

아래와 같은 에러가 발생한다.

Building wheels for collected packages: pynq
 Building wheel for pynq (setup.py) ... error

해결하기 위해 PYNQ/setup.py 를 열어 Requirement라고 적혀있는 부분의 패키지를 모두 설치했다. (이 방법이 올바른 해결법인진 모름. 어쨌든 해결됨.)

본인의 python 버전이 3.5.2 보다 낮은지 높은지 판단하여 pandas 버전을 알맞게 설치해준다.

pip install setuptools==24.2.0
pip install cffi
pip install numpy
pip install pandas==0.24.2 ### python <= 3.5.2 인 경우

After build

빌드가 완료되면 PYNQ/sdbuild/output 폴더에 ZCU102-2.6.0.img 파일이 생성된다.

REF:

https://intrepidgeeks.com/tutorial/verify-the-pynq-version-of-xilinx-zcu102-equivalent-to-v26
https://pynq.readthedocs.io/en/latest/pynq_sd_card.html

profile
Student.

2개의 댓글

comment-user-thumbnail
2022년 6월 24일

안녕하세요. 포스트 잘 보고 있습니다. 다름이 아니라 혹시 zcu102 img 파일을 받을 수 있을까요...? 학부생인데 리눅스 환경 구축하는게 너무 어렵습니다 ㅜㅜ

1개의 답글