Forum: Mikrocontroller und Digitale Elektronik Embedded Linux Einstieg


von Tim S. (169)


Lesenswert?

Gruß an alle Leser

Ich möchte gerne mehr über das Thema "Embedded Linux" erfahren und mich 
da einarbeiten. Könnt ihr mir Ratschläge geben wie ich mich an diesem 
Gebiet herantasten kann. Ich dachte so an Internetseiten, Litaratur und 
Entwicklungsboards.

Ich bedanke mich schon im voraus für Eure Beiträge

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

www.OpenWRT.org
Ist ein Embedded-Linux für diverse DSL-Router, WLAN-AccessPoints, etc.
Da kannst Du dir auch ein Board aussuchen.

Oder soll es kommerziell sein?

von Tim S. (169)


Lesenswert?

Ein Board möchte ich mir eigentlich nur zulegen um erste Erfahrungen zu 
sammeln.

Ich hätte da noch eine Frage:

Kann man Embedded Linux mit FreeRtos gleichsetzen (Ich meine vom Prinzip 
her)?

von (prx) A. K. (prx)


Lesenswert?

Nö, kann man nicht. Kein bischen.

Das eine ist ein komplettes Betriebssystem mit allem drum und dran, aber 
eher magerer Echtzeitfähigkeit. Das andere ein minimalistischer 
Echtzeitkernel ohne alles, was Betriebssysteme sonst ausmacht.

von holger (Gast)


Lesenswert?

>Ich möchte gerne mehr über das Thema "Embedded Linux" erfahren und mich
>da einarbeiten.

Dann arbeite dich vorzugsweise erst einmal in Linux
auf PC ein. Das geht ganz billig mit einer virtuellen
Maschine (VMware, VirtualBox, VirtualPC). Da kannst
du deine ersten Schritte mit Linux machen. Und wenns
dir nicht gefällt hats nichts ausser Zeit gekostet.

von Tim S. (169)


Lesenswert?

Ah ok,

nur stellt sich mir die Frage wozu man Embedded-Linux in "diverse 
DSL-Router"( Autor: Christian H.) verwendet oder in anderer Hardware.
Was für Vorteile ergeben sich dabei wenn ich ein "komplettes 
Betriebssystem mit allem drum und dran" (Autor: A. K.) einsetze.

von ikarus (Gast)


Lesenswert?

A. K. schrieb:
> Das eine ist ein komplettes Betriebssystem mit allem drum und dran, aber
> eher magerer Echtzeitfähigkeit. Das andere ein minimalistischer
> Echtzeitkernel ohne alles, was Betriebssysteme sonst ausmacht.
Naja, ohne GNU-Tools oder Busybox ist Linux auch ziemlich nackig... ;-)

holger schrieb:
>>Ich möchte gerne mehr über das Thema "Embedded Linux" erfahren und mich
>>da einarbeiten.
> Dann arbeite dich vorzugsweise erst einmal in Linux
> auf PC ein. Das geht ganz billig mit einer virtuellen
> Maschine (VMware, VirtualBox, VirtualPC)
Läuft Linux wirklich in einem VirtualPC? Das ist doch von MS?

von (prx) A. K. (prx)


Lesenswert?

Tim S. schrieb:

> Was für Vorteile ergeben sich dabei wenn ich ein "komplettes
> Betriebssystem mit allem drum und dran" (Autor: A. K.) einsetze.

Weil alles drin ist was man braucht und man nix dafür zahlen muss. 
Router benötigen einen Rattenschwanz an Netzwerkfunktionen, wie eben 
Routing, DHCP, Webserver, Filterung, VPN usw, und all das ist in 
GNU/Linux von Haus aus drin bzw. dafür verfügbar. "Embedded" heisst da 
eigentlich nur, dass es eingedampft ist, also nur das drin ist was 
benötigt wird.

Ein DSL-Router ist auch nicht grad das, was man so unter einer 
kritischen Echtzeitanwendung versteht.

von Tim S. (169)


Lesenswert?

Also ich hab bereits ubuntu auf meinem Rechner neben Windows instaliert.

Wie kann ich mich nun da reinarbeiten?

Neue Software installieren ?

von Tim S. (169)


Lesenswert?

In welcher Sprache wird dann ein Embdded Linux System programmiert?

von (prx) A. K. (prx)


Lesenswert?

Suchs dir aus. Es gibt hunderte. Nötige Kernel-Module programmiert man 
in C, aber beim Rest hast du weitgehend freie Auswahl.

von holger (Gast)


Lesenswert?

>Also ich hab bereits ubuntu auf meinem Rechner neben Windows instaliert.

Fein.

>Wie kann ich mich nun da reinarbeiten?
>Neue Software installieren ?

Ganz im Gegenteil. Alles deinstallieren was mit
Klickibunti zu tun hat. Und dann erstellst du per
kommandozeile mal einen neuen Ordner, kopierst
eine Datei, gibst einer Datei Zugriffsrechte,
erstellst User... Das ist Embedded Linux!

von Tim S. (169)


Lesenswert?

Und in wiefern trägt das zu einem besseren Verständnis von Embedded 
Linux bei?
Könnt Ihr mir ein Beispiel aus der Praxis aufzeigen.

von (prx) A. K. (prx)


Lesenswert?

Kommt ein bischen sehr drauf an, in welche Richtung von Einsatzzweck du 
dich zu bewegen gedenkst.

von Tim S. (169)


Lesenswert?

Greifen wir einfach das Beispiel von Christian H. mit den DSL Routern 
auf.
Was macht nun das Betriebssystem in diesem Fall? Besteht dann die 
Möglichkeit den DSL Router an einem PC anzuschließen und so auf das 
Betriebssystem zuzugreifen und auf die Daten, die es verarbeitet?
Wie greift man generell auf diese Daten zu?

Fragen über Fragen.

von Ulrich (Gast)


Lesenswert?

Programmiere halt irgendwas was du später auch mal auf einem embedded 
System laufen lassen willst.

von Stefan L. (timpi)


Lesenswert?

Hallo,
Tim S. schrieb:
> Was macht nun das Betriebssystem in diesem Fall?

Das Selbe, was ein Betriebssystem auch auf einem 'nicht embedded' System 
tut. Es stellt die Verbindung zwischen den Applikationen und der 
Hardware her (mal ganz plump gesagt) und bietet eine handvoll 
Basisfunktionalität (Netzwerk, serielle Schnittstelle, Speicherzugriffe, 
Filesystem, ...).

Weiterhin sind auf Routern noch Applikation, die auf das Betriebssystem 
aufsetzen (ppp-Client, dhcp-Client/Server, WEB-Server zur Konfiguration, 
VoIP-Client/Server, igmp-Proxy, Tools und Scripte zum Konfigurieren, 
...)

> Besteht dann die Möglichkeit den DSL Router an einem PC anzuschließen
> und so auf das Betriebssystem zuzugreifen und auf die Daten, die es
> verarbeitet?

Ja. Allerdings mögen die meisten Hersteller das nicht und verstecken die 
Schnittstellen bzw. beschneiden die Funktionalität. Aber dafür gibt's 
genügend WEB-Seiten die bei der Lösung dieser Probleme weiterhelfen.

> Wie greift man generell auf diese Daten zu?

Aus Entwicklersicht: Üblicherweise wird eine serielle Schnittstelle (mit 
Shell-Prompt bzw. debugger), eine Netzwerkschnittstelle (telnet, ssh, 
debugger) und für ganz harte Fälle (Bootloader debuggen, initial 
flashen) JTAG benutzt.

Ein Embedded Linux ist eigentlich nicht viel anders als PC-Linux, nur 
dass die Embedded Devices üblicherweise kein BIOS besitzen und Kernel 
und Applikationen ein wenig abgespeckt sind (busybox statt üblicher 
Basis-Tools, dropbear statt openssh, uclibc statt libc, Kernel nur mit 
den wirklich benötigten Treibern).
Die 'Grundinitialisierung' der Hardware wird hier von einem auf die 
Hardware angepassten Bootloader (UBoot, RedBoot, ...) erledigt, der 
anschliessend den Kernel lädt und startet. Dieser besitzt die für die 
jeweilige embedded Hardware passenden Treiber (zumindest um erst einmal 
auf das Filesystem zuzugreifen und die Applikationen zu starten bzw. 
Module nachzuladen).

Ist das Betriebssystem (meint der Kernel) erst einmal geladen, dann 
unterscheidet es sich eigentlich garnicht sooo sehr von einem PC-Linux.

Als Einstieg muss es ja nicht unbedingt ein Nicht-X86-Prozessor sein. 
Wenn Du auf Applikations-Ebene ansetzen möchtest reicht u.U. eine 
chroot-Umgebung (schau mal bei buildroot.uclibc.org vorbei). Dabei 
kannst Du genügen Erfahrungen zu den Unterschieden zw. 'richtigen' und 
embedded Umgebungen sammeln. Die dabei erstellten Images lassen sich 
wunderbar mit qemu austesten. Und bei Einsatz eines Cross-Compilers 
kannst Du auch Flash-Images für andere Hardware bauen.

Auch wenn Du hardwarenah einsteigen möchtest kannst Du Dich ja mit der 
Kernel-Programmierung (auf dem PC) auseinandersetzen. Die Erfahrungen, 
die Du dort sammelst, helfen Dir im auch embedded Umfeld weiter.

Und wenn's wirklich 'ne 'richtige' Nicht-X86-Hardware sein soll, dann 
schau doch mal bei OpenWRT oder OpenEmbedded vorbei. Dann kommt neben 
Kernel und Applikationen noch der Bootloader und die Cross-Toolchain 
hinzu, mit den Du Dich auseinandersetzen kannst.

Übrigens, die Applikationsentwicklung für embedded Linux-Devices kann 
zum Großteil auf einem normalen Linux-PC erfolgen (und sie erfolgt auch 
so), mit all dem Komfort, den diese Umgebung bietet.

timpi.

von Tim S. (169)


Lesenswert?

Nochmals vielen Dank für Eure Beiträge

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.