モダンOSのお砂場(34) Mbed OS6、EventQueueを使ってみる

VSCodeWindow
Joseph Halfmoon

前回のMbed OS6は bare metal profileでしたが、今回はRTOS部分を含むフルセットのAPIが使える状態でサンプル・プログラムをビルドしています。とはいえbare metalでも「行けそう」な小さなもの。使ってみるMbed OS機能は EventQueueです。Queueに溜まっているお仕事を取り出しては処理してくれる働き者。

“モダンOSのお砂場(34) Mbed OS6、EventQueueを使ってみる” の続きを読む

モダンOSのお砂場(33) Mbed OS6、bare metal profile、Lチカ

NucleoF401_EC
Joseph Halfmoon

今回から Mbed OS6の bare metal profile というものを触ってみたいと思います。Mbed OS6のコアなRTOS部分を「欠いた」プロファイルです。しかし見てみるとマルチタスクっぽいこともできるみたい。毎度お世話になってきたMbed OS2の引っ越し先?それにVSCode+PlatformIOでビルドからデバッグまで出来る。なかなかじゃん。

“モダンOSのお砂場(33) Mbed OS6、bare metal profile、Lチカ” の続きを読む

モダンOSのお砂場(32) FreeRTOS、割り込みハンドラからタスクにキュー

SeeeduinoXiao_DUT
Joseph Halfmoon

前回はタスク・リストを一覧して何故か満足してしまいました。今回は、割り込みとタスクの間の通信を試みてみたいと思います。割り込みサービスルーチン側では、処理の依頼をするだけで、時間のかかる処理はタスクにお任せするという仕組み。とりあえず動くプロトタイプを作ってみました。

“モダンOSのお砂場(32) FreeRTOS、割り込みハンドラからタスクにキュー” の続きを読む

モダンOSのお砂場(31) FreeRTOS、タスク・リストを一覧する

vTaskListEC
Joseph Halfmoon

ここ数回、Seeeduino Xiaoボード(Microchip製のArmコア内蔵SAMD21マイコン搭載)上でFreeRTOSのタスクを作ってその動作を観察しています。タスク数は少ないのだけれどもタスクの一覧みたいなものが見たくなってきました。そのためのAPIがありました。組み込み用のOSなので、デバッグするとき向けの機能ですが。 “モダンOSのお砂場(31) FreeRTOS、タスク・リストを一覧する” の続きを読む

モダンOSのお砂場(30) FreeRTOS、タイマAPI対vTaskDelay

Seeeduino Xiao on BB
Joseph Halfmoon

前回は、自ら制御権を放棄するスケジューリングとプリエンプティブに取り出されるまで手放さないものを比べてみました。今回はタスクを決めた期間休ませるのに使っていたvTaskDelayを使わずタイマAPIを使って定期的に仕事をさせる方法と、今まで通りのvTaskDelayを使う方法を比べてみたいと思います。 “モダンOSのお砂場(30) FreeRTOS、タイマAPI対vTaskDelay” の続きを読む

モダンOSのお砂場(29) FreeRTOS、プリエンプティブなスケジューリング

StateDiag_EC
Joseph Halfmoon

前回はFreeRTOSのスケジューラを起動をしたものの、Taskは1個だけでスケジューラのご利益はありませんでした。今回はTaskを2個にして、Blocking APIを使って「自主的に」制御権を手放すのと「プリエンプティブ」に制御権を取り上げて再スケジュールするのと両方のケースを観察してみたいと思います。実験に使用するのは、前回に続きSAMD21マイコン搭載Seeeduino XAIOボードです。 “モダンOSのお砂場(29) FreeRTOS、プリエンプティブなスケジューリング” の続きを読む

モダンOSのお砂場(28) FreeRTOS、スケジューラの起動、SAMD21

SAMD21_FreeRTOS_Blink_EC
Joseph Halfmoon

前回は、ESP32上のFreeRTOSでした。しかしESP32だと出来なかったことがあるのです。スケジューラの起動。ESP32の場合FreeRTOSが動いているのが前提なので、こちらに制御がもらえる前にスケジューラが動いてます。一方、最近手に入れたSAMD21機Arduino環境では、スケジューラを自分で立ち上げればFreeRTOSできる、という仕組み。

“モダンOSのお砂場(28) FreeRTOS、スケジューラの起動、SAMD21” の続きを読む

モダンOSのお砂場(27) FreeRTOS、ESP-IDFで定番のLチカをタスクで実装

IDF_BLINK_EC
Joseph Halfmoon

ESP-EYE使いESP-IDF環境でLチカをプログラムするのを「敷居が高い」などといってMicroPythonに逃げてしまいました。そのままでは進歩がないので、手足があって分かり易いESP32-DevkitCにもどってESP-IDF環境でLチカしてみました。素のままではモダンOSにならないので、FreeRTOS機能を使う縛りでです。

“モダンOSのお砂場(27) FreeRTOS、ESP-IDFで定番のLチカをタスクで実装” の続きを読む

モダンOSのお砂場(26) Zephyr RTOS、micro:bit v2でHello!

microbitV2package
Joseph Halfmoon

前回、MbedオンラインコンパイラがサポートしているBBC micro:bitはv1.3だということに気づいてしまいました。v2は勿論、v1.5すら対象外。愕然。まあ、v1.3とv1.5の差に気をつければ生成オブジェクトはv1.5ハード上でも動作することは確かめましたが。しかし大っぴらにv1.5およびv2をサポートできるRTOSとしてZephyrの利用にトライ。micro:bit v2上でZephyrのサンプルプログラムを動かしてみました。

“モダンOSのお砂場(26) Zephyr RTOS、micro:bit v2でHello!” の続きを読む

モダンOSのお砂場(25) MbedとMicroBit、threadとfiber

Joseph Halfmoon

前回は、Arm Mbedコンパイラ上で、BBC micro:bitのBluetoothサービスを起動するオブジェクトを生成し、スマホとペアリングさせてその動作を確認いたしました。しかし、例によってドキュメントもよく読まずにやっているのでペアリングにはテコずり、他にも不明な点がポロポロと。今回は一度立ち止まって文書を確認しましたです。

“モダンOSのお砂場(25) MbedとMicroBit、threadとfiber” の続きを読む

モダンOSのお砂場(24) Mbedでmicro:bit、BLEペアリング成功への道

SmartPhoneAndMicroBit
Joseph Halfmoon

前回、Arm社のMbedオンライン環境で、BBC micro:bit用のオブジェクトファイルが生成できることを確かめました。特に MicroBitクラス を使ってプログラムするとMakeCodeエディタのブロックと同等な機能を呼び出すことができるので楽ちんです。今回は早速、主題でありますBluetoothをMbed環境から使ってみましたがペアリングにちょっと手こずりました。

“モダンOSのお砂場(24) Mbedでmicro:bit、BLEペアリング成功への道” の続きを読む

モダンOSのお砂場(23) Arm MbedでBBC micro:bitプログラミング

Mbed_MB
Joseph Halfmoon

今までJavaScript(実際にはTypeScript)環境にてプログラムしていたBBC micro:bitですが、C/C++環境への移行を考えております。移行先として、Arduino環境(別シリーズ)、Arm Mbed環境、Zephyrの3候補のうち、本シリーズではMbedとZephyrの2つをやってみる所存。まずはArm Mbed環境を調べてみました。

“モダンOSのお砂場(23) Arm MbedでBBC micro:bitプログラミング” の続きを読む

モダンOSのお砂場(22) FreeRTOS、ソフトウエアタイマAPIでワンショット

FreeRTOS_SoftTimer
Joseph Halfmoon

前回はMutex排他制御でしたが、今回はソフトウエアタイマAPIであります。ソフトウエアタイマというと自前でループで回る「あれ」をつい想像してしまいますが違います。RTOSです。ちゃんとOSが面倒を見てくれる「タイマ」です。ある意味ハードウエアのリソースの制限が無い分、使いやすくもあるもの。 “モダンOSのお砂場(22) FreeRTOS、ソフトウエアタイマAPIでワンショット” の続きを読む

モダンOSのお砂場(21) FreeRTOS、Mutex排他制御の効果が「分かる」サンプル

ESP32 DevKitC on BB
Joseph Halfmoon

今回はRTOSでは避けて通れない排他制御を実験してみます。それも「排他制御無」だとこんなに動作が「ボロボロだ」と実感できるサンプルを作ってそこに排他制御(mutex)を導入し、「解決できた」ところを見ようという野望です。タイミングとかいろいろあるし、そんなに上手くサンプルプログラムを作れるのか。

“モダンOSのお砂場(21) FreeRTOS、Mutex排他制御の効果が「分かる」サンプル” の続きを読む