Logiciel de compilation MICROCHIP MPLAB XC8 C 

Logiciel de compilation MICROCHIP MPLAB XC8 C

CE DOCUMENT CONTIENT DES INFORMATIONS IMPORTANTES RELATIVES AU COMPILATEUR MPLAB XC8 C LORSQUE VOUS CIBLEZ DES DISPOSITIFS MICROCHIP AVR.
VEUILLEZ LE LIRE AVANT D'EXÉCUTER CE LOGICIEL. VOIR LES NOTES DE VERSION DU COMPILATEUR MPLAB XC8 C POUR LE DOCUMENT PIC SI VOUS UTILISEZ LE COMPILATEUR POUR DES DISPOSITIFS PIC 8 BITS.

Contenu cacher

Surview

Introduction

Cette version du compilateur Microchip MPLAB® XC8 C contient plusieurs nouvelles fonctionnalités, corrections de bogues et prise en charge de nouveaux appareils.

Date de construction

La date de construction officielle de cette version du compilateur est le 3 juillet 2022.

La version précédente

La version précédente du compilateur MPLAB XC8 C était la 2.39, un compilateur de sécurité fonctionnelle, construit le 27 janvier 2022. Le compilateur standard précédent était la version 2.36, construite le 27 janvier 2022.

Manuel de sécurité fonctionnelle

Un manuel de sécurité fonctionnelle pour les compilateurs MPLAB XC est disponible dans le package de documentation lorsque vous achetez une licence de sécurité fonctionnelle.

Licences et versions des composants

Les outils du compilateur C MPLAB® XC8 pour microcontrôleurs AVR sont écrits et distribués sous la licence publique générale GNU (GPL), ce qui signifie que son code source est librement distribué et accessible au public. Le code source des outils sous licence GNU GPL peut être téléchargé séparément à partir du site Web de Microchip. webplacer. Vous pouvez lire la GNU GPL dans le file named a localisé le sous-répertoire de votre répertoire d'installation. Une discussion générale des principes sous-jacents à la GPL peut être trouvée ici. Code de support fourni pour l'en-tête files, les scripts de liens et les bibliothèques d'exécution sont du code propriétaire et ne sont pas couverts par la GPL.

Ce compilateur est une implémentation de GCC version 5.4.0, binutils version 2.26 et utilise avr-libc version 2.0.0.

Configuration requise

Le compilateur MPLAB XC8 C et le logiciel de licence qu'il utilise sont disponibles pour une variété de systèmes d'exploitation, y compris les versions 64 bits des éléments suivants : éditions professionnelles de Microsoft Windows 10 ; Ubuntu 18.04 ; et macOS 10.15.5. Les binaires pour Windows ont été signés. Les binaires pour mac OS ont été signés et notariés.

Si vous exécutez un serveur de licences réseau, seuls les ordinateurs dont les systèmes d'exploitation sont pris en charge par les compilateurs peuvent être utilisés pour héberger le serveur de licences. À partir de la version 2.0 de xclm, le serveur de licences réseau peut être installé sur une plate-forme Microsoft Windows Server, mais le serveur de licences n'a pas besoin de s'exécuter sur une version serveur du système d'exploitation.

Périphériques pris en charge

Ce compilateur prend en charge tous les périphériques MCU AVR 8 bits connus au moment de la sortie. Voir (dans le répertoire doc du compilateur) pour une liste de tous les périphériques pris en charge. Ces files répertorie également les paramètres de bit de configuration pour chaque périphérique.

Éditions et mises à niveau de licence

Le compilateur MPLAB XC8 peut être activé en tant que produit sous licence (PRO) ou sans licence (gratuit). Vous devez acheter une clé d'activation pour obtenir une licence pour votre compilateur. Une licence permet un niveau d'optimisation plus élevé par rapport au produit gratuit. Un compilateur sans licence peut fonctionner indéfiniment sans licence.

Un compilateur de sécurité fonctionnelle MPLAB XC8 doit être activé avec une licence de sécurité fonctionnelle achetée auprès de Microchip. Le compilateur ne fonctionnera pas sans cette licence. Une fois activé, vous pouvez sélectionner n'importe quel niveau d'optimisation et utiliser toutes les fonctionnalités du compilateur. Cette version du compilateur de sécurité fonctionnelle MPLAB XC prend en charge la licence de serveur réseau.
Consultez le document Installing and Licensing MPLAB XC C Compilers (DS50002059) pour plus d'informations sur les types de licence et l'installation du compilateur avec une licence.

Installation et activation

Voir également les sections Problèmes de migration et limitations pour des informations importantes sur le dernier gestionnaire de licence inclus avec ce compilateur.
Si vous utilisez MPLAB IDE, assurez-vous d'installer la dernière version 5.0 ou ultérieure de MPLAB X IDE avant d'installer cet outil. Quittez l'IDE avant d'installer le compilateur. Exécutez l'application d'installation du compilateur .exe (Windows), .run (Linux) ou app (macOS), par exemple XC8-1.00.11403-windows.exe et suivez les instructions à l'écran.
Le répertoire d'installation par défaut est recommandé. Si vous utilisez Linux, vous devez installer le compilateur à l'aide d'un terminal et à partir d'un compte root. Installez à l'aide d'un compte macOS avec des privilèges d'administrateur.

L'activation est maintenant effectuée séparément de l'installation. Consultez le document License Manager for MPLAB® XC C Compilers (DS52059) pour plus d'informations.

Si vous choisissez d'exécuter le compilateur sous la licence d'évaluation, vous recevrez désormais un avertissement lors de la compilation lorsque vous serez dans les 14 jours suivant la fin de votre période d'évaluation. Le même avertissement est émis si vous êtes dans les 14 jours suivant la fin de votre abonnement HPA.

Le serveur de licences réseau XC est un programme d'installation distinct et n'est pas inclus dans le programme d'installation du compilateur mono-utilisateur.

Le gestionnaire de licences XC prend désormais en charge l'itinérance des licences réseau flottantes. Destinée aux utilisateurs mobiles, cette fonctionnalité permet à une licence flottante de se déconnecter du réseau pendant une courte période. Grâce à cette fonctionnalité, vous pouvez vous déconnecter du réseau et continuer à utiliser votre compilateur MPLAB XC. Consultez le dossier doc de l'installation de XCLM pour en savoir plus sur cette fonctionnalité. MPLAB X IDE comprend une fenêtre Licences (Outils > Licences) pour gérer visuellement l'itinérance.

Résolution des problèmes d'installation

Si vous rencontrez des difficultés lors de l'installation du compilateur sous l'un des systèmes d'exploitation Windows, essayez les suggestions suivantes.

  • Exécutez l'installation en tant qu'administrateur.
  • Définissez les autorisations de l'application d'installation sur "Contrôle total". (Cliquez avec le bouton droit sur file, sélectionnez Propriétés, onglet Sécurité, sélectionnez l'utilisateur, modifiez.)
  • Définissez les autorisations du dossier temporaire sur "Contrôle total !

Pour déterminer l'emplacement du dossier temporaire, tapez %temp% dans la commande Exécuter (touche logo Windows + R). Cela ouvrira un file boîte de dialogue de l'explorateur montrant ce répertoire et vous permettra de déterminer le chemin de ce dossier.

Documentation du compilateur

Les guides de l'utilisateur du compilateur peuvent être ouverts à partir de la page HTML qui s'ouvre dans votre navigateur lorsque vous cliquez sur le bouton d'aide bleu du tableau de bord MPLAB X IDE, comme indiqué dans la capture d'écran.

Documentation du compilateur
Si vous construisez pour des cibles AVR 8 bits, le Guide de l'utilisateur du compilateur MPLAB® XC8 C pour AVR® MCU contient des informations sur les options et fonctionnalités du compilateur applicables à cette architecture.

Assistance clientèle

Microchip accueille les rapports de bogue, les suggestions ou les commentaires concernant cette version du compilateur. Veuillez adresser tout rapport de bogue ou demande de fonctionnalité via le système d'assistance.

Mises à jour de la documentation

Pour les versions en ligne et à jour de la documentation MPLAB XC8, veuillez visiter la documentation technique en ligne de Microchip website.

Documentation AVR nouvelle ou mise à jour dans cette version :

  • Avis de droit d'auteur MUSL
  • Installation et licence des compilateurs MPLAB XC C (révision M)
  • Guide de l'utilisateur MPLAB XC8 pour les ingénieurs embarqués - MCU AVR (révision A)
  • Guide de l'utilisateur du compilateur MPLAB XC8 C pour AVR MCU (révision F)
  • Guide de référence de la bibliothèque standard unifiée Microchip (révision B)

Le guide de référence de la bibliothèque standard unifiée de Microchip décrit le comportement et l'interface des fonctions définies par la bibliothèque standard unifiée de Microchip, ainsi que l'utilisation prévue des types de bibliothèque et des macros. Certaines de ces informations figuraient auparavant dans le Guide de l'utilisateur du compilateur MPLAB® XC8 C pour AVR® MCU. Les informations de bibliothèque spécifiques au périphérique sont toujours contenues dans ce guide du compilateur.

Si vous débutez avec des appareils 8 bits et le compilateur C MPLAB XC8, le Guide de l'utilisateur MPLAB® XC8 pour les ingénieurs embarqués - MCU AVR® (DS50003108) contient des informations sur la configuration de projets dans l'IDE MPLAB X et l'écriture de code pour votre premier projet MPLAB XC8 C. Ce guide est maintenant distribué avec le compilateur.

Le guide de l'utilisateur Hamate a été inclus dans le répertoire docs de cette version. Ce guide est destiné à ceux qui utilisent Hamate en tant qu'application autonome.

Quoi de neuf

Voici les nouvelles fonctionnalités de cible AVR que le compilateur prend désormais en charge. Le numéro de version dans les sous-titres indique la première version du compilateur à prendre en charge les fonctionnalités qui suivent.

Version 2.40

Prise en charge de nouveaux appareils L'assistance est désormais disponible pour les composants AVR suivants : AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32 et AVR64EA48.
Amélioration de l'abstraction procédurale L'outil d'optimisation de l'abstraction procédurale (PA) a été amélioré afin que le code contenant une instruction d'appel de fonction (rappel d'appel) puisse être décrit. Cela n'aura lieu que si la pile n'est pas utilisée pour passer des arguments ni pour obtenir la valeur de retour de la fonction. La pile est utilisée lors de l'appel d'une fonction avec une liste d'arguments variable ou lors de l'appel d'une fonction qui prend plus d'arguments qu'il n'y a de registres désignés à cet effet. Cette fonctionnalité peut être désactivée à l'aide de l'option monk-pa-outline-calls, ou l'abstraction procédurale peut être entièrement désactivée pour un objet file ou fonction en utilisant le -monk-pa-on-file et -mo.-pa-on-function respectivement, ou en utilisant l'attribut nipa (spécificateur nipa) de manière sélective avec des fonctions

Macro de couverture de code Le compilateur définit maintenant la macro __CODECOV si une option mcodecov valide est spécifiée.

Option de réservation de mémoire Le pilote xc8-cc acceptera désormais l'option -mreserve=space@start: end lors de la construction pour les cibles AVR. Cette option réserve la plage de mémoire spécifiée dans l'espace mémoire de données ou de programme, empêchant l'éditeur de liens de remplir du code ou des objets dans cette zone.

E/S intelligentes plus intelligentes Plusieurs améliorations ont été apportées aux fonctions Smart IO, y compris des ajustements généraux au code de base de printf, en traitant le spécificateur de conversion %n comme une variante indépendante, en liant les routines vararg pop à la demande, en utilisant des types de données plus courts lorsque cela est possible pour gérer les arguments de la fonction IO , et la factorisation du code commun dans la largeur de champ et la gestion de la précision. Cela peut entraîner d'importantes économies de code et de données, ainsi qu'augmenter la vitesse d'exécution des E/S.

Version 2.39 (Version de sécurité fonctionnelle)

Licence de serveur réseau Cette version du compilateur de sécurité fonctionnelle MPLAB XC8 prend en charge la licence de serveur réseau.

Version 2.36

Aucun.

Version 2.35

Prise en charge de nouveaux appareils L'assistance est disponible pour les composants AVR suivants : ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 et AVR64DD32.

Changement de contexte amélioré La nouvelle option -mcall-isr-prologues modifie la manière dont les fonctions d'interruption enregistrent les registres à l'entrée et la manière dont ces registres sont restaurés lorsque la routine d'interruption se termine. Elle fonctionne de la même manière que l'option -mcall-prologues, mais n'affecte que les fonctions d'interruption (ISR).

Changement de contexte encore amélioré La nouvelle option -mgas-isr-prologues contrôle le code de démangeaison des contextes généré pour les petites routines de service d'interruption. Lorsqu'elle est activée, cette fonctionnalité demandera à l'assembleur d'analyser l'ISR pour l'utilisation des registres et de ne sauvegarder ces registres utilisés que si nécessaire.

Cartographie flash configurable Certains appareils de la famille AVR DA et AVR DB ont un SFR (par exemple FLMAP) qui spécifie quelle section de 32 Ko de mémoire de programme sera mappée dans la mémoire de données. La nouvelle option – mconst-data-in-config-mapped-proem peut être utilisée pour que l'éditeur de liens place toutes les données contre-qualifiées dans une section de 32k et initialise automatiquement le registre SFR pertinent pour s'assurer que ces données sont mappées dans l'espace mémoire de données , où il sera accessible plus efficacement.

Bibliothèques standard unifiées Microchip Tous les compilateurs MPLAB XC partageront une bibliothèque standard unifiée Microchip, désormais disponible avec cette version de MPLAB XC8. Le guide de l'utilisateur du compilateur MPLAB® XC8 C/ou AVR® MCU n'inclut plus la documentation de ces fonctions standard. Ces informations se trouvent désormais dans le Guide de référence de la bibliothèque standard unifiée de Microchip. Notez que certaines fonctionnalités précédemment définies par avr-libc ne sont plus disponibles. (Voir Librairie):'. Fonctionnalité…)

E/S intelligentes Dans le cadre des nouvelles bibliothèques unifiées, les fonctions IO dans les familles d'impression et de numérisation sont désormais générées de manière personnalisée sur chaque version, en fonction de la manière dont ces fonctions sont utilisées dans le programme. Cela peut réduire considérablement les ressources utilisées par un programme.
Option d'assistance intelligente IO Lors de l'analyse des appels aux fonctions d'E/S intelligentes (telles que printf () ou scanf () ), le compilateur ne peut pas toujours déterminer à partir de la chaîne de format ou déduire des arguments les spécificateurs de conversion requis par l'appel. Auparavant, le compilateur ne faisait toujours aucune hypothèse et s'assurait que des fonctions d'E/S pleinement fonctionnelles étaient liées à l'image finale du programme. Une nouvelle option – msmart-io-format=fmt a été ajoutée afin que le compilateur puisse à la place être informé par l'utilisateur des spécificateurs de conversion utilisés par les fonctions d'E/S intelligentes dont l'utilisation est ambiguë, empêchant la liaison de routines d'E/S trop longues. (Voir l'option smart-io-format pour plus de détails.)

Placer des sections personnalisées Auparavant, l'option -Wl, –section-start ne plaçait la section spécifiée à l'adresse demandée que lorsque le script de l'éditeur de liens définissait une section de sortie portant le même nom. Lorsque ce n'était pas le cas, la section était placée à une adresse choisie par l'éditeur de liens et l'option était essentiellement ignorée. Désormais, l'option sera honorée pour toutes les sections personnalisées, même si le script de l'éditeur de liens ne définit pas la section. Notez cependant que pour les sections standard, telles que . texte, . bss ou . données, l'allocateur le mieux adapté aura toujours un contrôle total sur leur placement et l'option n'aura aucun effet. Utilisez l'option -Wl, -Tsection=add, comme décrit dans le guide de l'utilisateur.

Version 2.32

Guidage de la pile Disponible avec une licence de compilateur PRO, la fonction de guidage de pile du compilateur peut être utilisée pour estimer la profondeur maximale de toute pile utilisée par un programme. Il construit et analyse le graphe d'appel d'un programme, détermine l'utilisation de la pile de chaque fonction et produit un rapport à partir duquel la profondeur des piles utilisées par le programme peut être déduite. Cette fonctionnalité est activée via l'option de ligne de commande -mchp-stack-usage. Un résumé de l'utilisation de la pile est imprimé après l'exécution. Un rapport de pile détaillé est disponible dans la carte file, qui peut être demandé de la manière habituelle.

Prise en charge de nouveaux appareils est disponible pour les pièces AVR suivantes : ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32 et AVR32DB48.

Prise en charge des appareils rétractés n'est plus disponible pour les pièces AVR suivantes : AVR16DA28, AVR16DA32 et AVR16DA48.

Version 2.31

Aucun.

Version 2.30

Nouvelle option pour empêcher l'initialisation des données Une nouvelle option de pilote -mno-data-ini t empêche l'initialisation des données et l'effacement des sections bss. Cela fonctionne en supprimant la sortie des symboles do_ copy_ data et d o_ clear_ bss dans l'assemblage files, ce qui empêchera à son tour l'inclusion de ces routines par l'éditeur de liens.

Optimisations améliorées Un certain nombre d'améliorations d'optimisation ont été apportées, notamment la suppression des instructions de retour redondantes, la suppression de certains sauts après une instruction skip-if-bit-is, et l'abstraction procédurale améliorée et la possibilité d'itérer ce processus.

Des options supplémentaires sont désormais disponibles pour contrôler certaines de ces optimisations, en particulier les ancres de section -f, qui permettent d'accéder aux objets statiques par rapport à un symbole ; -mpai derations=n, qui permet de modifier le nombre d'itérations d'abstraction procédurale par rapport à la valeur par défaut de 2 ; et, -mpa- call cost-shortcall, qui effectue une abstraction procédurale plus agressive, dans l'espoir que l'éditeur de liens puisse assouplir les appels longs. Cette dernière option peut augmenter la taille du code si les hypothèses sous-jacentes ne sont pas réalisées.

Prise en charge de nouveaux appareils Une assistance est disponible pour les composants AVR suivants : AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 et AVR128DB64.

Prise en charge de l'appareil rétracté L'assistance n'est plus disponible pour les composants AVR suivants : ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C et ATA664251.

Version 2.29 (Version de sécurité fonctionnelle)

En-tête file pour les fonctions intégrées du compilateur Pour s'assurer que le compilateur peut se conformer aux spécifications de langage telles que MISRA, entête file, qui est automatiquement inclus par , a été mis à jour. Cet en-tête contient les prototypes de toutes les fonctions intégrées, telles que _buil tin _avrnop () et _buil tin_ avr delay_ cycles () . Certains éléments intégrés peuvent ne pas être conformes à MISRA ; ceux-ci peuvent être omis en ajoutant la définition _Xe_ STRICT_ MISRA à la ligne de commande du compilateur. Les éléments intégrés et leurs déclarations ont été mis à jour pour utiliser des types à largeur fixe.

Version 2.20

Prise en charge de nouveaux appareils Une assistance est disponible pour les composants AVR suivants : ATTINY1624, ATTINY1626 et ATTINY1627.

Meilleure allocation la mieux adaptée L'allocateur de meilleur ajustement (BFA) dans le compilateur a été amélioré afin que les sections soient allouées dans un ordre permettant une meilleure optimisation. Le BFA prend désormais en charge les espaces d'adressage nommés et gère mieux l'initialisation des données.

Amélioration de l'abstraction procédurale Les optimisations d'abstraction procédurale sont maintenant effectuées sur plus de séquences de code. Les situations précédentes où cette optimisation pouvait avoir augmenté la taille du code ont été résolues en rendant le code d'optimisation conscient du processus de récupération de place de l'éditeur de liens.

Absence de l'assembleur AVR L'assembleur AVR n'est plus inclus dans cette distribution.

Version 2.19 (Version de sécurité fonctionnelle)

Aucun.

Version 2.10

Couverture de code Cette version inclut une fonctionnalité de couverture de code qui facilite l'analyse de la mesure dans laquelle le code source d'un projet a été exécuté. Utilisez l'option -mcodecov=ram pour l'activer. Après l'exécution du programme sur votre matériel, les informations de couverture de code seront rassemblées dans l'appareil, et cela peut être transféré et affiché par l'IDE MPLAB X via un plugin de couverture de code. Consultez la documentation de l'IDE pour obtenir des informations sur ce plugin. Le #pragma mcodecov peut être utilisé pour exclure les fonctions suivantes de l'analyse de couverture. Idéalement, le pragma devrait être ajouté au début de la file exclure tout cela file de l'analyse de la couverture. Alternativement, l'attribut ( (mcodecov) ) peut être utilisé pour exclure une fonction spécifique de l'analyse de couverture.

Description de l'appareil files Un nouvel appareil file appelé avr chipinfo. html se trouve dans le répertoire docs de la distribution du compilateur. Ce file répertorie tous les périphériques pris en charge par le compilateur. Cliquez sur un nom de périphérique pour ouvrir une page affichant toutes les paires de paramètres/valeurs de bits de configuration autorisées pour ce périphérique, avec examples.

Abstraction procédurale Des optimisations d'abstraction procédurale, qui remplacent les blocs communs de code assembleur par des appels à une copie extraite de ce bloc, ont été ajoutées au compilateur. Celles-ci sont effectuées par une application distincte, qui est automatiquement invoquée par le compilateur lors de la sélection des optimisations de niveau 2, 3 ou autres. Ces optimisations réduisent la taille du code, mais elles peuvent réduire la vitesse d'exécution et la capacité de débogage du code.
L'abstraction procédurale peut être désactivée à des niveaux d'optimisation supérieurs à l'aide de l'option -mno-pa, ou peut être activée à des niveaux d'optimisation inférieurs (sous réserve de votre licence) à l'aide de -mpa. Il peut être désactivé pour un objet file en utilisant -mno-pa-sur-file=filename, ou désactivé pour une fonction en utilisant -mno-pa sur function= function.
Dans votre code source, l'abstraction procédurale peut être désactivée pour une fonction en utilisant _attribute_ ( (nopa)) avec la définition de la fonction, ou en utilisant _nopa, qui se développe en attribut ( (nopa, noinline)) et empêche ainsi l'intégration de la fonction. et il y a abstraction du code en ligne.
Prise en charge du bit de verrouillage dans pragma La configuration #pragma peut maintenant être utilisée pour spécifier les bits de verrouillage AVR ainsi que les autres bits de configuration. Vérifiez les informations de la puce avr. html file (mentionné ci-dessus) pour les paires paramètre/valeur à utiliser avec ce pragma.
Prise en charge de nouveaux appareils Une assistance est disponible pour les composants suivants : AVR28DA128, AVR64DA128, AVR32DA128 et AVR48DA128.

Version 2.05

Plus de bits pour votre argent La version macOS de ce compilateur et gestionnaire de licences est désormais une application 64 bits. Cela garantira que le compilateur s'installera et s'exécutera sans avertissement sur les versions récentes de macOS.
Objets const dans la mémoire du programme Le compilateur peut désormais placer des objets qualifiés const dans la mémoire flash du programme, plutôt que de les placer dans la RAM. Le compilateur a été modifié de sorte que les données globales qualifiées const soient stockées dans la mémoire flash du programme et que ces données soient accessibles directement et indirectement à l'aide des instructions de mémoire de programme appropriées. Cette nouvelle fonctionnalité est activée par défaut mais peut être désactivée à l'aide de l'option -mno-const-data-in-progmem. Pour les architectures avrxmega3 et avrtiny, cette fonctionnalité n'est pas requise et est toujours désactivée, car la mémoire du programme est mappée dans l'espace d'adressage des données pour ces périphériques.
Norme gratuite Les versions sans licence (gratuites) de ce compilateur permettent désormais des optimisations jusqu'au niveau 2 inclus. Cela permettra une sortie similaire, bien que non identique, à ce qui était auparavant possible avec une licence Standard.
Bienvenue AVRASM2 L'assembleur AVRASM2 pour les périphériques 8 bits est désormais inclus dans le programme d'installation du compilateur XC8. Cet assembleur n'est pas utilisé par le compilateur XC8, mais est disponible pour les projets basés sur une source d'assemblage manuscrite.
Prise en charge de nouveaux appareils La prise en charge est disponible pour les composants suivants : ATMEGA1608, ATMEGA1609, ATMEGA808 et ATMEGA809.

Version 2.00

Pilote de haut niveau Un nouveau pilote, appelé xc8-cc, se trouve désormais au-dessus de l'ancien pilote avr-gcc et du pilote xc8, et il peut appeler le compilateur approprié en fonction de la sélection du périphérique cible. Ce pilote accepte les options de style GCC, qui sont traduites ou transmises au compilateur en cours d'exécution. Ce pilote permet d'utiliser un ensemble similaire d'options avec une sémantique similaire avec n'importe quelle cible AVR ou PIC et est donc la méthode recommandée pour invoquer le compilateur. Si nécessaire, l'ancien pilote avr-gcc peut être appelé directement à l'aide des options à l'ancienne qu'il acceptait dans les versions antérieures du compilateur.

Interface C commune Ce compilateur peut désormais se conformer à l'interface MPLAB Common C, permettant au code source d'être plus facilement porté sur tous les compilateurs MPLAB XC. L'option -mext=cci demande cette fonctionnalité, permettant une syntaxe alternative pour de nombreuses extensions de langage.

Nouveau chauffeur bibliothécaire Un nouveau pilote de bibliothécaire est positionné au-dessus de l'ancien bibliothécaire PIC libr et du bibliothécaire avr-ar AVR. Ce pilote accepte les options de style GCC-archiver, qui sont traduites ou transmises au bibliothécaire en cours d'exécution. Le nouveau pilote permet d'utiliser un ensemble similaire d'options avec une sémantique similaire pour créer ou manipuler n'importe quelle bibliothèque PIC ou AVR file et est donc le moyen recommandé pour invoquer le bibliothécaire. Si nécessaire pour les projets hérités, le bibliothécaire précédent peut être appelé directement à l'aide des options à l'ancienne qu'il acceptait dans les versions antérieures du compilateur.

Problèmes de migration

Les fonctionnalités suivantes sont désormais gérées différemment par le compilateur. Ces modifications peuvent nécessiter une modification de votre code source si vous transférez le code vers cette version du compilateur. Le numéro de version dans les sous-titres indique la première version du compilateur à prendre en charge les modifications qui suivent.

Version 2.40

Aucun.

Version 2.39 (Version de sécurité fonctionnelle)

Aucun.

Version 2.36

Aucun.

Version 2.35

Manipulation des chaînes de base (XCS-2420) Pour assurer la cohérence avec les autres compilateurs XC, les fonctions de chaîne XC8, comme strtol() etc., ne tenteront plus de convertir une chaîne d'entrée si la base spécifiée est supérieure à 36 et définiront à la place errno sur EINVAL. La norme C ne précise pas le comportement des fonctions lorsque cette valeur de base est dépassée.

Optimisations de vitesse inappropriées Les optimisations d'abstraction procédurale étaient activées lors de la sélection des optimisations de niveau 3 (-03). Ces optimisations réduisent la taille du code au détriment de la vitesse du code, elles n'auraient donc pas dû être effectuées. Les projets utilisant ce niveau d'optimisation peuvent voir des différences dans la taille du code et la vitesse d'exécution lorsqu'ils sont créés avec cette version.

Fonctionnalité de la bibliothèque Le code de nombreuses fonctions de la bibliothèque C standard provient désormais de la bibliothèque standard unifiée de Microchip, qui peut présenter un comportement différent dans certaines circonstances par rapport à celui fourni par l'ancienne bibliothèque avr-libc. Par exempleample, il n'est plus nécessaire d'établir un lien dans la bibliothèque lprintf_flt (option -print _flt) pour activer la prise en charge des E/S formatées pour les spécificateurs de format flottant. Les fonctions d'E/S intelligentes de la bibliothèque standard unifiée de Microchip rendent cette option redondante. De plus, l'utilisation de routines suffixées _p pour les fonctions de chaîne et de mémoire (par exemple strcpy_P () etc .. ) qui fonctionnent sur des chaînes const en flash n'est plus nécessaire. Les routines C standard (par exemple strcpy()) fonctionneront correctement avec de telles données lorsque la fonction const-data-in-program-memory est activée.

Version 2.32

Aucun.

Version 2.31

Aucun.

Version 2.30

Aucun.

Version 2.29 (Version de sécurité fonctionnelle)

Aucun.

Version 2.20

Mise en page DFP modifiée Le compilateur adopte désormais une disposition différente utilisée par les DFP (Device Family Packs). Cela signifie qu'un DFP plus ancien peut ne pas fonctionner avec cette version et que les compilateurs plus anciens ne pourront pas utiliser les derniers DFP.

Version 2.19 (Version de sécurité fonctionnelle)

Aucun.

Version 2.10

Aucun

Version 2.05

Objets const dans la mémoire programme Notez que les objets const qualifiés par défaut seront placés et accessibles dans la mémoire programme (comme décrit ici). Cela affectera la taille et la vitesse d'exécution de votre projet, mais devrait réduire l'utilisation de la RAM. Cette fonctionnalité peut être désactivée, si nécessaire, à l'aide de l'option -mnoconst-da ta-in-progmem.

Version 2.00

Configuration des fusibles Les fusibles de configuration de l'appareil peuvent désormais être programmés à l'aide d'un pragma de configuration suivi de paires de valeurs de réglage pour spécifier l'état du fusible, par exemple
#pragma config WDT0N = SET
#pragma configuration B0DLEVEL = B0DLEVEL_4V3
Objets et fonctions absolus Les objets et les fonctions peuvent désormais être placés à une adresse spécifique en mémoire à l'aide du spécificateur CCI _at (adresse), par exempleample: #inclure int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } L'argument de ce spécificateur doit être une constante qui représente l'adresse à laquelle le premier octet ou instruction sera placé. Les adresses RAM sont indiquées en utilisant un décalage de 0x800000. Activez CCI pour utiliser cette fonction.
Nouvelle syntaxe de fonction d'interruption Le compilateur accepte désormais le spécificateur d'interruption CCI (num) pour indiquer que les fonctions C sont des gestionnaires d'interruption. Le spécificateur prend un numéro d'interruption, par example: #inclure void interruption(SPI STC_ vect _num) spi Isr(void) { … }

Problèmes résolus

Voici les corrections apportées au compilateur. Ceux-ci pourraient corriger des bogues dans le code généré ou modifier le fonctionnement du compilateur en fonction de ce qui était prévu ou spécifié par le guide de l'utilisateur. Le numéro de version dans les sous-titres indique la première version du compilateur à contenir des correctifs pour les problèmes qui suivent. Les étiquettes entre crochets dans le titre sont l'identification de ce problème dans la base de données de suivi. Ceux-ci peuvent être utiles si vous avez besoin de contacter le support.

Notez que certains problèmes spécifiques à l'appareil sont corrigés dans le Device Family Pack (DFP) associé à l'appareil. Consultez le gestionnaire de packs MPLAB pour plus d'informations sur les modifications apportées aux DFP et pour télécharger les derniers packs.

Version 2.40

Trop détendu (XCS-2876) Lors de l'utilisation de l'option -mrelax, le compilateur n'allouait pas certaines sections ensemble, ce qui entraînait des tailles de code moins optimales. Cela peut s'être produit avec du code utilisant les nouvelles bibliothèques MUSL ou avec des symboles faibles.
La fonction de mappage n'est pas désactivée comme indiqué dans l'avertissement (XCS-2875) La fonctionnalité cost-data-in-config mappedprogmem dépend de l'activation de la fonctionnalité cost-data-in-proem. Si la fonctionnalité cost-data-ipconfig-mapped-proem était explicitement activée à l'aide de l'option et que la fonctionnalité cost-data-inprogmem était désactivée, l'étape de liaison échouait, malgré un message d'avertissement indiquant que le contre data-in-config-mapped- la fonction proem avait été automatiquement désactivée, ce qui n'était pas tout à fait correct. La fonctionnalité const-data-in-config-mapped-proem est maintenant entièrement désactivée dans cette situation.
DFP change pour accéder correctement à NVMCTRL (XCS-2848) Le code de démarrage d'exécution utilisé par les appareils AVR64EA ne tenait pas compte du fait que le registre NVMCTRL était sous protection contre les changements de configuration (CCP) et n'était pas en mesure de définir le SFR IO sur la page utilisée par le compilateur const-data-in configmapped-proem fonctionnalité. Les modifications apportées à AVR-Ex_DFP version 2.2.55 permettront au code de démarrage d'exécution d'écrire correctement dans ce registre.
Modifications DFP pour éviter le mappage flash (XCS-2847) Une solution de contournement pour un problème avec la fonction de périphérique de mappage flash signalé dans l'errata de silicium AVR128DA28/32/48/64 (DS80000882) a été implémentée. La fonctionnalité de compilateur const-data-in-config-mapped-proem ne sera pas appliquée par défaut pour les appareils concernés, et cette modification apparaîtra dans AVR-Ex_DFP version 2.2.160.
Erreur de construction avec sinhf ou coshf (XCS-2834) Les tentatives d'utilisation des fonctions de bibliothèque sinhf () ou coshf () ont entraîné une erreur de lien, décrivant une référence indéfinie. La fonction manquante référencée a maintenant été incluse dans la distribution du compilateur.
Construire des erreurs avec nopa (XCS-2833) L'utilisation de l'attribut nopa avec une fonction dont le nom d'assembleur a été spécifié à l'aide de () a déclenché des messages d'erreur de la part de l'assembleur. Cette combinaison n'est pas possible.
Échec de la fonction variadique avec des arguments de pointeur (XCS-2755, XCS-2731) Les fonctions avec un nombre variable d'arguments s'attendent à ce que des pointeurs 24 bits (type _memo) soient transmis dans la liste d'arguments variables lorsque la fonctionnalité cost-data-in-proem est activée. Les arguments qui étaient des pointeurs vers la mémoire de données étaient transmis en tant qu'objets 16 bits, provoquant une défaillance du code lorsqu'ils étaient finalement lus. Lorsque la fonction cons data-in-proem est activée, tous les arguments de pointeurs 16 bits sont désormais convertis en pointeurs 24 bits. Échec des fonctions de la bibliothèque strtoxxx (XCS-2620) Lorsque la fonction const-data-in-proem était activée, le paramètre d'entrée dans les fonctions de la bibliothèque strtoxxx n'était pas correctement mis à jour pour les arguments de chaîne source qui ne se trouvaient pas dans la mémoire du programme.
Alertes pour les distributions invalides (XCS-2612) Le compilateur émettra désormais une erreur si la fonctionnalité cost-in-proem est activée et que l'adresse d'un littéral de chaîne est explicitement convertie en espace d'adressage de données (en supprimant le qualificatif const), par exempleample, (uint8 t *) "Hello World!". Un avertissement est émis si l'adresse peut être invalide lorsqu'un pointeur de données const est explicitement converti en espace d'adressage de données.
Placement d'objets const non initialisés (XCS-2408) Les objets const et const volatils non initialisés n'étaient pas placés dans la mémoire programme sur les périphériques qui mappaient tout ou partie de leur mémoire programme dans l'espace d'adressage des données. Pour ces appareils, ces objets sont désormais placés dans la mémoire programme, ce qui rend leur fonctionnement cohérent avec d'autres appareils.

Version 2.39 (Version de sécurité fonctionnelle)

Aucun.

Version 2.36

Erreur lors du retard (XCS-2774) Des modifications mineures dans les optimisations par défaut du mode libre ont empêché le repliement constant des expressions d'opérande sur les fonctions intégrées de retard, ce qui les a traitées comme des non-contacts et a déclenché l'erreur : _buil tin avr delay_ cycles attend un compile constante entière de temps.

Version 2.35

Allocation contiguë à l'aide de _at (XCS-2653) L'allocation contiguë de plusieurs emplacements d'objets dans une section portant le même nom et utilisant at() ne fonctionnait pas correctement. Par exempleample: constchararrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[ ] at tri butte ((section(“.my s eke”))) = {Oxen, Ox FE } ; aurait dû placer arr2 immédiatement après aril.
Spécification des adresses de début de section (XCS-2650) L'option -Wal, –section-start échouait silencieusement à placer les sections à l'adresse de début désignée. Ce problème a été résolu pour toutes les sections nommées personnalisées ; cependant, cela ne fonctionnera pas pour les sections standard, telles que . texte ou . bss, qui doit être placé à l'aide d'une option -Wl, -T.
L'éditeur de liens se bloque lors de la relaxation (XCS-2647) Lorsque l'optimisation -relax était activée et qu'il y avait des sections de code ou de données qui ne correspondaient pas à la mémoire disponible, l'éditeur de liens plantait. Maintenant, dans une telle circonstance, des messages d'erreur sont émis à la place.
Mauvais accès EEPROM (XCS-2629) La routine de bloc leproma _read_ ne fonctionnait pas correctement sur les appareils Mega lorsque l'option -monist-data-in-proem était activée (ce qui est l'état par défaut), ce qui empêchait la lecture correcte de la mémoire EEPROM.
Allocation de mémoire non valide (XCS-2593, XCS-2651) Lorsque l'option -Text ou -Tata linker (par exampchier transmis à l'aide d'une option de pilote -Wl) est spécifié, l'origine de la région de texte/données correspondante a été mise à jour ; cependant, l'adresse de fin n'a pas été ajustée en conséquence, ce qui aurait pu conduire la région à dépasser la plage de mémoire du périphérique cible.
Code d'interruption ATtiny non valide (XCS-2465) Lors de la construction pour les appareils Tatin et que les optimisations étaient désactivées (-00), les fonctions d'interruption peuvent avoir déclenché des messages d'assembleur hors plage d'opérandes.
Options non transmises (XCS-2452) Lors de l'utilisation de l'option -Wl avec plusieurs options de l'éditeur de liens séparées par des virgules, toutes les options de l'éditeur de liens n'étaient pas transmises à l'éditeur de liens.
Erreur lors de la lecture indirecte de la mémoire programme (XCS-2450) Dans certains cas, le compilateur produisait une erreur interne (insn non reconnaissable) lors de la lecture d'une valeur de deux octets à partir d'un pointeur vers la mémoire du programme

Version 2.32

Échec du deuxième accès à la bibliothèque (XCS-2381) Appel de la version Windows de xc8-ar. L'archiveur de bibliothèque exe une deuxième fois pour accéder à une archive de bibliothèque existante peut avoir échoué avec un message d'erreur impossible à renommer.

Version 2.31

Échecs inexpliqués du compilateur (XCS-2367) Lors de l'exécution sur des plates-formes Windows dont le répertoire temporaire du système est défini sur un chemin comprenant un point '.' caractère, le compilateur a peut-être échoué à s'exécuter.

Version 2.30

Étiquettes globales mal placées après le contour (XCS-2299) Le code d'assemblage écrit à la main qui place des étiquettes globales dans des séquences d'assemblage qui sont factorisées par l'abstraction procédurale peut ne pas avoir été correctement repositionné.
Un crash relaxant (XCS-2287) L'utilisation de l'option -merlad peut avoir provoqué le plantage de l'éditeur de liens lorsque les optimisations de relaxation du saut de queue ont tenté de supprimer l'instruction ret qui n'était pas à la fin d'une section.
Blocage lors de l'optimisation des étiquettes en tant que valeurs (XCS-2282) Le code utilisant l'extension de langage GNU C "Labels as values" peut avoir provoqué le blocage des optimisations d'abstraction procédurale, avec une erreur de correction des étendues de plage VMA décrites.
Pas si constant (XCS-2271) Les prototypes de starts() et d'autres fonctions de ne spécifiez plus le qualificatif de coût non standard sur les pointeurs de chaîne renvoyés lorsque la fonctionnalité -monist-data inprogmem est désactivée. Notez qu'avec les appareils avrxmega3 et avertin, cette fonctionnalité est activée en permanence.
Initialiseurs perdus (XCS-2269) Lorsque plusieurs variables d'une unité de traduction ont été placées dans une section (à l'aide d'une section ou d'un attribut ((section))), et que la première de ces variables était initialisée à zéro ou n'avait pas d'initialiseur, les initialiseurs pour d'autres variables dans la même unité de traduction qui étaient placés dans la même section ont été perdus.

Version 2.29 (Version de sécurité fonctionnelle)

Aucun.

Version 2.20

Erreur avec les commandes longues (XCS-1983) Lors de l'utilisation d'une cible AVR, le compilateur peut s'être arrêté avec un file erreur introuvable, si la ligne de commande était extrêmement longue et contenait des caractères spéciaux tels que des guillemets, des barres obliques inverses, etc.
Section rodata non attribuée (XCS-1920) L'éditeur de liens AVR n'a pas réussi à attribuer de mémoire pour les sections rodata personnalisées lors de la construction pour les architectures avrxmega3 et avrtiny, ce qui peut produire des erreurs de chevauchement de mémoire

Version 2.19 (Version de sécurité fonctionnelle)

Aucun.

Version 2.10

Échecs de relocalisation (XCS-1891) L'allocateur le mieux ajusté laissait des «trous» de mémoire entre les sections après la relaxation du lieur. Outre la fragmentation de la mémoire, cela augmentait la possibilité d'échecs de relocalisation de l'éditeur de liens liés à des sauts ou des appels relatifs au pc devenant hors de portée.
Instructions non transformées par relaxation (XCS-1889) La relaxation du lieur ne s'est pas produite pour les instructions de saut ou d'appel dont les cibles deviennent atteignables si elles sont relâchées.
Manquant fonctionnalité (XCSE-388) Plusieurs définitions de , tels que clock_div_t et clock_prescale_set(), n'ont pas été définis pour les appareils, y compris ATmega324PB, ATmega328PB, ATtiny441 et ATtiny841.
Macros manquantes Les macros de préprocesseur_ xcs _MODE_, _xcs VERSION, _xc et xcs n'ont pas été définies automatiquement par le compilateur. Ceux-ci sont maintenant disponibles.

Version 2.05

Erreur interne du compilateur (XCS-1822) Lors de la construction sous Windows, une erreur interne du compilateur peut avoir été produite lors de l'optimisation du code.
Débordement de RAM non détecté (XCS-1800, XCS-1796) Les programmes qui dépassaient cette RAM disponible n'étaient pas détectés par le compilateur dans certaines situations, ce qui entraînait un échec du code d'exécution.
Mémoire flash omise (XCS-1792) Pour les appareils avrxmega3 et avrtiny, des parties de la mémoire flash peuvent avoir été laissées non programmées par l'IDE MPLAB X.
Échec de l'exécution de main (XCS-1788) Dans certaines situations où le programme n'avait pas de variables globales définies, le code de démarrage d'exécution ne se terminait pas et la fonction main() n'était jamais atteinte.
Informations de mémoire incorrectes (XCS-1787) Pour les appareils avrxmega3 et avrtiny, le programme avr-size signalait que les données en lecture seule consommaient de la RAM au lieu de la mémoire du programme.
Lecture incorrecte de la mémoire du programme (XCS-1783) Les projets compilés pour les périphériques avec une mémoire de programme mappée dans l'espace d'adressage des données et qui définissent des objets à l'aide de la macro/attribut PROGMEM peuvent avoir lu ces objets à partir de la mauvaise adresse.
Erreur interne avec attributs (XCS-1773) Une erreur interne s'est produite si vous avez défini des objets pointeur avec le
jetons _at () ou attribut () entre le nom du pointeur et le type déréférencé, par exempleample, char*
_at ( 0x80015 0) cp ; Un avertissement est maintenant émis si un tel code est rencontré.
Échec de l'exécution de main (XCS-1780, XCS-1767, XCS-1754) L'utilisation de variables EEPROM ou la définition de fusibles à l'aide du pragma de configuration peut avoir provoqué une initialisation incorrecte des données et/ou bloqué l'exécution du programme dans le code de démarrage de l'exécution, avant d'atteindre main() .
Erreur de fusible avec de petits appareils (XCS-1778, XCS-1742) Les appareils attiny4/5/9/10/20/40 avaient une longueur de fusible incorrecte spécifiée dans leur en-tête files qui conduisent à des erreurs de l'éditeur de liens lors de la tentative de génération de code définissant les fusibles.
Défaut de segmentation (XCS-1777) Un défaut de segmentation intermittent a été corrigé.
Crash de l'assembleur (XCS-1761) L'assembleur avr-as a peut-être planté lorsque le compilateur a été exécuté sous Ubuntu 18.
Objets non effacés (XCS-1752) Les objets de durée de stockage statique non initialisés peuvent ne pas avoir été effacés par le code de démarrage de l'environnement d'exécution.
Spécification de périphérique en conflit ignorée (XCS-1749) Le compilateur ne générait pas d'erreur lorsque plusieurs options de spécification de périphérique étaient utilisées et indiquaient différents périphériques.
Corruption de mémoire par tas (XCS-1748) Le symbole heap_start n'était pas défini correctement, ce qui entraînait la possibilité que des variables ordinaires soient corrompues par le tas.
Erreur de relocalisation de l'éditeur de liens (XCS-1739) Une erreur de relocalisation de l'éditeur de liens peut avoir été émise lorsque le code contenait un rjmp ou un rcall avec une cible distante d'exactement 4k octets.

Version 2.00

Aucun.

Problèmes connus

Voici les limitations du fonctionnement du compilateur. Il peut s'agir de restrictions générales de codage ou
écarts par rapport aux informations contenues dans le manuel de l'utilisateur. Les étiquettes entre crochets dans le titre sont l'identification de ce problème dans la base de données de suivi. Cela peut être utile si vous avez besoin de contacter le support. Les éléments qui n'ont pas d'étiquettes sont des limitations qui décrivent le mode opératoire et qui sont susceptibles de rester en vigueur de manière permanente.

Intégration MPLAB X IDE

Intégration MPLAB IDE Si Compiler doit être utilisé à partir de MPLAB IDE, vous devez installer MPLAB IDE avant d'installer Compiler.

Génération de code

Échec de l'allocation de mémoire PA (XCS-2881) Lors de l'utilisation des optimiseurs d'abstraction procédurale, l'éditeur de liens peut signaler des erreurs d'allocation de mémoire lorsque la taille du code est proche de la quantité de mémoire programme disponible sur l'appareil, même si le programme doit pouvoir s'adapter à l'espace disponible.
Pas si intelligent Smart-IO (XCS-2872) La fonction smart-io du compilateur générera un code valide mais sous-optimal pour la fonction sprint si la fonction coast-data-in-proem a été désactivée ou si l'appareil a tout son flash mappé dans la mémoire de données.
Smart-IO encore moins intelligent (XCS-2869) La fonction smart-io du compilateur générera du code valide mais sous-optimal lorsque les options -floe et -fno-buil tin sont toutes les deux utilisées.
Placement sous-optimal des données en lecture seule (XCS-2849) L'éditeur de liens n'est actuellement pas conscient des sections de mémoire APPCODE et APPDATA, ni des divisions [No-]Read-While-Write dans la carte mémoire. Par conséquent, il existe un faible risque que l'éditeur de liens alloue des données en lecture seule dans une zone de mémoire inappropriée. Le risque de données mal placées augmente si la fonctionnalité coast-data-in-pragma est activée, en particulier si la fonctionnalité coast-data-in-config-mapped-proem est également activée. Ces fonctionnalités peuvent être désactivées si nécessaire.
Objet file traitement de la commande (XCS-2863) L'ordre dans lequel les objets files seront traités par l'éditeur de liens peuvent différer en fonction de l'utilisation des optimisations d'abstraction procédurale (option -mpa). Cela n'affecterait que le code qui définit les fonctions faibles sur plusieurs modules.
Erreur de l'éditeur de liens avec absolu (XCS-2777) Lorsqu'un objet a été rendu absolu à une adresse au début de la RAM et que des objets non initialisés ont également été définis, une erreur de l'éditeur de liens peut être déclenchée.
ID de réveil courts (XCS-2775) Pour les appareils ATA5700/2, les registres PHID0/1 sont uniquement définis comme ayant une largeur de 16 bits, au lieu de 32 bits.
Crash de l'éditeur de liens lors de l'appel du symbole (XCS-2758) L'éditeur de liens peut se bloquer si l'option de pilote -merlad est utilisée lorsque le code source appelle un symbole qui a été défini à l'aide de l'option d'éditeur de liens -Wl, –defsym.
Initialisation incorrecte (XCS-2679) Il existe une différence entre l'endroit où les valeurs initiales de certains objets globaux/statiques de la taille d'un octet sont placées dans la mémoire de données et l'endroit où les variables seront accessibles au moment de l'exécution.
démarré incorrectement définit vide (XCS-2652) Dans les cas où une chaîne de sujet pour la conversion par state () contient ce qui semble être un nombre à virgule flottante au format exponentiel et qu'il y a un caractère inattendu après un caractère e, alors l'adresse vide, si elle est fournie, pointera vers le caractère après le e et non le e lui-même. Par exempleample : énoncé("hooey", vide) ; se traduira par vide pointant vers le caractère x.
Appels de fonction indirects incorrects (XCS-2628) Dans certains cas, les appels de fonction effectués via un pointeur de fonction stocké dans le cadre d'une structure peuvent échouer.
strtof renvoie zéro pour les flottants hexadécimaux (XCS-2626) Les fonctions de bibliothèque strtof () et al et scanf () et al, convertiront toujours un nombre hexadécimal à virgule flottante qui ne spécifie pas d'exposant en
zéro. Par exempleample: stator("Chouette", &vide); renverra la valeur 0 et non 1.
Messagerie inexacte du conseiller de pile (XCS-2542, XCS-2541) Dans certains cas, l'avertissement du conseiller de pile concernant la récursivité ou la pile indéterminée utilisée (éventuellement via l'utilisation de alloca()) n'est pas émis.
Échec avec code d'interruption en double (XCS-2421) Lorsque plusieurs fonctions d'interruption ont le même corps, le compilateur peut faire en sorte que la sortie d'une fonction d'interruption appelle l'autre. Cela entraînera la sauvegarde inutile de tous les registres encombrés d'appels et les interruptions seront activées avant même que l'épilogue du gestionnaire d'interruptions actuel ne soit exécuté, ce qui pourrait entraîner une défaillance du code.
Objets const pas dans la mémoire programme (XCS-2408) Pour les projets avrxmega3 et avertins, les objets const non idéalisés sont placés dans la mémoire de données, même si un avertissement suggère qu'ils ont été placés dans la mémoire programme. Cela n'affectera pas les périphériques qui n'ont pas de mémoire de programme mappée dans l'espace de mémoire de données, ni n'affectera aucun objet qui est initialisé.
Sortie incorrecte avec chemin DFP non valide (XCS-2376) Si le compilateur est appelé avec un chemin DFP non valide et une "spécification" file existe pour le périphérique sélectionné, le compilateur ne signale pas le pack de famille de périphériques manquant et sélectionne à la place la "spécification" file, ce qui peut alors conduire à une sortie non valide. La "spécification" files peuvent ne pas être à jour avec les DFP distribués et sont destinés à être utilisés uniquement avec les tests internes du compilateur.
Chevauchement de mémoire non détecté (XCS-1966) Le compilateur ne détecte pas le chevauchement de mémoire des objets rendus absolus à une adresse (via at ()) et d'autres objets utilisant le spécificateur de section () et qui sont liés à la même adresse.
Échec avec les fonctions de bibliothèque et _meme (XCS-1763) Les fonctions flottantes limbiques appelées avec un argument dans l'espace d'adressage _memo peuvent échouer. Notez que les routines de bibliothèque sont appelées à partir de certains opérateurs C, donc, par exempleample, le code suivant est affecté : return regFloatVar > memxFloatVar;
Implémentation limbique limitée (AVRTC-731) Pour les produits ATTiny4/5/9/10/20/40, l'implémentation standard de la librairie C/Math en limbic est très limitée voire inexistante.
Limitations de la mémoire programme (AVRTC-732) Les images de mémoire de programme au-delà de 128 Ko sont prises en charge par la chaîne d'outils ; cependant, il existe des cas connus d'abandons de l'éditeur de liens sans relaxation et sans message d'erreur utile plutôt que de générer les stubs de fonction requis lorsque l'option -relax est utilisée.
Limitations d'espace de nom (AVRTC-733) Les espaces d'adressage nommés sont pris en charge par la chaîne d'outils, sous réserve des limitations mentionnées dans la section Qualificatifs de type spécial du guide de l'utilisateur.
Fuseaux horaires Le les fonctions de la bibliothèque supposent GMT et ne prennent pas en charge les fuseaux horaires locaux, donc l'heure locale () renverra la même heure que gummite (), par exempleample.

SERVICE CLIENTS

file:///Applications/microhip/xc8/v 2 .40/docs/Lisez-moi_X C 8_ pour A VR. htm

Documents / Ressources

Logiciel de compilation MICROCHIP MPLAB XC8 C [pdf] Manuel du propriétaire
MPLAB XC8 C, Logiciel de compilation MPLAB XC8 C, Logiciel de compilation, Logiciel

Références

Laisser un commentaire

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués *