Lesson 4. 임베디드 시스템 (Embedded System)
13 장의 강의 목표
•
임베디드 시스템의 개념과 특성에 대해서 이해한다
.•
임베디드 운영체제의 요구사항과 특성에 대해서 이해한다
.•
임베디드 운영체제인
eCOS와
TinyOS에 대해서 살펴보고
,임베디드 운영체제 설계에 대한 두 가지 다른 접근 방식을
이해한다
.목 차
13.1
임베디드 시스템
13.2
임베디드 운영체제의 특성
13.3 eCOS13.4 TinyOS
임베디드시스템 3
13.1 임베디드 시스템
•
특정 목적을 위해 설계된 하드웨어 및 소프트웨어
– 컴퓨터 하드웨어와 소프트웨어, 그리고 추가의 기계적 장치나 다 른 부분들로 이루어진 복합품으로, 특정 기능에 전용으로 사용되 도록 설계됨
– 시스템이 동작하는 환경과 밀접히 연관됨
– 임베디드 시스템의 수는 범용 컴퓨터의 수보다 월등하게 많다.
•
임베디드 시스템의 요구사항 및 제약조건
– 다양한 비용 제약조건 – 복합적인 품질 요구 사항 – 생명 주기의 범위가 넓음
임베디드 시스템과 그 제품 시장의 예
임베디드시스템 5 13.1 임베디드 시스템
일반적인 임베디드 시스템의 구조
13.1 임베디드 시스템
– 외부와 상호작용할 수 있는 다양한 인터페이스가 존재 – 진단 포트를 이용해 개발 컴퓨터와 연결됨
– FPGA / ASIC 등이 성능이나 안전성을 높이기 위해 사용됨 – 소프트웨어는 보통 고정된 함수이고, 응용에 특화되어 있다.
13.2 임베디드 운영체제의 특성
•
실시간
(real-time)작업
– 계산 결과의 정확성이 그 결과 산출 시점에 의해서도 결정
– 실시간 제약조건은 외부 I/O나 제어안정성 요구조건에 의해 도출
•
반응성(reactive) 작업
– 임베디드 소프트웨어는 외부 이벤트에 반응하여 동작
– 임베디드 소프트웨어에서는 최악의 경우에 대한 조건을 고려하여 수행 루틴들의 우선순위를 결정해야 함.
•
구성 용이성
(configurability)– 다양한 임베디드 시스템에서 사용되어야 하는 임베디드 운영체제 는 유연한 구성이 가능해야 함
– 특별한 응용과 하드웨어에서 필요로 하는 기능만을 제공할 수도 있어야 함.
임베디드시스템 7
임베디드 운영체제의 특성 ( 계속 )
• I/O
장치의 유연성
– 임베디드 시스템 별로 지원해야 할I/O 장치의 범위는 매우 크다.
•
간결한 보호 기법
– 테스트되지 않은 프로그램이 추가되는 경우가 거의 없음 – 임베디드 시스템은 제한된 보호 기법만으로도 OK.
•
응용에 의한 인터럽트의 직접적 사용
– 임베디드 시스템은 철저히 테스트된 것으로 간주될 수 있고, 운영 체제나 응용 코드의 수정은 적으며,
– 보호가 필요 없고,
– 다양한 장치에 대한 효율적인 제어가 필요하기 때문이다.
13.2 임베디드 운영체제의 특성
임베디드 운영체제 개발 방법
•
기존 상용 운영체제의 적용
– 상용 운영체제에 실시간성 추가, 필요한 기능 추가, 불필요한 기능 삭제 등을 통해 임베디드용 운영체제 버전으로 사용
• 예: Embedded Linux – 장점
• 익숙한 인터페이스를 기반으로 하기 때문에, 이식이 용이하다 – 단점
• 실시간 임베디드 응용에 최적화되어 있지 않다
• 충분한 성능을 얻기 위해서는 매우 많은 수정이 필요할 수 있다. – 예) Android, iOS
임베디드시스템 9 13.2 임베디드 운영체제의 특성
임베디드 운영체제 개발 방법 ( 계속 )
•
특수 목적 임베디드 운영체제의 개발
– 특수 목적에 맞는 임베디드 운영체제를 별도로 개발 – 장점
• 실시간 임베디드 응용에 최적화되어 있다. – 단점
• 인터페이스가 익숙하지 않고, 이식(porting)이 어렵다.
13.2 임베디드 운영체제의 특성
13.3 eCos
• Embedded Configurable Operating Systems (eCos)
•
고성능 소형 임베디드 시스템용 운영체제
•
오픈 소스
•
저작권료가 없음
•
실시간 운영체제
•
다양한 처리기 플랫폼 상에 구현
– Intel IA32, PowerPC, SPARC, ARM, CalmRISC, MIPS, NEC V8xx 등
임베디드시스템 11
구성 용이성
• eCos
의 구성 도구
– 다양한 기능의 제공
– 필요한 컴포넌트의 선택/해제 가능
13.3 eCos
eCos 구성 도구
임베디드시스템 13 13.3 eCos
eCos 구성 도구 – 커널 구성
13.3 eCos
eCos 응용 바이너리 적재 과정
임베디드시스템 15 13.3 eCos
• Cross-Compile
방식으로 이루어짐
eCos 컴포넌트
13.3 eCos
• eCos
계층 구조
– 최소의 노력으로 서로 다른 아키텍처와 플랫폼에 이식이 가능하 도록 하기 위해
eCos 컴포넌트 - 하드웨어 추상 계층 (HAL)
•
상위 계층에 일관적인
API를 제공
•
각 하드웨어 플랫폼마다 구현이 다름
•
예
: HAL_ENABLE_INTERRUPTS임베디드시스템 17 13.3 eCos
eCos 컴포넌트 - HAL 모듈
• 아키텍처
– 처리기 계열의 종류를 정의한다. 이 모듈은 처리기 시동, 인터럽트 전 달, 문맥 교환, 그리고 해당 처리기 계열의 명령 집합 아키텍처의 고 유한 다른 기능에 필요한 코드들을 포함하고 있다.
• 변형(Variant)
– 처리기 계열에 속하는 특정 처리기의 특징을 지원한다.
– 예: 메모리 관리 장치(MMU: Memory Management Unit)
• 플랫폼
– 인터럽트 처리기와 타이머 장치와 같은 밀결합(tightly coupled) 주변 장치를 지원하도록HAL을 확장한다.
– 선택된 처리기 아키텍처와 변형을 포함하는 플랫폼 또는 보드(board) 를 정의한다.
– 시동, 칩 선택 구성, 인터럽트 제어기, 타이머 장치 등을 위한 코드들 을 포함한다.
13.3 eCos
eCos 컴포넌트 - eCos 커널
•
짧은 인터럽트 지연
– 인터럽트에 반응하여 ISR 수행을 시작하는 데 걸리는 시간.
•
짧은 태스크 전환 지연
– 쓰레드가 사용가능 해 진 후 실제 수행이 시작될 때까지의 시간.
•
작은 메모리 점유
– 모든 컴포넌트가 필요에 따라 메모리를 구성하게 함으로써 프로 그램과 데이터를 위한 메모리 자원을 최소화.
•
확정적(deterministic) 동작
– 수행의 모든 면에 있어 커널의 성능은 실시간 응용의 요구사항을 만족시킬 수 있고, 예측 가능해야 한다.
임베디드시스템 19 13.3 eCos
eCos 커널에 포함되지 않는 기능
•
메모리 할당
– 독립된 패키지에 의해 처리된다
•
장치 드라이버
– 독립적 패키지
13.3 eCos
eCos 컴포넌트 - eCos I/O 시스템
•
디바이스 드라이버를 지원하기 위한 프레임워크
•
목표
– 불필요한 소프트웨어 계층이나 관계없는 기능이 없는 효율성
•
장치 드라이버와 다른 상위 계층 소프트웨어는 그것이 적 절한 경우
HAL위에 직접 구현될 수도 있다
임베디드시스템 21 13.3 eCos
eCos 인터럽트 처리 모델
•
인터럽트 서비스 루틴
(ISR: Interrupt Service Routine)– 하드웨어 인터럽트에 반응하여 호출된다.
– HAL은 인터럽트가 발생한 하드웨어를 알아내고 연결된 인터럽트
객체의 ISR을 호출한다.
•
지연 서비스 루틴
(DSR: Deferred Service Routine)– ISR의 요청에 반응하여 호출된다.
– DSR은 스케줄러를 방해하지 않고 안전하게 수행할 수 있을 경우 에 호출됨
•
쓰레드
(Thread)– 드라이버의 클라이언트이다.
– 쓰레드는 모든 API 호출이 가능하고 특히 뮤텍스(mutex)와 조건 변수 (conditional variable)에 대하여 대기하는 것이 허용된다.
13.3 eCos
eCos 컴포넌트 - eCos 스케줄러
•
두 가지 스케줄러 중 택일
– 비트맵(bitmap) 스케줄러와 다단계(multilevel) 큐 스케줄러 – 두 가지 중 하나의 스케줄러를 제공하도록 구성될 수 있다.
•
스케줄러 선택
– 비트맵 스케줄러
• 임의 시점에서 활성화될 수 있는 적은 수의 쓰레드를 가진 시스템에 효율적인 스케줄러
– 다단계 큐 스케줄러
• 쓰레드의 수가 동적으로 변화하거나 같은 우선순위 수준에 여러 쓰 레드를 가지는 것이 바람직한 경우에 적당
• 시분할이 요구되는 경우에도 필요
임베디드시스템 23 13.3 eCos
eCos 컴포넌트 - eCos 스케줄러
13.3 eCos
• eCos
비트맵 스케줄러
임베디드시스템 25
• eCos
다단계 큐 스케줄러
eCos 컴포넌트 - eCos 스케줄러
13.3 eCos
eCos 쓰레드 동기화
•
뮤텍스
(mutex)•
세마포어
(semaphore)•
조건변수
(conditional variables)•
이벤트 플래그
(event flags)•
메일 박스
(mail boxes)•
스핀락
(spinlock)– SMP 시스템에서 유용
13.3 eCos
13.4 TinyOS
• TinyOS 는… 이다.
– 코드 크기가400 바이트 내외로 초소형 – 컴포넌트 기반 운영체제
– 주변장치에 의존적인 인터럽트 처리
• TinyOS 는… 이 아니다.
– 실시간 운영체제가 아님 – 커널이 아님
• TinyOS 는… 가 없다.
– 메모리 보호가 없음 – 프로세스가 없음 – 메모리 할당이 없음 – 블록킹이 없음
ÎTinyOS는 무선 센서 네트워크 노드를 위한 운영체제이다.
임베디드시스템 27
무선 센서 네트워크
13.4 TinyOS
TinyOS 의 목표
• 높은 수준의 병행성 허용
– 수 개의 서로 다른 데이터 흐름이 동시에 움직일 수 있어야 한다.
• 제한된 자원을 가지고 동작
– 대개 플랫폼은 저사양 하드웨어일 것임.
– 가용한 처리기와 메모리 자원을 효율적으로 이용해야만 하며, – 저전력 통신이 가능해야 한다.
• 하드웨어 발전에 적응
– 하드웨어에 맞추어 커널 코드 업그레이드가 가능해야 한다.
• 넓은 범위의 응용을 지원
– 모듈화된 범용 임베디드 운영체제가 바람직
– 표준화된 접근 방법으로 응용을 개발할 수 있어야 함
• 여러 종류의 플랫폼을 지원
• 견고성 (robustness) 이 있어야 함
– 중복성, 높은 모듈화, 표준 소프트웨어 컴포넌트 사용
임베디드시스템 29 13.4 TinyOS
TinyOS 구성요소
•
컴포넌트
– 간단한 태스크 혹은 태스크 집합을 수행
– 제한되고 잘 정의된 방법으로 컴포넌트 및 하드웨어와 인터페이 스 한다.
– TinyOS의 모든 컴포넌트는 같은 구성을 가짐
13.4 TinyOS
컴포넌트와 구성의 예
•
예
: TimerC구성
임베디드시스템 31 13.4 TinyOS
컴포넌트 구조
•
태스크
– 소프트웨어 컴포넌트는 하나 이상의 태스크를 구현 – 컴포넌트 내에서 태스크는 원자적
– 태스크는 이벤트에 의해 선점이 가능
– 계산을 수행하고 아래 수준 컴포넌트 (명령) 를 호출하고, 위 수준 이벤트 시그널을 보내고, 다른 태스크들을 스케줄할 수 있다.
•
명령
– 서비스를 수행하기 위한 아래 수준 컴포넌트에 대한 요청
– 명령은 호출 컴포넌트로 즉시 복귀하며, 차후에 완료를 알리기 위 한 이벤트가 호출 컴포넌트에 전달된다
•
이벤트
13.4 TinyOS
TinyOS 스케줄러
•
스케줄러는 하나의 분리된 컴포넌트임
•
모든 컴포넌트를 대상으로 동작
•
한 순간에는 오직 하나의 태스크만 수행 가능
•
간단한
FIFO큐로 구현
임베디드시스템 33 13.4 TinyOS
TinyOS 응용의 예
13.4 TinyOS
TinyOS 자원 인터페이스
• 전용 (Dedicated)
– 하부시스템이 항상 배타적인 접근을 필요로 하는 자원. 이 부류의 자 원들은 자원을 사용을 요구하는 컴포넌트가 오직 하나뿐이므로 공유 정책이 필요 없다.
– 예: 인터럽트, 카운터
• 가상 (Virtualized)
– 가상 자원의 모든 클라이언트는 마치 전용 자원인 것처럼 상호작용하 며, 모든 가상 인스턴스는 단일한 하부 자원 위에서 다중화
(multiplexed)된다. 가상 추상은 하부 자원이 상호배제에 의해 보호될 필요가 없을 때 사용될 수 있다.
– 예: 클록, 타이머
• 공유 (Shared)
– 공유 자원 추상은 중재자(arbiter) 컴포넌트를 통해 전용 자원에 대한 접근을 제공한다. 중재자는 상호배제를 강제하고, 한 순간에 오직 한
사용자(클라이언트라고 불림)만 자원에 접근할 수 있도록 하며 클라
이언트가 자원을 락할 수 있도록 한다.
임베디드시스템 35 13.4 TinyOS
공유 자원 구성
13.4 TinyOS
요 약
•
임베디드 시스템
– 임베디드 시스템의 요구사항, 제약조건, 특성
• eCos 임베디드 운영체제
– 구성도구, 컴포넌트, 스케줄러, 동기화
• TinyOS
임베디드 운영체제
– TinyOS의 목표, 구성요소, 스케줄러, 자원 인터페이스
임베디드시스템 37