Hallo,
mich würde mal interessieren, wie groß die Verwendung des CCS-Compilers
in der Industrie ist. (Stichwort: Bekanntheitsgrad) Vielleicht auch eine
Einschätzung, im allgemeinen Gebrauch.
Und welcher Compiler in der Industrie denn am meisten Anwendung findet.
(Vielleicht aufgelistet nach Microcontrollertypen)
Gruß Beda
Was ist CCS, kann man das essen ?
Einfach davon auszugehen, daß 3 Buchstaben nur eine Bedeutung haben bzw.
sogar ein konkretes Produkt ausreichend spezifizieren, dürfte arg in die
Hose gehen.
Bei Compilern sollte man zumindest den Hersteller oder Webseite und die
Targetfamilie angeben, damit anderen damit was anfangen können.
Versionsnummer wäre auch nicht schlecht, wenn es um konkrete Features
geht.
Ich benutze z.B. von Keil den C51 V5.02 für die 8051 Familie.
V5.02 ist zwar von 1995, aber da ja alle 8051-er kompatibel sind, brauch
ich keine neuere.
Der Keil C51 ist sehr bekannt, aber auch teuer und wird in der Industrie
häufig verwendet.
Von Keil gibts noch andere Compiler, z.B. für den ARM7TDMI
(LPC2xxx-Familie).
Peter
Der Bekanntheitsgrad des PIC-C von CCS in der Industrie dürfte irgendwo
bei null liegen. Dort wird man wohl auf Keil oder IAR setzen (gibt
es Keil für PICs?).
Das liegt einfach daran das er genau wie der CodeVision AVRrelativ
einfach gestrickt ist. Zwar haben beide eine gute Unterstützung für
einige spezielle Eigenschaften des jeweiligen µC (Bit-Variablen,
Flash, EEprom), doch sie arbeiten ohne Linker. Der gesamte
Quellcode wird zu einer einzigen (Text-) Datei zusammengefaßt
und dann übersetzt. Die Verwendung von Bibliotheken wird dadurch
etwas erschwert. Beim CV erfolgt diese Zusammenfassung wenigstens
transparent über den Projekt-Manager (und der Coder ist damit
einigermaßen portabel), beim CCS muß man per #include <xy.c> selbst
Hand anlegen.
Die Code-Optimierung ist ebenfalls eher einfach. Ausdrücke wie:
int a;
a = 3 + 2;
a += 5;
a = a - 1;
werden zur Laufzeit berechnet. 'Große' Compiler (wie auch der GCC)
setzen einfach
a = 9;
Oder bei Arrays:
for (i = 0; i < 10; i++) {
xyz[i].a = 1;
xyz[i].b = 2;
xyz[i].c = 3;
a = 5;
}
Hier wird die Adresse (xyz+i) für jede Zeile neu berechnet,
während die 'großen' Compiler das nur einmal pro Schleifendurchlauf
machen. Auch die Zuweisung 'a = 5', die in der Schleife nichts
zu suchen hat, wird vom CCS nicht vor oder hinter die Schleife gesetzt,
sondern jedesmal ausgeführt.
Noch ein Beispiel?
void func(int i)
{
int x = 5;
if (x == 0) {
i = 0;
}
return i;
}
Dazu muß ich glaube ich nichts weiter sagen.
Im Hobbybereich spielt das alles keine große Rolle aber in der
Industrie schon eher. Wenn eine Lizenz dann auch 3000$ kostet: 'So
what?'.
Disclaimer: Ich habe nichts gegen den CCS oder CV. Den CCS verwenden
wir in der Firma (wenige Entwickler) und für den CV habe ich
eine Lizenz, wobei ich auch den GCC benutze. Man muß nur sehen wofür
man was braucht.
Apropos Firma: Wir verwenden mehrere Versionen des CCS parallel weil
einige Projekte sich zwar mit jeder Version übersetzen lassen
aber nur mit einer bestimmten Version funktionieren.
Solche Phänomene dürfte es bei allen Compilern geben. Wie ausgeprägt
das bei Keil oder IAR ist bzw. ob und inwiefern es sich um
Compilerfehler handelt weiß ich nicht.
- Michael
Danke für die Antworten!
Die Frage sollte sich auch allgemein, auf sämtliche Compiler (GCC,
CodeVision, Keil, CCS, etc.) beziehen. Und die Frage klären, welche
Compiler überwiegend in der Industrie eingesetzt werden. Soweit man das
Pauschal sagen kann!
Die spezielle Frage nach dem CCS-Compiler ( www.ccsinfo.com ,
PIC-Controller Compiler ) sollte natürlich nur die Leute ansprechen, die
den Compiler auch kennen bzw. wissen wofür die drei Buchstaben stehen.
Ansonsten weiß ich nicht, wie man eine vernünftige Bewertung abgeben
kann.
Naja, vielleicht hätte ich das "..., speziell CCS" aus dem Titel lassen
sollen?!
Gruß Beda
Generell werden KEIL, IAR, TASKING und GREEN HILLS als Third Party
Compiler eingesetzt. Ab und zu auch noch Ride von Raisonance.
Bei vielen µC-Familien gibt es aber Compiler dirket vom Chip-Hersteller,
z.B. C18/C30 von Microchip, Softune von Fujitsu, HEW von Renesas etc.
> Generell werden KEIL, IAR, TASKING und GREEN HILLS als Third Party> Compiler eingesetzt. Ab und zu auch noch Ride von Raisonance.
Na, so generell kann man das gar nicht sagen, denn ein Compiler ist
immer nur für eine gewisse Auswahl von Prozessoren geeignet. Und die
genannten sind generell eigentlich nur für 8051er und ARMs zu gebrauchen
und z.B. für die PICs überhaupt nicht.
Von daher ist ein Compiler immer an bestimmte Prozessoren oder
Controller gebunden, was in den Zeiten, als "die Großen" groß geworden
sind, noch kein wirkliches Thema war - damals gab es praktisch nur den
8051, und ansonsten waren 6502, 8085 und Z80 noch beliebte "Embedded
Controlller". Und auch die hohen Kosten wurden noch nicht hinterfragt...
In den letzten zehn Jahren ist die unvermeidliche Bindung an bestimmte
CPUs allerdings zum regelmäßigen K.O.-Kriterium für die angestammten
Compilerbauer geworden, und das brachte Luft in den Markt für neue, zum
Teil nur auf einen Controller spezialisierte Lösungen (z.B. CCS,
CodeVision und in der Anfangszeit auch imagecraft), die "bei der
Gelegenheit" auch das Low-Cost-Marktsegment aufs Korn nahmen.
Noch zwei "übrigense":
1. Ich habe nur von C-Compilern geredet.
2. Ich finde bemerkenswert, dass USA im Geschäft mit Compilern für
Controller eine so relativ kleine und Europa eine so große Rolle
spielen: Von den genannten sind Green Hills, CCS und imagecraft
US-Firmen, Altium (TASKING) sitzt in Australien, und Keil, IAR und HP
Info Tech (CodeVision) sind europäisch.
Gruß Johannes
> Na, so generell kann man das gar nicht sagen, denn ein Compiler ist> immer nur für eine gewisse Auswahl von Prozessoren geeignet. Und die> genannten sind generell eigentlich nur für 8051er und ARMs zu gebrauchen> und z.B. für die PICs überhaupt nicht.
Die Compiler-Hertseller die ich genannt habe decken deutlich mehr µCs
ab, wie du meinst:
IAR: -8051
-PIC/dsPIC
-NEC
-ARM
-AVR32
-MSP430
- etc.
KEIL: -8051
-(X)C166/ST10
-ARM
TASKING:
- TriCore
-(X)C166
-Renesas
Mir fällt spontan keine 8-u.16-Bit Architektur ein, die nicht von diesen
genannten Herstellern abgedeckt wird.
Natürlich gibt es auch andere, sind aber nicht so stark in der Industrie
vertreten sondern mehr im Bereich von kleinen Ing.-Büros und
Hobbyentwicklern
Carsten,
was ich meinte, war nicht, dass die von Dir genannten Compiler nicht
mehr abdecken, sondern, dass man sie nicht generell nebeneinander setzen
kann, weil jeder, außer dem 8051 und dem ARM, seine speziellen
Schwerpunkte hat.
Oder anders gesagt: Sie stehen gar nicht mehr wirklich zur Auswahl. Es
geht entweder nur der eine oder nur ein anderer.
Ansonsten hab ich mal die Frage, was Du eigentlich unter "der Industrie"
verstehst, wenn Du dagegen gleich den Bereich der kleinen Ing.-Büros und
Hobbyentwickler setzt. Und ob Du wirklich überzeugt bist, dass sich "die
Industrie" immer noch von den großen (und teuren) Compilerbauern
diktieren lässt, welche Controller sie einzusetzen hat.
Ich meine, ich arbeite selber in einem Industriebetrieb, und kann Deine
Einschätzung über "die anderen" absolut nicht teilen.
Gruß Johannes
Hallo Johannes,
ich arbeite in der Distribution mit Schwerpunkt Industriekunden. Daher
ist es meine Erfahrung, dass die von mir genannten Compiler die
häufigsten Third-Party Compiler sind - zumindest für NEC, Infineon, ST,
MSP430 (TI).
Bei Firmen wie Microchip, Renesas, Fujitsu, etc. die ihre eigenen
Compiler bauen sind diese meistens die 1. Wahl.
Unter Industrie verstehe ich das Gebiet in dem der Kunde entwickelt,
also z.B. Automatisierungstechnik, Motorsteuerung, etc.
Ich habe mal in einem Projekt mit CCS-Compiler für PICs gearbeitet. Ist
2 Jahre har, und die Version war glaube ich 3.8.1.
Erfahrungen:
-Die Bibliotheken für I2C/RS232 funktionieren nur für bestimmte PICs
-Der Compiler hat beim ersten Fehler gestoppt
-Man muss dem Compiler oft sagen, ob ein array (z.B. LUT) ins ROM oder
RAM soll
Das Projekt war trotzdem lustig, wir haben alle Bibliotheken selbst
implementiert, und dann ging das mit dem CCS gut. Das Projekt war für
die Abfüllung eines Nahrungsmittels, und ging über ein Hobby-Projekt
hinaus (war aber nicht so professionell wie z.B. automotive-Projekte).
Hallo Carsten,
danke für die Erläuterungen. Ich habe mir sowas schon gedacht, aber sich
denken und wissen sind halt doch verschiedene Paar Schuhe.
Ok, ich sehe, dass Du ganz andere Bereiche beackerst als ich, aber ich
sehe auch, dass Du wohl, ebenso wie die meisten Distri-Ings, die ich so
kenne, über den vorgegebenen (?) Bereich hinaus nichts weiter weißt.
Ich meine, ich habe mit reichlich Glück vor ein paar Wochen mal gerade
einen Sales-Engineer für die Atmel AVRs aufgetan, mit dem ich auch über
die "anderen" Compiler reden kann, die dafür existieren. Wobei ich
feststellte, dass der Compiler, mit dem ich seit Jahren arbeite, und
der, obwohl Low-Cost, inzwischen der meistverkaufte AVR-Compiler
schlechthin ist und ganz nebenbei einen Support bietet, an den IAR und
nicht einmal Atmel heranreichen können, gar nicht bekannt war...
Mein Fazit: In der Distribution sitzen leider immer noch zu viele Leute,
die einfach alles glauben, auch wenn man ihnen sagt, der Himmel sei
grün.
Insofern für Dich zur Info: Von derselben Firma, die besagten
Low-Cost-AVR-Compiler anbietet, gibt es auch einen Low-Cost-Compiler für
die MSP430er. Und auch für ARMe. Und auch für HC12er...
Und jetzt sag nicht, Deine Kunden hätten Dich nie nach "günstigeren"
Compilern gefragt ;-)
Gruß Johannes