C - U-netSURF
C - U-netSURF
C - U-netSURF
- No tags were found...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
5.マルチタスクを 体 験 しよう<br />
サンプルプログラムは 1 本曓 のタスクを 実 行 しました。しかし,HOS はマルチタスク OS なので, 複<br />
数 のタスクを 実 行 するときに 真 価 を 発 揮 します。それで,このサンプルプログラムを 改 造 して 2 本曓 のタ<br />
スクを 実 行 するプログラムを 作 り,マルチタスクを 体 験 してみましょう。プログラムの 内 容 は 次 のようなも<br />
のです。<br />
タスク 1 : 1 秒 おきにシリアルポートにシステムタイマの 値 を 送 信 する。<br />
タスク 2 : 0.1 秒 おきにポート 5 とポート 6 の 出 力 値 を+1 する。<br />
では, 今 作 成 した「sample_01」を 立 ち 上 げてください。これをそのまま 改 造 してもよいのですが,<br />
このマニュアル(および 付 属 CD)では,このワークスペースに 新 たに「sample_02」というアプリケーショ<br />
ンプロジェクトを 追 加 します。これまで 説 明 してきた 手 順 (3 項 と 4 項 )で sample_01 とまったく 同 じプロ<br />
グラムを 作 ってください。<br />
では 改 造 していきましょう。まず 修 正 するのはコンフィギュレーションファイル「system.cfg」です。<br />
このファイルにはタスクや 資 源 などの 生 成 情 報 を 記 述 します。ここに「Task2」というタスクを 追 加 します。<br />
次 のように 修 正 ・ 追 加 してください。<br />
/* サキンルハルハロエラム */<br />
ATT_INI({TA_HLNG, 0, Initialize});<br />
CRE_TSK(TSKID_SAMPLE1, {TA_HLNG|TA_ACT, 1, Task1, 1, 256, NULL});<br />
CRE_TSK(TSKID_SAMPLE2, {TA_HLNG|TA_ACT, TA_ACT, 2, Task2, 1, 256, NULL});<br />
「CRE_TSK」は「Create Task」の 略 でタスクを 生 成 する 静 的 API です。<br />
次 の「TSKID_SAMPLE1」はタスク ID で,コンフィギュレータによってほかのタスクと 重 ならないよう<br />
にこのラベルに 番 号 が 割 り 付 けられます。このプログラムでは 使 っていませんが,アプリケーションが<br />
タスクを 終 了 したり, 起 床 したり, 待 ち 状 態 に 遷 移 させたりするときは,タスク ID でどのタスクかを 指 定<br />
します。<br />
{ } 内 の「TA_HLNG|TA_ACT」は 属 性 です。「TA_HLNG」はタスクが 高 級 言 語 (C 言 語 )で 記 述 さ<br />
れていることを 示 し,「TA_ACT」は OS の 起 動 時昷 にこのタスクを 実 行 状 態 ,もしくは 実 行 可 能 状 態 にす<br />
ることを 示 しています。ここでは「|」(オア)でつながっているので,「このタスクは 高 級 言 語 で 記 述 さ<br />
れ,かつ,OS 起 動 時昷 に 実 行 状 態 にする」ということを 指 定 しています。<br />
次 の 数 字 「1」は 拡 張 情 報 で,この 数 値 がタスク 起 動 時昷 に 引 数 として 渡浫 されます(サンプルプログ<br />
ラムでは 特 に 使 っていない)。<br />
「Task1」はタスクの 開 始 アドレスです。サンプルプログラムのタスクの 関 数 名 を 指 定 します。<br />
次 の 数 字 「1」はタスクの 優 先 順 位 を 示 しています。1から 始 まる 数 字 で 小 さいほど 優 先 順 位 が 高<br />
くなります。サンプルプログラムでは 二 つのタスクの 優 先 順 位 を 同 じにしています。<br />
次 の 数 字 「256」はスタックのサイズを 示 し,その 次 の 引 数 で 指 定 したアドレスにスタック 領 域 が 確<br />
保 されます。「NULL」を 指 定 するとコンフィギュレータが 自 動 的 に 領 域 を 確 保 します。<br />
さて, 続 いてサンプルプログラム「sample.c」を 次 のように 改 造 します。<br />
/* ------------------------------------------------------------------------ */<br />
/* Hyper Operating System V4 サキンルハルハロエラム */<br />
/* */<br />
136<br />
TK-3687mini ユーザーズマニュアル C 言 語 版