1장. FreeRTOS 배포
FreeRTOS 포트
FreeRTOS는 약 20 개의 서로 다른 컴파일러로 빌드 할 수 있으며 더 많은 컴파일러에서 실행할 수 있습니다.
30 가지 프로세서 아키텍처보다 지원되는 각 컴파일러 및 프로세서 조합은 별도의 FreeRTOS 포트로 간주됩니다.
FreeRTOS 빌드
FreeRTOS는 멀티 태스킹 기능을 제공하는 라이브러리로 생각할 수 있습니다. 그렇지 않으면 베어 메탈 애플리케이션이됩니다. FreeRTOS는 C 소스 파일 세트로 제공됩니다. 일부 소스 파일은 모두에게 공통입니다. 다른 포트는 포트에 따라 다릅니다. 프로젝트의 일부로 소스 파일을 빌드하여 애플리케이션에서 사용할 수있는 FreeRTOS API. 이를 쉽게하기 위해 각 공식 FreeRTOS 포트에는 데모 애플리케이션이 제공됩니다. 데모 애플리케이션은 올바른 소스 파일을 빌드하고 올바른 헤더 파일을 포함하도록 사전 구성되어 있습니다. 일부 데모는 다른 것보다 오래되었지만 데모 응용 프로그램은 '즉시' 빌드해야하며, 때로는 데모가 출시 된 이후 빌드 도구를 변경하면 문제가 발생할 수 있습니다.
FreeRTOSConfig.h
FreeRTOS는 FreeRTOSConfig.h라는 헤더 파일로 구성됩니다. FreeRTOSConfig.h는 특정 애플리케이션에서 사용하도록 FreeRTOS를 조정하는 데 사용됩니다.
예를 들어 FreeRTOSConfig.h에는 configUSE_PREEMPTION과 같은 상수가 포함되어 있으며, 이 설정은 협력 또는 선점 스케줄링 알고리즘을 사용할지 여부를 정의합니다.
FreeRTOSConfig.h에는 애플리케이션 별 정의가 포함되어 있으므로 FreeRTOS 소스 코드가 포함 된 디렉터리가 아니라 빌드중인 애플리케이션의 일부인 디렉터리에 있어야 합니다.
모든 FreeRTOS 포트에 대해 데모 애플리케이션이 제공되고 모든 데모 애플리케이션에는 FreeRTOSConfig.h 파일이 포함됩니다. 따라서 처음부터 FreeRTOSConfig.h 파일을 생성 할 필요가 없습니다.
대신 사용중인 FreeRTOS 포트에 대해 제공되는 데모 애플리케이션에서 사용하는 FreeRTOSConfig.h로 시작한 다음 조정하는 것이 좋습니다.
공식 FreeRTOS 배포
FreeRTOS는 단일 zip 파일로 배포됩니다. zip 파일에는 모든 FreeRTOS 포트에 대한 소스 코드와 모든 FreeRTOS 데모 애플리케이션에 대한 프로젝트 파일이 포함되어 있습니다. 또한 엄선 된 FreeRTOS + 에코 시스템 구성 요소와 엄선된 FreeRTOS + 에코 시스템 데모 애플리케이션도 포함되어 있습니다. FreeRTOS 배포에 포함된 파일수로 인해 미루지 마세요. 하나의 응용 프로그램에 매우 적은 수의 파일만 필요합니다.
FreeRTOS 배포의 상위 디렉터리
FreeRTOS 배포의 첫 번째 및 두 번째 수준 디렉터리는 그림 1에 표시되고 설명되어 있습니다.
zip 파일에는 FreeRTOS 소스 파일의 복사본 하나만 포함됩니다. 모든 FreeRTOS 데모 프로젝트 및 모든 FreeRTOS + 데모 프로젝트는 FreeRTOS / Source 디렉터리에서 FreeRTOS 소스 파일을 찾을 것으로 예상하며 디렉터리 구조가 변경되면 빌드되지 않을 수 있습니다.
모든 포트에 공통인 FreeRTOS 소스 파일
핵심 FreeRTOS 소스 코드는 모든 FreeRTOS 포트에 공통적인 두 개의 C 파일에만 포함되어 있습니다. 이러한 파일을 tasks.c 및 list.c라고하며 그림 2에 표시된대로 FreeRTOS / Source 디렉터리에 직접 위치합니다. 이러한 두 파일 외에도 다음 소스 파일이 동일한 디렉터리에 있습니다.
- queue.c queue.c
큐 및 세마포어 서비스를 모두 제공합니다. queue.c는 거의 항상 필요합니다.
- timers.c timers.c
소프트웨어 타이머 기능을 제공합니다. 소프트웨어 타이머가 실제로 사용될 경우에만 빌드에 포함되어야합니다. event_groups.c event_groups.c는이 책의 뒷부분에서 설명하는 이벤트 그룹 기능을 제공합니다. 이벤트 그룹이 실제로 사용될 경우에만 빌드에 포함되어야합니다.
- croutine.c croutine.c
FreeRTOS 코루틴 기능을 구현합니다. 코루틴이 실제로 사용될 경우에만 빌드에 포함되어야 합니다. 코 아웃은 매우 작은 마이크로 컨트롤러에서 사용하기위한 것이었고 현재 거의 사용되지 않으므로 다른 FreeRTOS 기능과 동일한 수준으로 유지되지 않습니다. 이 책에서는 코루틴에 대해 설명하지 않습니다.
많은 프로젝트에 이미 동일한 이름을 가진 파일이 포함되어 있으므로 파일 이름으로 인해 네임 스페이스 충돌이 발생할 수 있습니다. 그러나 파일 이름을 변경하면 FreeRTOS, 자동화 도구 및 IDE 플러그인을 사용하는 수천 개의 프로젝트와의 호환성이 깨지기 때문에 파일 이름을 변경하는 것은 문제가 될 수 있습니다.
포트 별 FreeRTOS 소스 파일
FreeRTOS 포트와 관련된 소스 파일은 FreeRTOS / Source / portable 디렉터리에 포함되어 있습니다.
이식 가능한 디렉토리는 먼저 컴파일러별로, 다음에는 프로세서 아키텍처별로 계층 구조로 정렬됩니다.
계층 구조는 그림 3에 나와 있습니다.
컴파일러는 '컴파일러'를 사용하고 '아키텍처'는 아키텍처가 있는 프로세서에서 FreeRTOS를 실행하는 경우 핵심 FreeRTOS 소스 파일 외에도 디렉터리에 있는 파일도 빌드해야 합니다.
FreeRTOS / 소스 / 포터블 / [컴파일러] / [아키텍처]
힙 메모리 관리에서 설명하는 것처럼 FreeRTOS는 힙 메모리 할당도 이동식 계층의 일부로 간주합니다. V9.0.0 이전의 FreeRTOS 버전을 사용하는 프로젝트에는 힙 메모리 관리자가 포함되어야 합니다. FFreeRTOS V9.0.0에서 힙 메모리 관리자는 config SUPPORT_DYNAMIC_ALLOCATION이 FreeRTOSConfig.h에서 1로 설정되거나 config SUPPORT_DYNAMIC_ALLOCATION이 정의되지 않은 상태로 남아있는 경우에만 필요합니다.
FreeRTOS는 5 가지 예제 힙 할당 체계를 제공합니다. 5 개의 스키마는 heap_1에서 heap_5로 이름이 지정되며 소스 파일 heap_1.c에서 heap_5.c로 각각 구현됩니다. 예제 힙 할당 체계는 FreeRTOS / Source / portable / MemMang 디렉터리에 포함되어 있습니다. 동적 메모리 할당을 사용하도록 FreeRTOS를 구성한 경우 애플리케이션에서 대체 구현을 제공하지 않는 한 프로젝트에서 이러한 5 개의 소스 파일 중 하나를 빌드해야 합니다.
경로 포함
FreeRTOS는 컴파일러의 포함 경로에 3 개의 디렉터리를 포함해야합니다.
1. 핵심 FreeRTOS 헤더 파일의 경로 (항상 FreeRTOS / Source / include)입니다.
2. 사용중인 FreeRTOS 포트와 관련된 소스 파일의 경로입니다.
위에서 설명한대로 이것은 FreeRTOS / Source / portable / [컴파일러] / [아키텍처]입니다.
3. FreeRTOSConfig.h 헤더 파일의 경로입니다.
헤더 파일
FreeRTOS API를 사용하는 소스 파일에는 'FreeRTOS.h'와 사용중인 API 함수의 프로토 타입
( 'task.h', 'queue.h', 'semphr.h')이 포함된 헤더 파일이 포함되어야 합니다.
* 'timers.h '또는 'event_groups.h'.
'OS > FreeRTOS' 카테고리의 다른 글
RTOS 이해하기 1-3[기초] (0) | 2020.12.10 |
---|---|
RTOS 이해하기 1-2[기초] (0) | 2020.12.10 |
RTOS 소스 파일 및 프로젝트 (0) | 2020.12.09 |
FreeRTOS 기능 (0) | 2020.12.09 |
FreeRTOS 정보 (0) | 2020.12.09 |