Warum hat MPLAB IDE so viele Compiler?

Ich habe erfahren, dass die MPLAB IDE verschiedene Compiler wie C18, XC8 und HI-Tech hat.

Ich möchte folgende Dinge wissen:

  1. Warum gibt es verschiedene Compiler, wenn einer die Arbeit erledigen kann?
  2. Werden bestimmte Compiler nur für bestimmte Mikrocontroller verwendet?
  3. Gibt es mehr Compiler als diese 3, die ich beachten muss?
  4. Wenn irgendein Compiler zum Beispiel zum Kompilieren von PIC18F-Code verwendet werden kann, was entscheidet dann, welchen ich wähle? Ich möchte wirklich wissen, wie ich mich entscheiden soll, mit wem ich gehen soll.
Marktkräfte ....................

Antworten (2)

Warum gibt es verschiedene Compiler, wenn einer die Arbeit erledigen kann?

Weil Menschen sie im Laufe der Zeit verbessern.

C18 wurde durch XC8 ersetzt. C18 ist alt und Müll, also haben sie XC8 gemacht, was viel besser ist. Sie nutzten auch die Gelegenheit, ihm einen logischeren Namen zu geben.

HI-Tech ist ein Drittanbieter-Compiler, der von jemand anderem geschrieben wurde und an dem Microchip die Rechte erworben hat. Es ist auch zugunsten von XC8 veraltet.

Werden bestimmte Compiler nur für bestimmte Mikrocontroller verwendet?

Ja. Wenn neue Chips veröffentlicht werden, muss der Compiler sie unterstützen. Alte Compiler, die nicht aktualisiert werden, unterstützen die neuen Chips nicht.

Gibt es mehr Compiler als diese 3, die ich beachten muss?

Es gibt auch den Open-Source-Compiler SDCC, aber er ist sehr einfach und hat nur teilweise PIC-Unterstützung und funktioniert (soweit ich weiß) nicht mit MPLAB.

Ein anderes, das seine eigene IDE verwendet, heißt CCS, obwohl ich es nie benutzt habe.

Wenn Sie C nicht mögen, gibt es eine Reihe von BASIC-Compilern für 8-Bit-PIC-Chips, einschließlich Swordfish.

Wenn irgendein Compiler zum Beispiel zum Kompilieren von PIC18F-Code verwendet werden kann, was entscheidet dann, welchen ich wähle? Ich möchte wirklich wissen, wie ich mich entscheiden soll, mit wem ich gehen soll.

Das ist ganz einfach - Sie wählen XC8, da es derzeit unterstützt wird. Alle anderen sind alt und veraltet.

Diese Antwort ist genau richtig. Danke schön. Ein letzter Punkt bleibt. Wann würde man sich für die Verwendung der MPASM-Option in MPLAB entscheiden? Soweit ich weiß, ist dies nur Assembler. Warum auf die Bequemlichkeit von C-Code verzichten und das ganze Programm in Assembler schreiben?
Denn mit der Montage haben Sie absolut alles unter Kontrolle. Sie können (wenn Sie gut sind) einen sehr sehr kleinen Code schreiben.
Vergessen Sie CCS nicht <www.ccsinfo.com/content.php?page=compilers>. Viele Leute, die ich respektiere, mögen diesen Compiler wirklich.
Ich habe den CCS-C-Compiler auf meinem Rechner, kann aber mein ICD3 nicht damit verwenden. Ich habe eine andere Frage dazu gepostet. Was ich verstehe ist, dass die älteren Compiler für Legacy-Code existieren und nicht für neuen Code verwendet werden dürfen.
Apropos Schreiben in Assembler: Das ist alles, was sowohl ich als auch mein Kollege schreiben. Obwohl mein Kollege C-kompetent ist, bin ich ein alter Hase und mein Gehirn kann C einfach nicht groken. Dadurch brauche ich viel länger zum Schreiben jedes beliebige Programm im Vergleich zu jemandem, der in einer Hochsprache schreibt. Dies wird größtenteils dadurch ausgeglichen, dass die meisten Sachen, die ich schreibe, für eine sehr lange Zeit (Jahrzehnte) verwendet werden.
@quantum231: Ich würde in den CCS-Foren nach Hilfe zu Ihrem ICD3- und CCS-Compiler suchen. Ich hatte immer den Eindruck, dass sie gut zusammen gespielt haben.
@DwayneReid Hier hier für Assemblersprache. Abgesehen davon, dass ich PIC16-Projekte vollständig in Assemblersprache mache, habe ich auch Assembler für PIC24 und PIC32 geschrieben (natürlich nicht das gesamte Projekt!). Akkumulator) und ein UNIVAC 1108 (18 Akkumulatoren und 18 Indexregister).

Bisher beschränkt sich die gegebene Antwort auf 8-Bit-PIC-Mikroelektronik, aber das OP fragte (teilweise):

  1. Warum gibt es verschiedene Compiler, wenn einer die Arbeit erledigen kann?

  2. Werden bestimmte Compiler nur für bestimmte Mikrocontroller verwendet?

Ich werde diese beiden Fragen zusammen beantworten. Microchip stellt nicht nur 8-Bit-Mikrocontroller (PIC10, PIC12, PIC16, PIC18) her, sondern auch 16-Bit (PIC24/dsPIC33) und 32-Bit (PIC32).

Jeder der 8-Bit-PICs (mit Ausnahme des PIC18) hat ähnliche Befehlssätze, wobei ein einzelner Akkumulator (W0), eine kleine Menge RAM (25–256 Bytes) und ein Hardware-Aufrufstapel verwendet werden. Der Befehlssatz hatte ursprünglich 35 Befehle, wurde aber auf neueren Geräten auf 49 Befehle erweitert, um C-Compiler besser unterzubringen (Bis zu diesem Zeitpunkt wurden die meisten 8-PIC-Programme in Assembler-Code geschrieben – viele sind immer noch mit sehr wenig Flash auf den Chips .)

Die PIC18-Geräte fügten Unterstützung für einen Software-Stack und einen viel großen RAM hinzu. Sie haben 75 Anweisungen (83 für neuere Geräte).

Trotz all dieser Unterschiede (insbesondere der Unterschiede zwischen dem Low-End-8-Bit-PIC-Befehlssatz und dem High-End-PIC18) unterstützt der XC8-Compiler alle diese 8-Bit-PIC-Familien. Dies geschieht, indem tatsächlich intern zwei Compiler verwendet werden – PICC und PICC18, und basierend auf dem ausgewählten Prozessor ausgewählt wird, welcher verwendet werden soll.

Es gibt sowohl kostenlose als auch kostenpflichtige Versionen des XC8-Compilers – der einzige Unterschied ist der Umfang der durchgeführten Optimierung.

Der nächste Schritt von den 8-Bit-PIC-Mikrocontrollern sind der 16-Bit-PIC24 und der dsPIC33. Diese sind sehr ähnlich – der dsPIC enthält den PIC24-Befehlssatz, fügt aber auch zusätzliche Befehle für DSP (Digital Signal Processing) hinzu, daher sein Name. Diese 16-Bit-PIC-Prozessoren werden vom XC16-Compiler unterstützt. Obwohl sie in Assemblersprache programmiert werden können, wird dies selten getan, außer bei sehr engen Schleifen oder zeitkritischen Interrupt-Service-Routinen (ISR).

Wie bei XC8 gibt es sowohl kostenlose als auch kostenpflichtige Versionen des XC16-Compilers – auch hier liegt der Unterschied im Ausmaß der durchgeführten Optimierung.

Und schließlich gibt es die 32-Bit-PIC32-Familie mit einem Befehlssatz, der von MIPS im RISC-Stil abgeleitet ist. Die neueren Geräte können bis zu 2 MB Flash-Speicher und 512 KB Daten adressieren. Die 32-Bit-Prozessoren werden vom XC32-Compiler unterstützt. Wie der PIC24 werden sie selten in Assemblersprache programmiert. Und ebenso wie beim XC16-Compiler gibt es sowohl kostenlose als auch kostenpflichtige Versionen des XC32-Compilers – der Unterschied liegt wiederum in der Höhe der durchgeführten Optimierung – einige bis zu 50 %.

Ihre Antwort ist einfach pure Großartigkeit. Ich habe übrigens den ICD3 gekauft, den Sie mir letztes Mal empfohlen haben.