Smalight OSを使おう 1タスク目 例題をいきなり動かす [Smalight OS]
この記事は、某SNSで書いているものを転載しています。
アットマークエレ(既に某SNSではなくなっている)内でレポートを書く事を前提に、例の日経エレクトロニクスの「組み込み速修キット」が無償配布されましたので、レポート兼ねがねsmalight osについて書いているのですが、あっちではレポートを読む人がほとんど居ない?ので、こっちにも転載する事としました。
但し、smalight os(ver.2)の評価版を手に入れるには、「組み込み速修キット」とか、前年のインタフェースのSH2基板用に配布された物位しか入らないと思われるので(昔のトラ技のH8用は256倍遅いver.1)、既に読者限定となっていますが、製品版の購入を検討されている方にもちっとは役に立つかな?。
※ちなみに今ならヤフオクで1500円~でこの基板が売りに出されていますね。
では「組み込み速修キット」を入手して既にマニュアル通りにHEWとsmalight osをインストール完了している事を前提として話を進めます。
皆さん既にsmalight osのインストール完了されましたか?。
今smalight osのマニュアルを半分位読み終わったのですが、μITRON仕様OSのサブセット版という感じで使えますね。
μITRON仕様と比較して、機能的にはかなりグレードダウン(と言うか思い切って削った)して、その代わりOSが使用するリソースを最小とした感じです。サポートするサービスコールも少ないですし。
しかし優先度ベースのスケジューリング可能な点は譲っていないので、リアルタイムOSとしての最低限は守っています。
smalight osを使う利点は、勿論OSが提供する機能を利用できる点と、タスクを機能毎に用意する事でプログラム構造を単純化できる点だと思います。
まずOSが提供する機能を利用した場合の例として、「組み込みシステム入門」の第3回の例題なんかは以下の様に記述できます。
ベースは、smalight osのインストールと一緒にワークスペースもインストールしていると思いますが、その中のuser.cのtsk01を改造してみます。
while( 1 ) { tslp_tsk( 500 ); p2_0 ^= 1; }
while文の中身はたったこれだけです。
tslp_tskは、一旦タスクの実行を眠らせて、外部からの起床要求を受けるか、引数の時間(500ms)経過したら、タスクの実行を再開するサービスコールです。
機能毎に分割する例は、第4回の2個のLEDの点滅でやってみます。
えー、上のtsk01と同様に、tsk02を以下の様に改造します。
while( 1 ) { tslp_tsk( 1000 ); p2_1 ^= 1; }
一つのLEDの点滅を一つの機能としている訳ですね。
smalight osを理解するには、結局のところITRON仕様も知っておく方がより理解も進むので、以下の本もどうぞ!。(営業モード)
ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発
- 作者: 浜原 和明
- 出版社/メーカー: オーム社
- 発売日: 2005/04/25
- メディア: 単行本
またまたヤフオクに出品されているようです。
http://page6.auctions.yahoo.co.jp/jp/auction/f58236324
smalight自体は良いものだと思いますよ。
by hamayan (2008-01-03 21:57)