Question

Nous commençons un nouveau projet basé sur une puce PIC18F252. Quel est le meilleur compilateur 'c' à utiliser?

Était-ce utile?

La solution

tech PICC a toujours été fiable pour moi et a connu de nombreuses années de développement.

Autres conseils

  1. Microchip C18 compilateur : vraiment le meilleur compilateur et le plus facile à utiliser. Parfait pour un usage professionnel.
  2. HI-TECH : utilisé lorsque Microchip ne l'est pas travail (c’était pour un PIC16).
  3. CCS
  4. SourceBoost

PS: moi-même, j'ai travaillé sur les familles PIC18F25XX et PIC18F45xx, je connais donc un tout petit peu à ce sujet. ;)

PS2: En cas de problème de compilation (cela nous est arrivé), l’équipe de Microchip est assez réactive et les nouvelles versions sont publiées assez rapidement. Essayez de trouver un revendeur local qui a un contact avec Microchip, puis participez à un événement avec eux et obtenez des contacts directs. Inestimable.

Il y a quelques années, j'ai effectué des recherches approfondies sur le compilateur Hitech PICC18 et le compilateur Microchip C18.

Je pense que la plupart des gens qui décident d’utiliser le compilateur Microchip C18 ne le voient que lorsqu’ils consultent le site Web de la micropuce et se familiarisent déjà avec MpLab en assembleur (ce qui est un terrible IDE IMHO).

La solution de HiTech est beaucoup plus proche de la norme ANSI C (le code est donc beaucoup plus portable). Avec C18, vous avez ajouté toutes sortes de mots-clés spécifiques au compilateur et votre gestion de mémoire beaucoup plus.

  1. Vous devez spécifier la banque de mémoire à laquelle attribuer les variables.
  2. Pour que la chaîne const soit allouée à l'espace programme (au lieu de la RAM), vous devez utiliser le mot clé rom.
  3. Vous ne pouvez pas allouer des variables plus grandes que 256 octets sans modifier un script de l'éditeur de liens.

Vous trouverez une excellente comparaison qui va beaucoup plus loin ici: http: //www.xargs.com/pic/picc18-vs-c18.html

Outre le compilateur, vous devez également prendre en compte l'EDI. Je suis un grand fan d’éclipse et j’ai donc beaucoup aimé HiTide de HiTech pour cette raison. Cependant, depuis que Microchip a acheté HiTech ... il semble qu’ils ne supportent plus HiTide. Je ne pense pas que cela soit officiel ... mais de par mon expérience avec l'assistance HiTech ... ils ne corrigent plus les bogues, ce qui est vraiment dommage.

J'ai aussi essayé leurs compilateurs professionnels. J'aime vraiment l'idée. Mais, mon projet a dépassé les exigences du bloc auto param et n'a pas pu être utilisé. Cela a également semblé prendre beaucoup de temps à compiler, mais cela aurait pu être dû à la complexité du programme.

Je n'ai pas utilisé le compilateur Microchip, mais j'utilise les produits HiTech depuis des années. J'ai généralement aimé leur compilateur PIC16, mais trouve leur compilateur PIC18 plutôt frustrant. Bien que j'apprécie de ne pas avoir à placer toutes les variables dans des banques, les règles utilisées par le compilateur de HiTech sont ennuyeuses, bizarres et loufoques. Bref arrière-plan: la puce comporte 16 banques de variables de 256 octets (* tous les 256 octets ne sont pas disponibles dans toutes les banques) et un pointeur de banque. L'accès direct à une variable nécessite que la banque appropriée soit sélectionnée; changer de banque prend une instruction.

Les enttes et structures globales et statiques, ainsi que leurs tableaux, dont la taille est comprise entre 2 et 255 octets, seront chacun alloués à des psects sur une base par module; Le psect de chaque module doit tenir dans une page de 256 octets. Les tableaux d'octets, ainsi que les octets individuels, sont placés dans un "gros" psect où chaque octet est supposé résider éventuellement dans une page différente.

Toutes les variables et tous les paramètres automatiques du programme doivent tenir dans une page de 256 octets (ils sont alloués de manière statique au moment de la liaison). L’éditeur de liens superpose des variables qui ne sont jamais actives simultanément, mais il suppose que tout appel à un pointeur de fonction avec une signature particulière peut appeler n’importe quelle fonction dont l’adresse est prise et qui possède cette signature.

Il est possible de déclarer un nombre de variables globales et statiques allant jusqu'à 128 octets. Vous pouvez y accéder sans changer de banque. Il n'est pas possible de spécifier que les variables ou paramètres automatiques soient placés "près de".

Les règles de commutation de banque utilisées par HiTech signifient que de nombreuses fonctions, même si elles n’utilisent jamais de variables en dehors de leur propre module, seront parsemées d’instructions movlb (switch-bank).

Je ne veux pas de "génération de code omniscient". Je veux pouvoir ajouter quelques astuces pour placer les choses judicieusement en définissant des mots clés ou des macros pour des psects personnalisés, permettant ainsi aux variables automatiques et locales de partager des psects avec d'autres variables (superposition de variables / paramètres automatiques dans la mesure du possible compte tenu des restrictions bancaires spécifiées). Si un fournisseur de compilateur veut vraiment être gentil, autorisez les pointeurs à accepter les qualificateurs de banque, de sorte qu'un pointeur ne pointant que sur des éléments d'un psect donné puisse être stocké sur 8 bits. De même, autorisez les qualificateurs de banque sur les fonctions et les pointeurs de fonction à spécifier que certains appels indirects ne peuvent fonctionner qu'avec certaines fonctions. Plutôt que de créer des pointeurs de fonction 24 bits ou de devoir travailler pour que les fonctions appelées indirectement se retrouvent dans les premiers 64 Ko, placez un GOTO automatique dans les premiers 64 Ko afin que les pointeurs de fonctions puissent avoir une résolution de 16 bits. Ou mieux encore, si une fonction 'classe' a moins de 64 fonctions différentes, utilisez un pointeur sur 8 bits.

Est-ce que je demande trop?

Nous utilisons CCS , c'est très bien. Très lent, mais ça marche bien. En tout cas, je n’ai aucune comparaison avec d’autres compilateurs, il pourrait donc y avoir de meilleurs choix.

Je n’aimais pas le CSC, c’était trop bizarre.

SourceBoost n’est pas mauvais et pas cher, environ 40 £.

Le compilateur Microchip C18 est la meilleure OMI, mais très chère. Il existe cependant une version démo / élève gratuite.

J'utilise actuellement CCS et le déteste. C'est tellement non standard et tellement d'un sous-ensemble de C, que ça craint. J'envisage de passer sous peu. Je vais d'abord essayer le compilateur Microchip C18, puis j'avalerai difficilement et obtiendra HighTech, qui semble assez solide après avoir examiné la version d'essai et les échantillons.

IAR System dispose d'un compilateur / IDE PIC18: IAR Embedded Workbench pour PIC18 .

J'utilise CCS depuis de nombreuses années. J'ai trouvé quelques bugs, mais le support est excellent et je peux développer plus rapidement et plus facilement avec CCS qu'avec C18 ou HiTec

utilisez sdcc:

http://sdcc.sourceforge.net/

et pour le compilateur PIC non-libre (mais gratuit!), mikroC est gr8!

http: //www.mikroe. com / eng / products / view / 7 / mikroc-pro-for-pic /

HTH

J'insiste pour que vous utilisiez le compilateur C18. Il est extrêmement robuste et très facile à utiliser. C'est un must pour le développement professionnel. Cela dépend vraiment de la taille du projet sur lequel vous travaillez.

Commencez par l'édition gratuite / étudiante et vous aurez une bonne idée de son utilisation. Si votre projet est petit, c'est peut-être tout ce dont vous avez besoin. Je viens de terminer un projet de développement de grande taille sur un PIC 18F et je suis extrêmement satisfait du compilateur C18.

MPLAB C18 - Étudiant

J'utilise SourceBoost depuis environ un an et je ne suis pas totalement ravi, mais tout va bien. Cependant, je viens de terminer un test de taille de code entre SourceBoost 7, MCC18 et Hi-Tech C. Les résultats ont été remarquables.

Pour un petit exemple de programme (comprenant des structures, des tableaux, des pointeurs de fonction, des pointeurs de structure, des caractères et des ints), le kit SB7 produisait un code environ 2/3 de la taille de MCC18 et HTC. Je voulais déterminer la quantité de travail liée au démarrage et à l’argent d’exécution, j’ai donc ajouté des éléments aléatoires à l’exemple de programme, et le delta de taille a montré que SB était toujours deux fois plus gros que les autres. HTC était légèrement plus petit que MCC18, mais pas de manière significative. Toutes les optimisations sont activées dans tous les environnements.

Les choses que je n'aime pas chez SB sont:

  • assembleur en ligne limité
  • lent à compiler & amp; lien
  • L'IDE n'est que légèrement supérieur à MPLAB.

Les choses que j’aime à ce sujet sont:

  • La taille du code semble certainement plus petite que celle de la concurrence.
  • Quelques extensions du langage (références, par exemple). Tue la portabilité, cependant.
  • Le prix.
  • Le support via les forums est en fait plutôt bon. Les auteurs postent souvent.
  • Suppression automatique du code inutilisé (je pense que cette fonctionnalité ralentit la compilation et le lien)

Puisque je n'aime pas le SB IDE, j'utilise Source Insight pour un éditeur et c'est ROCKS! Le SB "make" L’utilitaire est également sans espoir, j’utilise donc GnuWin32 make, qui est absolument la vraie affaire, et gratuit.

En résumé, je me sens un peu mieux dans le choix de mes outils.

Quoi qu’il en soit, espérons que cela aidera quelqu'un.

MPLAB C-18 est bien, et ils ont une version étudiante qui est gratuite. Sa bonne interface utilisateur est suffisamment simple pour ne pas dérouter les utilisateurs. C'est ce que j'utilise.

Si vous pouvez vous en tirer (ma préférence serait plutôt), utilisez l’assembleur PIC18 avec MPLAB. Il a l’avantage d’être libre et relativement bien documenté, parallèlement au fait qu’il dispose d’un support décent pour les hardwars et les débogueurs. Son petit jeu d'instructions et sa simplicité ont conduit à un codage facile et rapide.

Si vous êtes sur c cependant:

CCS est un bon compilateur à utiliser, un peu buggé et assez coûteux, mais il possède également de bonnes capacités de débogage.

Microsoft Embedded Studio (ou quelque chose du genre) est excellent si vous êtes déjà familiarisé avec la méthodologie d’écriture de code c de Visual Studio 6. Encore une fois, un bon support matériel et un excellent débogueur.

Je pense que si vous recherchez une solution gratuite, vous pouvez obtenir des compilateurs c pour MPLAB, bien que je n’en ai jamais utilisé personnellement, je ne peux donc pas porter de jugement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top