[FreeRTOS] 1. CMSIS-RTOS API vs FreeRTOS API

YUN·6일 전

FreeRTOS

목록 보기
1/2
post-thumbnail

1. CMSIS-RTOS V1

CMSIS-RTOS V1은 ARM이 만든 RTOS 표준 인터페이스(API) 이다.

어느 RTOS든 CMSIS-RTOS 를 기반으로 구현한다.

(3rd party RTOS들은 전부 CMSIS-RTOS의 구현체이다)

(1) FreeRTOS 와 CMSIS-RTOS 의 관계

개발자들 입장에서는 결국 CMSIS-RTOS API를 사용하든 FreeRTOS API를 사용하든 둘 중 하나를 선택하면된다.

왜?


┌──────────────────────────────────────────────────────┐
│           CMSIS-RTOS API (인터페이스 정의)        │
│                                                 │
│   "osThreadCreate()는 이렇게 생겼어야 해"          │
│   "osSemaphoreWait()는 이런 동작을 해야 해"        │
│                                                  │
│   → ARM이 표준 스펙만 정의 (설계도)                 │
└──────────────────────────────────────────────────────┘
                         │
                         │ 구현
                         ▼
┌──────────────────────────────────────────────────────┐
│              FreeRTOS (실제 구현체)               │
│                                                 │
│   osThreadCreate() 내부:                         │
│      → xTaskCreate() 호출해서 실제 동작            │
│                                                 │
│   osSemaphoreWait() 내부:                        │
│      → xSemaphoreTake() 호출해서 실제 동작         │
└──────────────────────────────────────────────────────┘

위와 같이 CMSIS-RTOS API에서

'함수 A에는 이런 이런 기능이 있어야해'

하며 미리 인터페이스를 정의해두었고, FreeRTOS는 이에 맞게 구현된, 하나의 구현체일 뿐이다.

다시말해, CMSIS-RTOS API는 설계도를 제공해주고, FreeRTOS는 해당 설계도대로 구현된 구현체이다.

위의 예시를보자.

osKernelStartCMSIS RTOS API 이고, vTaskStartScheduler()FreeRTOS API 이다.

그래서 우리는 결국 CMSIS-RTOS API 든 FreeRTOS API든 둘 중 아무거나 잘 외워서 사용하면 된다.

(2) 나는 FreeRTOS의 API를 직접 사용할 것이다.

CMSIS RTOS API가 아닌 FreeRTOS API를 직접 사용하면

  • FreeRTOS 의 고유 기능을 100% 활용 가능
  • 오버헤드 감소 (CMSIS RTOS API의 래퍼 함수 안거치니까)
  • FreeRTOS 공식 문서/예제와의 정합성이 좋아짐

등등의 장점이 존재하므로,

FreeRTOS의 API를 직접 사용해볼 것이다.

2. RTOS 구현체

CMSIS-RTOS API 의 구현체는 여러 종류가 있다. 대표적으로 CMSIS-RTOS RTX와 FreeRTOS가 존재한다.

  • CMSIS-RTOS RTX: ARM이 만든 CMSIS-RTOS API의 공식 구현체
  • FreeRTOS : Richard Barry가 2003년경에 개발한 CMSIS-RTOS의 구현체 (현재 Amazon이 인수)
profile
안녕하세요. 전자공학부 학부생의 공부 기록입니다.

0개의 댓글