U-Boot 포팅 (2. 개발 환경 구축 / 타겟 보드 선택)

2025. 2. 26. 12:25프로그래밍/시스템

타겟 보드 선택

U-Boot는 다양한 임베디드 보드와 SoC(System on Chip)를 지원합니다.
따라서, U-Boot를 포팅할 때 타겟 보드를 선택하고, 해당 보드의 설정을 확인하는 과정이 필요합니다.

이 과정에서는 U-Boot가 지원하는 보드를 확인하는 방법과 특정 보드의 디바이스 트리(DTS) 파일을 분석하는 방법을 설명합니다.


1. 지원되는 보드 확인 (boards.cfg 활용)

🔹 boards.cfg 파일이란?

  • boards.cfg 파일은 U-Boot가 지원하는 보드 목록과 해당 설정 정보를 포함한 파일입니다.
  • 이 파일을 확인하면 보드의 기본 설정(defconfig), CPU 아키텍처, SoC 정보를 알 수 있습니다.
  • 경로:
    u-boot/boards.cfg
    

🔹 지원되는 보드 목록 확인

📌 boards.cfg 파일을 직접 확인하려면:

cat boards.cfg | less

📌 특정 보드를 검색하려면 (grep 사용):

grep "rpi" boards.cfg   # Raspberry Pi 관련 보드 검색
grep "imx" boards.cfg   # i.MX 시리즈 보드 검색

📌 출력 예제 (Raspberry Pi 4)

rpi_arm64    aarch64  armv8      rpi    -    -    rpi_4_defconfig
  • rpi_arm64 → 보드 이름
  • aarch64 → CPU 아키텍처
  • armv8 → ARMv8 아키텍처 기반
  • rpi_4_defconfig → 기본 설정 파일

2. 특정 보드용 디바이스 트리(DTS) 파일 분석

🔹 디바이스 트리(DTS)란?

  • 디바이스 트리(DTS, Device Tree Source)는 하드웨어 정보를 커널과 U-Boot가 이해할 수 있도록 정의하는 파일입니다.
  • 보드의 CPU, RAM, 저장 장치, 네트워크, GPIO, 클럭 등을 설정하는 역할을 합니다.

🔹 DTS 파일의 기본 경로

디바이스 트리 파일은 arch/<ARCH>/dts/ 경로에 위치합니다.

📌 ARM 64-bit (AArch64)

ls arch/arm/dts/

📌 RISC-V

ls arch/riscv/dts/

🔹 특정 보드의 DTS 파일 확인 방법

1) 특정 보드의 디바이스 트리 파일 찾기

find arch/arm/dts/ -name "*rpi*.dts"

예제 출력 (Raspberry Pi 관련 파일):

arch/arm/dts/bcm2711-rpi-4-b.dts
arch/arm/dts/bcm2837-rpi-3-b.dts

2) DTS 파일 내용 분석

📌 DTS 파일을 직접 열어 확인:

cat arch/arm/dts/bcm2711-rpi-4-b.dts

📌 DTS 파일에서 특정 키워드 검색:

grep -A5 "memory" arch/arm/dts/bcm2711-rpi-4-b.dts

예제 출력:

memory {
    device_type = "memory";
    reg = <0x0 0x3b000000>;
};
  • device_type = "memory"; → 메모리 장치임을 나타냄
  • reg = <0x0 0x3b000000>; → 메모리 시작 주소와 크기(0x3b000000 = 약 944MB)

🔹 DTS 파일을 수정해야 하는 경우

📌 GPIO 핀 추가:

&gpio {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_gpio>;
};

📌 부팅 커맨드라인 추가:

chosen {
    bootargs = "console=ttyS0,115200 root=/dev/mmcblk0p2 rw";
};

📌 클럭 설정:

&clk {
    clock-frequency = <24000000>;  // 24MHz 설정
};

📌 저장 후, dtc 명령어로 DTS → DTB 변환:

dtc -I dts -O dtb -o bcm2711-rpi-4-b.dtb bcm2711-rpi-4-b.dts

📌 정리

U-Boot에서 지원하는 보드를 확인하려면 boards.cfg 파일을 활용
보드의 기본 설정 파일(defconfig)을 찾고 적용해야 함
특정 보드의 디바이스 트리(DTS) 파일을 분석하여 하드웨어 설정을 확인 가능
DTS 파일에서 메모리, GPIO, 클럭, 부팅 옵션 등을 수정 가능