理想のRTOSを自作する (11)

【ヒープメモリ管理クラス】

SDKにはマルチスレッド対応ではない関数がある。その全てをマルチスレッド対応とするには相当な労力が必要となるため、とりあえず、標準機能をラップしただけのマルチスレッド対応のメモリ管理クラスを作ってみた。

重要:優先度の高いタスクは割り込み処理のようにふるまうため全てのマルチスレッド非対応関数の呼び出しは誤動作を引き起こす可能性があることに注意しよう。

このクラスのように割り込み禁止で保護するか、或いは、ミューテックス等で同時実行を回避すれば良い。マルチプロセッサの場合は割り込みを禁止しただけでは駄目でさらなる対策が必要となる。この意味が理解できない場合、このRTOSをお勧めすることはできない。

【ソース・コード】

【実測値】

ATmega32u4/16MHzでの実測値。

【総評】
AVR16MHzだとこんなもんかもしれないがはっきり言って思っていたよりも遅い。まだチューニングの余地はあるとは思うが頑張ってもせいぜい10%程度の改善しか見込めない気もする。それよりも実測値と同程度だろうと予想される割り込み禁止時間のほうが気になってしまう。

また、理想と言っても個人的な理想でしかなく全ての人にとっての理想などない。使う目的が異なれば重視するものも異なってくるからだ。だが、自分の理想に近づくよう改良できるのがオープンソースの最大の魅力。気に入らない部分があれば書き直せばいいだけだ。

今回のようにシンプルなRTOSであれば個人でも自作は十分可能である。まだ自作したことがない人は、ぜひ、挑戦してみて頂きたい。今回の投稿が皆様の参考にでもなれば幸いである。

【開発環境】
今回は、な~んと全てをarduino-IDEで開発してしまった。機能不足の点は否めないが慣れてしまえばシンプルで良い開発環境に思えてくるから不思議だ。(笑)

【基本的な使い方】

【全ソースコードのダウンロード】
avros.zip

【関連する投稿】
理想のRTOSを自作する (1)
理想のRTOSを自作する (2)
理想のRTOSを自作する (3)
理想のRTOSを自作する (4)
理想のRTOSを自作する (5)
理想のRTOSを自作する (6)
理想のRTOSを自作する (7)
理想のRTOSを自作する (8)
理想のRTOSを自作する (9)
理想のRTOSを自作する (10)
理想のRTOSを自作する (11)

カテゴリーrtos

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください