Forum: Projekte & Code GOS: einfacher preemptive multitasking scheduler


von Günter G. (tcg)


Lesenswert?

hallo,

erstmal vielen danke für alle beiträge hier, das ist alles sehr 
interessant :-)

ich dachte, ich revanchiere mich mal, und poste auch mal was kleines 
feines...
ich bin für jeden kommentar dankbar (optimierungen, verbesserungen, 
vorschläge)

das hier ist ein kleiner multitasking scheduler.
ein beispiel sagt mehr als 64738 worte, also hier mal ein kleines 
(sinnloses) sample:
1
#include "tasks.h"
2
3
TaskSignal s;
4
5
Task ts;
6
void fs()
7
{
8
  unsigned char d = 0;
9
  for (;;)
10
  {
11
    taskWait(&s);
12
    PORTB = d++;
13
  }
14
}
15
16
Task tw;
17
void fw()
18
{
19
  unsigned char d = 0;
20
  for (;;)
21
  {
22
    PORTB = d--;
23
    taskSignal(&s);
24
  }
25
}
26
27
int main()
28
{
29
  taskCreate(&ts, fs, TaskPrioHighHigh);
30
  taskCreate(&tw, fw, TaskPrioHighHigh);
31
  taskSwitch();
32
  return 0;
33
}

auch zu finden unter:
http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_type=project&item_id=1032

von Karoly Kovacs (Gast)


Lesenswert?

Zum Link:

"You must log in to access this area"

Karoly

von Paul Baumann (Gast)


Lesenswert?

Ja und? Dann meldet man sich eben an, um Zugriff zu haben. Da lohnt 
sich.

MfG Paul

von Günter G. (tcg)


Angehängte Dateien:

Lesenswert?

da steht eh nix anderes drin, ich wollts nur auch den englisch 
sprechenden avr-fans unter uns verfügbar machen :-)
ich hab gesehen, dass ich ja gar kein attachment attached habe, sorry, 
hier isses...

von Karoly Kovacs (Gast)


Lesenswert?

@Paul:
Es ist natürlich kein Problem, ich wollte bloß sagen, wenn man hier was 
veröffentlich macht, dann bitte wirklich um einen funktionierenden, 
"öffentlichen" Link einfügen.

@Günter:
Danke sehr für Attachment!

Karoly

von Günter G. (tcg)


Lesenswert?

hallo,

50 downloads (und bei avrfreaks.net nochmal ca. 80) sind ja schon schön, 
und "no news is good news", d.h. keiner hat fehler entdeckt ?!?
aber hat denn keiner irgendwelche anregungen wünsche oder verbesserungen 
?
wenns alles perfekt geht, freut mich das, aber zumindest positives 
feedback für mein ego wäre schön :-)))

cu, gg

von Karoly Kovacs (Gast)


Lesenswert?

Hallo Günter,

Habe auch geladen, aber noch nicht getestet (morgen fahre ich nach 
Irland). Nach dem Urlaub kann ich es evtl. "besser" durchlesen, und/oder 
testen.

Zum ersten Blick ist es gar nicht schlecht. :)))

Karoly

von Peter D. (peda)


Lesenswert?

Günter Greschenz wrote:

> 50 downloads (und bei avrfreaks.net nochmal ca. 80) sind ja schon schön,
> und "no news is good news", d.h. keiner hat fehler entdeckt ?!?

Naja, ich denke, die meisten gucken wien Schwein ins Uhrwerk und sagen 
deshalb nichts.


> ein beispiel sagt mehr als 64738 worte, also hier mal ein kleines
>(sinnloses) sample:

Würde ich daher nicht zustimmen.

Ne Erklärung (kann ruhig weniger als 64738 worte sein) und ein 
sinnvolles Beispiel wären äußerst hilfreich bei einem so komplizierten 
Thema.


Wenns ein taskCreate gibt, muß es dann nicht auch ein taskAnnihilate 
geben ?


Peter

von Günter G. (tcg)


Lesenswert?

hallo peda,

ja, hast schon recht, eine kleine docu wäre schon angebracht...
leider hab ich nur noch 3 tage urlaub und die sind schon verplant :-)
ich denke ich komm demnächst mal dazu.
eine (mini) docu steht ja in den sourcen selbst drin, die werde ich dann 
mal erweitern...

kurz zum thema "taskAnnihilate":
da das für kleinst-systeme gedacht ist, die selten bis gar nicht in die 
verlegenheit kommen tasks dynamisch zu erzeugen und zu killen, habe ich 
nur ein create implementiert. das design eines programmes sollte also 
schon am anfang feststehen.

aber ich bin da ja zum glück recht flexibel :-) wenn jemand den 
dringenden bedarf nach dynamischen tasks hat: info zu mir ! ich mach mir 
dann mal gedanken.
allerdings isses (denk ich) dann nicht so einfach, mein ziel (möglichst 
kleiner speicherbedarf) beizubehalten. dynamisch hört sich für mich an 
wie "malloc" und "free", und das habe ich bewusst aussen vor gelassen.

cu, gg

von Günter G. (tcg)


Lesenswert?

hallo,

ich habe den scheduler in mein anderes project (AvrWiz: 
Beitrag "AVR Code Wizard") eingebaut, ist evtl. ganz 
hilfreich (dort wird die benutzte speicher belegung berechnet und 
angezeigt...)

cu, gg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.