24.01.2015 Views

C - U-netSURF

C - U-netSURF

C - U-netSURF

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

}<br />

}<br />

Sci_PutChar('r');<br />

Sci_PutChar('\r');<br />

r');<br />

Sci_PutChar('\n');<br />

/* ------------------------------------------------------------------------ */<br />

/* Copyright (C) 1998-2003 by Project HOS */<br />

/* Copyright (C) 2009 by TOYO-LINX Co.,Ltd. */<br />

/* ------------------------------------------------------------------------ */<br />

Task1 の 中 の「wup_tsk(TSKID_SAMPLE2)」が,TSKID_SAMPLE2 で 指 定 するタスクを 起 床 するサ<br />

ービスコールです。wup_tsk が 発 行 されると, 指 定 されたタスクは 実 行 可 能 状 態 ,もしくは 実 行 状 態 に<br />

遷 移 します。<br />

Task2 の 中 の「slp_tsk()」は 自 タスクを 待 ち 状 態 に 遷 移 するサービスコールです。<br />

さて,「system.cfg」で Task2 の 優 先 順 位 が Task1 よりも 高 くなっています。このことを 踏 まえてプロ<br />

グラムの 動 きを 考 えてみましょう。<br />

プログラムが 動 き 出 すと,「CRE_TSK」により Task1 と Task2 はどちらも 実 行 状 態 ,もしくは 実 行 可<br />

能 状 態 になります。ただし,Task2 の 優 先 順 位 が Task1 より 高 いので,Task2 が 実 行 状 態 ,Task1 が<br />

実 行 可 能 状 態 になります。<br />

Task2 は「slp_tsk」により,すぐに 待 ち 状 態 になります。その 結 果 ,Task1 が 実 行 状 態 になります。<br />

Task1 はシリアルポートから 受 信 するとデータの 範 囲 を 判 定 し,‘0’~‘9’のときに「wup_tsk」を 発<br />

行 してタスク 2 を 実 行 可 能 状 態 にします。すると,タスク 2 の 優 先 順 位 がタスク 1 より 高 いので,タスク<br />

1 は 実 行 可 能 状 態 に 遷 移 し,タスク 2 が 実 行 状 態 になりメッセージの 送 信 処 理 を 実 行 します。<br />

Task2 はメッセージを 送 信 したあと「slp_tsk」により,すぐに 待 ち 状 態 になります。その 結 果 ,<br />

Task1 が 実 行 状 態 になり 再 び 受 信 を 待 ちます。<br />

このように,タスク 1 とタスク 2 が 協 調 しながら 動 作 していくことになります。<br />

◆<br />

いかがだったでしょうか。HOS を H8/3687 に 実 装 するまでは 手 順 も 多 く 複 雑 に 思 えたかもしれま<br />

せん。それでも,マルチタスクでアプリケーションタスクを 実 装 すること 自 体 は 意 外 と 簡 単 に 感 じたこと<br />

でしょう。もちろん,μITRON の 機 能 はこのマニュアルで 説 明 したことだけではなく(というより 説 明 して<br />

いないことが 大 部 分 ),まだまだ 入 り 口 をくぐったに 過 ぎません。これをきっかけに 組 み 込 み OS につ<br />

いても 興 味 を 広 げていただければ 幸 いです。<br />

147<br />

TK-3687mini ユーザーズマニュアル C 言 語 版

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!