DTB(9)
-
ARM Core - 5. ARM 기반의 OS와 임베디드 시스템 개발 (1. ARM에서 리눅스 커널 실행)
1. ARM에서 리눅스 커널 실행ARM 아키텍처는 임베디드 시스템, 모바일, 서버 등 다양한 환경에서 리눅스 커널을 실행하는 데 널리 활용된다.특히 Device Tree를 통해 하드웨어 구성을 동적으로 설정하며, 안드로이드에서는 JIT/AOT 컴파일을 활용하여 성능을 최적화한다.1. Device Tree 구조 분석1) Device Tree란?ARM 기반 시스템은 x86과 달리 하드웨어 구성이 정형화되어 있지 않기 때문에,커널이 실행될 때 하드웨어 정보를 직접 인식하지 못한다.이를 해결하기 위해 **Device Tree(DT, 기기 트리)**가 도입되었으며,하드웨어 구성을 별도의 데이터 구조로 저장하고 커널이 이를 참고하여 초기화하는 방식이다.2) Device Tree의 필요성기존 방식: 커널 내에서 보드..
2025.03.07 -
커널 포팅 (3. 커널 포팅 기본 실습 / 3.2 새로운 SoC 지원을 위한 포팅)
3.2 새로운 SoC 지원을 위한 포팅리눅스 커널은 다양한 SoC(System on Chip)를 지원하도록 설계되어 있습니다. 하지만 새로운 SoC를 지원하려면 SoC에 맞는 코드 추가 및 설정 변경이 필요합니다.이 과정에서는 SoC의 초기화 코드, 디바이스 트리(DTS), Kconfig 및 Makefile 수정 방법을 다룹니다.🔹 arch/arm/mach-* 디렉토리 분석 (SoC 지원 구조 이해)리눅스 커널에서 ARM 기반 SoC를 지원하는 코드는 arch/arm/mach-* 디렉토리에 위치합니다.✅ SoC 관련 디렉토리 구조 (arch/arm/mach-*)linux/arch/arm/├── boot/│ ├── dts/ # 디바이스 트리 (Device Tree)│ ├── compr..
2025.03.06 -
커널 포팅 (3. 커널 포팅 기본 실습 / 3.1 타겟 보드 선택 및 디바이스 트리 설정)
3.1 타겟 보드 선택 및 디바이스 트리 설정커널 포팅을 진행할 때, 타겟 보드(Target Board)에 맞는 설정을 적용하는 것이 필수적입니다.ARM 및 RISC-V 기반의 임베디드 시스템에서는 디바이스 트리(Device Tree, DT) 를 사용하여 CPU, 메모리, I/O 장치, 버스 등의 하드웨어 정보를 커널에 제공합니다.🔹 디바이스 트리(Device Tree)의 개념과 역할디바이스 트리(Device Tree, DT) 는 커널이 하드웨어 정보를 동적으로 읽을 수 있도록 하는 데이터 구조입니다.이전에는 각 보드마다 하드웨어 정보를 하드코딩했지만,디바이스 트리를 사용하면 커널 코드를 수정하지 않고도 하드웨어 구성을 변경할 수 있음.✅ 디바이스 트리의 역할CPU, RAM, 클럭 정보 제공버스 및 주..
2025.03.06 -
U-Boot 포팅 (실습 프로젝트: 새로운 보드에 U-Boot 포팅 / U-Boot 포팅 프로젝트 개요)
U-Boot 포팅 프로젝트 개요이 프로젝트에서는 특정 보드를 선택하여 U-Boot를 수정, 빌드 및 부팅까지 진행하는 과정을 다룹니다.예제 보드로 Raspberry Pi, BeagleBone, ODROID 등을 사용할 수 있으며, U-Boot 소스코드를 수정하고 디바이스 트리를 조정하여 부팅 환경을 설정하는 것이 목표입니다.1. 예제 보드 선택U-Boot를 포팅하기 위해 지원되는 보드 중 하나를 선택해야 합니다. 보드 CPU 부트 옵션U-Boot 지원 여부Raspberry Pi 4Broadcom BCM2711 (ARM Cortex-A72)SD 카드지원BeagleBone BlackAM3358 (ARM Cortex-A8)eMMC, SD 카드지원ODROID-XU4Exynos 5422 (ARM Cortex-A1..
2025.03.05 -
U-Boot 포팅 (6. U-Boot 기능 확장 및 디바이스 드라이버 추가 / 새로운 디바이스 추가하기 (UART, I2C, SPI, GPIO 설정))
새로운 디바이스 추가하기 (UART, I2C, SPI, GPIO 설정)임베디드 시스템에서 U-Boot는 각종 디바이스(UART, I2C, SPI, GPIO)를 초기화하고 운영체제로 넘기는 역할을 합니다.새로운 보드에 추가적인 하드웨어(UART, I2C, SPI, GPIO)를 지원하려면 디바이스 트리(DTS), 드라이버 설정, 초기화 코드 수정이 필요합니다.이 문서에서는 UART, I2C, SPI 디바이스 추가 및 GPIO 초기화 코드 작성 방법을 설명합니다.1. UART 추가하기UART(Universal Asynchronous Receiver-Transmitter)는 시리얼 통신을 담당하는 장치로, 부팅 로그 출력 및 디버깅에 필수적입니다.U-Boot에서 새로운 UART를 추가하려면 DTS, board/..
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