top of page
  • GitHub
  • Qiitan
  • icon
  • Facebook
  • Instagram
  • Twitter-circle
  • Linkedin
  • Youtube
  • base_logo_vertical_black

遅ればせながらFreeRTOSとC++

26/5/5

執筆者:

今まで、組み込み機器のファームウェアはC言語の自作の簡易スケジューラと、C言語を使って時間管理をしていました。

これからはFreeRTOSを使い、開発言語はC++へ移行する決意をしました🎉


タツノ在職時、STM32F407にFreeRTOSを載せて、開発言語はC言語で製品の試作をしたことがありました。

uITRONに比べて情報も多く、書籍も豊富に揃っていました。

しかし、やはりuITRONへの執着(!?)が根強く、FreeRTOSが採用されることはありませんでした。


最近、副業先に電子工作に興味を持つ小学生生徒がいたので、試しにArduinoとM5Stack BASICを購入してデモをすることにしました。


開発環境はVSCodePlatformIOという機能拡張です。

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でお客様の要望に応えていけるよう、鋭意勉強中です。

最新ニュース

26/5/5

遅ればせながらFreeRTOSとC++

26/3/26

NFCリーダーをSwiftネイティブで操作

Pythonの方が簡単だけど、やっぱりSwiftで!

26/3/23

NFCタグをmacOSで利用する

リード・ライトを自由自在に

bottom of page