[FreeRTOS] GCC Based Posix/Linux Simulator Demo Build

심준석·2025년 1월 19일
1

FreeRTOS

목록 보기
1/2

1. Posix Port

FreeRTOS 실험 및 실제 임베디드 하드웨어로 포팅하기 위한 FreeRTOS 애플리케이션을 개발할 수 있는 환경을 제공

하지만, Linux 포트를 사용하는 FreeRTOS 애플리케이션은 실시간 동작을 보이진 않음

2. 환경설정

2-1. GCC ARM 툴체인 설치

ARM Cortex-M 시리즈 프로세서를 대상으로 하는 바이너리를 빌드할 있는 컴파일러 설치

sudo apt install gcc-arm-none-eabi gdb-multiarch

3. FreeRTOS 소스 코드

3.1 FreeRTOS 소스 코드 다운로드

FreeRTOS의 최신 소스 코드를 GitHub에서 클론

git clone https://github.com/FreeRTOS/FreeRTOS.git

설치가 완료되면, 해당 디렉토리로 이동

cd FreeRTOS

*그리고 Submodule을 설치해줘야한다.
(내가 못찼은건지 모르겠지만, 공식 문서에서 찾은게 아닌, Stack Overflow 열심히 해매면서 찾아냈다..)

git submodule update --init --recursive

3.2 소스 코드 구성

3-3. Posix/Linux 시뮬레이터 소개

  • 해당 프로젝트는 Linux(POSIX) 포트를 사용하여 FreeRTOS 커널 기능을 보여주는 프로젝트

간단한 Blinky 스타일 데모(BLINKY_DEMO), 또는 보다 포괄적인 스타일 데모(FULL_DEMO) 상수를 설정하여(mainSELECTED_APPLICATION), main.c 가장 상단에 정의되어 있음

(FULL_DEMO로 설정된 경우)

3-3-1. Bliny Demo

  • mainSELECTED_APPLICATIONBLINKY_DEMO로 설정되어 있을 경우,

  • main() 함수는 main_blinky() 함수를 호출함 (from main_blinky.c)

  • main_blinky()는 2개의 Task (software timer 및 queue로 구성된)를 포함하고 있으며,

  • 하나의 Task(송신 Task)는 200ms마다 queue를 통해 값 100을 다른 Task로 반복적으로 전송하며,
    (예시)

  • timer는 2000ms마다 같은 queue에 값 200을 전송함
    (예시)

  • 그리고 수신 Task는 queue에서 두 값 중 하나를 받을때마다 메시지를 출력함

3-3-2. Full Demo

  • mainSELECTED_APPLICATIONFULL_DEMO로 설정되어 있을 경우,

  • main() 함수는 main_full() 함수를 호출함 (from main.full.c)

  • main_full()은 하나의 the standard demo tasks들로 구성되어 있으며, 해당 Task는 특정한 기능을 수행하지는 않고, RTOS 포트의 테스트 및 FreeRTOS API 사용 방법을 보여주는 역할을 함

  • 전체 데모에는 check Task가 포함되어 있으며, 이 Task는 10초마다 실행되며, 가장 높은 우선수위를 가져 항상 처리 시간을 확보할 수 있도록 보장됨.(해당 Task의 주요 기능은 모든 표준 데모 태스크가 여전히 정상적으로 동작하고 있는지 확인하는 역할을 함)

  • Check Task는 실행될 때마다 상태 문자열을 콘솔에 출력하며, 만약 모든 표준 데모 태스크가 오류 없이 실행 중이라면, 문자열에는 "OK"와 현재 틱 카운트가 포함됨
    (예시)

  • 반면, 오류가 감지되면 해당 문자열에는 오류를 보고한 Task를 나타내는 메시지가 포함됨
    (예시)

4. FreeRTOS 데모 프로젝트 빌드

Posix/Linux 시뮬레이터 데모를 위해, 경로 이동
(현 예제에서는 커널 전용 데모를 빌드하고자 하여, 3.2에서 기술한 Demo Project (1) : 커널 전용 데모 의 경로에서 진행)

cd FreeRTOS/Demo/Posix_GCC

make 명령어로 Posix_GCC 데모 프로젝트 빌드

make

빌드가 성공적으로 완료되면, build 디렉토리가 생성되며, 하위에 posix_demo 파일이 생성됨

5. (Linux) 데모 프로그램 실행

posix_demo 파일 실행

./posix_demo

*[실행화면]

profile
Developer & Publisher 심준석 입니다.

0개의 댓글

관련 채용 정보