Embedded Linux starten, Hilfe

Wenn ich gute Kenntnisse in der Java-Programmierung hätte und einige Informationen über Mikrocontroller wüsste, kann ich anfangen, eingebettetes Linux zu lernen? Wenn nicht, wie kann ich in diesem Bereich anfangen?

Nur damit Sie es wissen: In vielen Fällen passen Java und Embedded (alles) nicht zusammen. Da Linux Ihr Interesse ist, müssen Sie außerdem C und C++ lernen, zusätzlich zu der Skriptsprache, die die Shell auf dem System verwendet, an dem Sie arbeiten werden (falls Sie das überhaupt haben).
Das könnte auch helfen

Antworten (5)

Es gibt einige Schritte, bevor Sie auf eingebettetes Linux umsteigen. Wie @KKToronto sagte, wäre es schön, wenn Sie zuerst eine Desktop-Linux-Erfahrung haben. Wenn Sie keine Erfahrung haben, empfehle ich, Ubuntu auf Ihrem Desktop/Notebook zu installieren, um ein Gefühl für das Betriebssystem zu bekommen.

Von der Desktop- in die Embedded-Welt zu wechseln, zumindest auf Linux-Weise, ist relativ einfach, wenn Sie vorhaben, FÜR Embedded-Linux zu entwickeln. Fast alle Treiberschnittstellen, Kernel-Aufrufe, sind gleich. Ein Programm, das auf einem Desktop-Linux ausgeführt wird, kann mit geringfügigen Änderungen auf einem eingebetteten Linux ausgeführt werden. Die Beagleboard-Plattform ist ein gutes Beispiel, wie @JobyTaffey feststellte. Einige von mir entwickelte Anwendungen können sowohl auf dem Desktop als auch auf dem Beagleboard ohne Codeänderungen ausgeführt werden, es muss nur der richtige Compiler verwendet werden.

Immer noch zum Thema "Entwickeln für Embedded Linux": Eine der wichtigsten Änderungen ist der Compiler, hauptsächlich weil fast alle Embedded-Prozessoren, die leistungsfähig genug sind, um Linux auszuführen, ARM-Prozessoren sind. Vom C/C++/Java-Programmierer aus ist es fast so, als würde man von x86 auf ia64 migrieren.

Wenn Sie eine tiefere "eingebettete" Erfahrung beim Erstellen von Gerätetreibern für neue Hardware, beim Zugriff auf E / A-Ports auf der Platine und bei der Steuerung externer Geräte mit Linux machen möchten, würde ich mich für Linux Embedded Primer entscheiden . Es ist ein großartiges Buch, um Dinge auf niedriger Ebene zu lernen, wie die Gerätetreiber erstellt werden, wie man Zugriff auf feste Speicherorte erhält, die einige Peripheriegeräte darstellen usw. (Und es hat ein erstaunliches Lichtschwert auf dem Cover =) )

Wenn Sie auf die Hardwareseite gehen, ist ein tiefes Mikrocontroller-Wissen wirklich wichtig, da Sie sich direkt mit dem Speicher für die Peripheriekonfiguration / den Zugriff befassen werden. Einige Vorgänge können sogar Assembler-Kenntnisse erfordern, hauptsächlich Unterbrechungen oder Flash-Schreiben. Es hängt viel von der Mikrocontroller-Architektur ab.

Wenn Sie keine Erfahrung damit haben, würde ich empfehlen, mit Arduino zu beginnen, wie @stevegt bemerkte, um ein Gefühl für Hardware/Elektronik zu bekommen, und dann mit einer Baremetal-Programmierung über einen anderen Prozessor fortzufahren, um einige Tricks in Bezug auf Hardware/Software zu lernen Schnittstelle, die irgendwie in der Arduino-Firmware oder im Linux-Kernel versteckt sind.

Wie Sie sehen können, steckt viel Wissen hinter dem Ausdruck "embedded linux". Denken Sie daran, dass Sie nicht alles haben müssen, um ein eingebettetes System zu erstellen. Sie müssen sich darauf konzentrieren, welche Seite Sie zuerst lernen möchten, und ein vorgefertigtes System für die andere erhalten: Arduino für den Hardware-Erstkontakt, Beagleboard zum Erlernen der Programmierung für eingebettetes Linux, einen Bare-Metal-Prozessor für die Hardware-/Software-Schnittstelle.

Speziell für Ihren Fall würde ich das Beagle-Board empfehlen. Da Sie über Programmier- und Mikrocontroller-Hintergrund verfügen, können Sie einige Anwendungen auf hohem Niveau entwickeln, um Erfahrung in der Linux-Programmierung zu sammeln, und wenn Sie sich wohl genug fühlen, können Sie Hardware-Sachen mit den verfügbaren I/Os auf dem Board beginnen.

Holen Sie sich ein Linux-Entwicklungsboard und fangen Sie an zu hacken!

Wählen Sie einen mit einer starken Community, die Sie unterstützen kann. Ein BeagleBoard wäre eine gute Wahl. Raspberry Pi mag verlockend sein, aber sie haben noch keine gut etablierte Entwicklergemeinschaft.

Sie benötigen zunächst etwas Linux-Erfahrung. Es gibt viele Linux-Handbücher online oder Sie können Bücher in Bibliotheken ausleihen. Als Nächstes sollten Sie die folgenden Websites studieren:

http://www.uclinux.org/ http://elinux.org/Main_Page

Vielleicht möchten Sie nicht versuchen, Linux auf einem Mikrocontroller auszuführen - es ist eine enge Passform. Wenn Sie einen Mikrocontroller wollen, würde ich sagen, verwenden Sie einen Arduino. Wenn Sie Linux wollen, müssen Sie nach etwas Teurerem suchen, zumindest so etwas wie ein Gumstix.

Die beste Kombination ist oft ein Arduino, der über ein USB-Kabel mit einem Linux-Host kommuniziert.

Du kannst auf jeden Fall anfangen zu lernen. Holen Sie sich einen BeagleBone, sie haben eine gute Community und das Board hat viele I/O. Ich habe ein benutzerdefiniertes Design basierend auf dem BeagleBone entwickelt und es funktioniert gut. TI-Technik. unterstützen es auch relativ gut.