Wie fange ich mit der eingebetteten Programmierung an? [Duplikat]

Mögliches Duplikat:
Wie wird man Embedded-Software-Entwickler?

Ich bin wirklich ein Neuling und habe eine Vorstellung von Embedded C. Ich möchte Embedded-Geräte mit meinem Computer programmieren und möchte sogar einige Computerperipheriegeräte programmieren. Ich habe einige Grundlagen zu eingebetteten Systemen, weiß aber nicht, wo ich anfangen soll? Welche Plattform verwenden? Wie ist der Mechanismus zu verstehen? Muss ich alles über Elektronik wissen, bevor ich in die eingebettete Welt einsteige? Bitte helfen Sie mir, ich habe zu viele Fragen und brauche einen Weg. Links zu relevanten Artikeln sind willkommen.

Hatten wir solche Fragen nicht schon einmal?
@stevenvh ja haben wir, aber die unten gegebenen Antworten sind wirklich großartig. Solche Antworten gab es vorher nicht :)

Antworten (3)

Ich halte das Programmieren auf „Bare Metal“ immer noch für den besten Einstieg in die Embedded-Welt. Meiner Meinung nach gibt Ihnen das Ausführen auf einer Plattform wie Android keinen wirklichen Vorgeschmack auf eingebettete Programmierung.

Obwohl es viele 8-Bit-Mikrocontroller gibt, liegt die Zukunft bei 32 Bit. Ich mag zufällig die PIC32-Serie von Microchip. Sie können ein komplettes Entwicklungsboard von SparkFun für 40 US-Dollar erhalten . Sie müssen zunächst nichts anderes kaufen, da ein Bootloader integriert ist. Sie können auch einen der Programmierer von Microchip wie das PICKit 3 verwenden.

Geben Sie hier die Bildbeschreibung ein

Dieses Board verwendet das beliebte PIC32MX795, das über 512 KB Flash und 128 KB RAM verfügt, sodass Sie ihm in absehbarer Zeit nicht entwachsen werden. Es gibt unzählige kostenlose Bibliotheken, um die Programmierung der Peripheriegeräte zu vereinfachen.

Microchip hat eine kostenlose IDE und einen Compiler , die auf Windows, Linux und Macs laufen. (Sie haben auch eine kostenpflichtige Version, aber alles, was Ihnen Optimierungen gibt, um kleineren Code zu produzieren. Sie brauchen das nicht für den Bastlergebrauch.)

Das Wort eingebettet bedeutet für verschiedene Menschen unterschiedliche Dinge. Im Grunde bedeutet dies jeden Computer, der in einem Gerät sitzt und auf dem eine bestimmte Anwendung ausgeführt wird. Aber wie immer sind die Grenzen fließend, und ich bin mir sicher, dass die Leute meiner Beschreibung nicht zustimmen werden.

Die Leistung einer eingebetteten MCU oder CPU kann von einem winzigen 8-Bit-Chip mit 6 Pins bis hin zu sehr leistungsstarken 64-Bit-CPUs reichen, die mit sehr hohen Geschwindigkeiten mit externem RAM, Internetverbindung und Farb-Touchscreens laufen.

Einstieg

Glücklicherweise müssen Sie, wenn Sie mit der Embedded-Programmierung auf einer 8-Bit-MCU beginnen möchten, wirklich fast nichts über Elektronik wissen. Wenn Sie LEDs verdrahten können, können Sie einen Mikrocontroller verdrahten.

Die eigentliche Schwierigkeit besteht darin, zunächst einen Mikrocontroller auszuwählen. Es gibt wahrscheinlich Hunderte von Gerätefamilien, die von Dutzenden von Unternehmen hergestellt werden.

Da Sie mit dem Thema sehr neu sind, würde ich empfehlen, mit etwas wie dem Arduino zu beginnen .

Arduino

Arduino ist ein beliebter Open-Source-Einplatinen-Mikrocontroller, der entwickelt wurde, um den Prozess der Verwendung von Elektronik in multidisziplinären Projekten zugänglicher zu machen. Sie können sie in einer Sprache programmieren, die C sehr ähnlich ist. Sie sind sehr einfach zu erlernen, selbst für Nicht-Programmierer. Der Arduino deckt Sie für fast jedes Projekt ab, mit dem Sie beginnen möchten.

Weiter gehts

Irgendwann werden Sie entscheiden, dass der Arduino nicht Ihren Anforderungen entspricht. Vielleicht ist es zu groß oder nicht stark genug. Wahrscheinlich wissen Sie zu diesem Zeitpunkt mehr über die eingebettete Welt, um zu wissen, was als Nächstes zu tun ist, oder Sie wissen mehr darüber, was Sie lernen möchten, um zu wissen, welche Art von Frage Sie stellen müssen.

Das ist eine gute Frage. Es lohnt sich, alle paar Jahre wiederzukommen, da sich die Landschaft ändert. Ich habe kürzlich versucht, ARM von Grund auf neu zu lernen. Ich bin zu dem Punkt gekommen, an dem Microsoft Studio 11 (wie Sie sagen, mit meinem eigenen Computer) in der Lage war, kompilierbare ARM-ASM aus einfachem C zu erzeugen. Ich bin noch nicht zum JTAG-Debugger gekommen. Das Ziel war, die gesamte Toolchain völlig kostenlos zu haben, ohne zu viel Nicht-Windows- oder Open-Source-Software zu verwenden.

Das Problem in diesem Jahr ist, dass alles eine Plattform ist. Es gibt keinen einfachen plattformlosen Weg, sagen wir, wenn Sie in Pascal zu Bare Metal codieren können. Meistens zielen Sie auf die sehr dicke Schicht bestehender Betriebssysteme ab. Wie Android oder Linux. Wenn Sie speziell versuchen, die kompakteste Plattform zu wählen, sagen wir Angstrom, werden Sie feststellen, dass ein typisches Disk-Image 3 GB groß ist. Und das ist die Größe der kleinsten Plattform. Es ist eine Schande. Alles ist ein Blähbauch.

Eine weitere schlechte Nachricht ist, dass die Microsoft Mobile-Plattform der größte Download aller Zeiten ist. Texas Instruments hat ein Datenblatt mit dem Namen Software Reference Manual für einen aktuellen ARM. Das pdf umfasst über 5.000 Seiten. Alles Lernwürdige ist arg überdimensioniert und veraltet extrem schnell.

Mein Vorschlag und meine Antwort. Wenn Sie x86 kennen und Windows mehr oder weniger vertragen kann. Bleib hier. Es kann eine gute eingebettete Plattform werden. Schauen Sie sich Windows 8 RT für Intel an (vergessen Sie ARM). Das habe ich im Moment für mich entschieden.

Klingt gut, aber ich würde gerne die Zeit Revue passieren lassen, als Dinge erledigt wurden, um Gadgets zum Laufen zu bringen und zu verstehen, wie sie funktionieren. Danke für deinen wertvollen Vorschlag. würde ich im Hinterkopf behalten. :)