Vorsprung durch Technik

블로그 이미지

MSNU

라운드로빈

myPPT 2015. 1. 18. 22:01

































5.1 라운드로빈 구조

5.2 인터럽트 라운드로빈 구조

5.3 펑션큐스케줄링 구조

5.4 RTOS 구조

5.5 알맞은 소프트웨어 구조의 선택

임베디드 소프트웨어 구성

 하드웨어와 통신하기 위한 부분

• 인터럽트 처리


 애플리케이션 서비스를 위한 부분

• Task code

임베디드 소프트웨어 구조를 결정하기 위한 요소

 얼마나 많은 시스템의 응답을 제어해야 하는가?

라운드로빈 구조

 가장 단순한 방식

 서비스가 필요한 장치들은 순차적으로 순회하면서 서비스를 해주는 방식

 비교적 느린 응답시간을 허용하거나, 서비스를 요구하는 장치가 자주 변하지 않는 경우

 e.g. 디지털 멀티미터, 디지털 시계, 전자레인지 etc.

라운드로빈 방식이 부적절한 경우

 마이크로 프로세서가 메인 루프를 도는 시간 보다 짧은 응답시간을 요하는 경우

 수행할 작업이 긴 시간을 소요하는 경우

 이 구조는 깨어지기 쉬움

• 다른 장치의 추가

라운드 로빈 구조의 예

void main (void)

{

  while (TRUE)

  {

    if (!! I/O 장치 A가 서비스가 필요하다면)

    {

    !! I/O 장치 A에 대해 필요한 것을

  처리한다.

    !! 데이터를 I/O 장치 A에 넘겨주거나

  가져온다.

    }

    if (!! I/O 장치 B가 서비스가 필요하다면)

    {

!! I/O 장치 B에 대해 필요한 것을

  처리한다.

!! 데이터를 I/O 장치 B에 넘겨주거나

   가져온다.

    }

인터럽트 라운드로빈 구조

 라운드로빈 구조에 인터럽트 개념 도입

 처리방식

 메인 루프를 반복 탐색

 인터럽트 발생시 해당 ISR로 분기

 인터럽트 처리 후, 수행할 Task Code flag 설정

 Task Code 수행, flag reset

- Task code 처리 중 인터럽트 발생시 인터럽트 우선 처리

 단점

• ISR과 main의 task code 사이에서 데이터 공유 문제가 발생할 수 있음

• 모든 태스크 코드들이 동일한 우선순위로 실행됨

인터럽트 라운드로빈 구조의 예

 인터럽트 라운드로빈 구조의 예

BOOL fDeviceA = FALSE;

BOOL fDeviceB = FASLSE;

.

.

.

BOOL fDeviceZ = FALSE;


Void interrupt vHandleDeviceA (void)

{

!! I/O 장치 A를 처리한다

fDeviceA = TRUE;

}

인터럽트 라운드로빈 구조의 예 (Cont’d)

void main (void)

{

  while (TRUE)

    {

      if (fDeviceA) {

         fDeviceA = FALSE;

         !! I/O 장치 A로 데이터를

       넘겨 주거나 가져 온다

      }

      

라운드로빈 구조를 위한 우선 순위 레벨

펑션큐스케줄링 구조의 특징

 ISR은 인터럽트 발생시 수행해야 할 코드(함수)에 대한 포인터를 펑션 큐에 삽입한다.

 메인 함수는 펑션 큐로부터 함수를 읽어와서 수행한다.

 인터럽트 루틴이 발생하는 순서대로 메인 함수가 함수를 호출해야 할 필요는 없다.

• 즉, 우선 순위를 고려해서 함수가 호출되도록 코드를 작성할 수 있다.

 최악의 대기 시간: 태스크 코드 함수 중에서 제일 긴 함수의 수행 시간 + ISR의 수행 시간

• 가장 긴 코드가 막 시작 되었을 때, 우선 순위가 가장 높은 인터럽트가 발생하는 경우

• 낮은 우선 순위의 태스크 코드가 수행시간이 길다면, 높은 우선 순위의 함수의 응답시간에 영향을 줄 수 있음 (단점)

 낮은 우선 순위의 태스크 코드의 응답성이 나빠질 가능성이 있음(단점)

 제어가 다소 복잡

펑션큐스케줄링 구조

 평션큐스케줄링 구조의 예

!! 함수 포인터들의 큐;

void interrupt vHandleDeviceA (void)

{

!! I/O 장치 A에 대해 필요한

   것을 처리

!! function_A 에 대한 함수

  포인터를 함수 포인터들의

  큐에 삽입

}

void interrupt vHandeDeviceB (void)

{

!! I/O 장치 B에 대해 필요한 일을 처리

!! function_B 에 대한 함수 포인터를

   함수 포인터들의 큐에 삽입

}

5.4 RTOS 구조

 RTOS 구조의 예

void interrupt vHandleDeviceA (void)

{

!! I/O 장치 A에 대해 필요한 일을 처리한다

!! 시그널 X를 설정한다

}

void interrupt vHandleDeviceB (void)

{

!! I/O 장치 B에 대해 필요한 일을 처리한다

!! 시그널 Y를 설정한다

}

.

.

.

RTOS(Real-Time Operating System)와 다른 구조들의 차이점

 인터럽트 루틴과 태스크 사이에서 필요한 시그널의 교환은 RTOS가 처리 (프로그래머를 위한 편의사항)

 코드 작성자는 다음에 수행 될 함수에 대해서 관여하지 않아도 됨 (프로그래머를 위한 편의사항)

• 이 부분은 모두 RTOS가 알아서 처리해 줌

 RTOS는 다른 서브루틴을 수행하기 위해서, 현재 처리 중인 서브루틴을 일시 정지 시킬 수 있음 (RTOS의 본질)

• RTOS는 ISR의 응답 우선 순위 뿐만 아니라, 태스크 코드의 우선 순위도 조정 가능

RTOS 구조의 단점

 RTOS 구조의 기본적인 단점

• RTOS 구입 비용

• RTOS 자체가 시스템의 프로세스 시간을 약간 소비

RTOS 구조를 위한 우선 순위 레벨

다양한 소프트웨어 구조의 특징

5.5 알맞은 소프트웨어 구조의 선택

 설계하려는 시스템의 응답 조건에 적절한 시스템 중 가장 간단한 구조를 선택

• 임베디드 시스템 소프트웨어 작성 자체가 복잡하기 때문에, 필요 이상으로 복잡한 구조의 선택은 임베디드 시스템 소프트웨어 작성을 더욱 복잡하게 만듦

 만약 설계하려는 시스템이 RTOS를 사용해야 할 필요가 있는 응답 조건을 가지고 있다면, RTOS 구조를 사용하는 방향으로 결정을 해야 함

• 대부분의 상용 RTOS는 시스템을 테스트 하고, 디버깅을 쉽게 할 수 있는 유용한 툴들을 같이 제공

 필요한 경우 여러 구조들(라운드로빈, 인터럽트 라운드로빈, …)을 혼합한 형태를 만들 수도 있음

요약

 응답 조건은 소프트웨어 구조를 선택하는데 있어서 가장 중요한 요소이다.

 네 가지 소프트웨어 구조 각각의 특징은 표 5.1에 나와 있다.

 일반적으로, 하려는 일에 맞는 가장 간단한 구조를 택하는 것이 좋다.

 RTOS 구조의 장점 중의 하나는 RTOS를 구입 함으로서, 직접 코드를 작성하지 않아도 어떤 문제들은 해결을 할 수가 있다는 것이다.

 어떤 시스템은 몇 가지 구조를 같이 사용하는 혼합 구조를 사용할 수도 있다.






'myPPT' 카테고리의 다른 글

우리나라 금융기관의 종류  (0) 2015.01.26
거시 경제학과 두 학파-경제성장이론(economic growth theory),경기변동이론(business cycle theory)  (0) 2015.01.23
사회교환(Social exchange theory) 과 자원동원(Resource mobilization theory) , 다원주의, 엘리트주의 이론, 사회구성론, 권력의존 이론에 대한 이해  (0) 2015.01.15
선형모형과 행렬대수  (1) 2015.01.13
패션소비자 행동  (0) 2015.01.08
Posted by MSNU






favicon

Vorsprung durch Technik

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 분류 전체보기 (993)
    • myPPT (813)
    • 시리즈 (164)
      • 연소 (14)
      • 경제 (5)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바