沼津高専 電子制御工学科
ソフトウェア調査報告書
MIRS9904-TECH-0110
改訂記録
版数 作成日 作成者 承認 改訂内容 提出先
A01 小澤 小澤 初版

ソフトウェア調査報告

1.開発環境

MIRSのソフトウェアは、標準として”自律小型知能ロボットMIRS用リアルタイムモニタ 「MIRX68K」”を用いて開発される。
MIRX86Kの構成は以下の図のようになっている。
  fig1.MIRXの構造
ユーザが開発する部分はユーザタスク task00.c〜taskxx.c の部分であり、その他ハードウェアの仕様によりハードウェア関数部をその仕様に合わせ変更する。カーネル部を作る必要はない。
ハードウェアの制御に関して、ユーザタスクから直接ハードウェアを操作することはなく、ハードウェア関数を会してハードを制御するようになっている。
開発に使用する言語はC言語を用いる。
 

2.MIRX68Kでのソフトウェア開発

MIRSのソフトウェアはMIRX68K上での開発となる。MIRX68K上での開発ではプログラムをいくつかの処理単位に分割し、その分割した仕事の固まりをタスクと呼ぶ。それぞれのタスクで行われる処理には、プログラム中での事象により行われる処理(ノーマル処理)、一定の時間周期で行われる処理(タイマ処理)、非同期で発生する外部信号による割込み要求によって行われる処理(割込み処理)がある。ユーザは、一つのタスクにつき4種の処理を記述することになる。(処理の中身の有無にかかわらず4種の処理の記述が必要)

1つのCPUを用いているため、同時に複数のタスクを実行することはできない。そのため、各タスクは以下のような4状態で管理される。

fig2.タスクの状態
1.レディ(Ready):実行できるが他のタスクがCPUを占有しているため、CPUが空くのを待っている状態。

 2.ウェイト(Wait):実行されたタスクが何らかの事象を待つ状態。ある条件が成立するまで待ち、成立するとレディ状態になる。

 3.ドーマント(Dormant):タスクとしてモニタに認知されているが、休止している状態。他のタスクによって起動されて、レディ状態になる。

 4.ランニング(Running):タスクが実行されている状態。

 MIRX86kではウェイト状態の管理を行っていないが、ノーマルタスク(後述)が実行され終了した後、割り込みを待ち、割り込みタスク(後述)によって再起動させることにより、ウェイトの状態を作り出すことはできる。しかし、ウェイト中にノーマルタスクの起動を抑止する制御を、モニタが行っていないのでその必要がある場合は、各ユーザーがノーマルタスクの中で管理する必要がある。

MIRX68kには12個のシステムコール関数が用意されており、タスクのイニシャライズやタイマ割l込みの登録などはそれらを用いて行われる。

 
 

 

関連文書