PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Multitasking/Multithreading/Tasksynchronisation/Realtime



eugengraf
25.06.2007, 20:58
Hallo Leute,

ich wollte mal fragen wie es in der Mikrocontrollerwelt (insbesondere AVR) mit Multitasking aussieht.

Ich programmiere PCs unter Windoof und kann mit das Leben ohne parallele Prozesse, Queues und Semaphoren nicht vorstellen.

Gibt es kostenlose Betriebssysteme für uCs, die AVR und Multitasking unterstützen?

Was sagt iht über Realtime-programme, ist sowas möglich? Gibt es einen Vergleich über das Taskwechselverhalten bei unterschiedlichen RT-Betriebsystemen.

Eugen

NumberFive
26.06.2007, 06:00
Was willst du den mit ein Betriebssystem auf einem AVR ?

Wie du unter Windoof einen Parallel Process oder Thread hin bekommst
das muss du mir mal zeigen. Ich programmiere auch sehr viel unter Windoof aber im / Auf dem AVR hätte ich noch nie ein Thread gebraucht.

Schon allein die Verwendung von C++ klaut auf dem AVR so viel speicher das ich noch möglich nur C benutze.

Was hätte ihr alle bloss in Windows 3.1 Zeiten gemacht.

beschreibe mal dein Problem genauer vielleicht kann man dann gemeinsam ein Lösung finden immer dran denken auf dem AVR haut kein Betriebssystem dazwischen.

PICture
26.06.2007, 07:06
Hallo!

Für die PICs gilt das gleiche, wie oben geschrieben. Ich programmiere in ASM, aber habe trotzdem zu wenig Speicher. Die AVRs und PICs sind vergleichbar mit dem ersten PC vom Typ ZX-80. :)

MfG

robo.fr
26.06.2007, 08:15
Es gibt schon verschiedenste Multitaskingansätze für die AVRs ( z.B. In diesem Link weiter unten ) (http://www.roboterclub-freiburg.de/asuro/asuro_index.html)
Es gibt verschiedene kleine RTOS-Betriebssysteme für den AVR, man muss allerdings genau überlegen, ob man so was wirklich braucht.

robo

nomad
26.06.2007, 08:41
hi leute,
ich benutz die propeller-chips von parallax
die haben 8 cores (cogs)
daten koennen parallel verarbeitet werden
floating point mathe etc. (es braucht keine lookup-tables)
die cogs koennen untereinander via globale vars komunizieren
eine art threads-verarbeitung mit (lock, start, stop) kann programmiert
werden.
hat aber kein OS, spin-code und asm-code koennen gemischt werden.
guck dir mal das proppeller-forum bei parallax an.
gruss
nomad

eugengraf
26.06.2007, 10:02
Na gut ich sage mal so, ich habe schon mal C166 unter CMX RT mit dem Tasking-Compiler programmiert. Nur deshalb frage ich ob sowas auch für AVR möglich ist.

Und unter Windoof ist es supereinfach parallele Prozesse zu programmieren.

Eugen

NumberFive
27.06.2007, 06:13
Ich bin nach wie vor der Meinung das es unter Windows keine parallel Processe gibt ausser vielleicht unter W2K3 auf eine Multiprocessor Machine.

Gruß

Hessibaby
27.06.2007, 07:17
Kann mich nur anschließen, Egal ob Windows oder Linux, die arbeiten nur Quasiparallel. Das liegt aber ausschließlich an der Hardware. CPU, CACHE, Memorytranslationhub und Memory werden seriell genutzt, sprich: die daten werden von einem zum anderen transportiert, und während dieser Zeit geht nichts, gar nichts. Auch Multicore-/Multiprozessorsysteme bringen keine echt parallele Verarbeitung zu Stande.
Es gab (vor vielen Jahren (15)) sehr gute Ansätze wie BitsliceCPU´s und Transputer die "fast" parallel liefen. Als die RISC- (vor allem Digital`s Alpha) und CISC-CPU´s aber immer schneller wurden und WIN NT auf beiden Plattformen lief wurden relativ schnell die Entwicklungen eingestellt. Transputer waren schnell und "relativ" einfach zu proggen.
NaJa, ist History, genau wie die TTL-Särge.
Gruß Hartmut

eugengraf
27.06.2007, 08:41
Wer hat hier von echt parallelen Prozessen gesprochen. Ich meine natürlich quasi parallele.
Es ist nun viel bequemere Methode zum Programmieren, als alles in eine Schleife zu packen.

Eugen

Hessibaby
27.06.2007, 10:42
Es gibt abhängige und unabhängige Prozesse, unabhängige kann man parallelisieren. Das Problem, gerade bei µC ist aber die Befehlslänge, d.h. wenn ein Befehl, zur vollständigen Ausführung, 10 Cycles braucht, dann braucht er die, während dieser Zeit kann nichts anderes abgearbeitet werden. Anders ist das beim, oben genannten, Propeller, der parallel asynchron arbeitet und auch abhängige Prozesse durch das automatische Einfügen von NOP´s (no Operation) parallelisiert. Der Microcode dieses Prozessors ist sehr gut designt.
Ich bin auch kein IfThenElse Fan.
Gruß

camrob
27.06.2007, 14:45
Hi,
AVRX ist zum Beispiel ein kostenloses Real Time Multitasking Betriebssystem für die AVRs .
http://www.barello.net/avrx/index.htm

eugengraf
27.06.2007, 14:54
Hi,
AVRX ist zum Beispiel ein kostenloses Real Time Multitasking Betriebssystem für die AVRs .
http://www.barello.net/avrx/index.htm


Vielen Dank, ich glaube es ist das, was ich gesucht habe.

Eugen \:D/

Phantomix
28.06.2007, 14:18
was man auch empfehlen kann (braucht aber viel speicher - lohnt sich sicher nur auf den großen atmels)

http://www.micrium.com/atmel/index.html

auf x86 architektur geht das jedenfalls einwandfrei

eugengraf
28.06.2007, 14:44
was man auch empfehlen kann (braucht aber viel speicher - lohnt sich sicher nur auf den großen atmels)

http://www.micrium.com/atmel/index.html

auf x86 architektur geht das jedenfalls einwandfrei

Oh ja, danke schön.

Ich weiss zwar noch nicht ob es sich für AT90CAN128 eignet und ob es kostenpflichtig ist. Aber das finde ich heraus.

Eugen