LoginSignup
4
3

More than 3 years have passed since last update.

CMakeを使って、FreeRTOS最小構成のVisualStudioプロジェクト作る

Posted at

概要

Windows上でFreeRTOSを動かす
は提供されているサンプルプロジェクトの実行のみでした。

実際の開発では異なる開発環境や複数人開発、またビルド環境の管理に対応することが必要になると思います。
この記事ではCMakeでFreeRTOSのVisual Studioプロジェクトを構築します。

この記事で説明するコード

手順

FreeRTOS

ダウンロード

必要なファイルを選ぶ

FreeRTOS各ポート(コンパイラ、アーキテクチャの組み合わせ)のコードがすべて含まれています。
ここからWindows Visual Studio環境に必要なファイルだけ取得します。
image.png
image.png

FreeRTOS/Source直下にあるファイル、FreeRTOS/include以下のファイルがカーネルコアとなる部分で、どのポートでも必要なファイルになります。
FreeRTOS/portable/以下がポートごとのファイルになります
 MemMangはheap管理用で必要
 MSVC-MingWはVisualStudio用で必要
となります。

これら必要のファイルのみ自身のプロジェクトに取り込みます。

アプリケーションコード

自身で開発するアプリケーションコードをいれます。
Github Repositoryにはチュートリアルのサンプルコードを入れてあります。

全体のツリー構成は
image.png
となっています。

CMake

基本的な使い方

日本語の記事がいろいろとあるので参照してください。
https://qiita.com/shohirose/items/45fb49c6b429e8b204ac
とか良いです。

今回用のCMakeLists.txt

# ----------------------------
# 必要な最小バージョンを指定
# ----------------------------
cmake_minimum_required(VERSION 3.1).

# ----------------------------
# プロジェクト名, 言語(C言語)を指定.
# ----------------------------
project(freertos_project C)

# ----------------------------
# include directory
#   Makefile の -include 命令や,コンパイラでの -I オプションは include_directories で代用.
# ----------------------------
include_directories(./src)
include_directories(./src/Supporting_Functions)
include_directories(./FreeRTOS/Source/include)
include_directories(./FreeRTOS/Source/portable/MemMang)
include_directories(./FreeRTOS/Source/portable/MSVC-MingW)

# ----------------------------
# コンパイル対象のソース一覧を作成
#   - 指定されたGLOBパターン<globbing_expressions>にマッチするファイルを探索し、その一覧をリストとして変数<variable>に格納します。
#     このとき絶対パスで格納されますが、RELATIVE <path>が指定されていると、このパスからの相対パスとなります。
#   - 以下の正規表現のメタ文字に似たものが使えます。
#       - 任意の文字の0回以上の繰り返し*
#       - 任意の文字?
#       - ブラケット内で指定された文字[ ]とその範囲
# フォーマット
#   file(WRITE <filename> [<content1> ...])
#   file(APPEND <filename> [<content1> ...])
# filenameがVCだとプロジェクト名になるみたい.
# ----------------------------
file(GLOB freertos_files FreeRTOS/Source/*.[ch] FreeRTOS/Source/portable/MSVC-MingW/*.[ch] FreeRTOS/Source/portable/MemMang/*.[ch])
file(GLOB src_files src/*.[ch] src/Supporting_Functions/*.[ch])

# ----------------------------
# オブジェクトファイルを作るソースを指定
# ----------------------------
add_library(freertos OBJECT ${freertos_files})
add_library(src OBJECT ${src_files})

# ----------------------------
# VisualStudioのFilterを作るようにする.
# ----------------------------
set_property(GLOBAL PROPERTY USE_FOLDERS ON)

# ----------------------------
# 実行ファイルを作る方法を指定
# ----------------------------
add_executable(${PROJECT_NAME}
 $<TARGET_OBJECTS:freertos>
 $<TARGET_OBJECTS:src>
)

CMakeの実行

buildディレクトリで cmake .. します。

PS F:\git-work\cmake_freertos_visualstudio\build> cmake ..
-- The C compiler identification is MSVC 19.27.29110.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.27.29110/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: F:/git-work/cmake_freertos_visualstudio/build

※Shift押しながら右クリックでPowerShellを開けるので便利です

VisualStudio立ち上げる

ここまでくるとbuildディレクトリ内は
image.png
となっているので、freertos_project.slnをダブルクリックしましょう。
あとはスタートアッププロジェクトを設定すれば実行できます。
image.png

build以下はGit Repository管理ではなく、CMakeから作成するので管理も楽ですし、配布もしやすいですね。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3