FreeRTOS で CMake を使用する - FreeRTOS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

FreeRTOS で CMake を使用する

重要

このページで言及している Amazon-FreeRTOS リポジトリは非推奨です。新しいプロジェクトを作成するときは、ここから始めることをお勧めします。現在非推奨の Amazon-FreeRTOS リポジトリをベースにした既存の FreeRTOS プロジェクトが既にある場合は、「Amazon FreeRTOS Github リポジトリ移行ガイド」を参照してください。

CMake を使用して、FreeRTOS アプリケーションのソースコードからプロジェクトビルドファイルを生成し、ソースコードを構築および実行できます。

また、IDE を使用して、FreeRTOS 対応デバイスでコードの編集、デバッグ、コンパイル、フラッシュ、実行を行うこともできます。各ボード固有の入門ガイドには、特定のプラットフォームで IDE をセットアップするための手順が記載されています。IDE なしで作業する場合は、コードの開発とデバッグ用に他のサードパーティーのコード編集およびデバッグツールを使用してから、CMake を使用してアプリケーションをビルドして実行できます。

CMake をサポートしているボードは次のとおりです。

  • Espressif ESP32-DevKitC

  • Espressif ESP-WROVER-KIT

  • Infineon XMC4800 IoT 接続キット

  • Marvell MW320 AWS IoT Starter Kit

  • Marvell MW322 AWS IoT Starter Kit

  • Microchip Curiosity PIC32MZEF バンドル

  • Nordic nRF52840 DK Development kit

  • STMicroelectronicsSTM32L4 Discovery Kit IoT Node

  • Texas Instruments CC3220SF-LAUNCHXL

  • Microsoft Windows Simulator

FreeRTOS で CMake を使用する方法の詳細については、以下のトピックを参照してください 。

前提条件

続行する前に、ホストマシンが次の前提条件を満たしていることを確認してください。

  • デバイスのコンパイルツールチェーンは、マシンのオペレーティングシステムをサポートしている必要があります。CMake はWindows、macOS、Linux の全バージョンをサポートしています。

    Windows Subsystem for Linux (WSL) はサポートされていません。Windows マシンでネイティブ CMake を使用します。

  • CMake バージョン 3.13 以降がインストールされている必要があります。

    CMake のバイナリディストリビューションは CMake.org からダウンロードできます。

    注記

    CMake のバイナリディストリビューションをダウンロードする場合は、コマンドラインから CMake を使用する前に、必ず CMake 実行可能ファイルを PATH 環境変数に追加してください。

    macOS では Homebrew、Windows では scoopchocolatey などのパッケージマネージャーを使って CMake をダウンロードしてインストールすることもできます。

    注記

    多くの Linux ディストリビューションのパッケージマネージャーで提供されている CMake パッケージのバージョンは古くなっています。ディストリビューションのパッケージマネージャーで CMake の最新バージョンが提供されていない場合は、 linuxbrew または nix などの代替パッケージマネージャーを試すことができます。

  • 互換性のあるネイティブビルドシステムが必要です。

    CMake は GNU MakeNinja を含む多くのネイティブビルドシステムをターゲットにすることができます。Make と Ninja の両方とも、Linux、macOS、および Windows 上のパッケージマネージャーでインストールできます。Windows で Make を使用している場合は、Equation からスタンドアロンバージョンをインストールすることも、Make をバンドルした MinGW をインストールすることもできます。

    注記

    MinGW の Make 実行可能ファイルは make.exe ではなく mingw32-make.exe と呼ばれます。

    Make よりも高速で、すべてのデスクトップオペレーティングシステムにネイティブサポートを提供するため、Ninja を使用することをお勧めします。

サードパーティーのコードエディタおよびデバッグツールによる FreeRTOS アプリケーションの開発

コードエディタとデバッグ拡張機能またはサードパーティーのデバッグツールを使用して、FreeRTOS 用にアプリケーションを開発できます。

たとえば、コードエディタとして Visual Studio を使用すると、コードエディタを使用すると、デバッガーとして Cortex-Debug VS Code 拡張機能をインストールできます。アプリケーションの開発が完了したら、CMake コマンドラインツールを呼び出して VS Code 内からプロジェクトをビルドできます。CMake を使用して FreeRTOS アプリケーションを構築する方法の詳細については、「CMake で FreeRTOS を構築する」を参照してください。

デバッグの場合、以下のようなデバッグ設定で VS Code を指定できます。

"configurations": [ { "name": "Cortex Debug", "cwd": "${workspaceRoot}", "executable": "./build/st/stm32l475_discovery/aws_demos.elf", "request": "launch", "type": "cortex-debug", "servertype": "stutil" } ]

CMake で FreeRTOS を構築する

CMake はデフォルトであなたのホストオペレーティングシステムをターゲットシステムとしてターゲットにします。クロスコンパイルにこれを使用するためには、CMake には使用するコンパイラを指定するツールチェーンファイルが必要です。FreeRTOS では、freertos/tools/cmake/toolchains にデフォルトのツールチェーンファイルが用意されています。CMake にこのファイルを提供する方法は、CMake コマンドラインインターフェイスあるいは GUI のどちらを使用しているかに応じて異なります。詳細については、次の「ビルドファイルの生成 (CMake コマンドラインツール)」の手順に従います。CMake のクロスコンパイルの詳細については、公式 CMake Wiki の「クロスコンパイル」を参照してください。

CMake ベースのプロジェクトを構築するには
  1. CMake を実行して、Make や Ninja などのネイティブビルドシステムのビルドファイルを生成します。

    ネイティブビルドシステム用のビルドファイルを生成するには、CMakeコマンドラインツールまたは CMake GUI を使用できます。

    FreeRTOS ビルドファイルの生成については、「ビルドファイルの生成 (CMake コマンドラインツール)」および「ビルドファイルの生成 (CMake GUI)」を参照してください。

  2. プロジェクトを実行可能ファイルにするには、ネイティブビルドシステムを起動します。

    FreeRTOS ビルドファイルの作成については、「生成されたビルドファイルから FreeRTOS を構築する」を参照してください。

ビルドファイルの生成 (CMake コマンドラインツール)

CMake コマンドラインツール (cmake) を使用して、FreeRTOS にビルドファイルを生成できます。ビルドファイルを生成するには、ターゲットボード、コンパイラ、およびソースコードの場所を指定してディレクトリを構築する必要があります。

cmake には次のオプションを使用できます。

  • -DVENDOR – ターゲットボードを指定します。

  • -DCOMPILER – コンパイラを指定します。

  • -S: ソースコードの場所を指定します。

  • -B – 生成されたビルドファイルの場所を指定します。

注記

コンパイラはシステムの PATH 変数内にあるか、コンパイラの場所を指定する必要があります。

たとえば、ベンダーが Texas Instruments、ボードが CC3220 Launchpad、コンパイラが GCC for ARM の場合、次のコマンドを発行して、現在のディレクトリから build-directory という名前のディレクトリにソースファイルを構築できます。

cmake -DVENDOR=ti -DBOARD=cc3220_launchpad -DCOMPILER=arm-ti -S . -B build-directory
注記

Windows を使用している場合、CMake はデフォルトで Visual Studio を使用するため、ネイティブビルドシステムを指定する必要があります。例:

cmake -DVENDOR=ti -DBOARD=cc3220_launchpad -DCOMPILER=arm-ti -S . -B build-directory -G Ninja

または:

cmake -DVENDOR=ti -DBOARD=cc3220_launchpad -DCOMPILER=arm-ti -S . -B build-directory -G "MinGW Makefiles"

正規表現 ${VENDOR}.*${BOARD}.* は、一致するボードを検索するために使用されるので、VENDORBOARD のオプションにベンダーとボードのフルネームを使用する必要はありません。部分一致は、単一の一致がある場合に限り機能します。たとえば、次のコマンドは同じソースから同じビルドファイルを生成します。

cmake -DVENDOR=ti -DCOMPILER=arm-ti -S . -B build-directory
cmake -DBOARD=cc3220 -DCOMPILER=arm-ti -S . -B build-directory
cmake -DVENDOR=t -DBOARD=cc -DCOMPILER=arm-ti -S . -B build-directory

デフォルトのディレクトリ cmake/toolchains にないツールチェーンファイルを使用する場合は、CMAKE_TOOLCHAIN_FILE オプションを使用できます。例:

cmake -DBOARD=cc3220 -DCMAKE_TOOLCHAIN_FILE='/path/to/toolchain_file.cmake' -S . -B build-directory

ツールチェーンファイルでコンパイラの絶対パスが使用されておらず、コンパイラを PATH 環境変数に追加しなかった場合、CMake はそれを見つけられない可能性があります。CMake がツールチェーンファイルを見つけられるように、AFR_TOOLCHAIN_PATH オプションを使用できます。このオプションは、指定されたツールチェーンディレクトリのパスと bin の下のツールチェーンのサブフォルダを検索します。例:

cmake -DBOARD=cc3220 -DCMAKE_TOOLCHAIN_FILE='/path/to/toolchain_file.cmake' -DAFR_TOOLCHAIN_PATH='/path/to/toolchain/' -S . -B build-directory

デバッグを有効にするには、CMAKE_BUILD_TYPEdebug に設定します。このオプションを有効にすると、CMake はコンパイルオプションにデバッグフラグを追加し、デバッグシンボルを使って FreeRTOS を構築します。

# Build with debug symbols cmake -DBOARD=cc3220 -DCOMPILER=arm-ti -DCMAKE_BUILD_TYPE=debug -S . -B build-directory

また、CMAKE_BUILD_TYPErelease に設定して、コンパイルオプションに最適化フラグを追加することもできます。

ビルドファイルの生成 (CMake GUI)

CMake GUI を使用して FreeRTOS ビルドファイルを生成できます。

CMake GUI でビルドファイルを生成するには
  1. コマンドラインから cmake-gui を発行して GUI を起動します。

  2. [Browse Source] (ソースの参照) を選択してソース入力を指定してから、[Browse Build] (ビルドの参照) を選択してビルド出力を指定します。

  3. [Configure] (設定) を選択し、[Specify the build generator for this project] (このプロジェクトのビルドジェネレーターを指定) で、生成したビルドファイルを構築するために使用するビルドシステムを見つけて選択します。ポップアップウィンドウが表示されない場合は、既存のビルドディレクトリを再利用している可能性があります。この場合、[File] (ファイル) メニューの [Delete Cache] (キャッシュの削除) を選択して CMake キャッシュを削除します。

  4. [Specify toolchain file for cross-compiling] (クロスコンパイル用にツールチェーンファイルを指定) を選択してから、[Next] (次へ) を選択します。

  5. ツールチェーンファイル (freertos/tools/cmake/toolchains/arm-ti.cmake など) を選択し、[Finish] (完了) を選択します。

    FreeRTOS のデフォルト設定は、ポータブルレイヤーターゲットが提供されないテンプレートボードです。その結果、ウィンドウに というメッセージが表示されます。

    注記

    次のエラーが表示される場合。

    CMake Error at tools/cmake/toolchains/find_compiler.cmake:23 (message): Compiler not found, you can specify search path with AFR_TOOLCHAIN_PATH.

    コンパイラが PATH 環境変数にないことを示しています。GUI で AFR_TOOLCHAIN_PATH 変数を設定して、コンパイラをインストールした場所を CMake に伝えることができます。AFR_TOOLCHAIN_PATH 変数が見つからない場合、[Add Entry] (エントリの追加) を選択します。ポップアップウィンドウで、[Name] (名前) に AFR_TOOLCHAIN_PATH と入力します。[Compiler Path] (コンパイラパス) にコンパイラへのパスを入力します (C:/toolchains/arm-none-eabi-gcc など)。

  6. GUI は次のようになります。

    [AFR_BOARD] を選択し、ボードを選択してから、もう一度 [Configure] (設定) を選択します。

  7. [Generate] (生成) を選択します。CMake はビルドシステムファイル (makefiles や ninja ファイルなど) を生成し、これらのファイルは最初のステップで指定したビルドディレクトリに表示されます。次のセクションの手順に従って、バイナリイメージを生成します。

生成されたビルドファイルから FreeRTOS を構築する

ネイティブビルドシステムによるビルド

出力バイナリディレクトリからビルドシステムコマンドを呼び出すことで、ネイティブビルドシステムで FreeRTOS を構築できます。

たとえば、ビルドファイルの出力ディレクトリが <build_dir> で、ネイティブビルドシステムとして Make を使用している場合は、次のコマンドを実行します。

cd <build_dir> make -j4

CMake による の構築

CMake コマンドラインツールを使って FreeRTOS を構築することもできます。CMake にはネイティブビルドシステムを呼び出すための抽象化レイヤーが用意されています。例:

cmake --build build_dir

CMake コマンドラインツールのビルドモードのその他の一般的な用途は次のとおりです。

# Take advantage of CPU cores. cmake --build build_dir --parallel 8
# Build specific targets. cmake --build build_dir --target afr_kernel
# Clean first, then build. cmake --build build_dir --clean-first

CMake ビルドモードの詳細については、「CMake ドキュメント」を参照してください。