Hi. Was ist mit embedded Linux gemeint? Wenn man mal im Bereich Embedded System die Jobausschreibungen durchschaut stößt man oft auf den Begriff Embedded Linux. Deswegen habe ich mal ein wenig recherchiert und mir einen Pi gekauft. In das Betriebssystem Raspian habe ich mich mittlerweile auch schon ein wenig eingearbeitet. Also ein wenig mit dem Terminal gearbeitet und einfache Skripte geschrieben. Trotzdem ist mir bisher nicht ganz genau klar was mit Embedded Linux gemeint ist. So wie ich das bisher verstanden habe wird das "orginale Linux" für die Hardware angepasst. Beim Pi wurde "Linux" dann auf Raspbian abgeändert. Wobei das natürlich nur eine Möglichkeit ist. Obwohl bei Raspian ja vermutlich sehr viel Leistung für die Desktopumgebung verblasen wird. Aber wie wird das Betriebssystem jetzt im Endeffekt genutzt? Schreibt man Shell Skripte und ruft mit diesem dann unterschiedliche Programme die man in c oder Python verwendet hat? Ich hab es also so verstanden das man Embedded Linux, also das Betriebssystem, in welcher Form auch immer, über Shell Skripte verwendet und über diese Skripte dann ggf. C oder Python programme aufruft. Es ist irgendwie ein bisschen schwierig zu Beschreiben. Ich hoffe es kam rüber worauf ich hinaus will. Vielen Dank! Mirco
Bei Embedded Linux kommst du durch die steuerungstechnischen Anforderungen automatisch näher an die Hardware und damit an Echtzeitreaktionen im ms..µs Bereich und so letztlich tief in die Treiber-Layer.
:
Bearbeitet durch Moderator
Was ist daran so schwer? Es ist ein ganz normales Linux, bloß auf einer kleinen Leiterplatte. Oft sogar ohne Desktop, angepasst auf kleinste Bedürfnisse, jedoch mit sätlich normales Features eines Linux. Du hast WLAN, LAN; Bluetooth, Linux Shell, Speicherplatz etc. out of the box in verschiedenen Varianten (z.B. auf einem 2x3cm Board oder eben einem PI. Die Definition wird dan irgendwann fließend. Aber in der Regel is es ein Linux auf einem Einplatinencomputer, der so verbaut ist, dass man vom dahinter arbeitenden Linux nichts bemerkt, trotzdem seine Vorteile nutzen kann. Dann programmierst du wie gewohnt mit C, C++, Java, python etc. dadrauf.
Lothar M. schrieb: > Bei Embedded Linux kommst du durch die steuerungstechnischen > Anforderungen automatisch näher an die Hardware und damit an > Echtzeitreaktionen im ms..µs Bereich und so letztlich tief in die > Treiber-Layer. Naja, das setzt nur kaum eine klassische Distribution entsprechend um. Beim RPi ist schon mal komplett Fehlanzeige, dank dem famosen i2c-Konzept. Ansonsten unterscheidet sich eigentlich fast keine Standard-Embedded-Distro von der eigentlichen Desktop-Variante. Ist auch fuer ein Routerchen oder Bastelboard nicht so wichtig. Nennen koennte man fuer Echtzeitfreaks noch uClinux, das hat halt so seine Aergernisse, weil es zu sauberem Speichermanagement zwingt, dafuer ist es lean & mean und man hat da wirklich die Moeglichkeit, Echtzeit mit entsprechenden Patches zu garantieren.
> Was ist daran so schwer? Es ist ein ganz normales Linux, bloß auf einer > kleinen Leiterplatte. Oft sogar ohne Desktop, angepasst auf kleinste > Bedürfnisse, jedoch mit sätlich normales Features eines Linux. Das ist ja das schwere. :) Ohne Grafikoberflaeche ist man ploetzlich wieder schnell bei klassischem Unix in der Kommandozeile, also awk, regular expressions, pipes, shellprogrammierung, kerneltreiber schreiben, vi, usw. Die gute alte Zeit halt.... Das ganze oft noch etwas gewuerzt mit den kleinen Erschwernissen der Crossentwicklung weil man nicht immer auf der Zielhardware selber arbeiten kann. Mit anderen Worten eine super tolle Sache die einem intellektuell wieder etwas fordert. .-) Olaf
Embedded Linux ist eigentlich ein normales Linux. Der Implementierer muss nur strikt alles GPL-Lizenzen verstanden haben.
> Embedded Linux ist eigentlich ein normales Linux.
Fuer Embedded Linux so auf dem Level eines Rapis gilt das sicher. So
eine Kiste fuehlt sich praktisch genauso an wie ein Linuxrechner mit dem
man 1992 gearbeitet hat. Es gibt aber auch Anwendungen die wirklich nur
auf einem Chip arbeiten. Ich glaube die Wlan-SDKarten von Toshiba sind
dafuer ein gutes Beispiel. Bei sowas hat man dann natuerlich nur sehr
eingeschraenkte Resourcen. Ausserdem muss man sich fragen wieso will
jemand ein Linux auf stark beschraenkter Hardware laufen lassen. Die
Antwort darauf ist meistens irgendwas mit Internet/Netzwerk. Daher
sollte man da auch ein paar Basiskenntnisse aufweisen.
Olaf
Mirco G. schrieb: > Trotzdem ist mir bisher nicht ganz genau klar was mit Embedded Linux > gemeint ist. Übersetze doch "embedded" einfach mal. Das heißt "eingebettet", also in einem fertigen Gerät eingebaut. Im Prinzip eine linuxbasierte Firmware. P.S.: https://de.wikipedia.org/wiki/Eingebettetes_System
:
Bearbeitet durch User
Moin, Mirco G. schrieb: > Aber wie wird das Betriebssystem jetzt im Endeffekt genutzt? Schreibt > man Shell Skripte und ruft mit diesem dann unterschiedliche Programme > die man in c oder Python verwendet hat? Das simpelste, vorstellbare Szenario ist ein Kernel, der ein initramfs mitbringt, in dem dann neben den ueblichen verdaechtigen (z.b. proc,sys,dev..) nur ein einzelnes, statisch gelinktes, ausfuehrbares File (z.b. hello_world) drinnen steckt, das der Kernel nach dem booten ausfuehrt. Das waere schon ein embedded linux. Davon ausgehend, kann man es beliebig komplex gestalten, z.b. mit einem sysvinit-artigen System (evtl. busybox), um etwas Struktur in den Start zu bringen, mit shared libs, usw. Raspbian usw. wuerd' ich gerade nicht als embedded Linux sehen, sondern als Versuch, ein bloated Linux mit allem Schnick und Schnack auf einer eher schwaechlichen Platform irgendwie ans Laufen zu bringen. Solche Features wie: Kann man es zu beliebigen Zeiten einfach so vom Strom trennen, ohne dass was (z.b. am Filesystem) kaputtgeht.? Kann man das z.b. per Knopfdruck oder sonstwie simpel updaten (Nein, wilde "sudo apt get install" und "dpgk gedoens" Orgien zaehle ich da nicht dazu)? Kann man es in einen Urzustand versetzen (Factory Default)...? machen meineserachtens auch den Unterschied zwischen einem embedded und nicht-embedded linux aus. Gruss WK
Dergute W. schrieb: > Raspbian usw. wuerd' ich gerade nicht als embedded Linux sehen, sondern > als Versuch, ein bloated Linux mit allem Schnick und Schnack auf einer > eher schwaechlichen Platform irgendwie ans Laufen zu bringen. Sehe ich genauso. Ein schönes Beispiel für ein verbreitetes embedded Linux ist OpenWRT. https://openwrt.org/
Vielen Dank für eure Beiträge! Bimbo. schrieb: > Was ist daran so schwer? Es ist ein ganz normales Linux, bloß auf einer > kleinen Leiterplatte. Oft sogar ohne Desktop, angepasst auf kleinste > Bedürfnisse, jedoch mit sätlich normales Features eines Linux. Man findet komischerweise wenig Beiträge in denen die Thematik auf den Punkt gebracht wird. Wenn in einer Stellenausschreibung z.B. von Embedded Linux gesprochen wird ist es für mich nicht eindeutig ob damit gemeint ist ein Embedded Linux System an Hardware anzupassen oder ob damit gemeint ist Software für eine Embedded Linux Umgebung zu schreiben. Bimbo. schrieb: > Dann programmierst du wie gewohnt mit C, C++, Java, python etc. dadrauf Da man aber das Betriebssystem für die Steuerung nutzt erfolgt die grundlegende Steuerung aber per Shell Skript, oder? Über die Shell interagiert man doch mit dem Betriebssystem und sagt ihm dann welches Programm egal ob mit Python, C oder sonst was wann, wie, wo ausgeführt werden soll, oder? Ist es dann auch die Regel das man unterschiedliche Sprachen für unterschiedliche Aufgaben verwendet oder verwendet man dann trd nur eine Sprache? Olaf schrieb: > Das ist ja das schwere. :) > Ohne Grafikoberflaeche ist man ploetzlich wieder schnell bei klassischem > Unix in der Kommandozeile, also awk, regular expressions, pipes, > shellprogrammierung, kerneltreiber schreiben, vi, usw. Die gute alte > Zeit halt.... > Das ganze oft noch etwas gewuerzt mit den kleinen Erschwernissen der > Crossentwicklung weil man nicht immer auf der Zielhardware selber > arbeiten kann. > Mit anderen Worten eine super tolle Sache die einem intellektuell wieder > etwas fordert. .-) Eben. Ich finde das eigentlich auch ganz gut. Vor allem wenn man bisher nur Windows gewohnt war. So hat man jetzt viel mehr Kontrolle und versteht besser was passiert. Kann natürlich aber auch VIEL mehr falsch machen. Guest schrieb: > Der Implementierer muss nur strikt alles GPL-Lizenzen verstanden haben. Was meinst Du damit? Olaf schrieb: > Fuer Embedded Linux so auf dem Level eines Rapis gilt das sicher. So > eine Kiste fuehlt sich praktisch genauso an wie ein Linuxrechner mit dem > man 1992 gearbeitet hat. Aber das ist vermutlich nicht das womit in der Industrie gearbeitet wird oder? Da wird das Linux dann vermutlich noch viel viel abgespeckter sein, richtig? > Ausserdem muss man sich fragen wieso will > jemand ein Linux auf stark beschraenkter Hardware laufen lassen. Die > Antwort darauf ist meistens irgendwas mit Internet/Netzwerk. Das ist mir eben auch noch ein kleines Rätsel und für Neulinge fast die wichtigste Frage. Also spielt Linux vor allem im Bereich IoT aufgrund der Vernetzung eine so wichtige Rolle? Ich hab bisher halt nur "ganz klassisch" mit normalen µC (z.B. STM32F4) und C gearbeitet und wenn man damit "normale Sachen" wie eine CAN Kommunikation oder SPI oder auch etwas komplexere Geschichten wie z.B. durch Matlab generierte Algos oder ähnliche Sachen macht kommt man damit natürlich schon ziemlich weit. (Auch wenn das für einige hier wahrscheinlich alles Kindergarten ist bekommmt man damit ja schon ein paar Sachen ans laufen) Solche Netzwerkgeschichten hab ich dagegen noch nie gemacht und das Stelle ich mir, vor allem hinsichtlich der Software, für Netzwerke sehr schwierig vor. Sowas wird bei Linux dann natürlich mitgebracht und den Vorteil kann ich auch nachvollziehen. Welche Vorteile bietet das ganze denn noch? Ich glaube ein paar Beispiele wären für mich sehr anschaulich. Könnt ihr mir da vielleicht ein paar Sachen nennen bei denen man mit Embedded Linux einen Vorteil zum normalen µC ohne Betriebssystem hat? Echtzeit und Multitasking wahrscheinlich? Dergute W. schrieb: > Das simpelste, vorstellbare Szenario ist ein Kernel, der ein initramfs > mitbringt, in dem dann neben den ueblichen verdaechtigen (z.b. > proc,sys,dev..) nur ein einzelnes, statisch gelinktes, ausfuehrbares > File (z.b. hello_world) drinnen steckt, das der Kernel nach dem booten > ausfuehrt. > Das waere schon ein embedded linux. Kurz: Das "normale" Linux einfach so abspecken das es eben die Aufgabe erfüllt, richtig? Nicht mehr und nicht weniger. Allerdings ist so ein Betriebssystem ja unglaublich umfangreich und man muss um Sachen zu streichen zumindest grob wissen wofür diese da sind. Kann man für solche Anpassungen des Betriebssystems oder für die generelle Funktion des Betriebssystems Literatur empfehlen? Aktuell arbeite ich gerade "Beginning the Linux Command Line" durch. Das ist zumindest für blutige Einsteiger in Linux sehr zu empfehlen. Alles schön kurz und knackig erklärt. Aber das hat natürlich nichts mit Anpassungen am eigentlichen Betriebssystem zu tun. > Davon ausgehend, kann man es beliebig komplex gestalten, z.b. mit einem > sysvinit-artigen System (evtl. busybox), um etwas Struktur in den Start > zu bringen, mit shared libs, usw. > Raspbian usw. wuerd' ich gerade nicht als embedded Linux sehen, sondern > als Versuch, ein bloated Linux mit allem Schnick und Schnack auf einer > eher schwaechlichen Platform irgendwie ans Laufen zu bringen. So hab ich es bisher nämlich auch aufgefasst.
Eigentlich bezeichnet das "Linux" nur den Kernel des Betriebssystems. Ein Kernel mit den üblichen Anwendungsprogrammen ist eine Distribution. Das was die meisten Menschen unter eine Linux Distribution (oder abgekürzt: Linux) verstehen, ist für allgemeine Server oder Desktop Rechner gedacht. Also die Produkte von Debian, Ubuntu, RedHat, SuSE, etc. Embedded Systeme zeichnen sich dadurch aus, ihre Hardware sich von gewöhnlichen Servern und Desktop Rechnern unterscheidet. Meisten treffen mehrere Punkte zu: - Weniger RAM - Andere CPU - Anderer Chipsatz um die CPU herum - Kleineres Board - Geringere Stromaufnahme - Eingeschränkter Anwendungsbereich Unter anderem bekannt als: Smartphone, Tablet, Ebook Reader, Smart-TV, DVD Player, Spielkonsolen, Raspberry Pi, WLAN Router, Drucker, Maschinensteuerungen, ... Aufgrund der teilweise stark abweichenden Hardware kann meistens nicht der normale Linux Kernel benutzt werden, sondern eine spezifisch modifizierte Version. Auch die Zusammenstellung der System- und Anwendungsprogramme ist meistens spezifisch. So kann eine Waschmaschine zum Beispiel wenig mit Grafiktreibern für PC Chipsätze anfangen. Von Windows gab es auch mal eine embedded Version, die hieß Windows CE.
Olaf schrieb: > Ausserdem muss man sich fragen wieso will > jemand ein Linux auf stark beschraenkter Hardware laufen lassen. Die > Antwort darauf ist meistens irgendwas mit Internet/Netzwerk. Ja, das kann ich bestätigen.
Mirco G. schrieb: > Welche Vorteile bietet das ganze denn noch? Ich glaube ein paar > Beispiele wären für mich sehr anschaulich. Könnt ihr mir da vielleicht > ein paar Sachen nennen bei denen man mit Embedded Linux einen Vorteil > zum normalen µC ohne Betriebssystem hat? Echtzeit und Multitasking > wahrscheinlich? Der Vorteil ist aus meiner Sicht heutzutage die grosse Anzahl von existierenden Treibern. Dann, dass man Programme relativ schnell von Desktop auf 'Embedded' portiert hat (immer weniger ein Thema). Networking ist kein Thema mehr, das bieten schon einige andere, wie z.B. NuttX, FreeRTOS, ... Wenn's an Multi-User-Systeme geht, USB-Stacks, x86-Architektur-Protected-Mode usw. bist du mit Linux wohl am besten bedient. Bei Echtzeit sieht's hingegen ziemlich mies aus, da sind zwar schon zig Leute jahrelang dran, aber die grundsaetzliche Linux-Architektur bewegt sich da nur laaaangsam in die richtige Richtung. Fragt sich immer, was man unter Echtzeit versteht, das Fass machen wir besser nicht auf. Die genannte OpenWRT-Disti ist eigentlich unter den Besten, um die gesamte Funktion von Bootloader, Kernel, Userspace (busybox) zu ueberblicken. Was Dokumentation angeht, findet sich viel unter $KERNEL/Documentation im Textformat, der online-Kernel-Hacking-Guide, und der Rest ist Reverse-Engineering 'light', da die Dokus nicht immer auf dem Stand sind. Guest schrieb: > Der Implementierer muss nur strikt alles GPL-Lizenzen verstanden haben. Der war gut :-)
Moin, Mirco G. schrieb: > Kurz: Das "normale" Linux einfach so abspecken das es eben die Aufgabe > erfüllt, richtig? Nicht mehr und nicht weniger. Ich wuerd's mal mehr als abspecken nennen. Z.b. kannst du ein rootfs natuerlich abspecken wie Hoelle, aber wenns z.b. ein ext2 waere, gibts Malheur,wenn's unsauber runtergefahren wurde. Auch wenns voellig abgespeckt ist. Also kann man sich ueberlegen, welche Teile z.b. niemals (oder nur waehrend einem Update) schreibbar sein muessen und die dann in geeignete filesysteme verpacken. Mittlerweile kann man ja mit dem overlayfs nette Gimmicks machen, indem man z.b. ein squashfs zuunterst legt, und mit 1..N weiteren, ggf. auch beschreibbaren filesystemen obendrueber... Hier mal meine Literaturempfehlungen: http://www.linuxfromscratch.org/ http://librta.org/book.html Gruss WK
> Wenn in einer Stellenausschreibung z.B. von Embedded Linux gesprochen > wird ist es für mich nicht eindeutig ob damit gemeint ist ein Embedded Finde dich damit ab. Die Leute die im Ingenieurbereich Stellenanzeigen schreiben haben nur selten eine Ahnung von dem was sie da schreiben. Das muss man einfach etwas kreativ lesen. Olaf
Linux auf kleinen Systemen bringt nur was wenn man entsprechende Schnittstellen benutzt. Da ist Linux enfach top, zB. schreib mal auf einem cortex A9 einen "universalen USB Host", viel Spaß. Auch im ETH Bereich macht es Linux einem recht einfach. Simple embededd Systeme kommen auch mit einfacheren RTOS aus, auch wenn diese heute teilweise recht viel mitbringen. Wer Chinesisch kann dem würde ich rt-thread empfehlen, ist inzwischen was zwischen Linux und FreeRTOS. Arbeitet sehr gut auch auf einem cortex M4.
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.