(別室)リアルタイムOS(μITRON系)で遊ぼう
※このページはあくまで個人的な趣味によって書かれており、著者は全ての内容について、いかなる責任も負いません。
このページは、リアルタイムOSを使った簡単なプログラムを紹介しています。
●TRONについて
リアルタイムOSというと、ITRONが有名で ※注)この原稿を書いた時点での事です 、WindowsやUnix系とは比較にならないくらい多くの
●μITRON4.0仕様のOSについて
ITRON
※http://www.sakamura-lab.org/TRON/ITRON/home-j.html
準拠のOSには、例えば業界標準の「μITRON4.0仕様」
●TOPPERSプロジェクトについて
TOPPERS(Toyohashi OPen Platform for Embedded Real-time Systems)
※http://www.toppers.jp/index.html は、
●RTOSのいろいろ
1.Smalight OS
Smalight OS
※http://www.kitasemi.renesas.com/product/smalight/index.html
は、(株)ルネサンス北日本セミコンダクタ
2.NORTi
株式会社ミスポ製
※http://www.mispo.co.jp/
のμITRON準拠のRTOSです。
3.PICROS
個人で作られた???PIC用のROS
※http://www.picfun.com/picros00.html
のようです。
4.FreeRTOS
PIC、AVR、ARM、MSP430、HSC、、、等に対応したRTOS
※http://www.freertos.org/
です。
5.H8/OS
SH/H8に共通のインターフェースを提供するシングルタスクのOS
※http://mes.sourceforge.jp/h8/index-j.html
です。
Smalight OSを使ってみる
1.Smalight OSを動かしてみる
(1)SH−2でルーレットにしてみる(その1)
「Interface」2006年6月号付録のSH−2
※「おまけのページ」を参照
及び、「Interface」2006年8月号付録の「Smalight OS」
「Smalight OS」のパソコン画面イメージ
Smalight OSのAPI ※(株)ルネサンス北日本セミコンダクタのHPより抜粋
実験基板の写真
実験基板の回路
Smalight OSのソース
user.c のプログラムソース(C言語)
config.c のプログラムソース(C言語)
(2)SH−2でルーレットにしてみる(その2)
(その1)のサンプルでは、「タスクの起床待ち」、「タスクの起床」を使って、タスク1、タスク2を交互に動かしているだけで、
「その1」と「その2」の8つのルーレットLEDの動き方の違い
user.c のプログラムソース(C言語)
config.c のプログラムソース(C言語) ※その1と同じ
2.Smalight OSでプログラムを作ってみる
TOPPERS/JSPを使ってみる
1.TOPPERS/JSPをインストールする
・TOPPERS/JSPは、上記「●TOPPERSプロジェクトについて」で紹介した
※http://www.toppers.jp/index.html
から
「Pizza Factory 3」のパソコン画面イメージ
2.TOPPERS/JSPを動かしてみる
※操作方法は、
「(別室)Cygwinのページ」
の「TOPPERS/JSPの基本操作」
※準備中
を参照。
3.TOPPERS/JSPを動かしてみる
(1)SH−2ボード ※「Interface」2006年6月号付録 + 「Pizza Factory 3」でルーレットにしてみる
「Smalight OS」で作ったルーレット「(2)SH−2でルーレットにしてみる(その2)」と同じものを、「TOPPERS/JSP」
「TOPPERS/JSP」についてくるサンプルを、「SH−2」と「ハイパーターミナル」をつないで動かしてみた
ルーレットの回路 ※「Smalight OS」のルーレットと全く同じ
このサンプルのソース一覧
sample1.c のプログラムソース(C言語)
iodefine.h のプログラムソース(C言語)
(2)V850 ※「インターフェース」2007年5月号付録 + 「Pizza Factory 3」でルーレットにしてみる
※V850を使った「PizzaFactory3」の操作方法は、
まさゆき氏の「ろぼ開発のーと」
を参考にさせて頂きました。
V850※「インターフェース2007年5月号付録」
※「おまけのページ」を参照
でもルーレットを作ってみた。
ルーレットの写真
ルーレットの回路
このサンプルのソース一覧 ※「Pizza Factory 3.1」を使用
sample1.c のプログラムソース(C言語)
(3)ARM ※「DesignWave」2006年3月号付録 + 「Pizza Factory 3」でルーレットにしてみる
4.オリジナルボードでTOPPERS/JSPを使ってみる
(1)
H8/OSを使ってみる
1.H8/OSを動かしてみる
(1)H8/3664Tinyでルーレットにしてみる
秋月電子で購入したH8/3664Tiny(SDIP)ボード
※「H8で遊ぼうのページ」を参照
を使って、ルーレットにしてみました。
ルーレットの写真 ※「H8で遊ぼうのページ」で作ったものを、そのまま使用した
ルーレットの回路 ※「H8で遊ぼうのページ」で作ったものを、そのまま使用した
コンパイルイメージ
(Cygwin画面)
作成されたtest.motをライターでマイコンに書き込む
サンプルプログラム
全プログラム ※作成したサンプルプログラム以外は、上記
「みついわ氏のサイト」
から全てダウンロード可能だ
(2)H8/3664Tinyでハイパーターミナルに文字を出力してみる
(1)の回路のままで、H8/OSのシステムコールを使って、ハイパーターミナルに文字を出力してみた。
ハイパーターミナルのイメージ
サンプルプログラム
参考にされる場合は、あくまで自己責任でお願いします。
リアルタイムOSというと、このページを作成した時点では、μITRON系OSが広く使われていたのですが、現在では状況が
大きく変わっているので、内容はμITRON以外のOSも多く含んでいます。
プロセッサに多様なOSが使われるようになり、また、今後も新たなOSが使われる事が予想されるため、下記のように分類
する事は現在では正確ではなく、また、μITRON系かどうかで分類する事は、現在では全く意味がありません。
コンピュータで使われているのだと思いますが、入門書はほとんど皆無だと思いますし、趣味の工作で使っている人は少ないと思います。
TRON
※http://www.tron.org/
といっても、パソコン用のBTRONや、組み込み型CPUで動くITRON、、、、、と種類が多いのですが、
まずは、ITRONで遊んでみようというコーナーです。
ITRON(Industrial TRON);機器組み込みマイコン用のOSの仕様
BTRON(Business TRON);パソコン・ワークステーション用のOSの仕様
CTRON(Communication and Central TRON);大型のサーバ計算機や電子交換機など非常に大規模なもの用のOSの仕様
MTRON(Macro TRON);ITRON/BTRON/CTRONで動くコンピュータが相互に協調動作を行う為のOSの仕様
JTRON(Java+ITRON);ITRON上でJavaを実行してITRONと共存させるOSの仕様
というものがありますが、OSの仕様は実際には各社バラバラなので、ここで扱うOSには、この仕様に完全には
一致していないOSもあります。
特定非営利活動法人を中心に、ITRON仕様の技術開発成果を出発点として組込みシステム構築の基盤となる各種の
ソフトウェアを開発し、良質なオープンソースソフトウェアとして公開することで、組込みシステム技術と産業の振興を図ることを
目的としたプロジェクトです。
このプロジェクトには、次のような成果物(OS)があり、ダウンロードして活用できます。
・TOPPERS/JSPカーネル
「μITRON4.0仕様」 に準拠したリアルタイムカーネルで、現在、m68k、sh1〜3、h8、arm、v850、m16c、、、、、
と、多くのCPUをサポートしています。
・TOPPERS/FI4カーネル
「μITRON4.0仕様」 に準拠したリアルタイムカーネルで、「合資会社もなみソフトウェア」が開発を担当しています。
GNU開発環境を標準のソフトウェア開発環境としているため、カーネル本体のみならず開発環境もフリーで入手し、
システム開発をおこなうことが可能です。
・TOPPERS/OSEKカーネル
欧州の自動車メーカや電装部品メーカを中心とした標準化団体「OSEK/VDX」が策定した自動車制御用リアルタイムOS
である車両制御機器用RTOS仕様(OSEK/VDX仕様)に準拠したものです。
主に自動車用途に作られており、ITRONとは互換性がありません。
・TOPPERS/FDMPカーネル
μITRON仕様を機能分散マルチプロセッサ向けに拡張した、機能分散マルチプロセッサ向けリアルタイムカーネル仕様に
準拠したリアルタイムカーネルです。
が開発したリアルタイムOSです。
小型でITRON仕様ライクなAPIを持つOSで、「μITRON4.0仕様」に準拠しているわけではありませんが、
h8、h8s、sh-2、、、、等、ルネサステクノロジーの多くのCPUに対応していて、構造がわかりやすいので、RTOSの入門には
最適だと思われます。
インターフェース誌に付録として入っていたので使ってみたOSです。
ライセンス等の扱いがわかりませんので、ここで詳しくは紹介できませんが、PIC16F87xシリーズと
PIC18シリーズに対応しているようです。
PICは、PIC24/dsPIC/PIC18、AVRはMegaシリーズに対応しているようです。
現時点では、SH-7050F、SH-7045F、H8-3069F、H8-3068F、H8-3067F、H8-3064F、H8-3048F、H8-3052F、
H8-3664Fに対応しているようです。
Windows標準のファイルシステムや、周辺機器の豊富なデバイスドライバーが搭載されています。
を使って、ルーレットにしてみた。
Smalight OSは、SH−2を含めた多くのルネサステクノロジー系のCPUに対応していますが、付録のOSはこのボードでのみ
使える契約だそうなので、この付録基板を使わないのなら、Smalight OSは製品版の購入が必要です。
※というより、付録のOSは、この付録基板用です。
プログラムは、「Smalight OS」の稼動確認のために作ったサンプルで、2つのタスクを起動して、交互に「タスクの起床」、
「タスクの起床待ち」を繰り返して、ルーレットを無限に回転させているだけです。
タスク1がPORTE5〜8、タスク2がPORTE9〜12のLEDを動かすことで、PORTE5〜12のLEDを動かしています。
RTOSを、あえて使うような意味のあるプログラムではありません。
「Smalight OS」を動かすためには、他にも設定が必要ですが、このサンプルでは、user.cとconfig.c 以外は、記事のサンプルを
全く変更していません。
内容が多すぎるので「Smalight OS」の詳細は割愛しますが、「Interface」2006年8月号や、「Smalight OS」のマニュアルは
初心者でもわかりやすく書かれているので、記事を読んでみればわかると思います。
「Smalight OS」は構造が簡単なので、RTOSが初めての人でも、かなり使いやすいOSです。
これだけなら、一般のC言語で、2つのタスクを順番に呼んでいるだけのプログラムとなんら変わりませんが、
「Smalight OS」はOSなので、同期をとるための「待ち」を指定しなければ、2つのタスクは見かけ上は同時に動きます。
(実際は、実行中のタスクがタイムアウト付きの待ちに入ると、制御が次のタスクに自動的に切り替わる事を繰り返して
いるだけで、ある一時点においては、1つのタスクしか動いていませんが)。
このサンプルは、(その1)のサンプルの、2つのタスクの同期を取る部分をコメントにしただけのもので、2つのタスクが
同時に動くために、2つのLEDが同時に回転しているように見えます。
(OSがタスクを切り替えるスピードは速いので、「その2」では2つのLEDが同時に動いているように見える)
※注)TOPPERS/JSPは、「μITRON4.0仕様」 に準拠したリアルタイムカーネルです。
無償でダウンロードできますが、環境による個々の対応が必要になり、Gnu(UNIX系)を使った事がない人には、
環境の構築方法が、わかりにくいかも知れません。
※詳細は、
「(別室)Cygwinのページ」
の「TOPPERS/JSPのインストール方法」
※準備中
を参照。
・「合資会社もなみソフトウェア」
※http://www.monami-software.com/
から、「TOPPERS/JSP」が構築されたものが、
「Pizza Factory 3」の製品名で購入する事もできます。
サポートは受けられませんが、上のHPから無償評価版をダウンロードする事もできます。
「TOPPERS/JSP」を初めて使われる方は、こちらのほうがお勧めです。
詳細は、「Interface」2006年8月号を参照されるといいと思います。
現時点で最新の「Pizza Factory 3.1」の無償評価版を使用する場合は、「NewProject」を作成する時に、
「Template Selection」の画面が追加されていますので、ここで「Sample1」を選択しないと、サンプルは作成されません。
「Pizza Factory 3」を使っていて、「Managed Make C Project」を選択している場合は、ソースに変更がある
と自動的にMakeが動くので、特別な操作は必要ありません。
でも作ってみた。2つのタスクを起動して、2つのLEDが同時に回転する。
プログラムは、「TOPPERS/JSP」を導入すると初めについてくるサンプルの「sample1.c」を書き換えただけです。
他に、「iodefine.h」を、プログラムと同じディレクトリーにコピーしておく必要があります。
それ以外は、「TOPPERS/JSP」についてくるサンプルをそのまま使用しています。
簡単なプログラムなのでベタ書きしていますが、OSを使う目的の一つはプログラムが機種依存しない事だと思いますし、
本来は、このような書き方はしないほうがいいと思います。
user002001.c
タスク1とタスク2を交互に動かしてルーレットを回転させる。
プログラムは、「TOPPERS/JSP」の「sample1.c」を書き換えた以外は、サンプルをそのまま使用している。
user003001.c
簡単なサンプルプログラム(test1.c)を、H8/OSのマニュアルの通りにコンパイルして、動かしてみただけです。
必要なドキュメントやプログラムは、上記
「みついわ氏のサイト」
から、全て無償でダウンロードできます。
プログラムは、GCCで作成する必要があるので、GCCを使っていない人は、GCCのインストールが必要です。
H8/OSには、コマンドインタプリタ付きと、無しの2種類がありますが、このサンプルは、プリタ無しでROMに載せる場合です。
作成されたMOTファイルは、上記サイトのライターで書き込んでもいいし、「H8Writer」やFDTを使って書き込んでもいいと思います。
なお、H8/OSは、このページでいうRTOSではありません。
test1.c
u020001.lzh
test1.c の内容が異なる以外は、コンパイル方法等を含めて、上記と全く同じです。
RS232ケーブルは、ライターのケーブルを兼用し、ハイパーターミナルは、9600BPSで使用する。
test1.c