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의 부트로더로 사용하기 위해 제작
'컴퓨터과학 > 임베디드' 카테고리의 다른 글
펌웨어구현 환경구축 3 - 하드웨어 장비 (0) | 2020.05.06 |
---|---|
펌웨어구현 환경구축 2 - 펌웨어 구현을 위한 소프트웨어 (0) | 2020.05.06 |
ARM을 활용한 임베디드 시스템 설계 25 - 디바이스 드라이버 제작 (1) | 2020.05.06 |
ARM을 활용한 임베디드 시스템 설계 24 - 모듈 프로그래밍 (0) | 2020.05.05 |
ARM을 활용한 임베디드 시스템 설계 23 - 입출력 디바이스 제어 (0) | 2020.05.05 |