PLS HELP no likvidējot kļūda no VxWorks programmas

K

kingsden

Guest
i am, izmantojot programmu, lai palaistu round robin plānošana, tiklīdz counter izpaužas 0;

Ja es esmu sākotnēji piešķirot skaits vērtību 0 man nav get any prob un round robin funkcija strādā ......

taču, kad es dotu skaits vērtību kā 3 vai 4 taskspawn par round robin funkcija nav nt izpildīt ......pls man palīdzēt ..... demo līdz 5 stundām .... nav laika

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Skumjš" border="0" />Šeit ir kods

# Ietver "vxWorks.h"
# Ietver "logLib.h"
# Ietver "wdLib.h"
# Ietver "sysLib.h"
# Ietver "stdio.h"
# Ietver "taskLib.h"
# Ietver "kernelLib.h"

/ * Funkciju prototipi * /
par spēkā neesošu taskOne (spēkā neesošs);
par spēkā neesošu taskTwo (spēkā neesošs);
par spēkā neesošu taskThree (spēkā neesošs);
par spēkā neesošu sched (spēkā neesošs);

/ * Globals * /
# Define ITER1 1
# Define ITER2 1
# Define PRIORITĀTE 200
# Define TIMESLICE sysClkRateGet ()
# Define LONG_TIME 1000000

statisko int x, y, z, a = 1, b = 2, k;
int taskIdOne, taskIdTwo, taskIdThree;
/************************************************* ******************************
*
* Sargsuns - vienkārša demo rutīnas
*
* Šis ikdienas izveido taimeris un skaita uz leju no kavēšanās un pēc tam
* Druka "AaaahhhhhOOOOOOOOO!"Pēc kavēšanās atkārtojumu.
* Katrs atkārtošana ir noteikts par 1 mazāk otrajam nekā iepriekšējā .* // * Šī ir sargsuns taimeris * /

WDOG_ID myWatchDog;

/ * Šī ir īstā funkcija, kas sauks, kad taimeris laiku, kas
Tas testu, lai redzētu, vai tas ir ieskaitīts uz leju līdz nullei,
Ja nē, tas pārplānot sevi kavēšanās cnt-1 sekundes
* /

int miza (int cnt) (

/ * Ja šis ir pēdējais izsaukšanas * /
printf ("vērtība kavēšanās =% d", cnt);

ja (cnt == 0)
(
printf ("AaaahhhhhOOOOOOOOO n! \ n \");
taskIdOne = taskSpawn ("pamata", prioritāti, 0x300, 20000, (FUNCPTR) sched, 0,0,0,0,0,0,0,0,0,0);
printf ("assf \ n \ n");
atgriešanās (0) / * atgriešanās pieprasa VxWorks * /
)

/ * Ja mēs ne uz leju līdz nullei, mizas un pārplānot * /

printf ("(% d) Miza! \ n", cnt);

/ * Pārplānot sevi, Set taimeris iet off ar cnt-1 sekundes * /
/ * WdStart () initializes sargsuņa taimeri,
myWatchDog ir taimeris,
sysClockRateGet () * cnt, nosaka laiku, kas cnt sekundes
miza ir funkcija izmantot par taimautu,
cnt-1 ir parametrs, kas pāriet uz funkciju.
wdStart atgriež kļūdas kods, lai norādītu, panākumiem vai neveiksmēm
* /

ja (wdStart (myWatchDog, sysClkRateGet () * cnt, FUNCPTR (mizas),
cnt-2) == kļūda)

/ * Ja pārplānot nav, atpakaļ kļūdas kods * /

atgriešanās (kļūda);

/ * Cits atgriešanās cnt * /

atgriezties cnt;
)/ * Šī ir galvenā funkcija, tā būs
displejs signon ziņu,
izveidot sargsuņa taimeri,
un aicina mizas pirmo reizi, ar kavējumu, jo skaits
* /

int sargsuns (int kavēšanās) (
printf ("sargsuns palaišana ... \ n");

/ * Izveidot Watchdog * /

if ((myWatchDog = wdCreate ()) == NULL)
atgriešanās (9999) / * kļūdas kodu, ja radīšana neatbilst * /

printf ("kavēšanās =% d", kavēšanos);kavēšanās = kavēšanās 4; / / šeit ir skaits, ko es esmu norādot ..., lai novērstu kavēšanos jus komentēt šo līniju/ * Atsaukties miza, kas atkārtoti grafiks reinvocations pati par sevi * /

miza (kavēšanās);

)

/ / Round robin uzdevums ir sched funkcijapar spēkā neesošu sched (spēkā neesošs) / * funkcijas, lai izveidotu trīs uzdevumi * /
(

ja (kernelTimeSlice (TIMESLICE) == OK) / * apgriezties-robin par * /
printf ("\ n \ n \ n \ n \ t \ t \ tTIMESLICE =% d sekundēm \ n \ n \ n", TIMESLICE/60);

/ * Micēlijs trīs uzdevumus * /

par (k = 0; k <10, k )
(
if ((taskIdOne = taskSpawn ("task1", prioritāti, 0x100, 20000, (FUNCPTR) taskOne, 0,0,0,0,0,0,0,
0,0,0)) == kļūda)
printf ("taskSpawn taskOne neizdevās \ n");

taskDelay (100);
if ((taskIdTwo = taskSpawn ("task2", prioritāti, 0x100, 20000, (FUNCPTR) taskTwo, 0,0,0,0,0,0,0,
0,0,0)) == kļūda)
printf ("taskSpawn taskTwo neizdevās \ n");

taskDelay (100);
if ((taskIdThree = taskSpawn ("task3", prioritāti, 0x100, 20000, (FUNCPTR) taskThree, 0,0,0,0,0,0,0,
0,0,0)) == kļūda)
printf ("taskSpawn taskThree neizdevās \ n");
taskDelay (100);
/ / Ģenerāldirektorāts neparakstītu miega (10);

;
b ;)
)

par spēkā neesošu taskOne (spēkā neesošs)
(
int i, j;
(i = 0; i <ITER1; i )
(
par (j = 0, j <ITER2; j )
printf ("task1 darbojas \ n"); / * log ziņojumus * /

x = a * b;
printf ("vērtība x ir% d \ n", x);

par (j = 0, j <LONG_TIME; j ); / * dotu laiku sakarā slēdzi * /
)
)

par spēkā neesošu taskTwo (spēkā neesošs)
(
int i, j;
(i = 0; i <ITER1; i )
(
par (j = 0, j <ITER2; j )
printf ("task2 darbojas \ n");
y = x *;
printf ("vērtība y ir% d \ n", y);
par (j = 0, j <LONG_TIME; j ) / * dotu laiku sakarā slēdzi * /
)
)

par spēkā neesošu taskThree (spēkā neesošs)
(
int i, j;
(i = 0; i <ITER1; i )
(
par (j = 0, j <ITER2; j )
printf ("task3 darbojas \ n");
z = y * b;
printf ("vērtība z ir% d \ n", z);
par (j = 0, j <LONG_TIME; j ); / * dotu laiku sakarā slēdzi * /
)
) [/ U]

 

Welcome to EDABoard.com

Sponsor

Back
Top