遅ればせながらFreeRTOSとC++
26/5/5
執筆者:

今まで、組み込み機器のファームウェアはC言語の自作の簡易スケジューラと、C言語を使って時間管理をしていました。
これからはFreeRTOSを使い、開発言語はC++へ移行する決意をしました🎉
タツノ在職時、STM32F407にFreeRTOSを載せて、開発言語はC言語で製品の試作をしたことがありました。
uITRONに比べて情報も多く、書籍も豊富に揃っていました。
しかし、やはりuITRONへの執着(!?)が根強く、FreeRTOSが採用されることはありませんでした。
最近、副業先に電子工作に興味を持つ小学生生徒がいたので、試しにArduinoとM5Stack BASICを購入してデモをすることにしました。
開発環境はVSCodeとPlatformIOという機能拡張です。
Arduino、M5Stack共に電子工作界隈では有名なArduinoフレームワークというのを使って動かすのですが、なんと
実は裏でFreeRTOSが動いている
開発言語がC++が標準
ということがわかりました。
M5Stack BASICはデュアルコアなのでFreeRTOSのシステムコールが拡張されていますが、基本は全く同じで、Arduino UNO R4 WiFiは純粋なFreeRTOSが使えます。
ついでに、STM32F407もC++のコンパイラは選択できるし、FreeRTOSも載せられます。
もうやらない理由はないです😏
特にSTM32F407ではFreeRTOSを使うことで、今まで実現が大変だったことが簡単になったものもあります。
例えば、家電の赤外線リモコンのデータ受信!
FreeRTOSのキューとタスクを連動させれば、簡単に信号の解析ができます。
今までもC言語で自作のキューを使ってましたが、自作のスケジューラにはタスクを待たせる機能がなかったので、結構難儀してました。
半日ほどで赤外線リモコンのデータを受信できるようになりました。
ちなみに、Arduinoならリモコン信号を解析するライブラリがあるので、一発。
写真の4つのボードはFreeRTOSとC++で動いています。
自作のスケジューラには20年以上頑張ってもらいましたが、これからはFreeRTOSでお客様の要望に応えていけるよう、鋭意勉強中です。
最新ニュース