정보공간_1

[RTOS] RTOS와 uC/OS의 소개 본문

IT 놀이터/IT Storehouse

[RTOS] RTOS와 uC/OS의 소개

알 수 없는 사용자 2011. 8. 19. 11:25


이번에는 색다르게 리눅스에서 조금은 벗어나서 ...

RTOS에 대해 말해보고자 합니다

그냥 맘 편하게 들어주세요

학교 수업 시간을 통해 RTOS에 대한 대략적인 이야기는 다들 아시리라 생각 됩니다만...

RTOS는 Real Time Operating System의 약자로 실시간 운영체제라고 합니다.

이것을 실제시간에 작동하는 운영체제라고 오해하시면 않되는건 다들 아시져

RTOS는 정해진 시간에 정확히 수행하는 그래서 개발자나 사용자가 시스템의 시간을 예상할 수 있는 시스템에 적용이 됩니다

실제로 윈도우 계열이나 리눅스 계열은 RTOS 계열의 운영체제가 아니져 우리가 인터넷을 1초 정도 늦게 사용한다고

세상이 무너지는 참사는 벌여지지 않습니다. ㅋㅋㅋ

그렇다면 RTOS는 어떠한 용도로 사용이 될까요 ??

앞에 예를 들었던 경우를 역으로 생각해 보면 좋을 것 같습니다.

전투기에 들어가는 운영체제에서 엔진이상이 생겼을 때 탈출하는 시간을 20ms 로 맞춰났는데 ... 그게 그거보다 심각하게 느려질 수 있다면 아주 심각한 문제가 발생하겠져.

또한 RTOS는 모든 태스크에 대해서 컨트롤을 할 수 있기 때문에 세밀하게 프로그램을 설계 할 수 있지만 대규모 자원에 대해서는 그렇게 하기가 생각보다 쉽지는 않다.

따라서 펌웨어 수준에 보다는 복잡한 프로그램을, 또한 단일한 프로그램을 벗어나서 멀티 태스킹을 할 경우에는

RTOS가 꼭 필요하다가 말 할 수 있겠습니다.

그럼 RTOS에는 다양한 종류가 있습니다. 그중에서도 유명한 건 uC/OS- ii / iii 과 FreeRTOS 가 있습니다.

FreeRTOS는 무료로 배포되는 RTOS 이고 uC/os 같은 경우에는 무료로 배포되는 버젼과 라이센스를 받고 권한을 주는 코드도 있다.

저는 uC/OS에 대해서 한번 리뷰식으로 ... 간단하게 짚고 넘어져 가보고자 합니다

uC/OS의 소스트리 구조는 크게 5가지로 나눠 지게 됩니다.

먼저 uC/CPU 입니다 여기에는 CPU에 관련된 기본적인 사항을 코딩 합니다.

CPU의 Clock, Register 등등 다양한 CPU의 상세 명세를 해놓게 되는데요 ... 만약에 다른 기종의 보드에 포팅을 하고자 할 때 이 부분에 해당하는 내용을 DataSheet를 보고 수정한다면 원할하게 작업을 할 수 있겠습니다.

그리고 uC/OS 부분 입니다. 이 부분은 CPU의 영향을 받지 않는 다시 말해, 하드웨어에 종속적이지 않는 코드들이 들어가게 됩니다

실질적인 uC/OS의 본체라고 볼 수 있겠는데요. 스케줄러, 큐, 세마포어, 뮤텍스, 타이머 등등 의 함수정의와

uC/OS에서 이용되는 각종 자료구조가 잘 정의되어 있습니다.

다음은 BSP와 관련된 부분입니다. 이부분은 CPU와 다르게 해당 보드에 달려있는 각종 주변 기기에 대한 정의를 해놓게 됩니다.

LED, Button, LCD 등등 기타 다른 부속기기에 대한 내용이 들어가게 됩니다

또 APP 부분으로 이부분에는 Main 함수를 포함하여 실제로 들어가는 서비스를 비롯하여 system에서 요구하는 프로그램을 작성하게 됩니다

마지막으로는 uC/OS의 장점이라 볼 수 있는 서비스 팩과 관련된 부분입니다.

uC/OS는 다양한 서비스팩을 지원합니다. 예를 들면, TCP/IP , Probe, LCD , GUI , Bluetooth , USB 등등과 같이 다양한 요소에 대해서

지원을 해서 내가 어떤 디바이스를 추가하고자 할 때 그 서비스 팩이 있으면 손쉽게 추가할 수 있고 해당 API를 지원 받을 수 있습니다.

또한 학습용으로 이용하고자 하면 무료로 코드를 받아 볼 수 있으니 학습용으로도 괜찮다 할 수 있습니다.

uC/OS는 다른 여타 OS에 비해 비교적으로 아주 작은 규모로 만들어 져 있습니다.

그렇다는 것은 처음 시스템 프로그램을 접해 보는 사람들도 쉽게 프로젝트나 학습을 진행 할 수 있습니다.

더불어 작고 정교한 시스템을 만들고자 하는 사람에게도 적격인 OS라 할 수 있습니다.


이번에 삼성 소프트웨어 멤버쉽에서 창의과제로 MFC를 이용한 uC/OS 디버거 프로그램을 진행했습니다.

비록 몇가지 어려움도 있었지만, 재미있고 유익하게 프로젝트를 진행했습니다.

이글을 보시는 여러분들도 system programing에 대해 막연한 어려움이 있으시다면 RTOS를 적극적으로 추천드리고 싶네요