• Embed Doc
  • Readcast
  • Collections
  • CommentGo Back
Download
 
114
Embedded SystemRTOS 포(uC/OS-II)
 
삼성 소프트웨어 멤버쉽
Digital System Design Lab.
김종수
(promise@secsm.org)
박선화
(psh@cscsm.org)
근래에
 
설계되는
 
복잡한
 
구조의
 
임베디드
 
시스템을
 
용하기
 
위해
,
혹은
 
구조는
 
간단하지만
 
조금이라도
 
시스템프로그래머가
 
쉽게
 
응용
 
프로그램을
 
작성하거나
 
관리를편리하게
 
하기
 
위해서
 
필요한
 
작은
 
크기의
 
실시간
 
운영체제를
 
 
가지
 
대표적인
 
시스템에
 
포팅해
 
보자
.
들어가기 전에..
오래
 
전부터
 
일반적인
 
임베디드
 
시스템에서는
 
간단한제어루프
 
구조를
 
갖는
 
프로그램을
 
사용해
 
왔다
.
시스템
 
성상
 
복잡하고
 
 
프로그램들이
 
실리지
 
않았으며
,
일련의흐름을
 
개발자가
 
거의
 
정확히
 
알고
 
있었으므로
 
순차적인프로그램이
 
가능한
 
것이다
.
이러
 
시스
 
설계
 
방식
 
Foreground/Background
혹은
 
Super Loops
라고
 
부른다
.
그럼
 
복잡한
 
시스템
 
프로그래밍은
 
어떻게
 
만들어지는것일까
?
답은
 
간단하다
.
담당
 
프로그래머가
 
밤낮없이
 
머리를
 
썩혀가며
 
프로그램을
 
쥐어
 
짜내면
 
되는
 
것이다
.
 
들어
LED
 
구동하는
 
하나의
 
작업이
 
있다고
 
가정하자
(
앞으로
 
우리는
 
이러한
 
하나
 
하나의
 
독립된
 
작업을
TASK
라고
 
부르도록
 
 
것이다
).
 
프로그램은
 
너무
 
간단해서
 
대부분의
 
임베디드
 
시스
 
개발자들이
 
 
테스트로
 
많이
 
사용하는
 
작업이다
.
여기
 
시스템에
 
연결된
 
스위치로부터
 
입력을
 
받아들이는
TASK
 
하나
 
 
삽입해보자
.
TASK
 
종류와
 
처리량
 
따라
 
현실적으로
 
복잡함의
 
정도가
 
모두
 
틀리겠지만
 
 
모두
 
같다고
 
가정하면
, TASK
2
개가
 
되었으므로
 
잡도도
2
배가
 
 
것이다
. LED,
스위치
 
모두
 
인간과
 
관련
 
인터페이스이기
 
때문에
 
상당히
 
느리게
 
동작하여야
 
 
이를
 
처리하는데
 
오히려
CPU
 
빠름이
 
문제가
 
 
경이다
.
그래서
2
 
정도라고
 
 
 
있다
.
!
여기에
 
센서입력과
 
소리
 
 
 
측정을
 
 
 
있는
 
스템을
 
만들기
 
위해
 
필요한
 
프로그램을
 
추가해
 
보자
.
다시
4
개가
 
 
늘었으니
 
6
개의
TASK
CPU
 
처리해
 
 
한다
.
그러면
 
이를
 
위해
 
다시
 
프로그램을
 
짜게
 
되면
 
잡도나
 
노력이
 
처음보다
6
 
증가하게
 
되는가
?
절대
 
그렇
 
않다
. TASK
 
서로가
 
물리고
 
물리는
 
관계가
 
되면
 
마도
 
복잡도는
 
거의
 
지수적으로
 
증가하게
 
 
것이다
.
언제가
 
되든지
 
앞으로도
 
간단한
 
시스템에서는
 
적은
 
 
115
월간 전자기술/ 2000년 10월호
 
(
메모리
,
속도
 
)
 
이용하여
 
단순한
 
프로그램
 
방식으
 
사용하게
 
 
것이다
.
그러나
 
 
 
처리할
 
일들이
 
많아지면
(
세상은
 
점점
 
복잡해지지
 
않던가
)
위와
 
같이
 
시스템프로그램의
 
복잡도와
 
난이도가
 
크게
 
증가하여
 
오히려
 
스템이
 
비효율적이
 
되거나
 
불안정
 
혹은
 
제어불능의
 
상태에까지
 
이를
 
수도
 
있다
.
또한
 
시대
 
흐름에
 
밀접하게
 
반응하여
 
만들어지는
 
임베디드
 
시스템들은
 
근래에
 
네트워크
 
접속을
 
필요로
 
하는
 
우가
 
많아지고
 
있다
.
이를
 
위해
 
네트워크를
 
지원하기
 
위한통신
 
프로토콜
(
네트워크
 
스택
)
 
탑재해야
 
하는데
 
이것은매우
 
복잡하다
.
불과
2
3
 
전만
 
하더라도
 
네트워크는학내
 
연구
 
전산망이나
 
규모
 
있는
 
기업체에서나
 
이용하는것이었지만
 
지금은
 
일반
 
가정에서도
 
사용할
 
 
있는
 
시대
 
바뀌었음을
 
염두해
 
두어야
 
 
것이다
.
이러한
 
복잡함을
 
없애기
 
위한
 
방책으로
 
근래에
 
임베디
 
운영체제가
 
이슈로
 
대두되고
 
있다
.
또한
 
적은
 
가격으로
 
충분한
 
자원을
 
사용할
 
 
있다는
 
점과
 
개발에
 
편리하다
 
 
때문에
 
이들은
 
더욱
 
빛나고
 
있는
 
것이다
.
운영체제
 
시스템
 
자원과
 
특정
 
작업을
 
관리하고
 
배치시키는
 
역할
 
해주면서
 
개발자의
 
프로그램이
 
단순화되고
TASK
 
등을
 
관리하는데
 
 
도움이
 
되고
 
있어이를
 
시스템에
 
탑재하는
 
것이
 
바람직한
 
상황이
 
되어가고있는
 
것이다
.
이러한
 
기술동향에
 
따라
 
실시간
 
운영체제의
 
커널
 
자체
 
대한
 
지식뿐만
 
아니라
 
실제로
RTOS
 
사용한
 
임베디
 
시스템의
 
구축
 
 
구현에
 
이르기까지
 
전반적인
 
개발
Flow
 
익혀보도록
 
하자
.
우리는
 
이를
 
위해
 
공개용
RTOS
uC/OS-II
 
커널
 
분석하고
,
제작된
 
 
가지
CPU
보드에
RTOS
 
팅함으로써
RTOS
 
보다
 
깊이
 
있게
 
이해하고
 
활용할
 
있는
 
능력을
 
갖게
 
 
것이다
.
항상
 
새로운
 
현실에
 
빨리
 
응해야
 
하는
 
것이
 
개발자의
 
숙명이
 
아니던가
.
실시운영체제(RTOS : Real-TimeOperating System)
실시간
 
운영체제
(Real-Time OS)
 
실시간으로
 
작업
 
처리해야
 
하는
 
시스템에
 
필요한
 
일종의
 
관리자이다
.
리가
 
일상생활에서
 
사용하는
 
 
용어를
 
살펴보
.
관리자는
 
 
자체로
 
실무에
 
참여하지
 
않지만
 
 
실무자들을
 
적절히
 
조절하는
 
역할을
 
하는
 
 
필요한
 
존재이다
.(
사실
 
개발자의
 
입장에서
 
때론
 
관리자가
 
귀찮은
 
존재로
 
여지기도
 
하겠지만
..)
관리자가
 
소수의
 
그룹에서는
 
그리많은
 
필요성을
 
느끼지
 
못하지만
 
일정
 
규모가
 
되면
 
 
필요하게
 
되는
 
것처럼
 
복잡한
 
시스템의
 
관리자로서
 
운영체제
 
이와
 
같은
 
역할을
 
한다
.
보통
 
실시간
 
시스템이라
 
함은어떤
 
입력에
 
대한
 
출력이
 
요구하는
 
응답
 
속도
 
내에서
 
처리되도록
 
설계된
 
시스템을
 
말하며
 
이런
 
종류의
 
시스템에
 
 
적합한
 
관리자를
RTOS
라고
 
 
 
있다
.
실시간
 
시스템은
 
여러
 
가지
 
시스템에
 
적용되나
 
특히
 
베디드
 
시스템에
 
많이
 
사용되며
,
비실시간
 
시스템보다
 
자인하기가
 
 
어렵다
.
실시간
 
운영체제를
 
쓰지
 
않는
 
시스템
 
프로그램을
 
작성하는
 
경우
Interrupt
처리를
 
제외하고는
 
프로그래머가전체적인
 
구조와
 
패턴을
 
미리
 
예측하고
 
나서
 
순차적인
 
로그램을
 
작성해야
 
하기
 
때문에
 
전체적인
 
시간
 
분배
 
같은작업도
 
개발자가
 
몫이
 
된다
.
계획을
 
정확히
 
세운다면
 
운영체제를
 
사용할
 
때보다
 
운영체제
 
탑재에
 
들이는
 
시간이나코드의
 
크기면에서
 
 
 
효율적이게
 
되지만
 
프로그램이복잡해지면
 
이것도
 
여의치
 
않게
 
 
것이다
.
계속
 
 
용어가
 
등장하고
 
있는데
 
이는
 
무엇
 
의미하는
 
것일까
.
여기서
 
말하는
 
실시간은
 
입력
 
즉시출력이
 
나옴을
 
뜻하지는
 
않는다
.
아직까지
 
그런
 
이상적인시스템을
 
본적이
 
없다
.
우리는
 
 
개념을
 
상대적인
 
관점에
 
바라봐야
 
한다
.
극히
 
짧은
 
시간
 
내에
 
제공되어야
 
하는
 
벤트
 
처리
DSP
ASIC
등으
 
특화되어
 
하드
 
리얼타임
(Hard-Real-Time)
으로
 
분류되며
 
일반적으로
 
우리가
 
하는
 
실시간이라
 
하는
 
것들은
 
주어진
 
제한
 
시간
 
안에
 
할당
 
일을
 
처리할
 
 
있는
 
소프트웨어
 
리얼타임을
 
말한다
.
Soft Real-Time :
TASK
 
가능한
 
 
빨리
 
수행할
 
있도록
 
구성되나
,
특정
 
시간에
 
끝이나는
 
것을
 
보장하지못함
Hard Real-Time :
TASK
 
정확히
 
제시간에
 
끝날
 
있도록
 
구성됨일반적인
 
실시간
 
시스템은
 
 
 
가지
 
모두의
 
특징을
 
합하여
 
구성되고
 
있으며
 
여러
 
작업을
 
처리하는데
 
정해진시간
 
내에
 
각기
 
출력을
 
 
 
있다면
 
이것이
 
실시간
 
시스템
 
 
 
있다
.
 
116
실시간
 
운영체제는
 
일반
 
운영체제와
 
개념은
 
거의
 
같다
.
약간
 
다른
 
점이
 
있다면
 
메모리와
 
같은
 
자원의
 
효율성에
 
점을
 
맞추느냐
 
아니면
 
시간
 
제약에
 
초점을
 
맞추느냐라는정도일
 
것이다
.
또한
 
여러
 
사용자에
 
의해
 
동시
 
접속되는시스템에서는
 
 
사용자들이
 
실행하는
 
프로그램이
 
각각
TASK
로서
 
수행이
 
되고
 
보통
 
우선순위에
 
거의
 
차이를두지
 
않지만
,
실시간
 
운영체제에서는
TASK
 
우선순위
 
정하여
 
실시간
 
처리라는
 
점에
 
좀더
 
충실하게
 
설계한다
.
결론적으로
 
불규칙적으로
 
들어오는
 
여러
 
가지
 
입력을각각의
 
작업이
 
원하는
 
시간
 
내에
 
끝내기
 
위해서는
 
이들간
 
작업을
 
조절해
 
주는
 
관리툴이
 
필요한데
 
 
작업을
 
수행하는
 
 
프로그램이
 
실시간
 
운영체제이고
 
이는
 
대단히
 
용하게
 
사용될
 
 
있게
 
된다
.
운영체제에 대한 기본 개념
운영체제가
 
탑재되면
 
이로
 
인해
 
약간의
 
부하가
 
약간의오버로드가
 
발생하게
 
되지만
 
프로그래머의
 
입장에서
 
로그램을
 
보다
 
쉽게
 
 
 
있고
 
프로그램
 
실행
 
성능을
 
 
예측하기
 
쉽게
 
해주며
 
완성된
 
프로그램의
 
유지보수를위한
 
관리가
 
쉽도록
 
도와주기
 
때문에
 
충분한
 
보상이
 
된다
.
운영체제는
 
기본적으로
CPU
에서
 
처리되는
 
프로그램들을
 
관리하기
 
위한
TASK management(TASKscheduling, Communication, Synchronization
 
포함
) Memory
자원을
 
효율적으로
 
사용하기
 
위한
Memory management, Data
입출력을
 
담당하는
I/Omanagement, Time Management, Interruptservice, File system management
등을
 
통하여
 
자원사용
 
효율을
 
높일
 
 
있게
 
설계된다
.
위와
 
같이
 
운영체제를
 
구성하고
 
있는
 
요소들에
 
대해
 
아보기
 
위해
 
기본적으로
 
집고
 
넘어가야
 
 
중요한
 
개념에대해서
 
살펴보자
.
지면의
 
크기상
 
모두를
 
자세히
 
다루지는못하나
 
관련된
 
도서나
 
자료가
 
주변에
 
많이
 
있으므로
 
이를적극
 
활용하기
 
바란다
.
Resource :
자원은
TASK
 
사용하는
Entry(I/O,
변수
,
메모리
 
)
 
뜻한다
.
Shared Resource :
 
 
 
이상의
TASK
 
의해서사용되는
(
공유되는
)
자원을
 
말하며
 
데이터의
 
원치
 
않는
 
조를
 
방지하기
 
위해서는
 
공유
 
자원에
 
접근할
 
 
독점권을얻어야
 
하는데
 
이를
Mutual Exclusion
이라고
 
한다
.
Multitasking :
 
어떤
 
응용
 
프로그램이
 
수행되기
 
해서는
 
여러
 
기능들이
 
동시에
(
물리적으로는
 
아님
)
수행되어야
 
 
필요가
 
있고
 
이를
 
순차적으로
 
프로그램하기
 
렵기
 
때문에
 
사용자가
 
프로그램을
 
쉽게
 
하기
 
위해서
 
도입
 
개념이며
 
여러
 
가지의
 
작업이
 
동시에
 
이루어지는
 
것처
 
처리된다
(
실제로
1
개의
CPU
로는
 
 
순간에
 
하나의일만
 
처리할
 
 
있다
). CPU
사용률을
 
최대로
 
높이고
 
 
구조의
 
애플리케이션을
 
제공한다
.
이를
 
이용하면
 
실시
 
애플리케이션에서의
 
복잡성을
 
줄여주므로
 
디자인하기쉽게
 
된다
.
Context Switching :
 
여러
TASK
 
번갈아
 
가며작업을
 
 
 
 
작업을
 
중단하고
 
다른
TASK
 
수행하기직전에
 
이전
TASK
 
상태를
 
저장하고
 
새로운
TASK
상태를
 
불러
 
들이는
 
교환작업이
 
필요하다
.
메모리
 
자원은
TASK
마다
 
따로
 
할당하므로
 
문제가
 
없으나
CPU
 
레지스터들은
 
공유
 
자원이므로
 
충돌을
 
방지하기
 
위해서는
 
상태
 
값을
 
저장해야
 
한다
. Context Switching
 
실제적인
 
프로세스
 
작업이
 
아니므로
 
이에
 
걸리는
 
시간은
Over-head
이며
 
짧으면
 
짧을수록
 
 
 
효율적인
 
운영체제가된다
.
Kernel :
 
운영체제의
 
기능
 
중에서도
 
핵심이
 
되는
 
분을
 
커널이라고
 
하고
Multitasking
시스템
 
관리자로서여기에서
Context switching, TASK scheduling,Memory management
등의
 
기능을
 
한다
.
보통
 
커널은시스템에
 
약간의
 
부하
(
2
5%)
 
주며
 
임베디드용의경우
 
추가적으로
 
코드를
 
위한
ROM
 
커널
 
데이터
 
구조
TASK1TASK2 TASK3
STACK STACK STACKCPURegister
SP
StatusSPPriorityStatusSPPriorityStatusSPPriority
of 00

Leave a Comment

You must be to leave a comment.
Submit
Characters: ...
You must be to leave a comment.
Submit
Characters: ...