Forum: Mikrocontroller und Digitale Elektronik Atmega mini Betriebssystem


von Tommi (Gast)


Lesenswert?

Hallo Leute,

ich bin an dem Punkt angekommen, an dem meine Software zu kompliziert 
wird, um so weiterzumachen wie bisher.

Ich muss ein bisschen multi threading simulieren, weil ich öfter mal 
20-100ms warten muss und sonst andere funktionen zu kurz kommen.
Nebenbei brauche ich aber auch noch eine resourcenverwaltung. Also falls 
der BUS belegt ist, kann nur der prozess zugreifen, der ihn reserviert 
hat.

Hat jemand für mich ein OS (für atmega640), mit dem ich relativ schnell 
meine Applikation umbauen kann?


Grüße

von Oliver (Gast)


Lesenswert?

google??? google

G O O G L E !!!

Das findet dann sicher auch die Infos hier aus der AVR-Softwarepool hier 
aus dem Forum.

Oliver

von Fabian O. (xfr)


Lesenswert?

Schon gelesen?
http://www.mikrocontroller.net/articles/Multitasking

Imo kommt man auf einem AVR sehr gut ohne Betriebssystem aus, wenn man 
die Grundsätze aus dem Artikel beachtet.

Ansonsten finde ich das Konzept von TinyOS ziemlich gut, wenn man 
modulare und perfekt wiederverwendbare, aber trotzdem sehr effiziente 
Anwendungen erstellen möchte. Allerdings ist die Einarbeitung und vor 
allem das Umstellen eines existierenden Programms nicht einfach. Man 
muss sich zuerst Bibliotheken und Konfigurationen für nicht von Haus aus 
unterstütze Hardware anlegen und seine Denkweise eventuell ziemlich 
umstellen. Wenn man sich darauf einlässt, macht es aber wirklich Spaß.

von Thomas E. (thomase)


Lesenswert?

Tommi schrieb:
> Ich muss ein bisschen multi threading simulieren, weil ich öfter mal
> 20-100ms warten muss und sonst andere funktionen zu kurz kommen.
> Nebenbei brauche ich aber auch noch eine resourcenverwaltung. Also falls
> der BUS belegt ist, kann nur der prozess zugreifen, der ihn reserviert
> hat.
Nun trag hier mal nicht so dick auf und befass dich erstmal mit Timern. 
Dann kommt auch keiner zu kurz.

mfg.

von Peter D. (peda)


Lesenswert?

Tommi schrieb:
> Also falls
> der BUS belegt ist, kann nur der prozess zugreifen, der ihn reserviert
> hat.

Was fürn Bus denn?

von Schnappo (Gast)


Lesenswert?

Wenn man's richtig macht, darf eh nur ein Prozess auf einen Bus 
zugreifen.

von Bastler (Gast)


Lesenswert?

Ich benutze ein einfaches Zeitscheiben Verfahren + Interrupts.

Wenn man es richtig macht muss da nirgends gewartet werden.


Schau dir mal Timer an, hört sich nämlich so an als ob du Spaghetti-Code 
produziert hast.
(Keine Angst, so fängt jeder an!)

von cppler (Gast)


Lesenswert?

Eine einfache Aufgabe die wahrscheinlich sogar mittels delay erledigt 
werden könnte braucht also ein Betriebssystem ...
Soweit ich mich erinnere wird ein Bus durch Adressierung verwaltet und 
ein Flag das anzeigt das der Bus anderweitig belegt/benutzt wird reicht 
um anderen Programmteilen den Zugriff zu regeln.
Also wo liegt nun eigentlich das Problem ?

von Clemens S. (zoggl)


Lesenswert?

OT: warum ein mini betriebssystem, wenn man auch linux haben kann.?

http://dmitry.co/index.php?p=./04.Thoughts/07.%20Linux%20on%208bit

mach dir ein diagramm was der code tun soll und überleg dir dann wie du 
die anregungen der vorposter umsetzen kannst. ein betriebssystem ist auf 
einem kleinen µc eigentlich immer eine der schlechtesten optionen.

von Karl H. (kbuchegg)


Lesenswert?

cppler schrieb:
> Eine einfache Aufgabe die wahrscheinlich sogar mittels delay erledigt
> werden könnte braucht also ein Betriebssystem ...

In den meisten Fällen wir genau anders rum ein Schuh daraus.
Gerade WEIL er _delay_ms benutzt, benötigt man ein Betriebssystem :-)

(Ausnahme: wirklich kurze delays wie sie zb bei der Pulserzeugung am TWI 
Bus entstehen)
_delay_ms ist selten die Lösung. Aber oft das Problem.

von Stefan (Gast)


Lesenswert?

Wenn Du deine Threads mit Zustandsautomaten umsetzt, brauchst Du kein 
Betriebssystem. Dann führtst Du einfach beide Zustandsautomaten in dern 
main-Schleife aus.

In diesem Zusammenhang gefällt die Arbeit von Adam Dunkels gut, die ich 
hier kommentiert habe:
http://stefanfrings.de/avr_io/protosockets.html

von Uwe (Gast)


Lesenswert?

Der BUS würde mich auch mal interessieren...

von cppler (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Gerade WEIL er _delay_ms benutzt, benötigt man ein Betriebssystem :-)

Gut machen wir ihm ein _delay_h :-P
Oder noch besser _delay_y lapalomapfeif
Warum er sich wohl nimmer meldet ?

von Thomas E. (thomase)


Lesenswert?

Uwe schrieb:
> Der BUS würde mich auch mal interessieren...
External Memory Interface

mfg.

von Falk B. (falk)


Lesenswert?

Siehe statemachine.

von Peter D. (peda)


Lesenswert?

Thomas Eckmann schrieb:
> Uwe schrieb:
>> Der BUS würde mich auch mal interessieren...
> External Memory Interface
>
> mfg.

Huch.
Wußte garnicht, daß der AVR multicore ist und es deshalb beim 
Memoryzugriff Konflikte geben kann.


Peter

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Peter Dannegger schrieb:
> Wußte garnicht, daß der AVR multicore ist und es deshalb beim
> Memoryzugriff Konflikte geben kann.

Löte 2 AVRs übereinander und du hast Multicore
duckundwech

von Thomas E. (thomase)


Lesenswert?

Peter Dannegger schrieb:
> Wußte garnicht, daß der AVR multicore ist und es deshalb beim
> Memoryzugriff Konflikte geben kann.
Durch besonders geschicktes Verwursten von Memory Mapped I/O kriegt man 
das auch so hin. Und dann braucht man ein Betriebssystem.

Martin Wende schrieb:
> Löte 2 AVRs übereinander und du hast Multicore
Man könnte auch aus einem alten Pentium4 das Hyperthreading ausbauen.

mfg.

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.