Forum: Mikrocontroller und Digitale Elektronik scheduler


von Max D. (jimbo)


Lesenswert?

hallo zusammen,

programmiere auf einen cc2431 mit einem 8051 prozessor.
habe mir einen scheduler geschrieben nach dem folgenden prinzip:
1. 4 prioritäten
2. jede prioritätsstufe arbeitet mit einem fifo
3. 4 ist die höchste priorität
4. es kommt immer der task mit der höchsten prioritätsstufe an die
reihe und ist nicht preemtiv.

jetzt möchte ich gerne noch ein zeitverhalten über timer einbauen.
kann mir da jemand vielleicht einen ansatz dafür liefer, dh. ne idee
welchen timer man dafür verwendet usw.

vielen dank im voraus

gruß

jimbo

von LC-HC (Gast)


Lesenswert?

HI, das Thema interessiert mich auch ziemlich, kannst Du mir evtl. ein
paar Links geben, oder entpsrechende Literatur ? Wieso lässt du nicht
einfach einen der Timer laufen und generierst so einen konstanten
Interruptinterval, bei dem jedesmal die Priorität der Prozesse und die
Bearbeitung festgelegt werden ?
mfg

von Max D. (jimbo)


Lesenswert?

hi,

mh literatur hab ich keine dazu. hab mir das "selber" ausgedacht,
bzw. das angewendet was ich noch aus dem studium weiß.

wegen timer:
ja einen timer möchte ich verwenden. weiß bloß noch nicht genau wie.

ablauf meines schedulers.

1. starte tasks lege sie in ein task-pool ab. dieser besitzt vier
prioritätsklassen.
 1. T T T T (niedrig)
 2. T T T
 3. T T T T T
 4. T T T T T (hoch)
 jeweils ein fifo.
2. überprüfe nun ob im fifo mit der höchsten priorität ein task
vorhanden ist, wenn ja führe ihn aus (non-preemptiv) und wenn er fertig
ist lege ihn in eine timer queue. wenn nicht suche in nächster stufe
usw.
3. jeder task besitzt eine zeit-dauer, nun soll die timer queue einen
interrupt generieren wenn eine zeit-dauer eines tasks abgelaufen ist
und ihn wieder in den obigen fifo einhängen (je nach prioritätsstufe).
ist nötig da manche tasks nur alle zwanzig minuten arbeiten müssen und
deshalb nicht in den fifo gehören, sonst bekomme ich probleme mit
meinem power management.

hoffe das war verständlich. aber soweit die theorie. funktioniert auch
so weit bis auf die timer-queue.
finde keinen richtigen ansatz wie ich anfangen kann?!?!?!

hoffe mir kann da jemand weiter helfen.

gruß

jimbo

von Peter D. (peda)


Lesenswert?


von Max D. (jimbo)


Lesenswert?

hallo PeDa,

vielen dank für den link. werd mir das mal anschauen.
bin mit meinem ansatz auch schon weiter gekommen.
hab mir jetzt eine callbackfunktion geschrieben die mir die daten aus
dem fifo holt, und in eine struktur ablegt, und einen zeitstempel mit
übergeben bekommt.
ist dieser abgelaufen wird eine funktion aufgerufen (callback) die die
daten der task wieder aus der struktur holt und wieder in den fifo
einhängt. läuft aber noch nicht einwandfrei.

gruß

jimbo

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.