OS/FreeRTOS

RTOS 이해하기 1-4[기초]

전자돌 2020. 12. 10. 23:42
반응형

1장. FreeRTOS 배포

데이터 유형 및 코딩 스타일 가이드

데이터 유형

FreeRTOS의 각 포트에는 두 가지 포트 별 데이터 유형에 대한 정의가 포함된 고유  portmacro.h 헤더 파일이 있습니다.

TickType_t 및 BaseType_t. 이러한 데이터 유형은 표 2에 설명되어 있습니다.

 

macro or typedef 사용  실제 유형
TickType_t FreeRTOS는 틱 인터럽트라는 주기적 인터럽트를 구성합니다.

FreeRTOS 애플리케이션이 시작된 이후 발생한 틱 인터럽트 수를 틱 수라고 합니다.
틱 수는 시간의 척도로 사용됩니다. 두 틱 인터럽트 사이의 시간을 틱 기간이라고 합니다.
시간은 틱 기간의 배수로 지정됩니다.

TickType_t는 틱 수 값을 보유하고 시간을 지정하는 데 사용되는 데이터 유형입니다.
TickType_t는 FreeRTOSConfig.h 내의 configUSE_16_BIT_TICKS 설정에 따라 부호없는 16 비트 유형이거나 부호없는 32 비트 유형일 수 있습니다.
configUSE_16_BIT_TICKS가 1로 설정되면 TickType_t는 uint16_t로 정의됩니다. configUSE_16_BIT_TICKS가 0으로 설정되면 TickType_t는 uint32_t로 정의됩니다.

16 비트 유형을 사용하면 8 비트 및 16 비트 아키텍처에서 효율성이 크게 향상 될 수 있지만 지정할 수있는 최대 블록 기간이 심각하게 제한됩니다.
32 비트 아키텍처에서 16 비트 유형을 사용할 이유가 없습니다.
BaseType_t 아키텍처에 가장 효율적인 데이터 유형으로 정의됩니다.
일반적으로 이것은 32 비트 아키텍처의 32 비트 유형, 16 비트 아키텍처의 16 비트 유형, 8 비트 아키텍처의 8 비트 유형입니다.

BaseType_t는 일반적으로 매우 제한된 범위의 값만 사용할 수있는 반환 유형과 pdTRUE / pdFALSE 유형 부울에 사용됩니다.

일부 컴파일러는 정규화되지 않은 모든 char 변수를 서명되지 않은 상태로 만들고 다른 컴파일러는 서명하도록 만듭니다. 이러한 이유로 FreeRTOS 소스 코드는 char가 ASCII 문자를 보유하는데 사용되거나 char에 대한 포인터가 문자열을 가리키는데 사용되지 않는 한 'signed'또는 'unsigned'로 char의 모든 사용을 명시적으로 규정합니다. 일반 int 유형은 사용되지 않습니다.

 

 

변수 이름

변수는 해당 유형으로 시작됩니다.

문자는‘c’, int16_t (짧은)‘s’, BaseType_t 및 기타 비표준 유형 (구조, 작업 핸들, 큐 핸들 등)의 경우‘x’입니다.

부호가없는 변수는 접두사 'u'도 붙습니다. 변수가 포인터이면 'p'접두어도 붙습니다. 예를 들어, uint8_t 유형의 변수는 'uc'로 시작되고 char 유형의 포인터는 'pc'로 시작됩니다.

 

 

기능 명

함수는 반환하는 유형과 함수가 정의 된 파일을 접두어로 사용합니다.

예를 들면 :

 vTaskPrioritySet ()는 void를 반환하고 task.c 내에 정의

 xQueueReceive ()는 BaseType_t 유형의 변수를 반환하며 queue.c 내에 정의

 pvTimerGetTimerID ()는 void에 대한 포인터를 반환하며 timers.c 내에 정의

파일 범위 (개인) 기능은 'prv'로 시작됩니다.

 

 

서식

하나의 탭은 항상 4 개의 공백으로 설정됩니다.

 

 

매크로

이름 대부분의 매크로는 대문자로 작성되며 매크로가 정의 된 위치를 나타내는 소문자 접두사가 붙습니다.

접두사 매크로 정의 위치
port (for example, portMAX_DELAY) portable.h or portmacro.h
task (for example, taskENTER_CRITICAL()) task.h
pd (for example, pdTRUE) projdefs.h
config (for example, configUSE_PREEMPTION) FreeRTOSConfig.h
err (for example, errQUEUE_FULL) projdefs.h

세마포어 API는 거의 전적으로 매크로 집합으로 작성되지만 매크로 명명 규칙이 아닌 함수 명명 규칙을 따릅니다.

매크로
pdTRUE 1
pdFALSE 0
pdPASS 1
pdFAIL 0

 

과도한 유형 주조의 이유

FreeRTOS 소스 코드는 경고를 생성하는 방법과시기가 모두 다른 여러 컴파일러로 컴파일할 수 있습니다.

특히 다른 컴파일러는 캐스팅이 다른 방식으로 사용되기를 원합니다.

결과적으로 FreeRTOS 소스 코드에는 일반적으로 보장되는 것보다 더 많은 유형 캐스팅이 포함됩니다.

반응형