7장 - FreeRTOS

조재훈·2023년 6월 19일

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 해제
profile
맨땅에 헤딩. 인생은 실전.

0개의 댓글