Published on

PetaLinux 포팅 기록

Authors
  • avatar
    Name
    JaeHyeok CHOI
    Twitter
    none

ALINX PetaLinux

PL사이드에서 추출한 xsa 파일을 기반으로 PetaLinux를 사용하여 임베디드 Linux 시스템을 만들어 보자.

PetaLinux는 vivado에서 만들어진 하드웨어 시스템을 기반으로 PetaLinux가 u-boot, 커널, 파일 시스템 등을 구성할 수 있다.

우선 peta_prj 디렉토리를 하나 만들어준 후에,

아래 명령들을 실행한다.

source /opt/pkg/petalinux/settings.sh

petalinux-create -t project -n ax_peta --template zynq

cd ~/peta_prj/ax_peta

petalinux-config --get-hw-description ../hardware/

마지막 명령을 실행하게 되면 config 창이 하나 뜨게 되는데

여기서 앞으로 xilinx 에서 만들어둔 petalinux 커널 소스를 로컬로 빌드하여 사용할 예정이다.

기본적으로 petalinux는 커널 소스를 빌드시에 github에서 다운로드해서 가져온다고 한다. 매 빌드시 마다 다운로드를 하게 된다면 많은 자원을 낭비할 테니 미리 다운로드 받아서 사용하는 것이 좋겠다.

설정 방법

우선 커널 소스 링크 - 깃허브 이 링크에서 커널 소스를 직접 다운로드 한 후에 원하는 디렉토리에 압축 해제해 준다.

Linux Components Selection -> linux-kernel (linux-xlnx) -> ext-local-src 선택 (enter 혹은 space바) -> External linux-kernel local source settings -> 압축 해제한 커널 소스의 디렉토리 입력 -> 저장 후 Exit

이러면 우선 설정은 완료되었다.

Linux 커널 구성

petalinux-config -c kernel

에러 기록

위 명령을 실행하니 다음과 같은 에러가 떴다.

ERROR: m4-native-1.4.18-r0 do_compile: oe_runmake failed
ERROR: m4-native-1.4.18-r0 do_compile: Execution of '..../peta_prj/ax_peta/build/tmp/work/x86_64-linux/m4-native/1.4.18-r0/temp/run.do_compile.27427' failed with exit code 1:

근본적인 원인은 지원하는 OS를 설치하지 않아서 였다. petalinux 2020.1 은 Ubuntu 18.04 버젼 까지만 지원한다. 내가 VM에 설치한 2022.04 버젼이랑 한참 차이나는 버젼이었다.

사실 UG1144 의 가이드 내용만 따른 다면 어떤 버전의 내용을 사용하든지 크게 상관이 없다. 다만, 이미 환경이 세팅되어 있는 VM Ubuntu 22.04 버전에 맞도록 하기 위해서 petalinux 2023.1 버전을 사용하여 리눅스 빌드를 진행해야 한다.

처음부터 다시 세팅을 해준 후에 아래 버젼을 진행한다.

  1. 이더넷 PHY 칩 드라이버는 기본적으로 켜져 있지 않으므로 장치 드라이버 옵션에서 드라이버를 구성해야 한다.
  1. Device Driver > Network device support > PHY Device support and infrastructure 에 들어간 후 Microchip PHYs 활성화 (* 표시 나올 때까지 space바)

루트 파일 시스템 구성

petalinux-config -c rootfs

참고로 yocto 와 petalinux 2022.1 버젼 이후로 보안 문제에 의하여 기본적으로 root 로그인을 막아두었다. 따라서 root 로그인을 시키기 위해서는 아래의 화면에서 설정을 해주어야 한다.

rootfs 설정 > Image Features > debug-tweaks 설정

컴파일

  1. u-boot, kernel, rootfs, device tree를 구성한다.

petalinux-build

BOOT 파일 생성

petalinux-package --boot --u-boot --fsbl --fpga --force

부팅 완료!

Serial Debugger, Ethernet, HDMI를 포함한 빌드와 패키징이 완료되었고, 이제 보드에 올려서 테스트해보자.