16
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

uITRON(FreeRTOSベース)Windowsシミュレータ

Last updated at Posted at 2019-08-30

はじめに

QEMUでTOPPERS/ASPカーネルを動かす - 本編 - Qiita
https://qiita.com/imagou/items/e532c00b3c0a0a800cda

にて、LinuxでRTOSをエミュレートすることには成功しました。万歳。

しかし、Windows環境しかない人に

Ubuntuをインストールしてね!そしたらRTOSが疑似れるよ!

というのは酷だなあ、ということで、Windowsシミュレータを作りました!
(厳密には「作る」というほど大袈裟ではないですが・・・)

本編

1. 準備

1-1. 環境

以下

  • Windows環境

    Win10 Pro 64-bitで動作確認

  • Visual C++ 2019

    Microsoft Visual Studio Community 2019 Version 16.2.3 で動作確認

  • FreeRTOS v10.2.1

    特別ダウンロードしなくてもOKです

1-2. FreeRTOSとして動かす

(あえてURLは載せませんが)
FreeRTOSのサイトからダウンロードしたデモプログラムが、まんま動きます。

しかし、

FreeRTOSのAPIは超絶わかりにくい、やっぱりuITRONだろ

と思いました。
いや実際のところ、FreeRTOSはシンプルで非常によくできていると思うのですが、、、やはりuITRONへの馴染みは深いのであります。

2. 成果 - uITRONぽいもの

ということでいきなり成果物です(雑)。

ずばり、単純にuITRONのI/Fを間に挟んだものを用意しました。

imagou/uITRON_based_on_FreeRTOS
https://github.com/imagou/uITRON_based_on_FreeRTOS

ライセンスはGNU GPL v2です。FreeRTOSと同じですね。

3. 解説

3-1. ビルド方法

uITRON_based_on_FreeRTOS\Demo\WIN32-MSVC-uITRON\WIN32.sln
をVC++で開いて、ビルドするだけです。

3-2. 使い方

起動時のウインドウで、"help"と入力してください(雑)。

[TimerTask]: DELAY 3000ms
[TimerTask]: DELAY 3000ms
help

uTITRON (based on FreeRTOS) Demo Program
   1 - 15の数値    :   数値メッセージの送受信
   stop            :   受信タスクの一時停止
   start           :   受信タスクの再開
   lock            :   受信タスクのロック
   unlock          :   受信タスクのアンロック
   cyclic          :   周期ハンドラの開始/停止(初期状態は停止)
   alarm           :   アラームハンドラの開始/停止(初期状態は停止)
   exit            :   デモの終了
   help            :   このメッセージを表示

3-3. 解説

以下のタスク・ハンドラ(と機能)で構成されています。

  • コマンドタスク(コマンドを受けてイベント発行)
  • 送信タスク(イベントを受けてメッセージ送信)
  • 受信タスク(メッセージ受信)
  • タイマタスク(3000msec周期でログを出すだけ)
  • 周期ハンドラ(1000msec周期でイベント発行)
  • アラームハンドラ(5000msecで満了)

uITRONの以下の機能を有します。

  • タスク関連(完璧ではない)
  • イベントフラグ
  • メールボックス
  • ミューテックス
  • 周期ハンドラ
  • アラームハンドラ

ということで、まだまだ開発途上です。
(機会があれば、充実度を上げていきたいとは思っています・・・)

3-4. 注意

1msecのタイマティックがうまくないようで、かなり長いです。
時間があれば追ってみます。
2020/4/27追記:
補正機能追加により、(ミリオーダーの誤差はありますが)期待通り動作するようになりました!

おわりに

言わば
単なるuITRONラッパー
なので、繰り返しですが大したことはしていません。笑

しかしながら、
誰しも簡単に(uITRONベースの)RTOSが動かせる
は、十分に満たしているものと思います!

続きの記事

Windowsシミュレータで学ぶuITRON (1) - タスク操作 - Qiita
https://qiita.com/imagou/items/de102b81d0049b819532

Windowsシミュレータで学ぶuITRON (2) - イベントフラグ - Qiita
https://qiita.com/imagou/items/80ec6e4970de31540524

Windowsシミュレータで学ぶuITRON (3) - メールボックス - Qiita
https://qiita.com/imagou/items/f407f6ec32a693584842

Windowsシミュレータで学ぶuITRON (4) - ミューテックス - Qiita
https://qiita.com/imagou/items/32ceff3e963f7fc070b2

Windowsシミュレータで学ぶuITRON (5) - 周期ハンドラ - Qiita
https://qiita.com/imagou/items/f6c50d8e01a5f8d86141

Windowsシミュレータで学ぶuITRON (6) - アラームハンドラ - Qiita
https://qiita.com/imagou/items/edd79187091773c6a43f

参考

Micro-ITRON4.0 Specification (in Japanese)
http://www.ertl.jp/ITRON/SPEC/mitron4-j.html

(以下は内部仕様)
FreeRTOS API categories
https://www.freertos.org/a00106.html

16
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?