Ich möchte Geräte herstellen und lese im Internet über Mikrocontroller und andere Dinge. Ich frage mich, ob es neben C noch andere Sprachen gibt, mit denen Mikrocontroller programmiert werden können.
Ich möchte Geräte herstellen und lese im Internet über Mikrocontroller und andere Dinge. Ich frage mich, ob es neben C noch andere Sprachen gibt, mit denen Mikrocontroller programmiert werden können.
Chips verwenden C überhaupt nicht direkt. Sie haben Befehlssätze, die zwischen verschiedenen Architekturen stark variieren.
Als sehr einfache Abstraktion dieser Befehlssätze bieten die meisten Hersteller einen Assembler an, mit dem Sie Programme übersetzen können, die in der entsprechenden Assemblersprache geschrieben sind (was in etwa eine besser lesbare Form der Maschinenanweisungen ist) ) in binäre Form, die Sie auf Ihren Chip hochladen können.
Auf der nächsthöheren Ebene gibt es Sprachen wie C. C ist auf dieser Ebene bei weitem die dominanteste Sprache für die Mikrocontroller-Programmierung. Für einige Architekturen finden Sie auch den ungeraden Pascal-, BASIC- oder vielleicht Fortran-Compiler.
Theoretisch ist das einzige, was Sie benötigen, um eine bestimmte Sprache für eine bestimmte Architektur zu verwenden, ein geeigneter Compiler (obwohl einige wie Java, C # usw. hängen normalerweise von Laufzeitumgebungen ab, und diese sind für die meisten Benutzeroberflächen unerschwinglich ressourcenhungrig. In der Praxis sind nicht so viele Compiler verfügbar.
Wie us2012 sagte, führt ein µc die C-Sprache überhaupt nicht aus. Stattdessen wird die Maschinensprache ausgeführt, bei der es sich um eine binäre Darstellung des Befehlssatzes des µc handelt, mit Feldern für einen Opcode (was zu tun ist) und entweder Registerspezifizierern und / oder Adressen (aus denen die Daten abgerufen und / oder gespeichert werden). Assemblersprache ist eine symbolische Darstellung dieser binären Maschinensprache.
Im Fall der C-Sprache werden diese Maschinenanweisungen von einem C-Compiler generiert, der fast immer auf einem vom µc getrennten Computer ausgeführt wird (eine Ausnahme ist Embedded Linux, zu dem auch der gcc-Compiler gehört) auf einem µc mit ausreichenden Ressourcen zum Ausführen eines Compilers).
Wenn der Compiler auf einem PC ausgeführt wird, wird dies als Cross-Compiling bezeichnet. Jede separate Quelldatei, die die C-Sprachanweisungen enthält, wird separat kompiliert, und die Ausgabe jeder wird vom Linkerprogramm zu einer einzigen herunterladbaren Datei kombiniert. Diese herunterladbare Datei enthält die oben genannten Anweisungen für die Maschinensprache und kann direkt auf dem µc ausgeführt werden.
Wenn Sie eine andere Sprache auf dem µc ausführen möchten, benötigen Sie einen anderen Compiler für diese Sprache. Es gibt jedoch eine Reihe von Sprachen, die nicht zu Maschinencode kompiliert, sondern zu Bytecodes kompiliert werden. Diese können nicht direkt vom µc ausgeführt werden, sondern müssen von einem auf dem µc ausgeführten Interpreter ausgeführt werden (eine Variante besteht darin, die Bytecodes beim ersten Ausführen durch den Interpreter in Maschinensprache zu kompilieren).
Eine weitere Kandidatensprache für die Programmierung von Mikrocontrollern ist Ada. Es bietet sehr gute Möglichkeiten für die Programmierung auf niedriger Ebene sowie eine bessere Erkennung bestimmter Fehlertypen, bevor Sie zum Ausführen des Programms gelangen. Ich finde, dies hilft mir, mich erheblich schneller zu entwickeln als in C. Die resultierende ausführbare Datei kann genauso sein klein wie C, nicht so überraschend, wenn Sie feststellen, dass der größte Teil des Gnat Ada-Compilers der gleiche Optimierer und Codegenerator ist wie der gängigste C-Compiler (gcc).
Ein weiterer Vorteil ist, dass der Code viel mehr sein kann lesbar als C; eine andere Möglichkeit, Probleme leichter zu beseitigen.
Neben den kleinsten Mikrocontrollern bietet es auch gute objektorientierte und Multitasking-Funktionen. Das Äquivalent eines RTOS ist in die Sprache integriert.
Zwei Nachteile:
Ada hat einen unverdient schlechten Ruf, der von einer 30 Jahre alten Version geerbt wurde, der Sie heutzutage wahrscheinlich nicht begegnen werden - Ihnen kann ziemlich emotionale Reaktionen dagegen hören. Ada-2005 ist eine ganz andere Sprache ...
Und nicht jeder Mikrocontroller verfügt über einen Ada-Compiler und eine Toolchain. Zwei beliebte sind die Atmel AVR (damit Sie Ihre Arduino-Boards in Ada programmieren können) und die Texas Instruments MSP430 -Serie. Es gibt auch Gnat-Builds für viele Varianten des ARM-Prozessors, einschließlich der Raspberry Pi Debian-Distribution.
Jedes andere GCC-Ziel kann möglicherweise Ada unterstützen, obwohl das Erstellen von GCC normalerweise kein triviales Projekt ist ...
Wie die anderen Antworten sagen, werden die meisten uCs mit Toolchains geliefert, die C und einige andere ähnliche Sprachen unterstützen, da größere Sprachen, insbesondere solche mit Speicherbereinigung, sehr ressourcenhungrig sind.
Aber im Geiste von Atwoods Gesetz: "Alles wird irgendwann nach Javascript portiert", gebe ich Ihnen den Espruino, "den weltweit ersten JavaScript-Mikrocontroller für Anfänger oder Experten.":
Wie einer der anderen Benutzer unter Ihrer Frage kommentierte, ist Arduino sehr beliebt und vielseitig in Bezug auf Projekte und Verwendungen. Es hat eine eigene Sprache, die C sehr ähnlich ist ... zum Beispiel das Deklarieren von Bibliotheken, Variablen und das Ausführen von Funktionsaufrufen. Es hat jedoch einige seiner eigenen inhärenten Funktionen, für die Sie die Syntax lernen müssen.