RoboterCC - Robotic Code Compiler
Forum Robot Kits NIBO 2 präemptives Multitasking

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Banner

Letzte Themen

  • Keine Beiträge vorhanden

Site-Statistic

  • 7433 private projects
  • 378 public projects
  • 16180353 lines compiled
  • 58212 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: präemptives Multitasking

preemtives Multitasking 10 Jahre 10 Monate her #2612

  • workwind
  • workwinds Avatar
  • OFFLINE
  • Administrator
  • Beiträge: 573
Hallo mifritscher,

Für die nicht-optimierte Variante ist folgendes geplant:
  • Alle Register gleich behandeln (keine Register-Optimierungen)
  • Idle ist ein ganz normaler Thread (ohne Stack-Optimierung)
  • Prioritäten entfallen
  • Semaphor, Mutex und Condition fallen weg
  • Keine Tricks... B)

Daran könnte man weitere Artikel anknüpfen, in denen das Basis-System Schritt für Schritt zur optimierten Variante verbessert wird und anschließend um Semaphor, Mutex und Condition erweitert wird...

Die Funktion thread_suppressScheduling() und thread_allowScheduling() (mit Spin-Lock-Variable) sind eine prima Idee, die mit minimalem Performace Einbußen implementiert werden kann! Die Timer (und die IRQs) laufen weiter, der Task wird jedoch nicht mehr gewechselt!

Die .o Dateien kann man ja problemlos zu einer .a Datei zusammenfassen ;-)

Der Scheduler läuft natürlich auch auf dem NIBObee. Der Scheduler ist allgemein für alle AVR Controller gedacht!
Im Roboter.CC Projektmanagement werde ich dann eventuell ein kleines Häkchen machen: use Multithreading

- workwind -
Letzte Änderung: 10 Jahre 10 Monate her von workwind.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

preemtives Multitasking 10 Jahre 10 Monate her #2625

Hallo workwind,

ich finde Deine Anstrengungen wirklich prima - nur hat hier (in diesem Forum) aus meiner Sicht nahezu niemand so recht Lust, aktiv mitzuarbeiten.

Fast alle warten auf "Weihnachten", wenn die fertigen Ergebnisse auf dem Gabentisch landen, um diese einzusetzen.

Aktuell interessiert mich das Thema "Multitasking" nicht unmittelbar, daher beteilige ich mich auch nicht an der Diskussion. Ich denke auch, das dieses Thema ein wenig zu weit von der Realität der meisten Nibo2-Käufer entfernt ist (mich eingeschlossen).

Warum nicht "aktuelle Themen" angehen, wie z.B. - ja was ? - keine Ahnung, da keiner sich äußert ...

Ggf. kann ja ein Forum "Wünsch Dir was" oder so ähnlich :-) einige "Nutzer" aus der Reserve locken.

Sorry, aber aus meiner Sicht ist das Thema "Multitasking" für die meisten Nibo2-Benutzer ein Begriff, der nicht unbedingt
auf so hoher (sicherlich kompetenter) Ebene bearbeitet werden muss. Hier klinken sich wahrscheinlich nahezu alle User aus

Ich persönlich würde gerne Fragen diskutieren oder Probleme gemeinsam aufbereiten - aber die "Gesprächskultur" in diesem Forum verbietet mir das. Manche Kolleg(inn)en sind einfach nur mies drauf oder negieren alles, was da so kommt. Schade, da ich mich gerade in diesem Forum "eigentlich" echt wohl fühle ...

LG
Dieter
Der Administrator hat öffentliche Schreibrechte deaktiviert.

preemtives Multitasking 10 Jahre 10 Monate her #2626

  • achim S.
  • achim S.s Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 441
Hallo Dieter
als verursacher möchte ich mich stellen. Habe ja mit der ganzen Sache angefangen. Mit der Ruhe vor dem sturm geb eich dir recht. Auch ich vermisse eine entsprechende Runde mit Problemen und anderes. Von meiner Seite steht eigentlich genug im Netz. Da könne sich noch einige dran beteiligen, Hard- und Software mässig. Selber arbeite ich gerade wieder an einer neuen Hardware. Ist noch nicht soweit um was zu sagen. Noch stellt es sich bockig an und will noch nicht so wie ich. Kommt aber langsam weiter. Ansonsten scheint es nur so 5 bis 10 Leute zu geben, die hier was sagen.
achim
Der Administrator hat öffentliche Schreibrechte deaktiviert.

preemtives Multitasking 10 Jahre 10 Monate her #2627

Ich bin leider auch noch nicht dazu gekommen, das Multitasking "in echt" auszuprobieren, was aber schlicht zeittschnische Gründe hat :-( Ich hoffe, dass das die nächsten Wochen wieder etwas besser aussieht - dann hat Odometrie & Fahren (Drehe dich um 40 Grad und fahre dabei einen Kreisbogen von 50cm bzw. fahre auf Position 50/50cm) höchste Priorität - teilweise funktioniert es auch schon. Wenn das klappt gehts wieder an die mehr "fancy" Sachen wie Editor für meinen Assembler-Sprache, Multitasking und so weiter :-) Für den Timer habe ich aber schon einen weiteren Patch in der Pipeline.

Ja, leider ist es in diesem Forum relativ ruhig, mit ein paar vereinzelten Tagen mit ziemlich viel Aktivität. Aber mal schauen, vielleicht kriegen wir das noch hin ;-) Mehr dazu aber bald in einem eigenen Thread.
Letzte Änderung: 10 Jahre 10 Monate her von mifritscher.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

preemtives Multitasking 10 Jahre 10 Monate her #2629

  • BirgerT
  • BirgerTs Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 325
Ich empfinde so wie Dieter..
Da ich keine Office-Suite auf dem Nibo2 starten möchte, sehe ich die Notwendigkeit nicht, ein präemptives Multitasking auf dem Nibo2 zu implementieren.

Ich hätte da ja noch offene Themen, die m.E. erledigt werden sollten (für eine Lib2.12):
www.roboter.cc/index.php?option=com_kunena&view=topic&catid=13&id=1418&Itemid=20
Der Administrator hat öffentliche Schreibrechte deaktiviert.

preemtives Multitasking 10 Jahre 10 Monate her #2630

So generell kann man nicht sagen, dass preemptives Multitasking nichts für Roboter wäre.

Oft hat man das Problem, dass viele Sachen gleichzeitig passieren - Odometriedaten verarbeiten, serielle Schnittstellen beschicken, Trajektorienplanung, A/D Wandler abarbeiten, Logdaten auf SD-Karte wegschreiben, LEDs regelmäßig ansteuern (für Lichteffekte), Reglerschleifen uvm.

Solche Sachen direkt in ISRs reinzubauen ist aus vielen Gründen ein Nogo. Sowas zu entwanzen ist oft sehr schwierig, v.a. wenn sich IRQs stabeln. Außerdem ist die zeitliche Vorhersagbarkeit ziemlich schlecht. Funktionen wie malloc, die meisten HW-Zugriffe (auch EEPROM!) etc. sind ebenfalls tabu, wenn diese Sachen auch von anderen IRQs oder dem Hauptprogramm passieren können.
Man könnte alles in eine Timerfunktion oder in das Hauptprogramm bauen, was aber die Lesbarkeit und auch die Erweiterbarkeit deutlich erschwert.

So ganz grob gesagt: Bei einem AT-Mega16 mit seinen 16 KB Flash und 1 KB RAM wird man wohl selten an Grenzen stoßen, wo man es nicht ohne preemptives Multitasking hinbekommt. Bei einem Atmega1284 mit 128 KB Flash und v.a. 16 KB RAM kann man allerdings schon in Bereiche kommen, wo man sehr schnell die Übersicht verliert.

Klar, man braucht das nicht immer, aber oft ist es eine deutliche Erleichterung.
Letzte Änderung: 10 Jahre 10 Monate her von mifritscher.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Ladezeit der Seite: 0.060 Sekunden

Werbung