モダンOSのお砂場(73) UNO R4でFreeRTOS、割り込みISRからNotify

NOTIFY_ISR_DUTa
Joseph Halfmoon

前回は2つのTask間でGiveしてTakeして相互にNotify。今回は割り込みサービスルーチン(ISR)からNotifyです。ISRからTaskへの一方通行なんだけれども。やらないわけにもいかないけれどもチョイ変のチョイ変。でもこれで割り込みが何か解決してくれることを待っているTaskというのも簡単。ホントか?
“モダンOSのお砂場(73) UNO R4でFreeRTOS、割り込みISRからNotify” の続きを読む

モダンOSのお砂場(72) UNO R4、RA4M1でFreeRTOS、Notify

Tasks_Take_Give
Joseph Halfmoon

前々回、TaskのSuspendとResumeをやっています。これは停める相手の都合などお構いなしに停止するという乱暴な?ものでした。今回は「待っているのでよろしく」「起きてください」とお互いに尊重しあいながら停止、再開できるNotifyを練習してみます。お互いにGive and Takeちゅうことですかい。

“モダンOSのお砂場(72) UNO R4、RA4M1でFreeRTOS、Notify” の続きを読む

モダンOSのお砂場(71) UNO R4、RA4M1でFreeRTOS、ISRからQUEUE

InterruptHandler
Joseph Halfmoon

前回はタスクの一時停止と再開でしたが、その横で割り込みも使ってました。しかし割り込みとタスクの関係性は薄かったデス。そこで今回は、タスク側とも「分かり合える」スケジューラのタイムスタンプをQueueを使って送信することで割り込み発生タイミングをタスク側に伝えてみたいと思います。

“モダンOSのお砂場(71) UNO R4、RA4M1でFreeRTOS、ISRからQUEUE” の続きを読む

モダンOSのお砂場(70) UNO R4、ルネサスRA4M1でFreeRTOS、サスペンド

ArduinoUNO_R4_DUT
Joseph Halfmoon

タスクの一時停止(suspend)と再開(resume)を実験しようとしたのですが、勝手な割り込み端子への思い込みに足をすくわれました。Arduino UNO R4は32ビット機になったわけだし、その辺の端子はみな割り込みに使えるんじゃね?大間違い!Arduino UNOの伝統にのっとり、2番、3番だけなのね。律儀。
“モダンOSのお砂場(70) UNO R4、ルネサスRA4M1でFreeRTOS、サスペンド” の続きを読む

モダンOSのお砂場(69) UNO R4、ルネサスRA4M1でFreeRTOS、ヒープメモリ

Heap
Joseph Halfmoon

前回、FreeRTOSの各種設定を決めるFreeRTOSConfig.hを読んでいて「思っていたのと違う」ところがありました。勝手に思いこんでいただけなんだけれども。今回もそんな思い込みを正して参りたいと思います。メモリの割り当てについてです。どっかヒープから割り当ててくれているのでないの?

“モダンOSのお砂場(69) UNO R4、ルネサスRA4M1でFreeRTOS、ヒープメモリ” の続きを読む

モダンOSのお砂場(68) UNO R4、ルネサスRA4M1でFreeRTOS、優先順位

TASKs
Joseph Halfmoon

前回はDelayに関するAPIでした。今回はTaskのPriorityを操作してみます。今までPriorityはみんな「1」みたいなテキトーな設定をしてきました。優先順位を設定する実験してみることで勉強になるんでないかい、という目論見。しかし、改めて FreeRTOSConfig.h を読んでみると思っていたのと違う?
“モダンOSのお砂場(68) UNO R4、ルネサスRA4M1でFreeRTOS、優先順位” の続きを読む

モダンOSのお砂場(67) UNO R4、ルネサスRA4M1でFreeRTOS、Delay

delayApiDiag
Joseph Halfmoon

FreeRTOSにはある期間の間Taskの実行をブロックするDelayの名がつくAPIが3種あります。前回まで一番お手軽なvTaskDelay(引数も一つしかないし)ばかりを使ってきたのですが、今回は3種の違いについて勉強したいと思います。その上で実機上で動かして実感してみると。軽負荷だとあまり差が見えないけれど。

“モダンOSのお砂場(67) UNO R4、ルネサスRA4M1でFreeRTOS、Delay” の続きを読む

モダンOSのお砂場(66) UNO R4、ルネサスRA4M1でFreeRTOS、Queue

UNOR4_FreeRTOS_queue_diagram
Joseph Halfmoon

今回はArm Cortex-M4コアのルネサスマイコンRA4M1を搭載したArduino UNO R4上で、FreeRTOSのQueueを使ってみたいと思います。複数のタスク間で安全にデータを受け渡しできる便利な構造です。データの送受ができることは当たり前なので、今回は送受にどのくらいの時間がかかるのだが目安を観察。 “モダンOSのお砂場(66) UNO R4、ルネサスRA4M1でFreeRTOS、Queue” の続きを読む

モダンOSのお砂場(65) FreeRTOSのコルーチン、Deprecatedとな!

coroutineNOTE
Joseph Halfmoon

ソフトウエアは何時か滅びるとの理に思いはせる今回です。前回、Arduino UNO R4にてFreeRTOSのコルーチン動かしてみました。Configいじったりしてチョイ面倒だったです。しかしFreeRTOSのドキュメントを見たならば Deprecatedと表示がでてました。いつの間に?よく読んでなかった私が悪い。

“モダンOSのお砂場(65) FreeRTOSのコルーチン、Deprecatedとな!” の続きを読む

モダンOSのお砂場(64) UNO R4、ルネサスRA4M1でFreeRTOSのコルーチン

ArduinoUNOR4corEC
Joseph Halfmoon

前回はOSタイマ前々回はTask(プリエンプティブな)、並行処理を行う方法はもうお腹一杯な気がしないでもないです。しかし、FreeRTOSにはもう一つあり。CoRoutineです。本格的なTaskが使えるFreeRTOSでわざわざコルーチンする意味があるのか不明ですが、今回は「あるものは使ってみる」ということで。
“モダンOSのお砂場(64) UNO R4、ルネサスRA4M1でFreeRTOSのコルーチン” の続きを読む

モダンOSのお砂場(63) UNO R4、ルネサスRA4M1でFreeRTOS、OSタイマ

UNOR4_softtimerA
Joseph Halfmoon

前回まではマルチタスクLチカするのに複数のタスクを作ってました。各タスク毎に遅延時間を指定するというシングルタスク同様の構造です。しかし定周期で何かを実行するというのはRTOS環境下ではアリガチな作業です。FreeRTOSはそのための「軽い」仕組みもしっかり実装されてます。今回はこのTimerタスクを使ってみます。
“モダンOSのお砂場(63) UNO R4、ルネサスRA4M1でFreeRTOS、OSタイマ” の続きを読む

モダンOSのお砂場(62) UNO R4、ルネサスRA4M1でFreeRTOS、タスク生成

FreeRTOS_Arduino
Joseph Halfmoon

Arduino UNO R4登場。ルネサスのArmマイコン搭載。32ビット機なのでArduino IDE環境を使いつつ、FreeRTOSベースで使ってみようかと思います。別シリーズでFreeRTOSでLチカのサンプルコードを動かしているので、今回はその構造のおさらいから。まずはタスク2つ作ってダブルLチカ。ありがち。

“モダンOSのお砂場(62) UNO R4、ルネサスRA4M1でFreeRTOS、タスク生成” の続きを読む

モダンOSのお砂場(61) Keil Studio Cloudへの自動変換、赤でもビルドでき

Nucleo_rtos_training00_EC
Joseph Halfmoon

年末で閉鎖のArm Online Compilerの移行方法の1番手はKeil Studio Cloudへの自動COPYです。COPY成功しても古いAPIを使っていると新しいAPIで動作しているKeil Studio CloudのIDE上はエラーが出る件(けれどビルド可能)、一番ボロボロだったケース、ご参考まで。
“モダンOSのお砂場(61) Keil Studio Cloudへの自動変換、赤でもビルドでき” の続きを読む

モダンOSのお砂場(60)Arm Online Compilerからの脱出、まとめ

OnlineCompiler
Joseph Halfmoon

2022年末にてArm Online Compilerが閉鎖ということでいろいろ試行錯誤してきましたが、いろいろやりすぎて自分でも分けわからなくなってきました。今回は一度立ち止まり、いままでにやってみたことをまとめてみます。簡単とか難しいとか個人の感想です。また調べ切れてないので間違ったことを書いているかもしれません。 “モダンOSのお砂場(60)Arm Online Compilerからの脱出、まとめ” の続きを読む