Forum: Mikrocontroller und Digitale Elektronik µC-OS Betriebssystem für AVR ?


von Asterix-007 (Gast)


Lesenswert?

Hallo allerseits,

hat jemand von Euch schon mal was mit µC-OS (ein RTOS) zu tun gehabt.
Es wird zu den Altera-Bausteinen mit der Altera-Toolchain mitgeliefert
(glaub ich).
Es soll sich mit jedem C-Compiler übersetzen lassen und auf allen
Umgebungen (AVR, x86, Altera, HCx ....) laufen.

Wäre schön hier jemanden zu finden der schon Erfahrungen mit µC und AVR
hat. Dann stehe ich wenigstens nicht so allein im Wald. ;-)

Andere RTOS für AVR sind auch willkommen. Vielleicht gibt es ja was
Besseres oder Einfacheres.

Danke!

Asterix-007

von Peter Mahler (Gast)


Lesenswert?

Hallo

schau dir mal freeRTOS (www.freertos.org) an, im gegensatz zu uC-OS ist
es wirklich frei. Ich verwende dieses auf ARM7-Prozessoren und bin sehr
zufrieden. Es gibt auch ein Port für AVR und PIC(18).


Gruss,

Peter

von Daniel B. (khani)


Lesenswert?

Hallo,

"Es soll sich mit jedem C-Compiler übersetzen lassen und auf allen
Umgebungen (AVR, x86, Altera, HCx ....) laufen."

Wer's glaubt ! Das ist schon fast in sich ein Widerspruch. Meiner
Erfahrung ist kaum etwas so Compilerdialekt-/Hardware-abhängig wie die
Techniken, die bei einem Betriebssystem zum Einsatz kommen.

Auch mein Hinweis ist FreeRTOS - habe ich seinerzeit mal auf einem C167
exzessiv eingesetzt und benutze es jetzt mit den AVRs.

MfG, Daniel.

von Mario Grafe (Gast)


Lesenswert?

Hallo Daniel,

ich arbeite viel mit dem C161-PI (C166-Familei von Infineon). Habe aber
noch nicht gehört das es eine FreeRTOS-Portierung dafür gibt. Hast du
den Port für den C167 selber gebastelt?

MfG
Mario

von Daniel B. (khani)


Lesenswert?

Hallo Mario,

ich habe eine Portierung für von FreeRTOS auf den C167 fertiggestellt.

Es war meine Diplomarbeit, das zu tun und eine Speicherverweltung und
Gerätetreiberarchitektur aufzubauen. Dabei habe ich eine angefangene
Portierung stark erweitert und fertig gestellt.

Interesse, Fragen ?

MfG, Daniel.

von bone (Gast)


Lesenswert?

@khani

ab ins netz damit :-)

von Mario Grafe (Gast)


Lesenswert?

Ich habe großes Interesse. Der C167 gehört ja auch zur C166-Familie von
Infineon, somit wäre ein Portierung für den C161-PI-LF nur eine
"kleine" Anpassung, denke ich.
Ich bin allerdings noch Neu in Sachen FreeRTOS bzw. uC-Betriebssystemen
und bräuchte erstmal so eine Art Grundeinführung.
Das Grundprinzip ist mir allerdings klar (hoffer ich): Ein Scheduler
startet und beendet einzelne Task nach Priorität im
Round-Robin-Verfahren und kümmert sich um push/pop usw. Was meinst du
mit Gerätetreiberarchitektur?
Vielleicht kannst du mir mal deine Diplomarbeit zukommen lassen, würde
mich sehr interessieren.


Vielen Dank erstmal

Mario

von Mario Grafe (Gast)


Lesenswert?

Noch eine Frage,

hast du als Entwicklungsumgebung Keil benutzt?

MfG
Mario

von SeppKnallhirsch (Gast)


Lesenswert?

@Asterix

Habe FreeRTOS auf dem Mega64 zum Laufen gebracht. FreeRTOS downloaden.
Demo mit WINAVR compilieren - it works...

von Wolfgang Weinmann (Gast)


Lesenswert?

<<Ein Scheduler startet und beendet einzelne Task nach Priorität im
Round-Robin-Verfahren und kümmert sich um push/pop usw>>

Hallo,

mit sowas muß man aber vorsichtig sein. Für eine Lösung ist es wichtig,
wie hart die Echtzeitanforderungen sind. Regelt man was im hohen
Millisekundenbereich oder noch länger, dann kann ein round-Robin
Berfahren ausreichen.

Je kürzer die maximale Reaktionszeit (Latenzzeit) sein darf, desto eher
muß man auf preemptives Multitasking übergehen. Dort erhält immer der
Prozeß mit der höchsten Priorität die CPU.

das Gegenteil ist kooperatives Multitasking - bekannt aus Windows. Dort
hat ein Prozeß solange die CPU, bis er sie selbst wieder freigibt - kein
Ansatz für harte Echtzeit.

Zudem ist ein richtiges RT-Betribssystem oft nicht notwendig. Gerade
bei Controllern kann man oft mit folgendem Ansatz gut auskommen:

http://www.embedded.com/2000/0009/0009feat4.htm

Diesen Ansatz leicht abgeändert habe ich bereits erfolgreich
eingesetzt: Die Interrups für Ereignisse, auf die man schnell reagieren
muß und die Abarbeitung im Main-Bereich ( eben das Hauptprogramm, das
läuft, wenn kein Interrupt ansteht) mit dem Ansatz von Michael
Melkonian.

Gruß

Wolfgang Weinmann

--
www.ibweinmann.de
Mikrocontrollersysteme

von Stefan Kleinwort (Gast)


Lesenswert?

Hallo Asterix,

ich fand das uC-OS auch ganz klasse. Der Preis für die kommerzielle
Nutzung ist leider nicht ganz ohne. Deswegen ist es auch für
Hobbyprojekte für mich nicht infrage gekommen - zwei mal einarbeiten
muss dann doch nicht sein.

Das Buch zu uC-OS ist aber sehr informativ - kann ich nur empfehlen.

Gruß, Stefan

von SuperUser (Gast)


Lesenswert?

Hallo Folks,

ich bin von FreeRTOS nach AVRX gewechselt, weil mir FreeRTOS zu gross
war und einigen Laufzeitoverhead hat.

Ich bin sehr begeistert von AVRX, überschaubarer Funktionsumfang, sehr
stabil, schnell und kompakt. AVRX ist vollständig in ASM geschrieben
mit sauberen Interface zu GCC.

Einziger Nachteil: läuft nur auf AVR's

von Fabian Scheler (Gast)


Lesenswert?

Nur ein paar Kommentare zum Thema Multitasking, präemptiv usw. ...

"mit sowas muß man aber vorsichtig sein. Für eine Lösung ist es
wichtig,
wie hart die Echtzeitanforderungen sind. Regelt man was im hohen
Millisekundenbereich oder noch länger, dann kann ein round-Robin
Berfahren ausreichen.

Je kürzer die maximale Reaktionszeit (Latenzzeit) sein darf, desto
eher
muß man auf preemptives Multitasking übergehen. Dort erhält immer der
Prozeß mit der höchsten Priorität die CPU."

Round-Robin ist präemptives Multitasking! Gut der Schedulingalgorithmus
ist für Echtzeitsysteme freilich nicht unbedingt immer geeignet, was du
ansprichst ist ein prioritätengesteuerter Scheduler

"das Gegenteil ist kooperatives Multitasking - bekannt aus Windows.
Dort hat ein Prozeß solange die CPU, bis er sie selbst wieder freigibt
- kein Ansatz für harte Echtzeit."

bekannt aus welchem Windows, aus den neueren definitiv nicht (also NT,
Windows 2000, Windows XP), die arbeiten mit einem verdrängenden (also
einem präemtpiven) Scheduler, wie es bei den älteren aussieht, weiß ich
nicht

Ciao, Fabian

von A.K. (Gast)


Lesenswert?

Zweiter Nachteil: Sema/Messagewait nur ohne Timeout. Man zwar zwar
separat einen Timer starten lassen, es wird dadurch aber etwas
umständlich. Ansonsten aber sehr brauchbar, und kommt im Unterschied zu
manch anderen RTOS konsequent ohne dynamischen Speicher aus (mag ich in
embedded systems nicht so).

von Wolfgang Weinmann (Gast)


Lesenswert?

<<bekannt aus welchem Windows, aus den neueren definitiv nicht (also
NT,
Windows 2000, Windows XP), die arbeiten mit einem verdrängenden (also
einem präemtpiven) Scheduler, wie es bei den älteren aussieht, weiß
ich
nicht>>


Hallo Fabian,

das kann durchaus sein - aber es war ja nur ein Beispiel für ein
kooperatives OS. Die Aussage ansich, daß harte Echtzeit eher
preemptives Verhalten erfordert, bleibt aber. Ich bin kein
WIN-Programmierer.

Gruß

Wolfgang

--
www.ibweinmann.de
Mikrocontrollersysteme

von mgiaco (Gast)


Lesenswert?

@Daniel, Post isch schon sehr alt, aber ich hätte interesse an deiner 
Diplomarbeit und an dem Port?

Hab dir eine Nachricht geschrieben.

Gruß
Mathias

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.