본문 바로가기
Linux BSP

[Linux] 부트 로더 Boot Loader란?

by TYB 2024. 2. 7.
반응형

Boot Loader의 역할?

 

q타겟 시스템 초기화
v부트로더는 전원이 입력되면 타겟 시스템이 정상동작 할 수 있도록 하드웨어 및 소프트웨어 동작 환경을 설정
v불필요한 하드웨어의 동작 중지, 시스템 클록 설정, 메모리 제어기 설정 및 필요에 따라 MMU MPU를 설정
v프로그램 동작에 필요한 재배치(relocation), 스택 영역 설정 및 C에서 사용되는 변수 영역을 설정한 다음 C로 작성된 함수 호출
v부트로더에는 필요에 따라 IRQ와 같은 예외처리(Exception Handling) 처리 벡터 및 핸들러도 작성 되어야 한다.
q타겟 시스템 동작 환경 설정
v부트 방법, 부트 디바이스를 비롯한 네트워크를 이용한 부트를 지원하기 위한 네트워크 설정, IP 주소 설정 등 부트로더 동작에 필요한 정보를 설정
v설정된 환경 변수 값은 플래시 메모리 또는 EEPROM에 저장 관리

 

q시스템 운영체제 부팅
v일반적으로 임베디드 시스템의 운영체제는 플래시 메모리에 탑재되어 있고 부팅과정에서 주 메모리(일반적으로 DRAM을 사용)에 탑재하여 실행
Ø운영체제를 DRAM에 복사하고 제어권을 운영체제의 시작점으로 넘겨주는 기능 필요
v시리얼, 네트워크 또는 USB를 이용한 실행하는 방법 지원
Ø네트워크는 TFTP(Trial File Transfer Protocol)을 사용

tftp는 ethernet을 이용해서 update를 할 때 사용하는 프로토콜이고 bootloader에 들어가 있음.

ØUSB는 네트워크에 비하여 별도 설정 없이누구나 쉽게 사용 가능
Ø시리얼 장치(UART)를 이용한 탑재 방법 사용
ü속도가 늦어 용량이 큰 운영체제를 탑재하기 에는 부적합
q플래시 메모리 관리
v임베디드 시스템에서 가장 효율적인 보조 기억 장치
v부트로더 탑재, 시스템에 전원이 인가되면 플래시에 저장된 부트로더 실행
v부트로더 및 시스템 동작에 필요한 환경 변수 저장
v플래시 메모리에는 시스템 운영체제 이미지 탑재
q모니터 기능
v시스템의 동작 상태를 감시
vPOST(Power-On Self Test)
Ø하드웨어 정상 동작 여부 검사, 메모리 검사 등

 

 

 

boot loader의 특징?

q프로세서에 의존성이 높다
v특히 시스템 초기화 과정의 모든 코드는 어셈블러로 작성된다.
v프로그래머는 프로세서의 Architecture  Programmer’s Model 대하여 이해를 하고 있어야 한다.
qTARGET 시스템의 하드웨어에 의존성이 높다
v프로그래머는 TARGET 시스템의 하드웨어를 이해하여야 한다.
v특히 메모리 인터이스, 주변 장치 등에 대해서는 잘 알고 있어야 한다.
q가능하면 적은 크기 이어야 한다.
q대부분은 사용자가 직접 작성하여 사용한다.
v대부분의 부트로더 코드는 사용자가 개발하려는 시스템의 특성에 맞게 작성하여 사용
v다운로드 방법, OS 시작 방법 등
v실습에서는 U-Boot를 사용 (이미 개발되어 공개되어 있는 부트로더 )

 

 

 

사용 가능한 다양한 부트로더

qLILO
vLILO(Linux Loader) x86기반의 컴퓨터 기반의 리눅스에서 오래 전부터 사용되고 있는 부터로더이다.
qGRUB
vGRUB(Grand Unified Bootloader) GNU 프로젝트의 부트로더
qEtherBoot
v디스크 없는 시스템에서 이더넷을 통해 부팅할 수 있게 하는 부트로더
v주로 X-터미날 등에서 많이 사용
qBlob
vBlob ARM 프로세서 기반의 LART 하드웨어를 위한 부트로더로 개발
qPMON
vPMON(PROM Monitor) MIPS 보드를 지원하기 위해 제작된 부트로더
qRedBoot
v레드햇에서 개발되어 배포된 부트로더
qU-Boot
vU-Boot PPCBoot ARMBoot 프로젝트를 기반으로 개발
v다양한 PPC 또는 ARM 프로세서 기반의 타겟 보드 지원

 

 

U-Boot이란?

vU-Boot ARM이나 PowerPC와 같은 프로세서 기반의 임베디드 시스템에서 동작 하도록 작성된 부트로더이다.
q기능
v하드웨어 초기화
v하드웨어 테스트
v소프트웨어 다운로드 및 실행
vFLASH 관리
vOS 부팅

 

새로운 SoC나 칩이 나오면 기존에 사용했던 MCU를 가져와서 새로운 SoC나 칩에서 변경된 부분만(memory 번지수, timer interrupt, ethernet card변경) 등 바뀐 부분에 대해서만 수정을 하는 것을 Porting이라고 함.

 

BSP 개발자가 하는 건 커널을 개발하는게 아니라 Porting하는거 ㅇㅇ

 

 

 

U-Boot build

qBUILD 절차는 다음과 같다.
1.BUILD Configuration

$ cd u-boot-1.1.1

$ make dtk2410_config

2.의존성(Dependency) 검사

$ make dep

3.BUILD U-Boot

$ make

qBUILD 후 생성되는 파일
파일명 설명
u-boot.map U-Boot memory map 파일
u-boot ELF binary formatU-Boot 이미지
u-boot.bin Plane binary formatU-Boot 이미지, FLASH에 탑재되는 이미지

 

q부트로더 탑재
v개발된 부트로더는 TARGET 보드의 FLASH에 탑재되어 부트로더 기능을 수행
vTARGET부트로더 탑재하는 방법
ØROM 라이터를 사용하는 방법
Ø전용 ICE 장비를 사용하는 방법
ØJTAG Dongle을 활용하는 방법
Ø기존에 탐재된 부트로더를 이용하여 탑재하는 방법

 

반응형