Frage

Wir beginnen ein neues Projekt auf Basis eines Mikrochip PIC18F252. Was ist die beste 'c' Compiler zu verwenden?

War es hilfreich?

Lösung

Tech PICC ist schon immer für mich zuverlässig, und es hat viele Jahre der Entwicklung hat.

Andere Tipps

  1. Microchip C18 Compiler : wirklich die beste und am einfachsten zu bedienen. Perfekt für den professionellen Einsatz.
  2. HALLO-TECH : Wird verwendet, wenn Microchip nicht Arbeit (es für einen PIC16 war).
  3. CCS
  4. SourceBoost

PS: Ich selbst arbeitete an der PIC18F25XX und PIC18F45xx Familie, damit ich weiß, ein winzigen Bit darüber. ;)

PS2: Bei Compiler Fehler (es uns passiert ist), die Microchip-Team ist sehr reaktiv und neue Versionen sind recht schnell gelöst. Versuchen Sie, einen lokalen Händler zu finden, die den Kontakt mit Microchip hat, teilnehmen dann zu einem Ereignis mit ihnen und den direkten Kontakt bekommen. Von unschätzbarem Wert.

Ich habe umfangreiche Forschung auf dem Hitech PICC18 Compiler und dem Microchip C18 Compiler vor ein paar Jahren.

ich die meisten Leute denken, dass nur mit Microchip C18 Compiler entscheiden zu gehen, weil sie es sehen, wenn sie auf dem Mikrochip Website gehen und sind bereits mit MPLAB von der Montage zu tun (das ist eine schreckliche IDE IMHO).

HiTech-Lösung viel näher an ANSI C ist (daher der Code ist viel mehr tragbar). Mit C18 haben Sie alle Arten von Compiler bestimmte Schlüsselwörter hinzufügen und Ihre gezwungen Speicher zu verwalten viel mehr.

  1. Sie müssen angeben, welche RAM-Bank zuzuordnen Variablen.
  2. Um const String müssen Programm Raum zugeordnet werden (statt ram) müssen Sie das ROM-Schlüsselwort verwenden.
  3. Sie können keine Variablen zuweisen, die ohne Bearbeitung eines Linker-Skript größer als 256 Byte sind.

Ein ausgezeichneter Vergleich, die hier gefunden werden kann Art und Weise mehr in der Tiefe geht: http: //www.xargs.com/pic/picc18-vs-c18.html

Neben der Compiler Sie auch die IDE berücksichtigen müssen. Ich bin ein begeisterter Fan Eclipse und so mochte HiTech der HiTide aus diesem Grund ich wirklich. Da jedoch Microchip HiTech gekauft hat ... es scheint, dass sie nicht mehr unterstützen HiTide. Ich glaube nicht, das offizielle ... aber aus meiner Erfahrung mit HiTech Unterstützung ... sie sind keine Fehler mehr, das ist wirklich eine Schande, fixiert wird.


Ich habe auch versucht, ihre Pro-Compiler. Ich mag die Idee. Aber überschritt mein Projekt der Block Anforderungen Auto param und war nicht in der Lage, es zu benutzen. Es schien auch eine verrrryyy lange dauern zu kompilieren, aber es könnte b / c des Programms Komplexität haben.

Ich habe nicht den Microchip-Compiler verwendet, aber habe HiTech-Produkte seit Jahren im Einsatz. Ich habe ihre PIC16 Compiler im Allgemeinen gern, aber ihre PIC18 Compiler ziemlich frustrierend. Während ich nicht alle Variablen in die Banken Hand-Platz zu schätzen hat, sind die Regeln, die von HiTech Compiler ärgerlich, bizarre und doof. Kurz Hintergrund: Der Chip verfügt über 16 256-Byte-Banken von Variablen (* nicht alle 256 Bytes sind in allen Banken zur Verfügung) und eine Bankzeiger. Direkter Zugriff auf eine Variable erfordert, dass die richtige Bank gewählt werden; Banken nimmt eine Anweisung zu ändern.

globale und statische ints und structs und Anordnungen davon, deren Größe im Bereich von 2 bis 255 Bytes wird jeweils in psects auf einer Basis pro-Modul zugeordnet werden; jedes psect des Moduls muss in einer 256-Byte-Seite passen. Arrays von Bytes, sowie einzelnen Bytes, gehen in einem „großen“ psect wo jedes Byte möglicherweise angenommen wird, in einer anderen Seite befindet.

Alle automatischen Variablen und Parameter im gesamten Programm muss in einer 256-Byte-Seite passen (sie sind statisch zu Verbindungszeitpunkt zugewiesen). Der Linker tut Variablen Overlay, die niemals gleichzeitig leben, aber es wird davon ausgegangen jeden Aufruf einer Funktion Zeiger mit einer bestimmten Signatur jede Funktion, deren Adresse nennen kann, wird genommen und die hat diese Unterschrift.

Es ist möglich, bis zu 128 Bytes zu erklären, bis im Wert von globalen und statischen Variablen zu sein ‚nahe‘. Diese können ohne Bankumschaltung erreicht werden. Es ist nicht möglich zu bestimmen, dass die automatischen Variablen oder Parameter gesetzt werden ‚nahe‘.

Die Bank-Switching-Regeln von HiTech verwendet bedeuten, dass viele Funktionen, auch wenn sie nie irgendwelche Variablen außerhalb ihres eigenen Modul verwenden, wird mit movlb (Schalter-Bank) Anweisungen gestreut wird.

Ich will nicht „allwissend Codegenerierung“. Ich möchte die Möglichkeit, ein paar Hinweise hinzufügen Dinge vernünftig zu platzieren, indem Schlüsselwörter oder Makros für benutzerdefinierte psects definieren, die eine automatische und lokale Variablen psects mit anderen Variablen (Überlagerung von Auto Variablen / Parameter so weit wie möglich angesichts der angegebenen Bankbeschränkungen) zu teilen. Wenn ein Compiler-Anbieter wirklich schön sein will, erlauben Zeiger Bank-Qualifikation zu übernehmen, so dass ein Zeiger, der sich immer nur auf die Dinge in einer bestimmten psect Punkt würde in 8 Bits gespeichert werden könnten. Ebenso erlauben Bank-Qualifikation auf Funktionen und Funktionszeiger angeben, dass bestimmte indirekte Anrufe nur mit bestimmten Funktionen arbeiten können. Vielmehr Funktionszeiger 24 Bit als zu machen oder indirekt genannten Funktionen in der ersten 64K am Ende, um sicherzustellen, arbeiten zu müssen, stellen eine automatische GOTO in der ersten 64K so können Funktionszeiger 16-Bit. Oder noch besser, wenn eine Funktion ‚Klasse‘ weniger als 64 verschiedene Funktionen verfügt, verwenden Sie einen 8-Bit-Zeiger.

Bin ich zu viel verlangt?

Wir verwenden CCS und es ist ziemlich gut. Sehr langsam, aber es funktioniert gut. Wie dem auch sei, ich habe keinen Vergleich mit anderen Compilern, so könnte es eine bessere Wahl sein.

Ich mochte CCS nicht, es war zu schrullig.

SourceBoost ist nicht schlecht und recht günstig, ca. 40 £.

Der Microchip C18 Compiler ist die beste IMO, aber sehr teuer. Es gibt eine kostenlose Demo / Student Edition, though.

Ich verwende derzeit CCS und es hassen. Es ist so nicht-Standard und so viel von einer Teilmenge von C, dass es nervt einfach. Ich überlege kurz einschalten. Ich werde Microchip C18 Compiler zuerst versuchen und dann werde ich schlucken hart und bekommen HighTech, die von der Überprüfung der Testversion und Proben ziemlich solide scheint.

IAR Systems hat einen PIC18 Compiler / IDE. IAR Embedded Workbench für PIC18

Ich habe seit vielen Jahren CCS im Einsatz. Ich habe ein paar Fehler gefunden, aber es Unterstützung ist groß und ich kann mit CCS schneller und einfacher entwickeln als mit C18 oder HiTec

Verwendung sdcc:

http://sdcc.sourceforge.net/

und für unfreie (aber kostenlos!) PIC-Compiler, mikroC ist gr8!

http: //www.mikroe. com / de / products / view / 7 / mikroC-pro-for-pic /

HTH

Ich würde darauf bestehen, dass Sie den C18-Compiler verwenden. Es ist extrem robust und sehr einfach zu bedienen. Es ist ein für die berufliche Entwicklung haben muss. Es hängt wirklich von der Größe des Projekts Sie arbeiten.

Starten Sie mit der freien / Student Edition, und Sie werden ein gutes Gefühl für die Verwendung es. Wenn Ihr Projekt klein ist, sein, dass kann alles, was Sie brauchen. Ich habe gerade ein großes ish Größe dev Projekt auf einem PIC 18F und ich war sehr zufrieden mit dem C18-Compiler.

MPLAB C18 - Student

Ich habe ein Jahr lang SourceBoost gewesen verwendet oder so, und ich bin nicht total begeistert, aber es war in Ordnung. Allerdings habe ich gerade eine Code-Größe Test zwischen SourceBoost 7, MCC18 und Hallo-Tech C. Die Ergebnisse waren bemerkenswert.

Für ein kleines Beispielprogramm (die Strukturen incuded, Arrays, Funktionszeiger, Struktur Zeiger, Zeichen und Ints) die SB7-Kit-Code erzeugt, die etwa 2/3 der Größe von MCC18 und HTC war. Ich wollte detemine, wie viel davon Inbetriebnahme war und Laufzeit-Overhead, so fügte ich mehr random stuff zum Beispielprogramm und die Größe Delta zeigte, dass SB noch 2/3 der Größe der anderen. HTC war etwas kleiner als MCC18, aber nicht signifikant. Alle Optimierungen sind auf in allen Umgebungen.

Die Dinge, die Ich mag nicht über SB sind:

  • begrenzt in-line Assembler
  • langsam kompilieren & link
  • Die IDE ist nur geringfügig besser als MPLAB.

Die Dinge, die ich darüber mag, sind:

  • Nun scheint die Codegröße sicher kleiner als die Konkurrenz.
  • Einige Erweiterungen der Sprache (z Referenzen). Beseitigt Portabilität, though.
  • Der Preis.
  • Unterstützung durch die Foren ist eigentlich ziemlich gut. Die Autoren oft schreiben.
  • Automatische Beseitigung von nicht verwendeten Code (Ich denke, diese Funktion, um die Kompilierung und Verknüpfung verlangsamt)

Da ich das SB IDE nicht mögen, ich benutze Quelle Insight für einen Editor und es rockt! Die SB „make“ Dienstprogramm hoffnungslos ist auch, so dass ich GnuWin32 machen, was absolut ist die eigentliche Behandlung und kostenlos.

Alles in allem fühle ich mich ein bisschen besser über meine Wahl von Werkzeugen.

Wie auch immer, hoffen, dass dies jemand hilft da draußen.

MPLAB C-18 ist schön, und sie haben eine Studentenversion, die frei ist. Es hat eine gute Benutzeroberfläche, die einfach genug ist, dass es Benutzern nicht verwirren. Es ist das, was ich benutze.

Wenn Sie damit durchkommen kann (meine Präferenz wäre) die PIC18 Assembler mit MPLAB. Es hat den Vorteil, neben der Tatsache, frei und relativly gut dokumentiert ist, dass es anständig hardwars / Debugger-Unterstützung. Sein kleiner Befehlssatz und Einfachheit führte mich auf einfache und schnelle Kodierung.

Wenn Sie auf c gesetzt sind aber:

CCS ist ein guter Compiler, ein bisschen buggy zu bedienen und recht teuer, aber hat auch gute Debugging-Funktionen.

Microsoft Embedded Studio (oder so ähnlich) ist ausgezeichnet, wenn Sie bereits auf die Visual Studio 6 Methodik des Schreibens c-Code verwendet sind. Wieder eine gute Hardware-Unterstützung und ausgezeichnete Debugger.

Ich glaube, wenn du die Suche nach einer freien Lösung suchen Sie in der Tat c-Compiler für MPLAB bekommen können, obwohl Ive persönlich in Anspruch genommen nie so kann ich urteilt nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top