도서 리뷰/임베디드 리눅스 프로그래밍 완전정복
부트로더 (Bootloader) #1
Jooyoung Lee
2025. 6. 24. 08:11
반응형
🧠 부트로더의 두 가지 주요 역할
- 시스템 초기화
- 최소한의 시스템만 초기화 (DRAM, 인터페이스 등 아직 미설정)
- 커널 로드
- 커널을 메모리에 로드하고 실행 환경 구성
⚙️ 부트 순서 요약
- 전원 ON 또는 리셋 시점
- 시스템은 매우 제한된 상태
- 동작 가능한 자원: CPU 코어, 온칩 메모리, 부트 ROM
- 초기 부트 코드 실행
- DRAM 컨트롤러 설정
- 메모리 접근 가능하게 됨
- 부트로더 코드를 DRAM으로 복사
- 커널 로드 및 실행 준비
- 커널을 플래시에서 DRAM으로 복사
- 하드웨어 설정 정보와 커널 커맨드 라인을 커널에 전달
- 제어를 커널로 넘김 → 부트로더는 더 이상 필요 없음
🧱 예전의 단순한 부트 구조 (NOR Flash 사용 시)
🔹 특징
- 부트로더를 리셋 벡터(0xFFFFFFFC) 위치에 배치
- NOR Flash는 직접 주소 매핑 가능 → 실행 간편
- 초기 점프 명령어로 부트로더 코드 실행 시작
🔸 동작 흐름
- NOR Flash에서 부트로더 실행
- DRAM 초기화 후, 부트로더를 DRAM으로 복사
- 커널을 플래시에서 DRAM으로 복사
- 커널 실행
🌀 복잡한 현대 부트 시퀀스
- NOR Flash가 아닌 다른 저장장치 사용 시 (e.g. NAND, eMMC 등)
- 부트 과정이 멀티 스테이지로 복잡해짐
- SoC에 따라 부트 절차가 매우 다름
- 일반적으로:
- 부트 ROM → 1단계 부트로더
- 1단계 → 2단계 부트로더
- 2단계 → 커널 로딩
반응형