임베디드 정의
•
특수한 기능을 수행하기 위해 소프트웨어와 하드웨어가 탑재된 전자제어 시스템
•
단순 회로만으로 구성된 장치가 아닌 마이크로프로세서가 내장되어 있고, 이것을 운영하여 원하는 작업을 수행하는 프로그램이 포함된 시스템
임베디드 특징
•
Cross-development Platform : 개발은 PC에서 진행하지만 실행은 하드웨어에서
•
Real-time Features : 임베디드는 특수한 목적을 위해 실시간성이 요구됨
•
Special-purpose System : 특수한 목적을 가진다.(<->General-purpose System)
•
JTAG(Joint Test Action Group) : 하드웨어에 다운로드하는 과정을 위해서는 Cable이 필요하다. 초기에는 Device driver가 필요하므로 JTAG cable을 이용해 bootloader를 다운해주어야한다.
•
일반적으로 Resource의 제약이 크다
RTOS
•
우선순위기반 스케줄링기법을 사용한다.
•
결과 산출에 걸리는 시간에도 적시성을 가져야 한다. (Timeliness)
•
외부 자극에도 예측 가능한 방식으로 반응해야 한다. (Predictable)
•
그저 빠른 것이 아닌 Deadline을 지킬 만큼 빨라야 한다. 적시성을 지켜야한다.
•
경성실시간 시스템
: 제어작업이 데드라인을 어기는 경우 시스템에 심각한 영향을 주는 속성을 지닌 시스템
단점
1. 불완전한 기능의 운영체제 (task 생성/실행/종료 자유도 제약)
2. 메모리 보호를 받지 못하는 thread 모델로서 프로그램 실행(한 개의 버 그로 전체 system down)
•
연성 실시간 시스템
: 데드라인 만족시키는데 있어서 어느 정도 융통성을 갖는 시스템
•
PSOS : 멀티태스킹 RTOS로 256개의 Task를 가진다.
•
WinCE : 기존의 데스크탑 PC와 동일한 윈도우 환경 제공
: 프로그램 개발환경이 우수
: 윈도우 및 응용프로그램과의 호환성 우수
•
overhead : cpu가 동작하는 시간이 아닌 문맥전환과 같이 낭비되는 시간
Embedded Linux
•
장점 : Linux의 핵심적인 부분만 사용하여 비용적인 부분을 덜 수 있다.
•
범용성이 좋고 오픈소스라 접근성이 높다.
•
많은 장치의 driver를 제공한다.
•
기존의 RTOS보다 많은 메모리를 요구한다.
•
범용 OS로 설계되어 실시간성을 지원하지 못한다.
•
높은 인터럽트 지연시간, 높은 스케쥴러 지연시간
•
GUI환경을 개발하기가 어렵다.
Interrupt service
•
비동기적 이벤트를 CPU에 알리는 방법
•
외부에서 들어오는 중요한 신호로 시간에 민감한 경우가 있기에 Interrupt Latency가 짧은 것이 좋음.
•
ISR자체도 짧은 것이 좋은데 그 이유는 ISR자체가 길어지면 Interrupt nesting(인터럽트를 처리하는 중 또 인터럽트가 발생하는 문제)이 되기 쉽기 때문
Driver와 Controller의 차이
•
드라이버는 하나의 기능을 수행하는 I/O 디바이스의 종류를 구분해준다.(디스크 기능을 하는 SSD, 하드디스크 등)
•
컨트롤러는 하나의 기능을 수행하는 I/O 디바이스당 하나씩 존재(키보드 컨트롤러, USB 컨트롤러, 디스크 컨트롤러 등)
지연시간
•
인터럽트 레이턴시 : 인터럽트가 리퀘스트되고 해당 태스크가 끝나기까지의 시간
•
인터럽트 리스폰스 : 인터럽트 신호를 주고 ISR전까지의 시간
•
태스크 리스폰스 : 인터럽트 리퀘스트부터 기존(혹은 새로운)태스크 실행 직전까지의 시간
•
인터럽스 리커버리 : 인터럽트가 끝나고부터 태스크 시작전까지의 시간
•
ISR이 종료되고 새로운 태스크 수행이 발생할 때 우선순위에 따라 처리과정이 다르다.
스케쥴링
•
Rate Monotonic Scheduling(RMS) : 주기가 짧은 태스크의 우선수위를 높인다.
•
Earliest Deadline First(EDF) : 마감시간이 얼마 남지않은 태스크의 우선순위를 높임.
교차개발환경
•
Embedded System에서 SW 개발을 위해 다른 머신에서 개발 환경을 구축