[임베디드 시스템] #1 Basic

주멩·2022년 10월 18일
0

📌 임베디드 시스템이란?

  1. 컴퓨터 하드웨어와 소프트웨어의 결합
    • ex) mediaCup
  2. 특수한 목적을 수행하도록 디자인됨
    • general-purpose(반대개념) : 컴퓨터
    • special-purpose : 전화기(통화), 전자레인지(음식 데움)
  3. 교차 개발 환경(cross=development platform)
    • 프로그래머 관점에서 제일 중요하다고 할 수 있는 특징
    • 코드작성(PC) -> 컴파일(PC) -> phone에 다운로드 ->수행(phone)
    • host는 PC, target은 phone
    • 임베디드 시스템에 다운로드 후 거기서 실행.
    • 개발(host)과 실행 장소(target)가 다르다.
  4. 실시간(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가지 디바이스 핸들링 과정

  1. 디바이스 체크 routine
    • 디바이스 체크
    • ISR이라고도 부름(Interrupt service routine)
      - 핸들러를 빨리 실행하는 것이 중요
      - 가능한 한 짧은 기간 동안 실행하는 것이 중요
      - 일반적으로 긴급한 대응이 필요
  2. 데이터 프로세싱 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

  • 긴박한 task부터 처리
profile
예쁜 노트

0개의 댓글