📌 임베디드 시스템이란?
- 컴퓨터 하드웨어와 소프트웨어의 결합
- 특수한 목적을 수행하도록 디자인됨
- general-purpose(반대개념) : 컴퓨터
- special-purpose : 전화기(통화), 전자레인지(음식 데움)
- 교차 개발 환경(cross=development platform)
- 프로그래머 관점에서 제일 중요하다고 할 수 있는 특징
- 코드작성(PC) -> 컴파일(PC) -> phone에 다운로드 ->수행(phone)
- host는 PC, target은 phone
- 임베디드 시스템에 다운로드 후 거기서 실행.
- 개발(host)과 실행 장소(target)가 다르다.
- 실시간(real-time)
- 데드라인(시간 조건) 존재
- Hard real-time systems : 영향 큼, 제한적 (비행기 조종 시스템)
- Soft real-time systems : 영향 적음 (PMP)
📌 임베디드 시스템 예시
가전기기 : cell phone, PDA, PMP, playstation
의료 모니터링 디바이스
비행기, 우주선
교통 시스템 : ETC, ITS
+) 등등. 필요성은 미래에 더 증가할 것이다.
스마트폰 : 폰+멀티미디어+오락 (소형 HW 성능 발전으로 인해 폰이 발전함)
IoT(홈 네트워킹 시스템): 물건에 임베디드 탑재, 네트워크로 연결, 각각 특수목전 존재
📌 임베디드 시스템(내장형 시스템)은 큰 시스템의 구성요소로 쓰인다.
- desktop PC : 키보드, 마우스
- modern car : 잠김방지 브레이크, 모니터, 배기가스 컨트롤, 대시보드 등
📌 임베디드 소프트웨어 아키텍쳐
- Round-robin
- Round-robin with interrupt
- Function queue scheduling
- Real-time operating systems
- Embedded Linux
밑으로 갈수록 향상됨. (RR이 가장 간단)
결정 조건 : 1) 임베디드 하드웨어 2) 소프트웨어 application 특징
📌 2가지 디바이스 핸들링 과정
- 디바이스 체크 routine
- 디바이스 체크
- ISR이라고도 부름(Interrupt service routine)
- 핸들러를 빨리 실행하는 것이 중요
- 가능한 한 짧은 기간 동안 실행하는 것이 중요
- 일반적으로 긴급한 대응이 필요
- 데이터 프로세싱 routine
- 디바이스로부터 온 데이터 처리
- task routine
- long time
📌 Round-robin
while(1)
{
if(Device A needs service)
take care of A;
process data from A;
if(Device B needs service)
take care of B;
process data from B;
...
if(Device J needs service)
take care of J;
process data from J;
}
- 디바이스 체크와 데이터 프로세싱 두가지 루틴 반복.
- 문제점 : 디바이스 체크 루틴(ISR)이 지연될 수 있다.
- 위 경우는 ISR J의 response time이 worst case일 때 굉장히 느리다(위에꺼 A부터 쭉 다 체크해야해서)
📌 Round-robin with interrupt
while(1)
{
if(A flag is set)
A task code
if(B flag is set)
B task code
if(C flag is set)
C task code
}
ISR을 별도의 함수로 구현 -> flag 세팅
ISR A : Set flag A
ISR B : Set flag B
ISR C : Set flag C
- ISR은 테스크 루틴보다 높은 우선순위를 가진다.
- ISR끼리 우선순위 존재할 수도 있다.
- 모든 task 코드는 같은 우선순위를 가져서 FIFO 순서대로 실행된다.
- 문제점 : 긴박한 일이 지연됨
Round-robin의 디바이스 체크 루틴이 지연되는 문제 해결
ISR 함수는 메인 loop보다 우선순위가 무조건 높아서 ISR 빠른 처리 가능
while문 들어와서 if(A flag is set)들어가기 전에 ISR 함수들 실행먼저 됨
📌 Function queue scheduling