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
hm also ich brauche den assembler code ... kann auch ein ganz einfaches programm sein was einfach nur doppelt zaehlt o.ä. nicht ganze os's danke trotzdem :)
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
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
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
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
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
ja wenn es sich um den assembler quellcoode handelt dann gern :) mit c kann ich bei der aufgabe nicht viel anfangen :) danke schonmal ps: email steht oben :)
@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.
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.
Das OS besteht komplett aus C. Indem Fall kann ich Dir leider nicht weiterhelfen. Gruß Lasse
"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?
Kennt von euch keiner diese Seite ? http://www.erikbuchmann.de Unter Softwareprojekte, Multitasking... Mit Assemblercode und Erklärung
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.