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
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?
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)?
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.
>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.
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.
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?
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.
Also ich hab bereits ubuntu auf meinem Rechner neben Windows instaliert. Wie kann ich mich nun da reinarbeiten? Neue Software installieren ?
Suchs dir aus. Es gibt hunderte. Nötige Kernel-Module programmiert man in C, aber beim Rest hast du weitgehend freie Auswahl.
>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!
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.
Kommt ein bischen sehr drauf an, in welche Richtung von Einsatzzweck du dich zu bewegen gedenkst.
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.
Programmiere halt irgendwas was du später auch mal auf einem embedded System laufen lassen willst.
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.
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.