Changeset 56 for asp_wo_cfg/trunk/sample
- Timestamp:
- Nov 11, 2012, 6:18:55 PM (11 years ago)
- Location:
- asp_wo_cfg/trunk/sample
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
asp_wo_cfg/trunk/sample/Makefile
r49 r56 147 147 APPL_COBJS = $(APPLNAME).o @(APPLOBJS) 148 148 endif 149 APPL_COBJS := $(APPL_COBJS) log_output.o vasyslog.o t_perror.o strerror.o 149 150 APPL_CFLAGS = 150 151 APPL_LIBS = … … 159 160 SYSSVC_ASMOBJS := $(SYSSVC_ASMOBJS) 160 161 SYSSVC_COBJS := $(SYSSVC_COBJS) banner.o syslog.o serial.o logtask.o \ 161 log_output.o vasyslog.o t_perror.o strerror.o \162 162 @(SYSSVCOBJS) $(CXXRTS) 163 163 SYSSVC_CFLAGS := $(SYSSVC_CFLAGS) -
asp_wo_cfg/trunk/sample/sample1.c
r49 r56 38 38 * の責任を負わない. 39 39 * 40 * @(#)$Id$40 * $Id$ 41 41 */ 42 42 … … 49 49 * 50 50 * ユーザインタフェースを受け持つメインタスク(タスクID: MAIN_TASK,優 51 * 先度: MAIN_PRIORITY)と,3つの並 列実行されるタスク(タスクID:51 * 先度: MAIN_PRIORITY)と,3つの並行実行されるタスク(タスクID: 52 52 * TASK1〜TASK3,初期優先度: MID_PRIORITY)で構成される.また,起動周 53 53 * 期が2秒の周期ハンドラ(周期ハンドラID: CYCHDR1)を用いる. 54 54 * 55 * 並列実行されるタスクは,task_loop回空ループを実行する度に,タスクが 56 * 実行中であることをあらわすメッセージを表示する. 55 * 並行実行されるタスクは,task_loop回空ループを実行する度に,タスクが 56 * 実行中であることをあらわすメッセージを表示する.空ループを実行する 57 * のは,空ループなしでメッセージを出力すると,多量のメッセージが出力 58 * され,プログラムの動作が確認しずらくなるためである.また,低速なシ 59 * リアルポートを用いてメッセージを出力する場合に,すべてのメッセージ 60 * が出力できるように,メッセージの量を制限するという理由もある. 57 61 * 58 62 * 周期ハンドラは,三つの優先度(HIGH_PRIORITY,MID_PRIORITY, … … 61 65 * 62 66 * メインタスクは,シリアルI/Oポートからの文字入力を行い(文字入力を 63 * 待っている間は,並 列実行されるタスクが実行されている),入力された67 * 待っている間は,並行実行されるタスクが実行されている),入力された 64 68 * 文字に対応した処理を実行する.入力された文字と処理の関係は次の通り. 65 69 * Control-Cまたは'Q'が入力されると,プログラムを終了する. … … 452 456 * ループ回数の設定 453 457 * 454 * TASK_LOOPがマクロ定義されている場合,測定せずに,TASK_LOOPに定 455 * 義された値を,タスク内でのループ回数とする. 456 * 457 * MEASURE_TWICEがマクロ定義されている場合,1回目の測定結果を捨て 458 * て,2回目の測定結果を使う.1回目の測定は長めの時間が出るため. 458 * 並行実行されるタスク内での空ループの回数(task_loop)は,空ルー 459 * プの実行時間が約0.4秒になるように設定する.この設定のために, 460 * LOOP_REF回の空ループの実行時間を,その前後でget_timを呼ぶことで 461 * 測定し,その測定結果から空ループの実行時間が0.4秒になるループ回 462 * 数を求め,task_loopに設定する. 463 * 464 * LOOP_REFは,デフォルトでは1,000,000に設定しているが,想定したよ 465 * り遅いプロセッサでは,サンプルプログラムの実行開始に時間がかか 466 * りすぎるという問題を生じる.逆に想定したより速いプロセッサでは, 467 * LOOP_REF回の空ループの実行時間が短くなり,task_loopに設定する値 468 * の誤差が大きくなるという問題がある. 469 * 470 * そこで,そのようなターゲットでは,target_test.hで,LOOP_REFを適 471 * 切な値に定義するのが望ましい. 472 * 473 * また,task_loopの値を固定したい場合には,その値をTASK_LOOPにマ 474 * クロ定義する.TASK_LOOPがマクロ定義されている場合,上記の測定を 475 * 行わずに,TASK_LOOPに定義された値を空ループの回数とする. 476 * 477 * ターゲットによっては,空ループの実行時間の1回目の測定で,本来よ 478 * りも長めになるものがある.このようなターゲットでは,MEASURE_TWICE 479 * をマクロ定義することで,1回目の測定結果を捨てて,2回目の測定結果 480 * を使う. 481 * 482 * タスク例外処理ルーチン内での空ループの回数(tex_loop)は, 483 * task_loopの4分の1の値(空ループの実行時間が0.1秒になるループ回 484 * 数)に設定する. 459 485 */ 460 486 #ifdef TASK_LOOP … … 476 502 477 503 #endif /* TASK_LOOP */ 478 tex_loop = task_loop / 5;504 tex_loop = task_loop / 4; 479 505 480 506 /* -
asp_wo_cfg/trunk/sample/sample1.h
r49 r56 38 38 * の責任を負わない. 39 39 * 40 * @(#)$Id$40 * $Id$ 41 41 */ 42 42 … … 57 57 /* HIGH_PRIORITYより高くすること */ 58 58 59 #define HIGH_PRIORITY 9 /* 並 列に実行されるタスクの優先度 */59 #define HIGH_PRIORITY 9 /* 並行実行されるタスクの優先度 */ 60 60 #define MID_PRIORITY 10 61 61 #define LOW_PRIORITY 11
Note:
See TracChangeset
for help on using the changeset viewer.