mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Embedded Linux Einstieg


Autor: Tim S. (169)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Tim S. (169)
Datum:

Bewertung
0 lesenswert
nicht 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)?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tim S. (169)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ikarus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tim S. (169)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich hab bereits ubuntu auf meinem Rechner neben Windows instaliert.

Wie kann ich mich nun da reinarbeiten?

Neue Software installieren ?

Autor: Tim S. (169)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In welcher Sprache wird dann ein Embdded Linux System programmiert?

Autor: A. K. (prx)
Datum:

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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Tim S. (169)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

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

Autor: Tim S. (169)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ulrich (Gast)
Datum:

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

Autor: Stefan L. (timpi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tim S. (169)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochmals vielen Dank für Eure Beiträge

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.