Frage zu: Multiprozessing Siemens SAB 80515/SAB 80C515

Gast #92566
Lesenswert?

hallo,

ich brauche hilfe und zwar

soll ich fuer die schule ein programm schreiben welches auf dem
controller (SAB 80515/SAB 80C515 (Siemens)) mehrere Prozesse laufen
laesst (Multiprocessing)

leider habe ich keine ahnung wie ich das angehen könnte

könntet ihr mit vielleicht einen link zu solch einem programm geben?
oder mir vielleicht erklären wie ich die aufgabe bewältigen könnte?

danke im voraus :)

gruss
#92569
Lesenswert?

Wenns Assembler sein soll, schließt sich ein komplexes RTOS aus.

Da hilft nur die Main-Loop Methode:

Du schreibst also einfach alle Prozesse hintereinander und springst
ganz am Ende wieder zum Anfang zurück.

Damit das ganze aber von außen als quasi gleichzeitig wirkt, darf jeder
prozeß nur soviel machen, daß sich keine merkbare Verzögerung ergibt.
Daher sind alle Wartezeiten über einen Timer zu machen und der Prozeß
wird solange übersprungen, bis die Wartezeit abgelaufen ist.
In einer Variable merkt sich jeder Prozeß, wo er vorher war, d.h. wo er
jetzt weitermachen muß.

Klingt für einen Anfänger sehr kompliziert und ist es auch.

Wundert mich daher, daß sowas ein Schulprojekt sein soll.


Peter
Gast #92570
Lesenswert?

hört sich ja gut and ... ich weiss ist bestimmt viel arbeit aber
koenntest du evtl ein kurzes beispielprogramm posten? muss nicht
unbedingt auch laufen ... nur das ich das halt mal sehe wie das
auszusehen hat

danke schonmal
Gast #92571
Lesenswert?

hi,

da fragt man sich warum der lehrer seinem schueler nicht mehr wissen
uebertragen kann....vielleicht war auch der schueler geistig
abwesend,als bestimmte argumente behandelt wurden.?

es kommen immer wieder solche hilferufe...und immer sagen diese
schueler sie haetten keine ahnung von der materie.

da muss etwas faul sein.

motivierte schueler scheinen sie nicht zu sein.
kein guter anfang.....

ed
Gast #92572
Lesenswert?

1) war ich immer anwesend... geistig wie koerperlich
2) haben wir noch nie variablen durchgenommen
3) ist der lehrer zwar hilfsbereit aber leider am sonntagen, an denen
ich zeit habe mich auch ausserhalb der schule mit der materie zu
befassen, nicht in der schule oder bei mir zuhause anwesend.
4) war die aufgabenstellung folgende "schreiben sie ein
"multiprozessing-programm" fuer den oben genannten microcontroler
5) habe ich hier auf hilfe gehofft
6) sollten sie nichts veralgemeinern
7) lasse ich mich von ihnen nicht angreifen

hat denn nun jemand auch noch konstruktive vorschläge/hilfestellungen,
oder driftet meine frage nach hilfe jetzt in veralgemeinerungen und
"beleidigungen" ab?

danke
Gast #92573
Lesenswert?

Hallo Sebastian

also ich studiere Informatik im sechsten Semster und wir haben eine
ähnliche Aufgabe gerade zu bewältigen. Also kann ich nur sagen das euer
Lehrer eine zeimliche Aufgabe an euch stellt.
Unsere Aufgabe war bzw. ist ein Multi- Threading OS für einen 80515 in
C zu schreiben, das mehrere Threads verwalten kann und auch einige aus
Unix bekannte Funktionen bereitstellt. Bei Interesse kann ich Dir den
Quellcode per E-Mail zusenden.

Gruß

Lasse
Gast #92575
Lesenswert?

@Peter: Diese Methode hat einen Nachteil: "Hängt" einer der Prozesse
und kehrt nicht zum Mainloop zurück, dann wars das.
Ich bevorzuge in dieser Hinsicht die "Zeitscheibensteuerung". Alle
Prozesse werden von einer übergeordneten Schicht verwaltet, die per
Timer einfach brachial den aktuell laufenden Prozess unterbricht, alle
Register sichert und die Kontrolle an den nächsten weitergibt.
So etwas habe ich mal vor knapp 10 Jahren für einen MCS-51 geschrieben
- aber frag mich jetzt keiner, wo der Code ist.
Prinzipiell besteht das Ganze aus einem Hauptprogramm zur
Initialisierung, das Umschalten wird in der Timer-Interrupt-Routine
erledigt.
Gast #92576
Lesenswert?

kann man noch ein wenig verfeinern, indem  die Task-Zeiten dynamisch
verteilt werden.
Das einfachste Verfahren dabei: auf irgendwas wartende Prozesse geben
die Steuerung direkt zurück und vertrödeln die ihnen eigentlich
zustehende Zeit nicht.
Komplizierter wirds, wenn man auch noch Prioritäten verteilen will,
d.h. wichtigere Prozesse bekommen mehr Rechenzeit wenn viel zu tun ist,
was soweit führen kann, dass weniger wichtige Prozesse nur jedes zweite,
dritte oder gar zehnte Mal zum Zuge kommen. Dabei gewinnt man doppelt,
da die Taskumschaltung auch einiges an Rechenzeit benötigt.
Gast #92578
Lesenswert?

"Damit das ganze aber von außen als quasi gleichzeitig wirkt, darf
jeder
prozeß nur soviel machen, daß sich keine merkbare Verzögerung ergibt.
Daher sind alle Wartezeiten über einen Timer zu machen und der Prozeß
wird solange übersprungen, bis die Wartezeit abgelaufen ist.
In einer Variable merkt sich jeder Prozeß, wo er vorher war, d.h. wo er
jetzt weitermachen muß."

wielang soll denn der timer sein?
ich mein kann man nicht einfach die prozesse aufteilen und die
einzelnen teile direkt hintereinander schreiben? ich mein dann könnte
man sich den timer sparen oder?
Gast #92580
Lesenswert?

Hallo Leute,

erstens möchte ich mich thkais anschließen, was µController betrifft.
Ein komplexer Scheduler (der Teil des Betriebssystems, welcher die
Ausführung der einzelnen Prozesse ohne Konflikte übernimmt) ist hier
meist nicht realisierbar - zumindest bei Controllern im niedrigen
Leistungsspektrum. (8bit, 16bit, < 40 MHz intern, wenig Speicher).
Natürlich kann man da noch etwas feilen und eine Rückgabe der Controlle
implementieren.
Wer noch etwas dazu auf englisch lesen will, der sollte mal auf
www.avrfreaks.net vorbeischauen, da war vor nicht allzu langer Zeit mal
ein solches Thema sehr gut ausdiskutiert (in einem Artikel).

MfG, Khani

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren