마이크로컨트롤러 운영 체제
Micro-Controller Operating Systems개발자 | 미크리움, 주식회사 실리콘 랩스 |
---|---|
기입처 | ANSI C |
동작 상태 | 현재의 |
소스 모델 | 2020년 현재 오픈 소스 |
초기 릴리즈 | 전( |
최신 릴리즈 | OS-II | 전(2016년)
저장소 | github |
마케팅 대상 | 임베디드 기기 |
이용가능기간: | 영어 |
플랫폼 | ARM Cortex-M3, -M4F, ARM7TDMI, Atmel AVR, eSi-RISC 및 기타 다수 |
커널 타입 | 실시간 마이크로커널 |
체납 사용자 인터페이스 | μC/GUI |
면허증. | Apache(2020년 기준), 이전 상용, 프리웨어 교육 사용 |
공식 웹사이트 | www |
마이크로컨트롤러 운영체제(MicroC/OS, μC/OS)는 1991년 Jean J. Labrose가 설계한 실시간 운영체제(RTOS)입니다.이것은 주로 프로그래밍 언어 C로 작성된 마이크로프로세서용 우선 순위 기반 선제 실시간 커널입니다.임베디드 시스템에서 사용하기 위한 것입니다.
MicroC/OS를 사용하면 C에서 여러 함수를 정의할 수 있으며 각각 독립된 스레드 또는 태스크로 실행할 수 있습니다.각 태스크는 서로 다른 우선순위로 실행되며 Central Processing Unit(CPU; 중앙처리장치)를 소유하고 있는 것처럼 실행됩니다.우선순위가 낮은 태스크는 우선순위가 높은 태스크보다 언제든지 우선할 수 있습니다.우선순위가 높은 태스크에서는 운영체제(OS) 서비스(지연이나 이벤트 등)를 사용하여 우선순위가 낮은 태스크를 실행할 수 있습니다.OS 서비스는 작업 및 메모리 관리, 작업 간 통신 및 [1]타이밍을 위해 제공됩니다.
역사
MicroC/OS 커널은 원래 Embedded Systems Programming 매거진의 3부 기사와 [2]Labrose의 책 μC/OS The Real-Time Kernel에 게재되었습니다.처음에 그는 자신의 사용을 위해 개발한 휴대용 OS의 내장을 간단히 설명하려고 했으나 나중에 버전 II와 III에서 상용 제품으로 개발했습니다.
μC/OS-II
μC/OS용으로 작성되어 1998년에 상용 제품으로 도입된 소스 코드를 기반으로 한 μC/OS-II는 마이크로프로세서 및 디지털 신호 프로세서(DSP)용 휴대용 ROM 가능, 확장성, 프리엠프티브, 실시간, 결정론적, 멀티태스킹 커널입니다.최대 64개의 작업을 관리합니다.사이즈는 5 ~24 KB로, 특정의 용도에 필요한 기능만을 포함할 수 있습니다.
대부분의 μC/OS-II는 휴대성이 뛰어난 ANSI C로 작성되며 타겟 마이크로프로세서 고유의 코드는 어셈블리 언어로 작성됩니다.후자의 사용을 최소한으로 억제하고, 다른 프로세서로의 이동을 용이하게 합니다.
임베디드 시스템에서 사용
μC/OS-II는 임베디드 기기용으로 설계되어 있습니다.생산자가 적절한 툴 체인(즉, C 컴파일러, 어셈블러 및 링커 로케이터)을 가지고 있으면 μC/OS-II를 제품의 일부로 삽입할 수 있다.
μC/OS-II는 다음을 포함한 많은 임베디드 시스템에서 사용됩니다.
태스크 상태
μC/OS-II는 멀티태스킹 운영체제입니다.각 작업은 무한 루프이며 다음 5가지 상태 중 하나가 될 수 있습니다(아래 그림 참조).
- 휴면 상태
- 준비가 되어 있습니다!
- 입니다.
- 대기 중(이벤트 대기 중)
- 인터럽트(Interrupt Service Route(ISR; 인터럽트 서비스 루틴))
또한 최대 64개의 작업을 관리할 수 있습니다.단, 이들 작업 중8개는 μC/OS-II용으로 예약하여 어플리케이션에는 최대 [3]56개의 작업을 남기는 것이 좋습니다.
커널
커널은 운영 체제의 대부분의 하우스키핑 작업을 수행하는 프로그램에 주어진 이름입니다.부트 로더는 제어를 커널에 넘깁니다.이것에 의해, 다양한 디바이스가 기존의 상태로 초기화되어 컴퓨터가 일반적인 [4]조작을 실시할 수 있게 됩니다.커널은 작업 관리(CPU 시간 관리) 및 [5]작업 간의 통신을 담당합니다.커널에 의해 제공되는 기본 서비스는 컨텍스트 스위칭입니다.
스케줄러는 [6]다음에 실행할 작업을 결정하는 커널의 일부입니다.대부분의 실시간 커널은 우선 순위 기반입니다.우선 순위 기반 커널에서는 CPU 제어가 항상 실행 준비가 된 가장 우선 순위가 높은 태스크에 부여됩니다.우선 순위 기반 커널에는 비선제 및 프리엠프티브의 두 가지 유형이 있습니다.비선호 커널에서는 [6]각 태스크가 CPU의 제어를 명시적으로 포기하기 위해 어떤 작업을 수행해야 합니다.시스템 응답성이 더 중요한 경우 프리엠프티브 커널이 사용됩니다.따라서 μC/OS-II 및 대부분의 상용 실시간 커널은 [7]프리엠프티브입니다.실행할 수 있는 가장 우선순위가 높은 태스크는 항상 CPU를 제어할 수 있습니다.
태스크 할당
실행률이 가장 높은 태스크에는 레이트 모노톤스케줄링을 사용하여 [8]가장 높은 우선순위가 부여됩니다.이 스케줄링 알고리즘은 스태틱priority 스케줄링 [9]클래스가 있는 Real-Time Operating System(RTOS; 실시간오퍼레이팅시스템)에서 사용됩니다.
태스크 관리
컴퓨팅에서 태스크는 실행 단위입니다.일부 운영 체제에서는 작업이 프로세스와 동의어이고 다른 운영 체제에서는 스레드가 있습니다.배치 처리 컴퓨터 시스템에서 태스크는 작업 내의 실행 단위입니다.μC/OS-II의 시스템 사용자는 다음 기능을 사용하여 작업을 제어할 수 있습니다.
- 태스크 기능
- 태스크 생성
- 태스크 스택 및 스택 체크
- 작업 삭제
- 태스크 우선 순위 변경
- 작업 일시 중단 및 재개
- 작업에[10] 대한 정보 가져오기
메모리 관리
fragment화를 피하기 위해 μC/OS-II를 사용하면 어플리케이션은 연속된 메모리 영역으로 구성된 파티션에서 고정 크기의 메모리 블록을 얻을 수 있습니다.모든 메모리 블록의 크기는 동일하며 파티션에는 정수 블록이 포함되어 있습니다.이들 메모리 블록의 할당과 할당 해제는 일정한 시간에 이루어지며 결정론적 [11]시스템입니다.
시간 관리
μC/OS-II에서는 시간 지연과 타임아웃을 추적하기 위해 정기적인 시간원을 제공해야 합니다.틱은 초당 10~1000회(헤르츠) 발생해야 합니다.틱 레이트가 빠를수록 시스템에 대한 오버헤드μC/OS-II가 증가합니다.클럭 틱의 빈도는 응용 프로그램의 원하는 틱 분해능에 따라 달라집니다.틱 소스는 하드웨어 타이머를 지정하거나 교류(AC) 전원 라인(50 또는 60Hz) 신호에서 인터럽트를 생성함으로써 얻을 수 있습니다.이 주기적인 시간원을 [12]클럭틱이라고 부릅니다.
클럭 틱이 결정되면 다음 작업을 수행할 수 있습니다.
- 태스크 지연
- 지연된 작업 재개
태스크 간의 커뮤니케이션
μC/OS-II에서의 태스크 간 또는 프로세스 간 통신은 세마포어, 메시지메일함, 메시지큐, 태스크 및 Interrupt Service Route(ISR; 인터럽트 서비스 루틴)를 통해 이루어집니다.작업 또는 ISR이 이벤트 제어 블록(ECB)이라고 불리는 커널 개체를 통해 작업을 시그널링할 때 서로 상호 작용할 수 있습니다.신호는 이벤트로 간주됩니다.
μC/OS-III
μC/OS-II는 2009년에 도입된 Micro-Controller 운영체제 버전3의 약자로 μC/OS-II RTOS에 기능을 추가합니다.
μC/OS-II는 μC/OS-II의 모든 특징과 기능을 제공합니다.가장 큰 차이는 지원되는 태스크의 수입니다.μC/OS-II는 최대 255개의 태스크에 대해 255개의 priority 레벨 각각에서1개의 태스크만 허용합니다.μC/OS-II는 프로세서 메모리에 [13][14]대한 액세스만으로 레벨당 임의의 수의 애플리케이션 태스크, priority 레벨 및 태스크를 허용합니다.
μC/OS-II 및 μC/OS-II는 현재 실리콘랩의 자회사인 Micrium, Inc.에 의해 유지되고 있으며 제품별 또는 제품 라인별로 라이선스가 가능합니다.
임베디드 시스템에서 사용
용도는 μC/OS-II의 경우와 동일합니다.
태스크 상태
μC/OS-II는 멀티태스킹 운영체제입니다.각 작업은 무한 루프이며 5가지 상태(dormant, ready, running, interrupted 또는 pending) 중 하나입니다.작업 priority의 범위는 0(최고 priority)~최대 255(최저 priority)입니다.
라운드 로빈 스케줄링
둘 이상의 태스크가 동일한 우선순위를 가질 경우 커널은 하나의 태스크가 미리 정해진 시간 동안 실행되도록 허용하고 퀀텀이라는 이름을 붙인 다음 다른 태스크를 선택합니다.이 프로세스를 라운드 로빈 스케줄링 또는 시간 슬라이싱이라고 합니다.다음과 같은 경우 커널은 다음 작업에 대한 제어 권한을 부여합니다.
- 현재 태스크가 타임 슬라이스 중에 수행할 작업이 없습니다.
- 현재 작업이 타임슬라이스 종료 전에 완료됩니다.
- 타임 슬라이스가 종료됩니다.
커널
μC/OS-II의 커널 기능은 μC/OS-II의 커널 기능과 동일합니다.
태스크 관리
작업관리도 μC/OS-II와 동일하게 기능합니다.단, μC/OS-III는 멀티태스킹을 지원하며 응용 프로그램에서 원하는 수의 작업을 수행할 수 있습니다.최대 작업 수는 프로세서가 사용할 수 있는 컴퓨터 메모리 용량(코드 및 데이터 공간 모두)에 따라 제한됩니다.
태스크는 스케줄 완료까지 실행할 수 있습니다.이 경우 태스크는 완료 시 자동으로 삭제되며, 보다 일반적으로 무한 루프로서 이벤트가 발생할 때까지 대기하여 해당 이벤트를 처리합니다.
메모리 관리
메모리 관리는 μC/OS-II와 동일하게 이루어진다.
시간 관리
μC/OS-II는 μC/OS-II와 동일한 시간 관리 기능을 제공합니다.또한 사용자 정의 시간 지연을 위해 작업이 실행을 일시 중단할 수 있도록 애플리케이션에 서비스를 제공합니다.지연은 클럭틱 수, 즉 시간, 분, 초 및 밀리초로 지정됩니다.
태스크 간의 커뮤니케이션
2개의 태스크가 동일한 특정 데이터 또는 하드웨어 리소스에 동시에 액세스하는 것은 안전하지 않기 때문에 태스크 또는 ISR이 다른 태스크에 정보를 전달해야 하는 경우가 있습니다.이 문제는 태스크 간 통신이라고 하는 정보 전송을 통해 해결할 수 있습니다.정보는 글로벌 데이터를 통해 또는 메시지를 보내는 두 가지 방법으로 작업 간에 통신할 수 있습니다.
글로벌 변수를 사용하는 경우 각 태스크 또는 ISR은 변수에 대한 배타적 접근을 확보해야 합니다.ISR이 관여하고 있는 경우 공통 변수에 대한 배타적 접근을 보증하는 유일한 방법은 인터럽트를 디세블로 하는 것입니다.두 개의 태스크가 데이터를 공유하는 경우 인터럽트를 비활성화하거나 스케줄러를 잠그거나 세마포어를 사용하거나 가급적 상호 제외 세마포를 사용하여 변수에 대한 배타적 접근을 얻을 수 있습니다.메시지는 메시지큐라고 불리는 중간 오브젝트 또는 태스크에 직접 송신할 수 있습니다.μC/OS-II에서는 각 태스크에 자체 메시지큐가 내장되어 있기 때문입니다.여러 작업을 수행하여 메시지를 기다리는 경우 외부 메시지 큐를 사용합니다.수신된 데이터를 처리할 태스크가 하나만 있는 경우 태스크로 직접 메시지를 보냅니다.태스크는 메시지 도착을 기다리는 동안 CPU 시간을 사용하지 않습니다.
포트
포트에는 CPU, OS 및 보드 고유(BSP) 코드의 3가지 측면이 있습니다.μC/OS-II 및 μC/OS-III는 시장에서 가장 많이 사용되는 프로세서 및 보드용 포트를 갖추고 있어 항공, 의료 시스템 및 원자력 시설과 같은 안전에 중요한 임베디드 시스템에 적합합니다.μC/OS-III 포트에는 다음 3개의 커널 고유 파일의 내용 쓰기 또는 변경이 포함됩니다.OS_CPU.H
,OS_CPU_A.ASM
,그리고.OS_CPU_C.C
. 3개의 CPU 고유의 파일을 쓰거나 내용을 변경해야 합니다.CPU.H
,CPU_A.ASM
,그리고.CPU_C.C
마지막으로 사용 중인 평가판 또는 대상판의 보드 지원 패키지(BSP)를 작성 또는 변경합니다.μC/OS-II 포트는 μC/OS-II 포트와 유사합니다.여기에 기재되어 있는 것보다 훨씬 많은 포트가 있으며, 포트는 계속적으로 개발되고 있습니다.μC/OS-II와 μC/OS-II는 모두 wolfSSL과 같은 일반적인 SSL/TLS 라이브러리에서 지원되며 모든 연결에서 보안을 보장합니다.
라이선스 변경
실리콘랩스에 인수된 후 2020년 2월 오픈소스 모델 라이선스로 전환했다.여기에는 uC/OS III, 모든 이전 버전, 모든 컴포넌트(USB, 파일 시스템, GUI, TCP/IP 등)가 포함됩니다.
문서 및 지원
지원은 일반적인 지원 포럼 및 몇 가지 포괄적인 서적을 통해 이용할 수 있습니다.이러한 서적은 마이크로 컨트롤러 아키텍처 및 개발 플랫폼에 맞춰져 있으며, 무료 PDF 형식 또는 하드 커버 형식으로 저렴한 가격에 구입할 수 있습니다.Micrium 및 기타 당사자로부터 유료 지원을 받을 수 있습니다.
레퍼런스
- ^ "NiosII GCC with MicroC/OS". School of Electrical and Computer Engineering. Cornell University. June 2006. Retrieved 25 April 2017.
- ^ Labrosse, Jean J. (15 June 2002). μC/OS The Real-Time Kernel (2nd ed.). CRC Press. ISBN 978-1578201037.
- ^ Labrosse, Jean J. MicroC/OS-II: The Real Time Kernel (2nd ed.). p. 77.
- ^ Wiki 다양성:운영체제/커널모델#모놀리식 커널
- ^ Labrosse, Jean J. MicroC/OS-II: The Real Time Kernel (2nd ed.). p. 39.
- ^ a b Labrosse, Jean J. MicroC/OS-II: The Real Time Kernel (2nd ed.). p. 40.
- ^ Labrosse, Jean J. MicroC/OS-II: The Real Time Kernel (2nd ed.). p. 42.
- ^ Liu, Chung Lang; Layland, James W. (1973). "Scheduling algorithms for multiprogramming in a hard real-time environment". Journal of the ACM. 20 (1): 46–61. CiteSeerX 10.1.1.36.8216. doi:10.1145/321738.321743.
- ^ Bovet, Daniel. "Understanding The Linux Kernel". Archived from the original on 2014-09-21.
- ^ Labrosse, Jean J. MicroC/OS-II: The Real Time Kernel (2nd ed.). pp. 45–49.
- ^ Labrosse, Jean J. MicroC/OS-II: The Real Time Kernel (2nd ed.). pp. 273–285.
- ^ Labrosse, Jean J. MicroC/OS-II: The Real Time Kernel (2nd ed.). pp. 145–152.
- ^ "μC/OS-II and μC/OS-III Features Comparison". Micrium.
- ^ "μC/OS-III overview". Micrium.
원천
- Fusion Embedded로부터의 μC/OS-II 프로토콜 지원
- Micrium-uCOS-III-Users Manual 제1판
- uC/OS-II: Renesas RX62N용 실시간 커널