본문 바로가기
임베디드 관련/FreeRTOS

[FreeRTOS] FreeRTOS 네이밍 규칙

by minhyeok.lee 2024. 5. 7.
반응형

FreeRTOS에서 네이밍 규칙

RTOS 커널 및 데모 애플리케이션 소스 코드는 다음 규칙을 사용한다.


1. Variables (변수)

1. 접두사 u, l, s, c

unsigned 타입의 변수는 추가 접두사 u를 갖는다.
변수 이름은 CamelCase 대소문자를 사용하고 명확하게 설명하며 전체 단어(일반적으로 사용되는 약어 제외)를 사용한다.
유형 uint32_t의 변수는 접두사로 ul이 붙는다.

  - 여기서 'u'는 ' unsigned '을 의미하고 'l'은 'long'를 의미한다.
유형 uint16_t의 변수는 접두사로 us가 붙는다.

  - 여기서 'u'는 ' unsigned '을 의미하고 's'는 'short'를 의미한다.
유형 uint8_t의 변수는 접두사로 uc가 붙는다.

  - 여기서 'u'는 ' unsigned '을 의미하고 'c'는 'char'를 의미한다.


 

2. 접두사 x, e

stdint 타입이 아닌 변수는 접두사 x로 지정된다.

예를 들어 BaseType_t 및 TickType_t는 아키텍처에 가장 효율적이거나 자연스러운 유형인 유형과 RTOS 틱 수를 유지하는 데 사용되는 유형에 대해 각각 사용가능한 계층 정의 유형이다.

x의 앞에도 u가 붙을 수 있다.

예를 들어, UBaseType_t(부호화되지 않은 BaseType_t)의 변수는 접두사 ux이다.
size_t 유형의 변수도 접두사 x이다.

열거된(Enum) 변수의 접두는 e이다.


 

3. 포인터의 추가 접두사 pus, c, pc

예를 들어, uint16_t에 대한 포인터는 접두사로 pus를 갖는다.
MISRA 가이드에 따라 자격이 없는 표준 문자 유형은 ASCII 문자만 보유할 수 있으며 접두사 c이다.
MISRA 가이드에 따라 char * 유형의 변수는 ASCII 문자열에 대한 포인터만 유지할 수 있으며 접두사 pc이다.

 



2. Functions (함수)

함수 이름은 낙타 대소문자를 사용하고 명확하게 설명하며 전체 단어(일반적으로 사용되는 약어 제외)를 사용한다.
1. 파일 범위 정적(비공개) 함수는 접두사로 prv 앞에 붙는다.
2. API 함수는 void에 접두사 v를 추가한 변수에 대해 정의된 규칙에 따라 반환 유형으로 접두사가 붙는다.
3. API 함수 이름은 정의된 파일의 이름으로 시작한다.

    ex) vTaskDelete는 task.c에 정의되어 있으며 void return 유형이 있다.

 

또 다른 예)

함수명 함수가 정의된 파일 이름 반환되는 타입
vTaskPrioritySet() task.c void
xQueueReceive() queue.c BaseType_t
pvTimerGetTimerID() timers.c a pointer to void

 


3. Macros (매크로)

1. 매크로는 명확하게 설명할 수 있으며, 전체 단어(일반적으로 사용되는 약어 제외)를 사용한다.
2. 매크로는 정의된 파일에 접두사로 붙고 접두사는 소문자로 붙는다.

    ex) configUSE_PREEMPTION은 FreeRTOSconfig.h에 정의되어 있다.

 

또 다른 예)

Macros이름 Macro가 정의된 위치
portMAX_DELAY portable.h, portmacro.h
taskENTER_CRITICAL() task.h
pdTRUE projdefs.h
errQUEUE_FULL projdefs.h

 

Semaphore 관련 API는 거의 매크로로 구성되어 있지만 함수명 네이밍 규칙을 따라간다.

반응형

댓글