지노랩 /JinoLab

FreeRTOS 커널 받기 및 폴더 구조 정리하기 본문

임베디드 시스템/RTOS

FreeRTOS 커널 받기 및 폴더 구조 정리하기

지노랩/JinoLab 2025. 6. 8. 09:45

STM32F4 프로젝트에 FreeRTOS를 통합하려면, 먼저 FreeRTOS 커널 소스 코드를 다운로드하고 프로젝트에 적절히 배치해야 합니다. 이번 포스팅에서는 Windows PC를 기준으로 다음과 같은 과정을 단계별로 설명합니다.

  1. 워크스페이스 폴더 만들기
  2. FreeRTOS 커널 다운로드
  3. 압축 해제 및 주요 폴더 구조 이해
  4. (추후 강의 예고) STM32CubeIDE 프로젝트에 FreeRTOS 통합 준비

1. 워크스페이스 폴더 만들기

PC의 편리한 위치(예: C:\)에 “Workspace”라는 폴더를 만듭니다. 그 안에는 다음과 같은 서브폴더를 두어 관리합니다:

C:\
└─ Workspace\
   ├─ RTOS_workspace\         ← FreeRTOS 예제 및 직접 작성할 코드용  
   └─ Software_and_Toolchain\ ← FreeRTOS 커널, 컴파일러 등 외부 툴 다운로드용  
  • RTOS_workspace
    • 이 폴더 아래에 STM32CubeIDE 프로젝트, 소스 코드, 헤더 파일 등을 두고 실습을 진행합니다.
  • Software_and_Toolchain
    • FreeRTOS 커널 소스 압축 파일(.zip)과 STM32CubeIDE, 컴파일러 등의 외부 툴을 다운로드한 뒤 이곳에 모아둡니다.

2. FreeRTOS 커널 다운로드

  1. 웹사이트 접속
    웹 브라우저에서 https://www.freertos.org로 이동합니다.
  2. “Download FreeRTOS” 클릭
    메인 페이지 상단 또는 메뉴에 있는 “Download FreeRTOS” 링크를 클릭합니다.
  3. FreeRTOS Kernel 선택
    • 일반적으로 최신 커널 버전을 받으려면 “FreeRTOS Kernel” 부분에서 “Download”를 클릭
    • Long Term Support (LTS) 버전이 필요하다면 “FreeRTOS LTS Release”를 클릭해도 되지만, 본 강의에서는 최신 커널만 사용합니다.
  4. 압축 파일 저장
    • 브라우저의 다운로드 설정에 따라 Software_and_Toolchain 폴더로 .zip 파일이 저장되도록 합니다.
    • 예: FreeRTOSv202012.00.zip (버전은 시점에 따라 달라질 수 있음)

3. 압축 해제 및 폴더 구조 살펴보기

다운로드된 FreeRTOSvXXXXXX.zip 파일을 마우스 우클릭 → “여기에 압축 풀기” 등을 선택해 압축을 해제합니다. 그러면 다음과 같은 최상위 디렉터리가 생성됩니다:

Software_and_Toolchain\
└─ FreeRTOSv202012.00\   ← FreeRTOS 커널과 예제 프로젝트
   ├─ FreeRTOS\          ← 커널 소스 코드(핵심)
   └─ FreeRTOS-Plus\     ← 부가 미들웨어(CLI, TCP/IP 등)

3.1. FreeRTOS/ 디렉터리 구조

FreeRTOS 폴더는 실제 커널 코드를 담고 있습니다. 풀어보면 아래와 같은 구조가 보입니다:

FreeRTOSv202012.00\
└─ FreeRTOS\
   ├─ Kernel\
   │   ├─ include\        ← 공통 헤더 파일들
   │   └─ source\         ← 커널 소스 파일들(.c, .h)
   │       ├─ croutine.c
   │       ├─ event_groups.c
   │       ├─ heap_4.c
   │       ├─ list.c
   │       ├─ queue.c
   │       ├─ tasks.c
   │       ├─ timers.c
   │       └─ portable\    ← 아키텍처별 포팅 코드
   │           ├─ GCC\
   │           │   ├─ ARM_CM4F\   ← STM32F4(Cortex-M4F)용 포팅 예
   │           │   │   ├─ port.c
   │           │   │   ├─ portmacro.h
   │           │   │   └─ portasm.S
   │           │   └─ (다른 아키텍처)
   │           └─ (기타 컴파일러 폴더)
   ├─ Demo\                ← 다양한 MCU용 데모 프로젝트 예시  
   └─ License\             ← MIT 오픈소스 라이선스 등
  • include/
    • FreeRTOS API 헤더들(FreeRTOS.h, task.h, queue.h, portmacro.h 등)이 위치합니다.
  • source/
    • 실제 커널 구현 파일들(tasks.c, queue.c, list.c, heap_4.c 등)과
    • portable/ (아키텍처별 포팅 코드)
      • 예: portable/GCC/ARM_CM4F/ 폴더에 STM32F4용 포팅 소스(port.c, portmacro.h 등)가 들어 있습니다.
  • Demo/
    • STM32F4를 비롯해 여러 MCU 데모 프로젝트가 예시로 들어 있습니다(나중에 참고 가능).
  • License/
    • FreeRTOS 커널은 MIT 라이선스로 배포되며, 상업용 제품에도 자유롭게 사용할 수 있습니다. 다만 라이선스 고지를 프로젝트에 포함해야 합니다.

3.2. FreeRTOS-Plus/ 디렉터리

미들웨어(예: TCP/IP 스택, 프리RTOS용 CLI 등)를 제공하는 별도 폴더이므로, 본 강의 초반에는 사용하지 않으며 나중 응용 혹은 네트워크 기능 학습 시 참고합니다.


4. 프로젝트에 FreeRTOS 소스 배치하기 (예고)

다음 강의부터는 STM32CubeIDE에서 다음과 같은 방식으로 “FreeRTOS 커널”을 직접 통합합니다:

  1. STM32CubeIDE 프로젝트 생성 (STM32F407_FREERTOS 등)
  2. 프로젝트 폴더 내에
    • FreeRTOS/include/
    • FreeRTOS/source/
    • FreeRTOS/source/portable/GCC/ARM_CM4F/
      와 같이 실제 코드들을 복사해 넣기
  3. FreeRTOSConfig.h 파일 작성 및 프로젝트에 추가
  4. 프로젝트 속성에서 Include 경로(Paths and Symbols)에 위 폴더들 포함
  5. main.c에서 FreeRTOS API를 호출해 간단한 태스크를 생성·실행

이 과정을 통해 STM32F4 보드에서 FreeRTOS 환경을 구축하고, LED 토글 같은 기본 예제를 실행해보게 됩니다.


5. 마무리

지금까지는 FreeRTOS 커널 전체 소스를 내려받아 압축을 풀고, 폴더 구조를 살펴보았습니다.
다음 강의에서는 STM32CubeIDE에서 직접 FreeRTOS 소스를 프로젝트에 포함시키고, 간단한 태스크를 만들어 스케줄러를 구동해보겠습니다.

Tip:

  • FreeRTOS GitHub(https://github.com/FreeRTOS/FreeRTOS)에서도 과거 릴리스 버전을 받아볼 수 있습니다.
  • 강의에서 사용한 버전(202012.00) 외 최신 버전을 써도 되지만, 예제 코드와 호환성을 위해 강사 버전과 동일하게 세팅하는 것이 편리합니다.

다음 포스팅(강의)에서 뵙겠습니다!