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
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
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.
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
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.
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
Noch eine Frage, hast du als Entwicklungsumgebung Keil benutzt? MfG Mario
@Asterix Habe FreeRTOS auf dem Mega64 zum Laufen gebracht. FreeRTOS downloaden. Demo mit WINAVR compilieren - it works...
<<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
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
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
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
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).
<<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
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.