2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

メモ:STM32F407開発ボードとKeilでFreeRTOSを動かす際の注意点

Last updated at Posted at 2022-01-23

記事の概要

STM32 Discovery開発ボードのSTM32F407 DISCOVERY Boardを用いて、FreeRTOSを動かす際の注意点メモです。

統合開発環境にはKeilの無料試用版を用います。

STM32においてFreeRTOSを使用する事例には、FreeRTOSのラッパーAPIであるCMSIS RTOSを用いている場合が多いです。
CMSIS RTOSは統合開発環境のSTM32CubeMXから自動で組み込むことができるので便利です。
ですが、今回はオープンソースとして提供されているFreeRTOSをダウンロードしてプロジェクトに組み込みます。

方法

基本的には以下のサイトの指示に従えば、STM32F407開発ボードでFreeRTOSを動かすことができます。

FreeRTOSは2022年1月23日時点の最新版であるFreeRTOS 202112.00を使用しても動きませんでした。
また設定ファイルのFreeRTOSCOnfig.hは自分で作成しないといけません。

上記サイトのGitHubのFreeRTOSとFreeRTOSConfig.hを使うのが一番簡単だと思います。
必要に応じて、新しいバージョンのFreeRTOSと置き換えたり、FreeRTOSConfig.hの設定を変更します。

サイトではSTDOUTをIMTとして使用しています。そしてST-LInkのオプション設定もそれに合わせてTrace Enableを有効にしています。
これはDebug Viewerでprintfを使用するためです。
printfを使用しないのでしたら、この設定はしなくても問題ありません。

注意点

KeilのARM Compilerコンパイラが2022年1月23日時点のデフォルト設定であるversion 6だと、RVDS\ARM_CM4Fのファイルport.cが原因で大量のエラーが出ます。

./FreeRTOS/Source/portable/RVDS/ARM_CM4F\portmacro.h(167): error: unknown type name '__forceinline'
static portFORCE_INLINE void vPortSetBASEPRI( uint32_t ulBASEPRI )

RVDS\ARM_CM4Fのport.cをGCC\ARM_CM4Fのport.cに置き換えるとエラーは消えますが、スケジューリングが動作しなくなります。
このエラーは、以下のようにコンパイラを古いバージョンのversion 5に変更すると消えます。

FreeRTOSのコンパイラ設定.png

今後、この問題は解消されると思いますが、それまではこの方法で対応します。

参考

Keilでのプロジェクト作成方法については以下をご参照ください。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?