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 |