OS: Ubuntu 18.04.01
PYNQ IMAGE: v2.6
BOARD: ZCU-102
Vitis, Vivado: 2020.1
Petalinux: 2020.1
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 이미지를 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
# 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
wget을 하지 못하는 문제가 발생하면, PYNQ/sdbuild/scripts/setup_host.sh 파일을 열어 아래와 같이 수정한다.
<<주석처리한 내용>>
tools 디렉토리 생성
crosstool-ng와 qemu를 wget하는 부분
수정 한 뒤엔 wget을 하려한 주소로 이동해서 필요한 파일을 받아오고, 해당 파일을 아래와 같이sdbuild/tools 폴더에 복사한다. 복사 후에 다시 ./scripts/setup_host.sh 를 실행한다.
먼저 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한다.
아래와 같은 에러가 발생한다.
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 인 경우
빌드가 완료되면 PYNQ/sdbuild/output 폴더에 ZCU102-2.6.0.img 파일이 생성된다.
https://intrepidgeeks.com/tutorial/verify-the-pynq-version-of-xilinx-zcu102-equivalent-to-v26
https://pynq.readthedocs.io/en/latest/pynq_sd_card.html
안녕하세요. 포스트 잘 보고 있습니다. 다름이 아니라 혹시 zcu102 img 파일을 받을 수 있을까요...? 학부생인데 리눅스 환경 구축하는게 너무 어렵습니다 ㅜㅜ