5.1 BSP 란?
BSP(Board Support Package)란 말은 본래 RTOS에서 나온 용어로, “보드를 떠받치는(지원하는) 소프트웨어 패키지란 뜻으로, “보드(하드웨어)를 동작 시키기 위해 필요한 (임베디드) 소프트웨어 묶음”
<그림> 시스템 별 BSP 구성 형태
위의 그림은 Firmware와 RTOS로 구동되는 시스템과 Non-RTOS 로 구동되는 시스템의 차이를 보여주고 있다.
WindRiver 사의 VxWorks와 같은 일부 상용 RTOS를 제외하고 대부분의 RTOS와 Firmware에는 Non-RTOS에서와 같은 파일 시스템(File System)이 없다. 즉 소스들이 아무리 많다 하더라도 결국 컴파일이 끝나면 최종적으로 (CPU에 종속적인) 바이너리 실행 코드 하나만 생성된다.
따라서 Firmware와 RTOS의 BSP는 제품의 기능이라 할 수 있는 코드(이를 “User Application”라고 표현했다) 와 그러한 제품의 기능을 실제 구현하기 위해 하드웨어를 직접적으로 제어하는 코드(“Firmware”라고 표현)가
하나의 파일로 묶여 BSP를 구성하고 있다.
그러나 Linux나 Windows CE와 같은 Non-RTOS 들은 3가지 실행 코드들로 구성된다.
파일 타입 | BSP 종류 | 기능(역할) |
Firmware | Boot Loader | HDD 혹은 Flash 메모리에 있는 Kernel Image를 메모리에 로딩하는(Loading) 역할 |
OS Kernel | Kernel Image | OS 압축 이미지 파일 |
User Application | File System Image | User Application 이 실행되는 환경, 압축 이미지 파일 |
<표> Non-RTOS BSP 구성요소
Firmware, RTOS BSP | Non-RTOS BSP |
Firmware | Boot Loader 하드웨어 종속적인 Kernel |
User Application | 하드웨어 독립적인 Kernel User Application |
<표> 비교
5.2 임베디드 리눅스 BSP
Embedded Linus BSP에서 가장 중요한 부분이라면 당연히 OS 부분인 Linux Kernel이다.
Linux는 오픈 소스로 진행되는 공개 OS이므로, Linux란 OS의 부트 로더 인터페이스와 파일 시스템 인터페이스 규격만 알고 있다면, 부트 로더와 파일 시스템을 개발할 수도 있다는 뜻이다.
ARM 프로세서 기반의 Embedded Linux에서 사용 가능한 Boot Loader는 크게 세가지 종류이다.
Boot Loader | 탄생 배경 | 선택 기준 |
BLOB | Intel 사에서 개발한 XScale Core기반의 CPU에 적용하기 위해 개발된 부트로더 | Intel 사의 XScale Core 기반으로 개발하는 경우라면 기본적으로 제공되는 BLOB 사용 |
ARMBOOT | XScale Core처럼 변형된 ARM Core 기반 CPU가 아니라, 변형되지 않은 ARM Core 기반 CPU에 적용하기 위해 개발된 부트로더 | 변형시키지 않은 순수 ARM 프로세서 기반으로 개발하는 경우 주로 선택되었으나, 최근엔 U-BOOT를 더 많이 사용하는 추세. |
U-BOOT | ARM Core, PPC Core, MIPS Core 등 다양한 프로세서에 범용적으로 적용하기 위해 개발 대부분의 ARM 프로세서에 적용되고 있다. | ARM 프로세서 기반으로 개발하는 경우라면 특별한 일이 없는 한 U-BOOT를 사용하는게 좋다. |
Embedded Linux File System 종류별 비교
File System | 특징 | 주요 사용 분야 |
CramFS | 가장 사이즈가 작은 파일 시스템으로 ROM File System이기 때문에 부팅된 이후에는 파일 시스템에 별도의 데이터를 기록할 수 없다. | 실행될 때마 기존에 했던 일을 똑같이 단순 반복하는 분야에 적용(ex: 산업용 로봇) |
RAMDISK | RAM의 일부를 파일 시스템으로 사용하는 방법으로 플래시 메모리부터 읽어오는 파일 시스템에 비해 실행 속도가 매우 빠르다는 장점이 있다. 그러나 RAM의 일부를 파일 시스템용으로 사용하다 보니 RAM 사이즈가 줄어들어 실행시킬 수 있는 User Application의 수가 많지 않은 단점이 있다. | User Application의 실행 속도는 빨라야 하나, 그 수가 비교적으로 적은 분야에 적용 (ex: 네트워크 장비) |
JFFS, | BSP들을 저장하는 용도로 사용되는 플래시(Flash) 메모리 일부를 파일 시스템으로 사용하는 방법으로, RAM 사이즈에 영향을 주지 않기 때문에 매우 많은 User Application들을 실행시킬 수 있다는 장점이 있다. 다만 속도가 비교적으로 느린 플래시 메모리부터 읽어와야 하기 때문에 실행 속도가 RAMDISK에 비해 비교적 느리다는 단점. | User Application의 실행 속도는 비교적 느려도 되나, 그 수가 매우 많은 분야에 적용하면 좋다. (ex: 모바일 단말기) |
'Embedded Linux' 카테고리의 다른 글
임베디드 리눅스 개발 환경 <1> SW 개발 환경 (0) | 2015.12.21 |
---|---|
임베디드 리눅스 개발 환경 분석 (0) | 2015.12.21 |
임베디드 플랫폼<3> 개발 환경 (0) | 2015.12.21 |
임베디드 플랫폼<2> 운영체제 (0) | 2015.12.21 |
임베디드 플랫폼<1> 마이크로 프로세서 (0) | 2015.12.19 |