第2世代 Xiaoの検討その3

作成日:2020/07/10
最終更新日:2020/07/11

第2世代 Xiaoの検討その3

作成日:2020/07/10
最終更新日:2020/07/11

概要

第2世代のXiaoの仕様について検討します。今回はTOPPERS/SSPカーネルの仕様について主に調査します。

TOPPERS/SSPカーネル

TOPPERS/SSPカーネルは、μITRON4.0仕様の「仕様準拠の最低限の条件」をベースにし、「TOPPERS新世代カーネル統合仕様書」及び「TOPPERS割込み処理モデル」の機能を追加した小規模リアルタイムカーネルです[1]。入手可能なドキュメントとしてはリリースされている書庫ファイルに含まれるドキュメントかインターフェース誌に2011年11月から2012年1月まで連載されていた記事[2][3][4]かと思います。今回特に注記がない限りリアルタイムOS「TOPPERS/SSP」誕生!(第1回)カーネルの機能と構造[2]を参考にまとめます。

SSPカーネルはTOPPERS/ASPカーネルをベースにしているため、厳密にはμITRON4.0仕様を基にした仕様のOSの認識です。TOPPERS/ASPカーネルのもつ機能を最小限に絞りつつも実際によく使われる昨日はサポートし、更にメモリ使用を削減するための機能が追加されています。

Cortex-M3環境においてROM 3 kbyte、RAM 24 byteで動作するのは驚異です。仕様として参考にできる部分は吸収したいところです。

タスクの仕様

TOPPERS/SSPカーネルにおいて、タスクは待ち状態を持ちません。これはμITRON4.0仕様[5]において許可されている仕様です。 すべてのタスクで同じスタック領域を共有可能とありますが、タスクディスパッチの際にスタック領域の保存が必要だと思うのですが...どのように実現しているのかソースコードを解析しないとちょっと判らなさそうです。

また、1つの優先度につき1タスクしか登録できないようにし、タスク優先度を1〜16に制限することでタスクの実行制御に必要なメモリを16bitに押さえています。

TOPPERS/SSPカーネルのタスク管理機能で利用可能なサービスコールは(i)act_tskのみでext_tskはサポートされません[2]。Xiaoはext_tskをサポートするつもりなのでこの点は異なりそうです。

割り込み管理機能

TOPPERS/SSPカーネルはTOPPERS標準割り込み処理モデルに準拠しています。

今回XiaoはTOPPERS標準割り込み処理モデルに準拠させないつもりでいるのでここは現段階では参考にしないつもりです。

時間管理機能

TOPPERS/SSPカーネルは拡張機能として周期ハンドラとアラームハンドラが提供されます。

これらは、Xiaoでも最低限用意しなくてもよい機能の認識なので拡張機能としてつくっていきます。

システム管理機能

「ディスパッチ禁止・許可」、「CPUロック・ロック解除」が提供されます。これらはTOPPERS/ASPカーネル相当のものが利用できます。

これらは、必要な機能なのでXiaoでもサポートが必要と考えます。

上記を踏まえた現時点での結論

第2世代のXiaoとしては、まず「μITRON4.0仕様の最低条件に合致するOS」を実装しつつシステム管理機能として「ディスパッチ禁止・許可」、 「CPUロック・ロック解除」の提供は必要そうです。機能追加の優先度については「TOPPERS/SSPカーネル」の仕様を参考にするのは良さそうです。

事前の検討はこのくらいにして手を動かし始めたいと思います。

参考文献

  1. TOPPERS Project, Inc., SSPカーネル, TOPPERS, 2000-2020
  2. 斉藤直希, 杉本明加, リアルタイムOS「TOPPERS/SSP」誕生!(第1回)カーネルの機能と構造, インターフェース, vol. 38, no. 11, pp. 122-127, Nov. 2012
  3. 斉藤直希, 杉本明加, リアルタイムOS「TOPPERS/SSP」誕生!(第2回)SSPカーネルのARMマイコンへの移植手順, インターフェース, vol. 38, no. 12, pp. 128-138, Dec. 2012
  4. 斉藤直希, 杉本明加, リアルタイムOS「TOPPERS/SSP」誕生!(第3回・最終回)動作確認とアプリケーションの作り方, インターフェース, vol. 39, no. 1, pp. 158-167, Jan. 2013
  5. 社団法人トロン協会, μITRON4.0仕様 Ver.4.03.03, 社団法人トロン協会, 1999-2008