분류 전체보기(665)
-
커널 포팅 (3. 커널 포팅 기본 실습 / 3.3 부트 로그 분석 및 디버깅)
3.3 부트 로그 분석 및 디버깅커널이 부팅될 때 어떤 단계가 실행되는지 이해하고, 부팅 실패 시 로그를 분석하는 방법을 알아야 합니다.이 과정에서는 커널 부팅 과정의 주요 함수, 부팅 로그 분석 방법, UART(시리얼 콘솔) 활용법을 설명합니다.🔹 커널 부팅 과정 단계별 분석커널이 부팅될 때 실행되는 주요 함수들은 start_kernel()을 시작으로 메모리 초기화, 프로세스 생성, 드라이버 로드 등 여러 단계를 거칩니다.✅ 1️⃣ 커널 부팅 과정 개요start_kernel() → setup_arch() → init_IRQ() → initcall() → init_main()✅ 2️⃣ 주요 함수 설명함수 역할start_kernel()커널 부팅 시작, 시스템 초기화setup_arch()CPU 및 하드웨어..
2025.03.06 -
커널 포팅 (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 -
커널 포팅 (2. 커널 소스 분석 및 빌드 / 2.4 U-Boot과의 연동)
2.4 U-Boot과의 연동U-Boot(Universal Bootloader)는 임베디드 시스템에서 널리 사용되는 부트로더로, 커널을 메모리에 로드하고 실행하는 역할을 합니다.커널 포팅 과정에서 U-Boot을 설정하고 빌드한 후, 커널과 연동하여 부팅하는 방법을 이해하는 것이 중요합니다.🔹 U-Boot이란 무엇인가?U-Boot(유니버설 부트로더)는 임베디드 시스템에서 커널을 로드하고 실행하기 위한 오픈소스 부트로더입니다.임베디드 시스템에서는 운영체제가 부팅되기 전 하드웨어 초기화 및 커널 로드가 필요하며, 이를 U-Boot이 담당합니다.✅ U-Boot의 역할하드웨어 초기화:CPU, RAM, 저장장치(SD 카드, eMMC, NAND/NOR 플래시) 설정주변 장치(GPIO, I2C, SPI, USB 등) ..
2025.03.06 -
커널 포팅 (2. 커널 소스 분석 및 빌드 / 2.3 크로스 컴파일러를 이용한 커널 빌드)
2.3 크로스 컴파일러를 이용한 커널 빌드리눅스 커널은 여러 하드웨어 아키텍처에서 실행될 수 있도록 설계되었습니다.하지만 커널을 빌드할 때는 개발 환경과 실행할 하드웨어의 아키텍처가 다를 수 있습니다.이런 경우 크로스 컴파일러(Cross Compiler) 를 사용하여 타겟 아키텍처에 맞게 커널을 빌드해야 합니다.🔹 크로스 컴파일러란?크로스 컴파일러(Cross Compiler) 는 개발 환경(Host)과 실행 대상(Target)의 CPU 아키텍처가 다른 경우 사용하는 컴파일러입니다.즉, x86 기반의 개발 PC(Host)에서 ARM 또는 RISC-V 기반의 임베디드 보드(Target)용 커널을 빌드할 때 사용됩니다.✅ 크로스 컴파일러가 필요한 이유x86 PC에서 ARM, RISC-V 등의 아키텍처용 커널..
2025.03.06 -
커널 포팅 (2. 커널 소스 분석 및 빌드 / 2.2 커널 빌드 과정 이해)
2.2 커널 빌드 과정 이해리눅스 커널 빌드는 소스 코드를 컴파일하여 실행 가능한 커널 이미지를 생성하는 과정입니다.커널을 빌드하기 위해서는 설정(configuration), 컴파일, 이미지 생성, 모듈 빌드, 디바이스 트리 빌드 등의 과정이 필요합니다.🔹 커널 빌드 기본 과정리눅스 커널을 빌드하려면, 먼저 빌드할 아키텍처(ARM, x86, RISC-V 등)를 선택하고, 설정을 조정한 후 컴파일해야 합니다.📌 커널 빌드의 핵심 과정:# 1. 커널 기본 설정 (menuconfig 사용)make ARCH=arm menuconfig# 2. 커널 이미지 빌드 (zImage 또는 bzImage)make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j$(nproc)#..
2025.03.06