Forum: Mikrocontroller und Digitale Elektronik Definition Embedded Linux


von Mirco G. (mirco432)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von Bimbo. (Gast)


Lesenswert?

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.

von Martin S. (strubi)


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?

> 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

von Guest (Gast)


Lesenswert?

Embedded Linux ist eigentlich ein normales Linux.
Der Implementierer muss nur strikt alles GPL-Lizenzen verstanden haben.

von Olaf (Gast)


Lesenswert?

> 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

von Mario M. (thelonging)


Lesenswert?

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
von NichtWichtig (Gast)


Lesenswert?


von Dergute W. (derguteweka)


Lesenswert?

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

von Harry L. (mysth)


Lesenswert?

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/

von Mirco G. (mirco432)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Martin S. (strubi)


Lesenswert?

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 :-)

von Dergute W. (derguteweka)


Lesenswert?

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

von Olaf (Gast)


Lesenswert?

> 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

von Peter (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.