Hallo, das Thema wurde bestimmt schon viele male angesprochen. Sehe ich das richtig das eine "Betriebssystem" für eine MCU (egal ob C51 ARM7 oder andere) lediglich Tasks verwaltet? Bei uns geht jemand davon aus das eine Betriebssystem für eine MCU das gleiche übernimmt wie ein DOS oder Linux sprich Hardwareunabhängigkeit (in besonderer Hinsicht auf Schnittstellen; COM; I2C; CAN; LCD Ansteuerung... ). Ich kenne allerdings kein OS welches diese Funktionalität bereitstellen würde. Gibt es solche Betriebssysteme für eine MCU welche die Ansteuerung der Hardware übernimmt? Grüße McReaper
Wen DOS und Linux hardwareunabhängig wären, dann würde sie auch auf einem TinyAVR laufen ;P "Hardware-Abstraktion" kann ein BS bieten muß es aber nicht.
Die Hardwareunabhängigkeit macht nicht das OS. Das OS bietet Dir nur die Möglichkeit, Treiber (DLL) zu installieren, die dann speziell auf die Hardware zugeschnitten sind. Oftmals braucht man dazu noch nen SW-Treiber, der dann darauf Protokollschichten implementiert. Das alles macht man bei nem MC einfach durch ne Bibliothek. Da aber die HW auf nem MC nicht standardisiert ist, sondern man quasi alles dranklatschen kann, findest Du oft nicht eine fertige Bibliothek, sondern mußt sie selber schreiben. Peter
Das mit der Hardwareunabhängigkeit sollte nur eine Beispiel sein. Natürlich kann man Dos nicht einfach auf einen C51 packen. ^^ Aber gibt es denn ein Betriebssystem für MCU's was eine "Hardware-Abstarktion" bereitstellt?
Also muss man zwangsläufig entweder eine Bibliothek für das entsprechende OS (z.B. FreeRtos) finden oder sie wie gehabt selber schreiben. Man hat im eigentlichen Sinne keine Hardwareunabhängigkeit sodern ist immer noch an eine MCU bzw. eine Serie gebunden. Wenn man beispielsweise von einem ARM7 auf einen Cortex wechseln würde, hat man eigentlich keine Möglichkeit sich das schreiben der "Hardware-Treiber" zu ersparen oder? Gibt es denn ein OS welches viele Bibliotheken bereitstellt?
McReaper schrieb: > Aber gibt es denn ein Betriebssystem für MCU's was eine > "Hardware-Abstarktion" bereitstellt? Kommt auf deine Definition von "MCU" an. Linux gibt's in allerlei Varianten auch auf 32-Bit Controllern, uCLinux auch auf solchen ohne MMU. Generell sind aber RTOS für kleine MCUs typischerweise eher eng definiert, auf Task-und ggf. Speicherverwaltung begrenzt. Der Rest ist dann Sache der Anwendung. Ein formales Treiberkonzept existiert mitunter für Datenstrominterfaces wie UART. Dafür finden sich dann teilweise auch Treiber oder Beispiele für solche.
Auf größeren MCU vielleicht Linux ansonsten nichts. Ein bisschen Hardwareanpassung muss eigentlich immer gemacht werden, wie soll das auch sonst funktionieren? Schau dir doch mal embOS von Segger an (segger.com), die haben auch eine Menge Bibliotheken für GUI, Filesystem, TCP/IP, USB, ... Beim Cortex M3 gibt es den Standard CMSIS, um die Hardware Sachen zu vereinfachen, da bekommst du dann vom Chiphersteller fertige Bibliotheken. Die Segger Sachen sind natürlich auch CMSIS kompatibel.
CP/M ist zwar ein recht altes OS, aber dadurch das es da eine Hardware-Abstraktionsschicht gibt ist es schon ein vergleichbares OS. Wenn auch viel viel kleiner als ein Linux/DOS/Windows. Aber das Prinzip dahinter ist schon interessant. Vor allem für kleine uC's.
"Generell sind aber RTOS für kleine MCUs typischerweise eher eng definiert, auf Task-und ggf. Speicherverwaltung begrenzt." Hmm das hab ich mir schon gedacht. Beispiele hab ich mir schon viele angeschaut allerdings sind diese dann meist auf genau einen Prozessor zugeschnitten. Was ich suchen wäre entweder eine "Betriebssystem" mit Hardwareabstraktion (von mir aus uCLinux) oder Bibliotheken die mir die Aufgabe abnehmen das ich jede Schnittstelle selber ansprechen muss. Das ganze halt für einen Cortex M3. Hat da jemand vielleicht ein Paar hilfreiche Links? Danke für die Hinweise, CMSIS und CP/M schau ich mir gleich einmal an. Falls es so etwas nicht geben sollte, wäre ein Tutorial zu ARM7 hilfreich. Ich habe mich bisher nur mit C51 Prozessoren beschäftigt mit denen ich mich auch gut genug auskenne. Der umstieg auf 32 bit ist ein wenig gewöhnungsbedürftig. Ich hab mir das AVR Tutorial auch schon angeschaut. Es ist ziemlich gut geschrieben allerdings fehlt mir dich Architektur Beschreibung. Ich kann leider absolut kein Assembler... Mich stört es ein wenig das ich relativ wenig von den Startupfiles verstehe die mir vom Compiler (Keil) oder von Beispielprojekten (z.b. für WinARM) vorgelegt werden. Was mich gleich zu nächsten frage bringt: Welcher Kompiler ist für ARM7 Prozessoren zu empfehlen? Ich schweife grade ein wenig vom Titel Thema ab,..
Also mit Hardwareabhängigkeit siehts bei MCs wohl schlecht aus, da diese alle sehr unterschiedlich aufgebaut sind. Vielleicht kann man ein Programm hardwareunabhängig für verschiedene MCs einer Bauhreihe machen (z.b. Atmels ATmega Serie) wobei man sich da auch auf die Leistungen des schwächsten beschränken müsste, und das funktioniert auch, ohne das Programm anzupassen. Um Unabhängig zu sein muss jede Plattform gewisse Vorraussetzungen erfüllen. In der MC-Welt hat eben jeder Controller und jede Controllerserie seine/ihre Vorzüge, die man auch ausnutzen sollte. Beim PC ist das anders.
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.