Wir starten ein neues Projekt auf Basis eines Mikrochips PIC18F252. Was ist der beste 'c' Compiler?Was ist der beste c-Compiler für die Pic18 micro
Antwort
Tech PICC hat immer zuverlässig für mich, und es hat viele Jahre der Entwicklung hatte.
Wir verwenden CCS und es ist ziemlich gut. Sehr langsam, aber es funktioniert gut. Jedenfalls habe ich keinen Vergleich mit anderen Compilern, also könnte es bessere Entscheidungen geben.
Ich bin auch ein CCS-Benutzer. Ich mag die C-API und wie einfach es ist, zu anderen Prozessoren zu wechseln. Ich finde jedoch den C Compiler Buggy, sicherlich eine Teilmenge von Standard C. – kenny
Wenn Sie damit durchkommen (meine Vorliebe wäre), verwenden Sie den PIC18 Assembler mit MPLAB. Es hat den Vorteil, frei und relativ gut dokumentiert zu sein, neben der Tatsache, dass es eine anständige hardwars/Debugger-Unterstützung hat. Sein kleiner Befehlssatz und seine Einfachheit führten zur einfachen und schnellen Kodierung.
Wenn Sie auf c obwohl gesetzt sind:
CCS ist ein guter Compiler zu verwenden, ein bisschen buggy und recht teuer, aber hat auch gute Debugging-Funktionen.
Microsoft Embedded Studio (oder etwas Ähnliches) ist ausgezeichnet, wenn Sie bereits an die Visual Studio 6-Methodik zum Schreiben von c-Code gewöhnt sind. Wieder gute Hardware-Unterstützung und exzellenter Debugger.
Ich glaube, wenn Sie nach einer freien Lösung suchen, können Sie in der Tat c Compiler für MPLAB, obwohl ich persönlich nie benutzt habe, so kann ich kein Urteil fällen.
Ich mochte CCS nicht, es war zu schrullig.
SourceBoost ist nicht schlecht und ziemlich billig, etwa £ 40.
Der Microchip C18 Compiler ist der beste IMO, aber sehr teuer. Es gibt jedoch eine kostenlose Demo/Studentenausgabe.
- Microchip C18 compiler: wirklich das beste und einfachste zu verwenden. Perfekt für den professionellen Einsatz.
- HI-TECH: Wird verwendet, wenn Microchip nicht funktioniert (es war für eine PIC16).
- CCS
- SourceBoost
PS: Ich arbeitete mich auf der PIC18F25XX und PIC18F45xx Familie, damit ich weiß, ein winziges Bit darüber. ;)
PS2: Im Falle eines Compiler Bug (es ist uns passiert), ist das Microchip Team ziemlich reaktiv und neue Versionen werden ziemlich schnell veröffentlicht. Versuchen Sie einen lokalen Händler zu finden, der Kontakt zu Microchip hat, nehmen Sie an einer Veranstaltung teil und erhalten Sie direkte Kontakte. Unbezahlbar.
Ich stimme zu. Ich habe nur CCS und C18 verwendet, aber ich bevorzuge C18. Es hat eine große Sammlung von Hardware/Software-Bibliotheken und integriert sich gut in MPLab. – mjh2007
Gebrauchte CCS für 1 Jahr. Es ist einfach zu bedienen, hat aber viele Bugs. – RHaguiuda
HI-TECH-Verbindung ist unterbrochen. – Tshepang
Ich würde darauf bestehen, dass Sie den C18-Compiler verwenden. Es ist extrem robust und sehr einfach zu bedienen. Es ist ein Muss für die berufliche Entwicklung. Es hängt wirklich von der Größe des Projekts ab, an dem Sie arbeiten.
Beginnen Sie mit der kostenlosen/Student Edition und Sie werden ein gutes Gefühl für die Verwendung bekommen. Wenn Ihr Projekt klein ist, ist das alles, was Sie brauchen. Ich habe gerade ein großformatiges Entwicklungsprojekt auf einem PIC 18F abgeschlossen und war sehr zufrieden mit dem C18-Compiler.
Ich verwende derzeit CCS und hasse es. Es ist so nicht Standard und so viel von einer Untermenge von C, dass es einfach scheiße ist. Ich überlege kurz, umzuschalten. Ich werde zuerst Microchip C18 Compiler versuchen und dann werde ich schwer schlucken und HighTech bekommen, was ziemlich solide erscheint, wenn man die Testversion und die Beispiele überprüft.
Verwendung sdcc:
und für unfreie (! Aber kostenlos) PIC-Compiler ist mikroC gr8!
http://www.mikroe.com/eng/products/view/7/mikroc-pro-for-pic/
HTH
IAR-System verfügt über einen PIC18-Compiler/IDE: IAR Embedded Workbench for PIC18.
Ich habe vor ein paar Jahren den Hitech PICC18 Compiler und den Microchip C18 Compiler intensiv erforscht.
Ich denke die meisten Menschen, die entscheiden, mit Microchip C18 Compiler nur gehen, weil sie es sehen, wenn sie auf die Microchip-Website gehen und sind bereits vertraut mit MpLab von Montage (was eine schreckliche IDE IMHO ist).
HiTechs Lösung ist viel näher an ANSI C (daher ist Code viel portabler). Mit C18 haben Sie alle Arten von compilerspezifischen Schlüsselwörtern hinzugefügt und Ihr Gedächtnis wird viel mehr verwaltet.
- Sie müssen angeben, welche RAM-Bank Variablen zuweisen soll.
- Damit const String dem Programmbereich zugewiesen werden kann (anstelle von ram), müssen Sie das Schlüsselwort rom verwenden.
- Sie können keine Variablen zuweisen, die größer als 256 Byte sind, ohne ein Linker-Skript zu bearbeiten.
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 vom Compiler müssen Sie auch die IDE berücksichtigen. Ich bin ein begeisterter Eclipse-Fan und deshalb mochte ich HiTechs HiTide aus diesem Grund. Seit Microchip HiTech gekauft hat, scheint es, dass HiTide nicht mehr unterstützt wird. Ich denke nicht, dass das offiziell ist ... aber aus meiner Erfahrung mit HiTech-Unterstützung ... reparieren sie keine Fehler mehr, was wirklich schade ist.
Ich habe auch ihre Pro Compiler probiert. Ich mag die Idee wirklich. Aber mein Projekt hat die Anforderungen für den Auto-Param-Block überschritten und konnte es nicht verwenden. Es schien auch sehr lange dauern, um zu kompilieren, aber es könnte b/c der Programmkomplexität gewesen sein.
Ich benutze CCS seit vielen Jahren. Ich habe ein paar Fehler gefunden, aber es Unterstützung ist groß und ich kann schneller und einfacher mit CCS entwickeln als mit C18 oder HiTec
MPLAB C18 - Student
Ich habe die Microchip-Compiler nicht verwendet, sondern wurde mit HiTech-Produkte seit Jahren. Ich habe ihren PIC16-Compiler im Allgemeinen gemocht, finde aber ihren PIC18-Compiler eher frustrierend. Während ich es schätze, dass ich nicht alle Variablen in die Hand geben muss, sind die Regeln, die HiTechs Compiler verwendet, nervig, bizarr und albern. Kurzer Hintergrund: Der Chip verfügt über 16 256-Byte-Variablenbänke (* nicht alle 256 Bytes sind in allen Banken verfügbar) und einen Bankzeiger. Für den direkten Zugriff auf eine Variable muss die richtige Bank ausgewählt werden. Wechselnde Banken nimmt eine Anweisung.
Globale und statische Ints und Strukturen und Arrays davon, deren Größe von 2-255 Bytes reicht, werden jeweils psects pro Modul zugeordnet; Der psect eines jeden Moduls muss in eine 256-Byte-Seite passen. Arrays von Bytes sowie einzelne Bytes gehen in einen "großen" Bereich, in dem angenommen wird, dass sich jedes Byte möglicherweise auf einer anderen Seite befindet.
Alle automatischen Variablen und Parameter im gesamten Programm müssen in eine 256-Byte-Seite passen (sie werden statisch zur Verbindungszeit zugewiesen). Der Linker überlagert Variablen, die niemals gleichzeitig live sind, aber er nimmt an, dass jeder Aufruf eines Funktionszeigers mit einer bestimmten Signatur jede Funktion aufrufen kann, deren Adresse vergeben wurde und die diese Signatur hat.
Es ist möglich, globale und statische Variablen bis zu 128 Bytes als "nahe" zu deklarieren. Auf diese kann ohne Bankumschaltung zugegriffen werden. Es ist nicht möglich zu bestimmen, dass automatische Variablen oder Parameter "nahe" platziert werden.
Die von HiTech verwendeten Bank-Schaltregeln bedeuten, dass viele Funktionen, auch wenn sie niemals außerhalb ihres eigenen Moduls Variablen verwenden, mit Movlb-Anweisungen (Switch-Bank) versehen sind.
Ich möchte nicht "allwissende Code-Generierung". Ich möchte die Möglichkeit haben, ein paar Hinweise hinzuzufügen, um Dinge sinnvoll zu positionieren, indem Schlüsselwörter oder Makros für benutzerdefinierte psects definiert werden. Dadurch können automatische und lokale Variablen psects mit anderen Variablen teilen (automatische Variablen/Parameter werden so weit wie möglich überlagert). Wenn ein Compiler-Anbieter wirklich nett sein will, erlauben Sie den Zeigern, Bankqualifizierer zu akzeptieren, so dass ein Zeiger, der nur auf Dinge in einem bestimmten Punkt zeigen würde, in 8 Bits gespeichert werden könnte. Ebenso können Bankqualifikatoren für Funktionen und Funktionszeiger angeben, dass bestimmte indirekte Aufrufe nur mit bestimmten Funktionen funktionieren können. Anstatt Funktionszeiger 24 Bits zu machen oder zu arbeiten, um sicherzustellen, dass indirekt aufgerufene Funktionen in den ersten 64 K enden, setze ein automatisches GOTO in die ersten 64 K, so dass Funktionszeiger 16 Bits sein können. Oder, noch besser, wenn eine Funktion 'Klasse' weniger als 64 verschiedene Funktionen hat, verwenden Sie einen 8-Bit-Zeiger.
Frage ich zu viel?
Nein, du fragst nicht zu viel. Ich stimme zu; Ich fand den HiTech-Compiler unbrauchbar, sobald ich Funktionszeiger verwendete. C18 funktionierte viel besser, hatte aber immer noch Probleme. Sie waren jedoch ziemlich leicht zu lösen. – janm
Beziehen Sie sich auf den Compiler von Microchip? Meine Erinnerung war, dass C18 die Zeichenmathematik nicht zu int fördert; Mein Code beruht häufig auf Int-Promotion, so dass eine Abweichung vom Standardverhalten inakzeptabel wäre. – supercat
Ich habe SourceBoost für ein Jahr oder so verwendet, und ich bin nicht total begeistert, aber es war in Ordnung. Ich habe gerade einen Code-Size-Test zwischen SourceBoost 7, MCC18 und Hi-Tech C abgeschlossen. Die Ergebnisse waren bemerkenswert.
Für ein kleines Beispielprogramm (das Strukturen, Arrays, Funktionszeiger, Strukturzeiger, Zeichen und Ints enthielt) produzierte das SB7-Kit Code, der ungefähr 2/3 der Größe von MCC18 und HTC war. Ich wollte feststellen, wie viel davon der Start- und Laufzeitaufwand war, also fügte ich dem Beispielprogramm mehr zufällige Sachen hinzu, und das Größen-Delta zeigte, dass SB immer noch 2/3 der Größe der anderen war. HTC war etwas kleiner als MCC18, aber nicht signifikant. Alle Optimierungen sind in allen Umgebungen aktiviert.
Die Dinge, die ich über SB nicht mögen, sind:
- begrenzt in-line Assembler
- langsam & Link
- Die IDE nur als MPLAB etwas besser zu kompilieren.
Die Dinge, die ich darüber mag, sind:
- Nun, sicher, dass die Codegröße kleiner scheint als die Konkurrenz.
- Einige Erweiterungen der Sprache (z.Verweise). Kills Portabilität, obwohl.
- Der Preis.
- Unterstützung über die Foren ist eigentlich ziemlich gut. Die Autoren posten oft.
- Automatische Beseitigung von nicht verwendeten Code (Ich denke, diese Funktion, um die Kompilierung und Verknüpfung verlangsamt)
Da ich die SB IDE nicht mögen, ich benutze Quelle Insight für einen Editor und es rockt! Die SB "make" Utility ist auch hoffnungslos, also benutze ich GnuWin32 make, das ist absolut der wahre Deal, und kostenlos.
Also alles in allem fühle ich mich ein bisschen besser über meine Wahl der Werkzeuge.
Wie auch immer, ich hoffe, das hilft jemandem da draußen.
MPLAB C-18 ist nett, und sie haben eine Studentenversion, die kostenlos ist. Es hat eine gute Benutzerschnittstelle, die einfach genug ist, um Benutzer nicht zu verwirren. Es ist was ich benutze.
Ich würde vorschlagen, zum Hersteller-Forum für jeden Compiler zu gehen und die Fragen und Beschwerden der Benutzer zu vergleichen. –