부트로더(26)
-
U-Boot 포팅 (5. 디바이스 트리(DTS) 및 환경 변수 설정 / U-Boot 환경 변수 설정)
U-Boot 환경 변수 설정U-Boot 환경 변수(environment variables)는 부팅 과정에서 시스템 설정을 저장하고 관리하는 중요한 요소입니다.환경 변수는 부트 커맨드, 저장 장치, 네트워크 설정 등 다양한 시스템 정보를 포함하며, 저장 위치와 수정 방법을 이해하는 것이 중요합니다.이 문서에서는 환경 변수의 저장 방식, 수정 방법, fw_printenv 및 fw_setenv 명령어 사용법, u-boot.env 파일 생성 및 업데이트 방법을 설명합니다.1. 환경 변수 저장 위치🔹 환경 변수란?U-Boot 환경 변수는 부팅 과정에서 사용되는 설정 값을 저장하며, 주요 정보는 다음과 같습니다.✅ 부트 커맨드 (bootcmd)✅ 커널 명령어 인자 (bootargs)✅ 네트워크 설정 (ipaddr..
2025.02.26 -
U-Boot 포팅 (5. 디바이스 트리(DTS) 및 환경 변수 설정 / 디바이스 트리(Device Tree)란?)
디바이스 트리(Device Tree)란?디바이스 트리(Device Tree)는 임베디드 시스템에서 하드웨어 정보를 커널과 부트로더가 이해할 수 있도록 제공하는 데이터 구조입니다.기존의 보드별 하드웨어 정보를 커널 코드에 직접 작성하는 방식 대신, 독립적인 데이터 구조(DTS/DTB)로 관리하여 유지보수성과 확장성을 향상시킵니다.1. 디바이스 트리의 개념과 역할🔹 디바이스 트리는 무엇인가?하드웨어 정보(RAM, CPU, 저장 장치, GPIO, I2C, SPI 등)를 커널과 부트로더가 이해할 수 있도록 정의한 데이터 구조입니다.소프트웨어(커널, 부트로더)가 특정 보드의 하드웨어 정보를 코드 없이 동적으로 읽어올 수 있도록 제공합니다.DTS (Device Tree Source) 파일로 작성되며, 컴파일되어 ..
2025.02.26 -
U-Boot 포팅 (4. U-Boot 포팅 개념 및 주요 수정 포인트 / 새로운 보드 추가하기)
새로운 보드 추가하기 (U-Boot 포팅 과정)새로운 보드를 지원하기 위해서는 보드의 하드웨어를 정의하고, U-Boot가 해당 보드를 인식할 수 있도록 설정하는 과정이 필요합니다.이 문서에서는 새로운 보드를 추가하는 단계별 방법을 설명합니다.1. 새로운 보드 추가를 위한 필수 작업✅ 보드 설정 파일 (defconfig) 추가✅ 보드 디렉토리 생성 및 초기화 코드 작성✅ Makefile 및 Kconfig 수정하여 보드를 U-Boot 빌드 시스템에 등록✅ 디바이스 트리(DTS) 작성 및 하드웨어 설정 적용2. configs/ 디렉토리에 새로운 defconfig 생성각 보드는 고유한 defconfig 파일을 가지고 있으며, configs/ 디렉토리에 저장됩니다.defconfig 파일에는 RAM 크기, 환경 변..
2025.02.26 -
U-Boot 포팅 (4. U-Boot 포팅 개념 및 주요 수정 포인트 / U-Boot 디렉토리 구조 및 주요 파일)
U-Boot 디렉토리 구조 및 주요 파일U-Boot 소스 코드는 CPU 아키텍처, 보드 설정, 디바이스 드라이버, 공통 코드 등으로 구성되어 있습니다.새로운 보드를 추가하거나 U-Boot를 수정할 때는 해당 디렉토리와 주요 파일의 역할을 이해하는 것이 중요합니다.이 문서에서는 U-Boot의 디렉토리 구조와 각 주요 파일의 역할을 설명합니다.1. U-Boot 디렉토리 구조 개요📌 U-Boot 소스 코드 디렉토리 구조u-boot/├── arch/ # CPU 및 아키텍처별 코드│ ├── arm/│ ├── x86/│ ├── riscv/│ ├── mips/├── board/ # 특정 보드별 코드│ ├── raspberrypi/│ ├── beaglebon..
2025.02.26 -
U-Boot 포팅 (4. U-Boot 포팅 개념 및 주요 수정 포인트 / 포팅 개요)
포팅 개요U-Boot는 다양한 임베디드 보드에서 동작할 수 있도록 설계된 오픈소스 부트로더입니다.하지만, 새롭게 개발된 보드나 기존에 지원되지 않는 하드웨어에서는 U-Boot를 직접 포팅해야 합니다.이 문서에서는 새 보드를 위한 U-Boot 포팅이 필요한 이유와 기존 보드 설정을 참고하여 포팅하는 방법을 설명합니다.1. 새 보드를 위한 U-Boot 포팅이 필요한 이유🔹 왜 U-Boot 포팅이 필요할까?U-Boot는 다양한 임베디드 하드웨어를 지원하지만, 모든 보드를 기본적으로 지원하는 것은 아닙니다.새로운 보드에서 U-Boot를 실행하려면, 보드의 하드웨어 특성에 맞게 U-Boot를 수정하고 설정을 추가해야 합니다.🔹 U-Boot 포팅이 필요한 주요 이유 이유 설명새로운 SoC 사용기존에 지원되지 ..
2025.02.26 -
U-Boot 포팅 (3. U-Boot 빌드 및 실행 / 실제 보드에서 U-Boot 실행하기)
실제 보드에서 U-Boot 실행하기QEMU에서 U-Boot를 실행하는 것뿐만 아니라, 실제 임베디드 보드에서도 U-Boot를 실행하려면 SD 카드나 eMMC에 U-Boot를 굽고, 시리얼(UART) 콘솔을 통해 디버깅하는 과정이 필요합니다.이 문서에서는 SD 카드에 U-Boot를 굽는 방법과 시리얼 콘솔을 이용하여 부팅 로그를 확인하는 방법을 다룹니다.1. 부트로더를 SD 카드에 굽기 (dd 명령어 사용)U-Boot는 SD 카드, eMMC, SPI Flash 등 다양한 저장 장치에 설치할 수 있지만, 가장 일반적인 방법은 SD 카드에 굽고 보드를 부팅하는 방식입니다.🔹 1) SD 카드 삽입 및 디바이스 확인SD 카드를 삽입한 후, 디바이스 경로를 확인해야 합니다.lsblk📌 출력 예제NAME MA..
2025.02.26