モダンOSのお砂場(40) Mbed OS6、EventFlags、便利なお知らせ

F401RE
Joseph Halfmoon

前回ConditionalVariableをヤバイなどと言ってしまいましたが、どうもそんなこと無いみたいです。メモリの使い方がOS2とOS6で違うだけだったみたい。ボードもOSも「2種併用中」で混乱してました。さて、今回はEventFlagsです。スレッド間、あるいは割り込みサービスルーチンからイベントを他に簡単に伝えることができるもの。

“モダンOSのお砂場(40) Mbed OS6、EventFlags、便利なお知らせ” の続きを読む

モダンOSのお砂場(39) Mbed OS6、ConditionalVariableヤバイ?

NucleoF401RE
Joseph Halfmoon

カッコイイ機能があるな、ということで使ってみました。ConditionalVariableであります。確かにカッコイイのですが、ターゲットのSTM32F401REにとっては結構ヤバイ奴でした。シンプルなサンプルコードなのにRAMがいっぱいいっぱいな感じ。何かコードを書けるような余地があるような気がしません。気のせい?

※2022/03/17追記:「気のせい」でした。すみません。OS6はZI Dataとして扱われる部分が多いためにヤバイなどと書いてしまいました。全然ヤバくありません。ヤバイのは自分。

“モダンOSのお砂場(39) Mbed OS6、ConditionalVariableヤバイ?” の続きを読む

モダンOSのお砂場(38) Mbed OS6、Timerでインターバル測定。STM32

MbedSRC
Joseph Halfmoon

前回がPWM出力だったので、今回は逆に入力インターバルをタイマAPIで測定してみました。入力は割り込み受け、人間がボタンを押す想定なので精度的にはいい加減な方法です。まあ、とりあえずボタンを押す時間間隔は測れたと。また、前回と異なり今回はオブジェクトコードの作成にWebベースのMbed Compilerを使ってみます。

“モダンOSのお砂場(38) Mbed OS6、Timerでインターバル測定。STM32” の続きを読む

モダンOSのお砂場(37) Mbed OS6、PWMを使う。STM32

PWM_DUT_EC
Joseph Halfmoon

今回はPWM(Pulse Width Modulation)出力をMbed OSのAPIを使って動作させてみたいと思います。前回、外部端子割り込みが使えるようになったので、外部端子割り込みでPWM出力を開始/停止する機能付きとしてみました。簡潔で分かり易いAPIのMbed OSです。サンプルプログラムの作成もお気楽。

“モダンOSのお砂場(37) Mbed OS6、PWMを使う。STM32” の続きを読む

モダンOSのお砂場(36) Mbed OS6、InterruptInを使う。STM32

Nucleo_F401RE_UserButton_LD2
Joseph Halfmoon

前回はスレッドを使って2つの仕事を並行処理でした。今回は外部端子割り込みを使ってみます。Mbed OS6での割り込み処理の流儀は、FreeRTOSの割り込みの流儀とはちょっと違う感じがいたします。OSとして割り込みやIOなどを「仕切る」Mbed OS6と、他のフレームワークに乗っかってRTOS機能を提供するFreeRTOSと(個人の感想です。)

“モダンOSのお砂場(36) Mbed OS6、InterruptInを使う。STM32” の続きを読む

モダンOSのお砂場(35) Mbed OS6、Threadを使ってみる、STM32

ProjectWizard
Joseph Halfmoon

前回はEventQueueを使った2つの仕事の並行処理例でした。今回はThreadを使ってほぼ同じ仕事を書き直してみます。プライオリティがないEventQueueと比べると、Threadはプラオリティ制御もできて、クリティカルな制御が可能なのだと思います。RTOSのカーネルのお陰。RTOS的にはこちらの方が「本流」でしょうか。

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

モダン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チカをタスクで実装” の続きを読む