RTOS
- 운영체제
: Operating System
: 시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어
FreeRTOS
- 오픈소스로 freertos.org 에서 제공
- 뛰어난 이식성 + 간결한 내장형 운영체제. Multitasking 기능 제공
- Task 수 제한없음, 동적 Task 생성 가능, Priority로 Task의 Schedule 관리
RTOS 특징
- Portable : 다양산 시스템에 적용 가능
- ROMable : ROM에 전체 커널 다 올릴 수 있음
- Preemptive : 선점형 커널 가지고 있음
- Multitasking : 멀티태스킹 지원
- Deterministic : 실행 시간 예측 가능
- Robust & R eliable : 신뢰성 있음
Multitasking
- 선점형, 비선점형 지원
- Task수 무제한
- 동적 Task 생성 및 라운드로빈 Scheduling 기능 제공
- 제공 API (Application Programming Interface)
: xTaskCreate() : Task 생성
: vTaskDelete() : Task 삭제
: vTaskDelay() : 주어진 Clock tick 동안 지연
: uxTaskPriorityGet() : Task의 우선순위를 돌려줌
: vTaskPrioritySet() : Task의 우선순위를 지정
: vTaskSuspend() : Task 중지
: vTaskResume() : 중지된 Task를 다시 시작
: vTaskResumeFromISR() : Suspend된 task를 다시 시작
Message Queue
- Message를 Queue 형태로 서로 주고 받을 수 있는 API 제공
: xQueueCreate() : 새로운 Queue 생성
: xQueueDelete() : Queue 삭제
: xQueueSend() : Message를 Queue에 넣음
: xQueueReceive() : Queue로부터 Message를 꺼내옴
: uxQueueMessageWaiting() : Queue에 저장된 Message의 수를 돌려줌
: xQueueSendFromISR() : Interrupt 상에서 Queue에 Message를 넣음
: crQUEUE_RECEIVE() : Coroutine에서 Queue Message를 받음
: crQUEUE_SEND_FROM_ISR() : Interrupt 상에서 Coroutine으로 Message를 보냄
: crQUEUE_RECEIVE_FROM_ISR() : Interrupt 상에서 Coroutine으로부터 Message를 받음
- Memory Management
: pvPortMalloc() : 주어진 Data Size만큼 동적으로 메모리 할당
: vPortFree() : 할당받은 Memory 해제