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.

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 言 語 版

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

Saved successfully!

Ooh no, something went wrong!