K
kingsden
Guest
私はすぐにロビンスケジューリングをラウンドプログラムを実行している使用してカウンタを0になる。
もし私が......午前作品ラウンドロビン機能¥当初与え、確率を取得する任意のカウント値として0私はしない
しかし、時......実行のラウンドtaskspawnとして3または4の値iを与えるカウントしませんロビン機能¥塩基plsは.....私を助けて時間デモ保留中の5時間....
<img src=¥"http://www.edaboard.com/images/smiles/icon_sad.gif¥" alt=¥"悲しい¥" border=¥"0¥" />ここにコードを示します。
#が含まれます"vxWorks.h"
#が含まれます"logLib.h"
#が含まれます"wdLib.h"
#が含まれます"sysLib.h"
#が含まれます"stdio.hに"
#が含まれます"taskLib.h"
#が含まれます"kernelLib.h"
/ *関数*をプロトタイプ/
ボイドtaskOne(ボイド);
ボイドtaskTwo(ボイド);
ボイドtaskThree(ボイド);
ボイドは)schedは(ボイド;
/ *グローバル変数* /
#1は定義ITER1を
#1は定義ITER2を
#200は定義優先を
)(定義タイムスライスsysClkRateGetを#
1000000 LONG_TIME#を定義する
概要static intのx、y、zは、= 1、b = 2、kは;
int型taskIdOne、taskIdTwo、taskIdThree;
/************************************************* ******************************
*
*ウォッチドッグ-簡単なデモルーチン
*
*このルーチンはセットタイマーをしてカウントからダウン遅延
*"は印刷AaaahhhhhOOOOOOOOO!"繰り返し後の遅延。
*各繰り返しは、より2番目の設定されて以下の1以前.* // *これは*はウォッチドッグタイマ/
WDOG_IDのmyWatchDog;
/ *これはアウトタイマがタイム時に呼び出される実際の関数なる
これは、ゼロダウンカウントしたが、それはどうかをテストを見るために
れていない場合は、秒1の遅延のためになるスケジュール自体をCNTの
* /
(int型の樹皮(int型CNT)を
/ * *場合呼び出し、これが最後の/
のprintf("の遅延値)=%d"が、CNTの;
(もしカーボンナノチューブ== 0)
(
のprintf("AaaahhhhhOOOOOOOOO!する¥¥ nする¥¥ n");
taskIdOne = taskSpawn("メイン"、優先度、0x300から、20000(FUNCPTR)0,0,0,0,0,0,0,0,0,0をschedは、);
のprintf("assfする¥¥ nを¥¥ n");
戻り値(0); / *戻り値を* VxWorksのですが必要/
)
/ *樹皮場合は、0我々はされていませんダウンし、*を再スケジュール/
のprintf("(%d)はバーク!¥¥ n"の、カーボンナノチューブ);
/ *再スケジュール自身、タイマー設定* SECONDS秒1カーボンナノチューブに行くオフイン/
/ *のwdStart()は、ウォッチドッグタイマを初期化する
myWatchDogは、タイマーです
sysClockRateGetは(*)のCNTを、時間を秒カーボンナノチューブする設定
樹皮は、さに呼び出す関数がタイムアウト
カーボンナノチューブ- 1は関数であるに渡すパラメータに。
wdStartがエラーを返すコードを障害またはを示す成功
* /
場合は、(wdStart(myWatchDog sysClkRateGet()*のCNTを、FUNCPTR(樹皮)、
カーボンナノチューブ- 2)==エラー)
/ *失敗した場合はリスケジュールは、*を返すエラーコード/
戻り値(エラー);
/ *他の*を返すカーボンナノチューブ/
戻り値のカーボンナノチューブ。
)/ *この関数は、メイン、それが
、サインオンメッセージを表¥示
、ウォッチドッグタイマを作成する
とカウントを呼び出す最初の樹皮のための時間として遅延と
* /
int型ウォッチドッグ(int型の遅延)(
のprintf("ウォッチドッグ料金います... ¥¥ n");
/ * *を作成するウォッチドッグ/
myWatchDog場合((= wdCreate())== NULL)は
リターン(9999); / *エラーコード*をが失敗した場合の作成は/
のprintf(")を遅らせる遅延=%dが";遅延は 4 / /ここでは指定数が私の午前=
遅延... ジュースを遅延する削除行をコメントこの/ *呼び出す*樹皮自体はのreinvocationsをスケジュールを繰り返しします/
)樹皮(遅延;
)
/ /ラウンドロビンタスクは関数ですスケジューボイドは* schedは(ボイド)/ *の3つの機能¥を作成作業を/
(
kernelTimeSlice場合((ライス)== OK)を/ラウンドロビンに*ターン* /
printfの(します¥¥ n"する¥¥ nする¥¥ nする¥¥ n ¥¥トン¥¥トン¥¥ tTIMESLICE =%d秒する¥¥ nする¥¥ n ¥¥ n"をTIMESLICE/60);
/ *は* 3つのタスクを起動/
(のk = 0; kの<10; kは )
(
"taskSpawn("taskIdOne = task1場合((、優先度、0x100を、20000、(FUNCPTR)taskOne、0,0,0,0,0,0,0、
0,0,0))==エラー)
のprintf("taskSpawnのtaskOne)は、nに失敗しました"¥¥;
taskDelay(100);
"taskSpawn("taskIdTwo = task2場合((、優先度、0x100を、20000、(FUNCPTR)taskTwo、0,0,0,0,0,0,0、0,0,0)) == ERROR) のprintf("taskSpawnのtaskTwo)は、nに失敗しました"¥¥;
taskDelay(100);
"taskSpawn("taskIdThree = task3場合((、優先度、0x100を、20000、(FUNCPTR)taskThree、0,0,0,0,0,0,0、
0,0,0))==エラー)
のprintf("taskSpawnのtaskThree)は、nに失敗しました"¥¥;
taskDelay(100);
/ /のexternなし睡眠(10);
;
b ;)
)
ボイドtaskOne(ボイド)
(
int型私は、jが;
0(一=;私は<ITER1;私 )
(
)の(jは= 0; jは<ITER2; J の
のprintf("task1が"nを実行して¥¥である); / *ログメッセージ* /
はx = * b;
のprintf("値のxは、%d個の¥¥ n個の"×);
* LONG_TIME; jは ); /許可時間をコンテキストスイッチ*用<jは、0(jは= /
)
)
ボイドtaskTwo(ボイド)
(
int型私は、jが;
0(一=;私は<ITER1;私 )
(
)の(jは= 0; jは<ITER2; J の
のprintf("task2は、n ¥¥て実行");
y = xを*;
のprintf("yの値)は%d個の¥¥ n"の、yの;
* LONG_TIME; jは ); /許可時間をコンテキストスイッチ*用<jは、0(jは= /
)
)
ボイドtaskThree(ボイド)
(
int型私は、jが;
0(一=;私は<ITER1;私 )
(
)の(jは= 0; jは<ITER2; J の
のprintf("task3には、n ¥¥て実行");
はz = yは* b;
のprintf("値のz)は%d個の¥¥ n"のは、z;
* LONG_TIME; jは ); /許可時間をコンテキストスイッチ*用<jは、0(jは= /
)
)[/ u]の
もし私が......午前作品ラウンドロビン機能¥当初与え、確率を取得する任意のカウント値として0私はしない
しかし、時......実行のラウンドtaskspawnとして3または4の値iを与えるカウントしませんロビン機能¥塩基plsは.....私を助けて時間デモ保留中の5時間....
<img src=¥"http://www.edaboard.com/images/smiles/icon_sad.gif¥" alt=¥"悲しい¥" border=¥"0¥" />ここにコードを示します。
#が含まれます"vxWorks.h"
#が含まれます"logLib.h"
#が含まれます"wdLib.h"
#が含まれます"sysLib.h"
#が含まれます"stdio.hに"
#が含まれます"taskLib.h"
#が含まれます"kernelLib.h"
/ *関数*をプロトタイプ/
ボイドtaskOne(ボイド);
ボイドtaskTwo(ボイド);
ボイドtaskThree(ボイド);
ボイドは)schedは(ボイド;
/ *グローバル変数* /
#1は定義ITER1を
#1は定義ITER2を
#200は定義優先を
)(定義タイムスライスsysClkRateGetを#
1000000 LONG_TIME#を定義する
概要static intのx、y、zは、= 1、b = 2、kは;
int型taskIdOne、taskIdTwo、taskIdThree;
/************************************************* ******************************
*
*ウォッチドッグ-簡単なデモルーチン
*
*このルーチンはセットタイマーをしてカウントからダウン遅延
*"は印刷AaaahhhhhOOOOOOOOO!"繰り返し後の遅延。
*各繰り返しは、より2番目の設定されて以下の1以前.* // *これは*はウォッチドッグタイマ/
WDOG_IDのmyWatchDog;
/ *これはアウトタイマがタイム時に呼び出される実際の関数なる
これは、ゼロダウンカウントしたが、それはどうかをテストを見るために
れていない場合は、秒1の遅延のためになるスケジュール自体をCNTの
* /
(int型の樹皮(int型CNT)を
/ * *場合呼び出し、これが最後の/
のprintf("の遅延値)=%d"が、CNTの;
(もしカーボンナノチューブ== 0)
(
のprintf("AaaahhhhhOOOOOOOOO!する¥¥ nする¥¥ n");
taskIdOne = taskSpawn("メイン"、優先度、0x300から、20000(FUNCPTR)0,0,0,0,0,0,0,0,0,0をschedは、);
のprintf("assfする¥¥ nを¥¥ n");
戻り値(0); / *戻り値を* VxWorksのですが必要/
)
/ *樹皮場合は、0我々はされていませんダウンし、*を再スケジュール/
のprintf("(%d)はバーク!¥¥ n"の、カーボンナノチューブ);
/ *再スケジュール自身、タイマー設定* SECONDS秒1カーボンナノチューブに行くオフイン/
/ *のwdStart()は、ウォッチドッグタイマを初期化する
myWatchDogは、タイマーです
sysClockRateGetは(*)のCNTを、時間を秒カーボンナノチューブする設定
樹皮は、さに呼び出す関数がタイムアウト
カーボンナノチューブ- 1は関数であるに渡すパラメータに。
wdStartがエラーを返すコードを障害またはを示す成功
* /
場合は、(wdStart(myWatchDog sysClkRateGet()*のCNTを、FUNCPTR(樹皮)、
カーボンナノチューブ- 2)==エラー)
/ *失敗した場合はリスケジュールは、*を返すエラーコード/
戻り値(エラー);
/ *他の*を返すカーボンナノチューブ/
戻り値のカーボンナノチューブ。
)/ *この関数は、メイン、それが
、サインオンメッセージを表¥示
、ウォッチドッグタイマを作成する
とカウントを呼び出す最初の樹皮のための時間として遅延と
* /
int型ウォッチドッグ(int型の遅延)(
のprintf("ウォッチドッグ料金います... ¥¥ n");
/ * *を作成するウォッチドッグ/
myWatchDog場合((= wdCreate())== NULL)は
リターン(9999); / *エラーコード*をが失敗した場合の作成は/
のprintf(")を遅らせる遅延=%dが";遅延は 4 / /ここでは指定数が私の午前=
遅延... ジュースを遅延する削除行をコメントこの/ *呼び出す*樹皮自体はのreinvocationsをスケジュールを繰り返しします/
)樹皮(遅延;
)
/ /ラウンドロビンタスクは関数ですスケジューボイドは* schedは(ボイド)/ *の3つの機能¥を作成作業を/
(
kernelTimeSlice場合((ライス)== OK)を/ラウンドロビンに*ターン* /
printfの(します¥¥ n"する¥¥ nする¥¥ nする¥¥ n ¥¥トン¥¥トン¥¥ tTIMESLICE =%d秒する¥¥ nする¥¥ n ¥¥ n"をTIMESLICE/60);
/ *は* 3つのタスクを起動/
(のk = 0; kの<10; kは )
(
"taskSpawn("taskIdOne = task1場合((、優先度、0x100を、20000、(FUNCPTR)taskOne、0,0,0,0,0,0,0、
0,0,0))==エラー)
のprintf("taskSpawnのtaskOne)は、nに失敗しました"¥¥;
taskDelay(100);
"taskSpawn("taskIdTwo = task2場合((、優先度、0x100を、20000、(FUNCPTR)taskTwo、0,0,0,0,0,0,0、0,0,0)) == ERROR) のprintf("taskSpawnのtaskTwo)は、nに失敗しました"¥¥;
taskDelay(100);
"taskSpawn("taskIdThree = task3場合((、優先度、0x100を、20000、(FUNCPTR)taskThree、0,0,0,0,0,0,0、
0,0,0))==エラー)
のprintf("taskSpawnのtaskThree)は、nに失敗しました"¥¥;
taskDelay(100);
/ /のexternなし睡眠(10);
;
b ;)
)
ボイドtaskOne(ボイド)
(
int型私は、jが;
0(一=;私は<ITER1;私 )
(
)の(jは= 0; jは<ITER2; J の
のprintf("task1が"nを実行して¥¥である); / *ログメッセージ* /
はx = * b;
のprintf("値のxは、%d個の¥¥ n個の"×);
* LONG_TIME; jは ); /許可時間をコンテキストスイッチ*用<jは、0(jは= /
)
)
ボイドtaskTwo(ボイド)
(
int型私は、jが;
0(一=;私は<ITER1;私 )
(
)の(jは= 0; jは<ITER2; J の
のprintf("task2は、n ¥¥て実行");
y = xを*;
のprintf("yの値)は%d個の¥¥ n"の、yの;
* LONG_TIME; jは ); /許可時間をコンテキストスイッチ*用<jは、0(jは= /
)
)
ボイドtaskThree(ボイド)
(
int型私は、jが;
0(一=;私は<ITER1;私 )
(
)の(jは= 0; jは<ITER2; J の
のprintf("task3には、n ¥¥て実行");
はz = yは* b;
のprintf("値のz)は%d個の¥¥ n"のは、z;
* LONG_TIME; jは ); /許可時間をコンテキストスイッチ*用<jは、0(jは= /
)
)[/ u]の