이 가이드는 NXP GoldBox (S32G-VNP-RDB2) 보드를 대상으로, Yocto 소스 코드를 빌드하여 TSN 테스트에 필요한 모든 도구가 포함된 SD 카드 이미지를 만드는 전 과정을 다룹니다.
빌드를 시작하기 전, NXP 공식 홈페이지에서 아래 두 가지 파일을 미리 다운로드하여 PC의 ‘다운로드’ 폴더 등에 압축을 풀어둡니다.
S32G2_LinuxBSP_44.0_binaries_updated_D250603.zip
또는 유사한 이름의 파일. 이 파일에서 DDR, SJA1110 펌웨어를 얻습니다.PFE-FW_S32G_1.11.0.zip
또는 유사한 이름의 파일. 이 파일에서 PFE 펌웨어와 라이선스 파일을 얻습니다.WSL 및 Ubuntu 20.04 설치:
wsl --install -d Ubuntu-20.04
필수 패키지 전체 설치:
host-prepare.sh
스크립트를 사용하는 대신, 오류를 피하기 위해 직접 설치합니다.)
sudo apt-get update
sudo apt-get install -y gawk wget git diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint xterm python3-subunit zstd libzstd-dev liblz4-tool libc-dev-bin
Repo 유틸리티 설치:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=${PATH}:~/bin
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
작업 디렉터리 생성 및 이동:
mkdir ~/fsl-auto-yocto-bsp
cd ~/fsl-auto-yocto-bsp
Yocto 프로젝트 초기화 및 동기화:
repo init -u https://github.com/nxp-auto-linux/auto_yocto_bsp -b release/bsp44.0 -m default.xml
repo sync
빌드 오류를 원천적으로 방지하기 위해, 모든 펌웨어 파일을 올바른 위치에 배치하고 레시피 파일의 체크섬을 명령어로 자동 수정합니다.
펌웨어 폴더 구조 생성:
# 대표 폴더와 보드별 하위 폴더를 한 번에 생성
mkdir -p ~/s32g_firmware/s32g274ardb2
펌웨어 파일 복사:
.../s32g274ardb2
하위 폴더로 복사.../s32g_firmware
상위 폴더로 복사~/Downloads/
부분은 실제 파일이 있는 경로로 맞춰 수정해야 합니다.
# DDR, SJA1110 펌웨어 복사
cp ~/Downloads/s32g2_linuxbsp_44.0_binaries/s32g274ardb2/*.bin ~/s32g_firmware/s32g274ardb2/
# PFE 펌웨어 복사
cp ~/Downloads/PFE-FW_S32G_1.11.0/s32g_pfe_*.fw ~/s32g_firmware/
# PFE 라이선스 파일을 두 가지 이름으로 준비
cp ~/Downloads/PFE-FW_S32G_1.11.0/license.rtf ~/s32g_firmware/license.rtf
cp ~/s32g_firmware/license.rtf ~/s32g_firmware/s32g274ardb2/NXP-EULA
레시피 체크섬 자동 수정:
sed
명령어를 사용하여 두 펌웨어 레시피의 라이선스 체크섬을 올바른 값으로 미리 변경합니다.
# ddr-firmware 레시피 수정
sed -i 's/a3cc8e4c7b0cbd2f26d689a255d1a98d/bafc2fc12f6ba76334b95f6ea4844b01/g' ~/fsl-auto-yocto-bsp/sources/meta-alb/meta-alb-bsp/recipes-bsp/ddr-firmware/ddr-firmware.bb
# pfe-firmware 레시피 수정
sed -i 's/LIC_FILES_CHKSUM = "file:\/\/license.rtf;md5=.*"/LIC_FILES_CHKSUM = "file:\/\/license.rtf;md5=bafc2fc12f6ba76334b95f6ea4844b01"/' ~/fsl-auto-yocto-bsp/sources/meta-alb/meta-alb-bsp/recipes-kernel/pfe/pfe-firmware_1.0.0.bb
빌드 디렉터리 생성:
cd ~/fsl-auto-yocto-bsp
source nxp-setup-alb.sh -m s32g274ardb2
local.conf
파일 최종 설정:
nano conf/local.conf
명령어로 파일을 열고, 파일 맨 아래에 아래 내용 전체를 복사하여 붙여넣습니다.
# --- S32G GoldBox Final Configuration ---
# 1. 펌웨어 대표 폴더 경로 설정
NXP_FIRMWARE_LOCAL_DIR = "/home/hwkims/s32g_firmware"
# 2. PFE 기능 활성화
DISTRO_FEATURES:append = " pfe"
# 3. SJA1110 스위치 펌웨어 전체 경로 지정
SJA1110_SWITCH_FW = "${NXP_FIRMWARE_LOCAL_DIR}/s32g274ardb2/sja1110_switch.bin"
SJA1110_UC_FW = "${NXP_FIRMWARE_LOCAL_DIR}/s32g274ardb2/sja1110_uc.bin"
# 4. 이미지에 네트워킹/디버깅/개발 도구 추가
IMAGE_INSTALL:append = " iproute2 iperf3 ethtool tcpdump bridge-utils"
EXTRA_IMAGE_FEATURES += "tools-sdk"
수정 후 저장(Ctrl+X
-> Y
-> Enter
)합니다.
빌드 실행: 이제 모든 준비가 끝났습니다. 빌드를 시작합니다.
bitbake fsl-image-auto
SD 카드 제작:
~/fsl-auto-yocto-bsp/build_s32g274ardb2/tmp/deploy/images/s32g274ardb2/
경로에 생성된 fsl-image-auto-s32g274ardb2.sdcard
파일을 dd
명령어로 SD 카드에 기록합니다.보드 부팅 및 802.1Qav 테스트:
root
로 로그인하여 tc
명령어를 사용해 802.1Qav 테스트를 진행합니다.
# 예시: end0 인터페이스에 MQPRIO 및 CBS 설정
tc qdisc add dev end0 root handle 1: mqprio ...
tc qdisc replace dev end0 parent 1:2 cbs ...
이 가이드를 따르면 다른 컴퓨터에서도 오류 없이 한 번에 빌드 및 테스트 환경을 구축하실 수 있을 것입니다.