728x90

BIOS

- Basic Input Output system

- 하드웨어 초기화 담당

- ROM에 저장 -> 하드디스크 준비 전 BIOS 실행 되어야 하기 때문

 

펌웨어 용어 시작

- 자연 시계 -> 기계식 시계 -> 전자식 쿼츠 시계 -> 디지털 시계

- 하드웨어로만 구현 : 복잡

- 마이크로 프로세서로 구현 (하드웨어 + 소프트웨어) : 하드웨어로 구현한것보단 간단. but SW없이 구동불가

  -> 하드웨어를 구동시키는 소프트웨어라는 의미  "펌웨어"

 

마이크로 프로세서와 펌웨어

- 프로그래밍 : 하드웨어로 구현한 기능을 소프트웨어로 구현

 -> 하드웨어는 수정 불가하나 프로그램은 추후 수정 가능

 

임베디드 시스템

- 마이크로 프로세서 혹은 CPU가 내장된 시스템

- 전기 사용되는 대부분 전자제품

 

펌웨어

- 임베디드 시스템의 HW/SW 연결

- 부트로더, 운영체제 커널, 디바이스 드라이버

 

스마트 폰 예시

- 터치 스크린 장치

- LCD - 터치센서 - 터치 컨트롤러

- 터치센서는 x/y축 좌표를 터치 컨트롤러에 전달.

- 터치 컨트롤러는 CPU에 좌표 전달 -> 디바이스 드라이버 이용

 

I2C 인터페이스

- 터치 컨트롤러의 인터페이스로 I2C 버스인터페이스사용

- 2개의 선으로 칩 간 통신 가능

- I2C 디바이스 드라이버 필요 -> CPU 내부 I2C 컨트롤러 블록 동작시키기 위해

-> CPU 특정 하드웨어 동작을위해 그에 맞는 펌웨어가 필요

 

I2C 컨트롤러 블록 동작 방법

- 특정 어드레스에 특정 값을 쓰면 하드웨어 블록들이 해당 동작을 수행

- status 레지스터, control 레지스터 보유

 

삼성 Exynos4412 CPU 구성

- 8개의 I2C 인터페이스와 컨트롤러

- 각각 32비트인 5개의 레지스터

- 어드레스 테이블을 매모리 맵이라 부름

 

부트로더

- 임베디드 시스템에 운영체제를 올림 + 하드웨어 초기화 작업

- 범용 컴퓨터 PC의 BIOS와 동일한 역활

- 임베디드 시스템에서는 RTOS라고 하는 작은 운영체제를 많이 사용했었음

 -> 근래 성능 향상으로 리눅스를 많이 사용

 

부트로더 저장 위치

- 가장 먼저 동작해야하므로 CPU의 리셋벡터 혹은 ROM의 시작 번지

-> CPU가 리셋되면 기계적으로 최초 어드레스에서 코드를 읽어오는 동작 수행(reset 벡터)

-> ROM에서 코드를 읽어와 순차적으로  실행 한 후 RAM에 복사하여 부팅 진행

 

부트로더 기능

1. CPU 초기화

 - 인터럽트 비활성화

 - watchdog 비활성화

 - clock, timer 셋팅

  * 부팅 관련 부분만 활성화 하고 나머지는 비활성화하거나 초기화

2. 메모리 컨트롤러 초기화

 - DRAM 컨트롤러 셋팅

3. 주변장치 초기화

 - 직렬 포트(UART) 초기화

 - 네트워크 장치 초기화

4. 커널 적재 및 램디스크 설치

 - 커널 - 운영체제의 핵심. 스케쥴러나 디바이스 드라이버 등이 포함됨

5. 커널 부팅

 

부트로더 종류

- 지원 CPU : ARM, Power PC, MIPS 등

- U-boot(Universal bootloader) : 가장 널리 쓰임. 다양한 CPU 지원

- FastBoot : 안드로이드 플랫폼에서 기본적으로 장착된 부트로더

- Redboot : 레드햇사 자사 RTOS인 리눅스 eCos의 부트로더로 사용하기 위해 제작

300x250

+ Recent posts