Programari compilador MICROCHIP MPLAB XC8 C
AQUEST DOCUMENT CONTÉ INFORMACIÓ IMPORTANT RELACIONADA AMB EL COMPILADOR MPLAB XC8 C QUAN ESTRENEN DISPOSITIUS MICROCHIP AVR.
LLEGIU-LO ABANS D'EXECUTAR AQUEST PROGRAMARI. CONSULTEU LES NOTES DE VERSIÓ DEL COMPILADOR MPLAB XC8 C PER AL DOCUMENT PIC SI ESTEU UTILITZANT EL COMPILADOR PER A DISPOSITIUS PIC DE 8 BITS.
Acabatview
Introducció
Aquesta versió del compilador Microchip MPLAB® XC8 C conté diverses funcions noves, correccions d'errors i suport per a dispositius nous.
Data de construcció
La data de creació oficial d'aquesta versió del compilador és el 3 de juliol de 2022.
Versió anterior
La versió anterior del compilador MPLAB XC8 C era la 2.39, un compilador de seguretat funcional, creat el 27 de gener de 2022. El compilador estàndard anterior era la versió 2.36, construïda el 27 de gener de 2022.
Manual de seguretat funcional
Un manual de seguretat funcional per als compiladors MPLAB XC està disponible al paquet de documentació quan adquireix una llicència de seguretat funcional.
Llicències i versions de components
Les eines MPLAB® XC8 C Compiler for AVR MCUs estan escrites i distribuïdes sota la Llicència Pública General (GPL) de GNU, la qual cosa significa que el seu codi font es distribueix lliurement i està disponible per al públic. El codi font de les eines sota la GNU GPL es pot descarregar per separat de Microchip weblloc. Podeu llegir la GPL GNU a la pàgina file anomenat localitza el subdirectori del vostre directori d'instal·lació. Aquí es pot trobar una discussió general dels principis subjacents a la GPL. Codi de suport proporcionat per a la capçalera files, els scripts d'enllaç i les biblioteques en temps d'execució són codi propietari i no estan coberts per la GPL.
Aquest compilador és una implementació de GCC versió 5.4.0, binutils versió 2.26 i utilitza avr-libc versió 2.0.0.
Requisits del sistema
El compilador MPLAB XC8 C i el programari de llicència que utilitza estan disponibles per a una varietat de sistemes operatius, incloses les versions de 64 bits dels següents: Edicions professionals de Microsoft Windows 10; Ubuntu 18.04; i macOS 10.15.5. Els binaris per a Windows s'han signat amb codi. Els binaris per a mac OS han estat signats amb codi i notariitzats.
Si esteu executant un servidor de llicències de xarxa, només es poden utilitzar ordinadors amb sistemes operatius compatibles amb els compiladors per allotjar el servidor de llicències. A partir de la versió 2.0 de xclm, el servidor de llicències de xarxa es pot instal·lar en una plataforma Microsoft Windows Server, però no cal que el servidor de llicències s'executi en una versió de servidor del sistema operatiu.
Dispositius compatibles
Aquest compilador és compatible amb tots els dispositius MCU AVR de 8 bits coneguts en el moment del llançament. Vegeu (al directori doc del compilador) per obtenir una llista de tots els dispositius compatibles. Aquests fileTambé enumereu la configuració dels bits de configuració per a cada dispositiu.
Edicions i actualitzacions de llicències
El compilador MPLAB XC8 es pot activar com a producte amb llicència (PRO) o sense llicència (gratuït). Heu de comprar una clau d'activació per obtenir la llicència del vostre compilador. Una llicència permet un nivell d'optimització superior en comparació amb el producte gratuït. Un compilador sense llicència es pot operar indefinidament sense llicència.
S'ha d'activar un compilador de seguretat funcional MPLAB XC8 amb una llicència de seguretat funcional adquirida a Microchip. El compilador no funcionarà sense aquesta llicència. Un cop activat, podeu seleccionar qualsevol nivell d'optimització i utilitzar totes les funcions del compilador. Aquesta versió del compilador de seguretat funcional MPLAB XC admet la llicència de servidor de xarxa.
Consulteu el document Instal·lació i llicència de compiladors MPLAB XC C (DS50002059) per obtenir informació sobre els tipus de llicència i la instal·lació del compilador amb una llicència.
Instal·lació i activació
Consulteu també les seccions Problemes i limitacions de la migració per obtenir informació important sobre l'últim gestor de llicències inclòs amb aquest compilador.
Si utilitzeu MPLAB IDE, assegureu-vos d'instal·lar l'última versió de MPLAB X IDE 5.0 o posterior abans d'instal·lar aquesta eina. Sortiu de l'IDE abans d'instal·lar el compilador. Executeu l'aplicació d'instal·lació del compilador .exe (Windows), .run (Linux) o app (macOS), per exemple, XC8-1.00.11403-windows.exe i seguiu les instruccions que apareixen a la pantalla.
Es recomana el directori d'instal·lació predeterminat. Si utilitzeu Linux, heu d'instal·lar el compilador mitjançant un terminal i des d'un compte root. Instal·leu-lo mitjançant un compte de macOS amb privilegis d'administrador.
Ara l'activació es realitza per separat a la instal·lació. Consulteu el document Gestor de llicències per a compiladors MPLAB® XC C (DS52059) per obtenir més informació.
Si trieu executar el compilador amb la llicència d'avaluació, ara rebreu un avís durant la compilació quan estigueu dins dels 14 dies posteriors al final del vostre període d'avaluació. El mateix avís s'emet si sou dins dels 14 dies posteriors a la finalització de la vostra subscripció a HPA.
El servidor de llicències de xarxa XC és un instal·lador independent i no s'inclou a l'instal·lador del compilador d'usuari únic.
El gestor de llicències XC ara admet la itinerància de llicències de xarxa flotants. Dirigit a usuaris mòbils, aquesta funció permet que una llicència flotant surti de la xarxa durant un curt període de temps. Amb aquesta funció, podeu desconnectar-vos de la xarxa i seguir utilitzant el vostre compilador MPLAB XC. Consulteu la carpeta de documents de la instal·lació de XCLM per obtenir més informació sobre aquesta funció. MPLAB X IDE inclou una finestra Llicències (Eines > Llicències) per gestionar visualment el roaming.
Resolució de problemes d'instal·lació
Si teniu problemes per instal·lar el compilador amb qualsevol dels sistemes operatius Windows, proveu els suggeriments següents.
- Executeu la instal·lació com a administrador.
- Establiu els permisos de l'aplicació d'instal·lador a "Control total". (Feu clic amb el botó dret a file, seleccioneu Propietats, pestanya Seguretat, seleccioneu usuari, editeu.)
- Establiu els permisos de la carpeta temporal a "Control total!
Per determinar la ubicació de la carpeta temporal, escriviu %temp% a l'ordre Executar (tecla del logotip de Windows + R). Això obrirà a file diàleg de l'explorador que mostra aquest directori i us permetrà determinar la ruta d'aquesta carpeta.
Documentació del compilador
Les guies de l'usuari del compilador es poden obrir des de la pàgina HTML que s'obre al vostre navegador quan feu clic al botó d'ajuda blau del tauler de control de MPLAB X IDE, tal com s'indica a la captura de pantalla.
Si esteu creant objectius AVR de 8 bits, la Guia de l'usuari del compilador MPLAB® XC8 C per a AVR® MCU conté informació sobre les opcions i funcions del compilador aplicables a aquesta arquitectura.
Atenció al client
Microxip accepta informes d'errors, suggeriments o comentaris sobre aquesta versió del compilador. Si us plau, dirigiu qualsevol informe d'error o sol·licitud de funció mitjançant el sistema d'assistència.
Actualitzacions de documentació
Per obtenir versions en línia i actualitzades de la documentació MPLAB XC8, visiteu la documentació tècnica en línia de Microchip. weblloc.
Documentació AVR nova o actualitzada en aquesta versió:
- Avís de copyright de MUSL
- Instal·lació i llicència de compiladors MPLAB XC C (revisió M)
- Guia d'usuari de MPLAB XC8 per a enginyers integrats: MCU AVR (revisió A)
- Guia de l'usuari del compilador MPLAB XC8 C per a MCU AVR (revisió F)
- Guia de referència de la biblioteca estàndard unificada de Microchip (revisió B)
El Microchip Unified Standard Library Reference Guide descriu el comportament i la interfície amb les funcions definides per la Microchip Unified Standard Library, així com l'ús previst dels tipus de biblioteca i les macros. Part d'aquesta informació es trobava anteriorment a la Guia de l'usuari del compilador MPLAB® XC8 C per a AVR® MCU. La informació de la biblioteca específica del dispositiu encara es troba en aquesta guia del compilador.
Si tot just esteu començant amb dispositius de 8 bits i el compilador MPLAB XC8 C, la Guia d'usuari de MPLAB® XC8 per a enginyers integrats: MCU AVR® (DS50003108) té informació sobre com configurar projectes a l'IDE MPLAB X i escriure codi. per al vostre primer projecte MPLAB XC8 C. Aquesta guia es distribueix ara amb el compilador.
La Guia de l'usuari de Hamate s'ha inclòs al directori docs d'aquesta versió. Aquesta guia està pensada per a aquells que executen Hamate com a aplicació autònoma.
Què hi ha de nou
A continuació es mostren les noves funcions de destinació AVR que ara admet el compilador. El número de versió dels subtítols indica la primera versió del compilador que admet les funcions següents.
Versió 2.40
Suport de nous dispositius El suport ara està disponible per a les peces AVR següents: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32, AVR64EA48EAXNUMX, i AVRXNUMXEAXNUMXEAXNUMX.
Abstracció procedimental millorada L'eina d'optimització d'abstracció de procediments (PA) s'ha millorat de manera que es pugui descriure el codi que conté una instrucció de trucada de funció (call recall)). Això només es produirà si la pila no s'utilitza per passar arguments ni obtenir el valor de retorn de la funció. La pila s'utilitza quan es crida a una funció amb una llista d'arguments variables o quan es crida a una funció que pren més arguments dels que hi ha registres designats per a aquest propòsit. Aquesta característica es pot desactivar mitjançant l'opció monk-pa-outline-calls, o l'abstracció procedimental es pot desactivar completament per a un objecte file o funció utilitzant el -monk-pa-on-file i -mo.-pa-on-function respectivament, o utilitzant l'atribut nipa (especificador nipa) selectivament amb funcions
Macro de cobertura de codi El compilador ara defineix la macro __CODECOV si s'especifica una opció mcodecov vàlida.
Opció de reserva de memòria El controlador xc8-cc ara acceptarà l'opció -mreserve=space@start:end quan es construeixin objectius AVR. Aquesta opció reserva l'interval de memòria especificat a l'espai de memòria de dades o de programa, evitant que l'enllaçador ompli codi o objectes en aquesta àrea.
IO intel·ligent més intel·ligent S'han fet diverses millores a les funcions Smart IO, incloent ajustaments generals al codi principal printf, tractant l'especificador de conversió %n com una variant independent, enllaçant en rutines pop vararg sota demanda, utilitzant tipus de dades més curts quan sigui possible per manejar arguments de funció IO , i factoritzar el codi comú en l'amplada del camp i el maneig de precisió. Això pot provocar un estalvi important de codi i dades, així com augmentar la velocitat d'execució de l'IO.
Versió 2.39 (Versió de seguretat funcional)
Llicència de servidor de xarxa Aquesta versió del compilador de seguretat funcional MPLAB XC8 admet la llicència de servidor de xarxa.
Versió 2.36
Cap.
Versió 2.35
Suport de nous dispositius El suport està disponible per a les peces AVR següents: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 i AVR64DD32.
Canvi de context millorat La nova opció -mcall-isr-prologues canvia com les funcions d'interrupció guarden els registres a l'entrada i com es restauren aquests registres quan finalitza la rutina d'interrupció. Funciona de manera similar a l'opció -mcall-prologues, però només afecta les funcions d'interrupció (ISR).
Canvi de context encara més millorat La nova opció -mgas-isr-prologues controla el codi de picor de contextos generat per a petites rutines de servei d'interrupció. Quan està habilitada, aquesta funció farà que l'assemblador escanegi l'ISR per fer servir el registre i només desi aquests registres utilitzats si és necessari.
Mapes flash configurables Alguns dispositius de la família AVR DA i AVR DB tenen un SFR (per exemple, FLMAP) que especifica quina secció de 32k de memòria del programa s'assignarà a la memòria de dades. La nova opció - mconst-data-in-config-mapped-proem es pot utilitzar per fer que l'enllaç col·loqui totes les dades qualificades en una secció de 32 k i inicialitzi automàticament el registre SFR rellevant per assegurar-se que aquestes dades s'assignen a l'espai de memòria de dades. , on s'hi podrà accedir de manera més eficaç.
Biblioteques estàndard unificades de Microxip Tots els compiladors de MPLAB XC compartiran una biblioteca estàndard unificada de Microchip, que ara està disponible amb aquesta versió de MPLAB XC8. El MPLAB® XC8 C Compiler User's Guide/o AVR® MCU ja no inclou la documentació d'aquestes funcions estàndard. Aquesta informació ara es pot trobar a la Guia de referència de la biblioteca estàndard de Microchip. Tingueu en compte que algunes funcionalitats definides anteriorment per avr-libc ja no estan disponibles. (Vegeu Biblioteca):'. funcionalitat...)
Smart IO Com a part de les noves biblioteques unificades, les funcions d'IO a les famílies d'impressió i d'escaneig ara es generen personalment a cada compilació, en funció de com s'utilitzen aquestes funcions al programa. Això pot reduir substancialment els recursos utilitzats per un programa.
Opció d'assistència d'IO intel·ligent Quan s'analitzen les trucades a funcions d'E/S intel·ligents (com ara printf () o scanf () ), el compilador no sempre pot determinar a partir de la cadena de format ni inferir a partir dels arguments aquells especificadors de conversió requerits per la trucada. Anteriorment, el compilador sempre no feia suposicions i s'assegurava que les funcions d'E/S totalment funcionals estaven enllaçades a la imatge final del programa. S'ha afegit una nova opció – msmart-io-format=fmt perquè el compilador pugui ser informat per l'usuari dels especificadors de conversió utilitzats per les funcions d'IO intel·ligents l'ús de les quals és ambigu, evitant que s'enllacin rutines d'IO excessivament llargues. (Consulteu Opció de format smart-io per a més detalls.)
Col·locació de seccions personalitzades Anteriorment, l'opció -Wl, –section-start només col·locava la secció especificada a l'adreça sol·licitada quan l'script de l'enllaç definia una secció de sortida amb el mateix nom. Quan no era així, la secció es col·locava a una adreça escollida per l'enllaçador i l'opció es ignorava essencialment. Ara l'opció es respectarà per a totes les seccions personalitzades, fins i tot si l'script de l'enllaç no defineix la secció. Tingueu en compte, però, que per a les seccions estàndard, com . text, . bss o. dades, l'assignador que millor s'ajusta encara tindrà un control total sobre la seva col·locació i l'opció no tindrà cap efecte. Utilitzeu l'opció -Wl, -Tsection=afegir, tal com es descriu a la guia de l'usuari.
Versió 2.32
Guia de pila Disponible amb una llicència de compilador PRO, la funció de guia de pila del compilador es pot utilitzar per estimar la profunditat màxima de qualsevol pila utilitzada per un programa. Construeix i analitza el gràfic de trucades d'un programa, determina l'ús de la pila de cada funció i produeix un informe, a partir del qual es pot inferir la profunditat de les piles utilitzades pel programa. Aquesta funció s'habilita mitjançant l'opció de línia d'ordres -mchp-stack-usage. S'imprimeix un resum de l'ús de la pila després de l'execució. Un informe detallat de la pila està disponible al mapa file, que es pot sol·licitar de la manera habitual.
Suport de nou dispositiu està disponible per a les peces AVR següents: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32, i.
Suport de dispositiu retractat ja no està disponible per a les peces AVR següents: AVR16DA28, AVR16DA32 i AVR16DA48.
Versió 2.31
Cap.
Versió 2.30
Nova opció per evitar la inicialització de dades Una nova opció del controlador -mno-data-ini t impedeix la inicialització de dades i l'esborrat de les seccions bss. Funciona suprimint la sortida dels símbols do_ copy_ i d o_ clear_ bss en el muntatge files, que al seu torn impedirà la inclusió d'aquestes rutines per part de l'enllaçador.
Optimitzacions millorades S'han fet una sèrie de millores d'optimització, incloent l'eliminació d'instruccions de retorn redundants, l'eliminació d'alguns salts després d'una instrucció de saltar si el bit és, i l'abstracció de procediments millorada i la capacitat d'iterar aquest procés.
Ara hi ha opcions addicionals disponibles per controlar algunes d'aquestes optimitzacions, específicament les àncores de secció -f, que permeten l'accés d'objectes estàtics en relació a un símbol; -mpai derations=n, que permet canviar el nombre d'iteracions d'abstracció procedimental des del valor predeterminat de 2; i, -mpa- call cost- shortcall, que realitza una abstracció procedimental més agressiva, amb l'esperança que l'enllaçador pugui relaxar les trucades llargues. Aquesta darrera opció pot augmentar la mida del codi si no es compleixen els supòsits subjacents.
Suport de nous dispositius El suport està disponible per a les peces AVR següents: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 i AVR128DB64.
Suport del dispositiu retractat L'assistència ja no està disponible per a les peces AVR següents: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C i ATA664251.
Versió 2.29 (Versió de seguretat funcional)
Capçalera file per al compilador integrat Per assegurar-se que el compilador pot complir amb les especificacions del llenguatge com ara MISRA, el capçalera file, que s'inclou automàticament per , s'ha actualitzat. Aquesta capçalera conté els prototips de totes les funcions integrades, com ara els cicles _buil tin _avrnop () i _buil tin_ avr delay_ () . Algunes integracions poden no ser compatibles amb MISRA; aquests es poden ometre afegint el define _Xe_ STRICT_ MISRA a la línia d'ordres del compilador. Els integrats i les seves declaracions s'han actualitzat per utilitzar tipus d'amplada fixa.
Versió 2.20
Suport de nous dispositius Hi ha assistència disponible per a les peces AVR següents: ATTINY1624, ATTINY1626 i ATTINY1627.
Millor assignació de millor ajust S'ha millorat l'assignador de millor ajust (BFA) al compilador perquè les seccions s'assignin en un ordre que permeti una millor optimització. El BFA ara admet espais d'adreces amb nom i gestiona millor la inicialització de dades.
Abstracció procedimental millorada Les optimitzacions d'abstracció procedimental es realitzen ara en més seqüències de codi. Les situacions anteriors en què aquesta optimització podria haver augmentat la mida del codi s'han solucionat fent que el codi d'optimització conegui el procés de recollida d'escombraries de l'enllaçador.
Absència d'Assembler AVR L'Assembler AVR ja no s'inclou amb aquesta distribució.
Versió 2.19 (Versió de seguretat funcional)
Cap.
Versió 2.10
Cobertura de codi Aquesta versió inclou una funció de cobertura de codi que facilita l'anàlisi de fins a quin punt s'ha executat el codi font d'un projecte. Utilitzeu l'opció -mcodecov=ram per habilitar-lo. Després de l'execució del programa al vostre maquinari, la informació de cobertura de codi s'agruparà al dispositiu, i aquesta es pot transferir i mostrar-la a l'IDE MPLAB X mitjançant un connector de cobertura de codi. Consulteu la documentació de l'IDE per obtenir informació sobre aquest connector. El #pragma mcodecov es pot utilitzar per excloure funcions posteriors de l'anàlisi de cobertura. L'ideal és afegir el pragma al començament del file per excloure-ho tot file de l'anàlisi de la cobertura. Alternativament, l'atribut ( (mcodecov) ) es pot utilitzar per excloure una funció específica de l'anàlisi de cobertura.
Descripció del dispositiu files Un nou dispositiu file anomenat avr chipinfo. html es troba al directori docs de la distribució del compilador. Això file enumera tots els dispositius compatibles amb el compilador. Feu clic al nom d'un dispositiu i s'obrirà una pàgina que mostra tots els parells de valors/configuració de bits de configuració permesos per a aquest dispositiu, amb examples.
Abstracció procedimental S'han afegit al compilador optimitzacions d'abstracció de procediments, que substitueixen els blocs comuns de codi assemblador amb crides a una còpia extreta d'aquest bloc. Aquestes es realitzen mitjançant una aplicació independent, que el compilador invoca automàticament en seleccionar optimitzacions de nivell 2, 3 o. Aquestes optimitzacions redueixen la mida del codi, però poden reduir la velocitat d'execució i la depuració del codi.
L'abstracció procedimental es pot desactivar a nivells d'optimització superiors mitjançant l'opció -mno-pa, o bé es pot activar a nivells d'optimització inferiors (subjecte a la vostra llicència) mitjançant -mpa. Es pot desactivar per a un objecte file utilitzant -mno-pa-on-file=filenom, o desactivat per a una funció utilitzant -mno-pa a la funció function=.
Dins del vostre codi font, l'abstracció de procediments es pot desactivar per a una funció utilitzant _attribute_ ( (nopa)) amb la definició de la funció, o utilitzant _nopa, que s'expandeix a l'atribut ( (nopa, noinline)) i, per tant, evita que es produeixi l'inserció de funcions. i hi ha abstracció de codi en línia.
Suport de bits de bloqueig en pragma La configuració #pragma ara es pot utilitzar per especificar els bits de bloqueig de l'AVR així com els altres bits de configuració. Comproveu la informació del xip avr. html file (esmentat més amunt) per als parells de configuració/valor que s'utilitzen amb aquest pragma.
Suport de nous dispositius El suport està disponible per a les peces següents: AVR28DA128, AVR64DA128, AVR32DA128 i AVR48DA128.
Versió 2.05
Més peces pel teu diners La versió de macOS d'aquest compilador i gestor de llicències és ara una aplicació de 64 bits. Això garantirà que el compilador s'instal·larà i s'executarà sense avisos a les versions recents de macOS.
Objectes const a la memòria del programa El compilador ara pot col·locar objectes qualificats per const a la memòria flash del programa, en comptes de tenir-los a la memòria RAM. El compilador s'ha modificat de manera que les dades globals qualificades de const s'emmagatzemen a la memòria flash del programa i es pot accedir directament i indirectament a aquestes dades mitjançant les instruccions adequades de la memòria del programa. Aquesta nova característica està habilitada per defecte, però es pot desactivar mitjançant l'opció -mno-const-data-in-progmem. Per a les arquitectures avrxmega3 i avrtiny, aquesta característica no és necessària i sempre està desactivada, ja que la memòria del programa s'assigna a l'espai d'adreces de dades d'aquests dispositius.
Estàndard gratuït Les versions sense llicència (gratuïtes) d'aquest compilador ara permeten optimitzacions fins al nivell 2 inclòs. Això permetrà una sortida similar, encara que no idèntica, a la que abans era possible amb una llicència estàndard.
Benvingut AVRASM2 L'assemblador AVRASM2 per a dispositius de 8 bits ara s'inclou a l'instal·lador del compilador XC8. Aquest assemblador no l'utilitza el compilador XC8, però està disponible per a projectes basats en fonts d'assemblatge escrites a mà.
Suport de nous dispositius El suport està disponible per a les parts següents: ATMEGA1608, ATMEGA1609, ATMEGA808 i ATMEGA809.
Versió 2.00
Conductor de primer nivell Un nou controlador, anomenat xc8-cc, ara es troba a sobre del controlador avr-gcc anterior i del controlador xc8, i pot cridar al compilador adequat en funció de la selecció del dispositiu de destinació. Aquest controlador accepta opcions d'estil GCC, que es tradueixen o es transmeten al compilador que s'està executant. Aquest controlador permet utilitzar un conjunt similar d'opcions amb una semàntica similar amb qualsevol objectiu AVR o PIC i, per tant, és la manera recomanada d'invocar el compilador. Si cal, l'antic controlador avr-gcc es pot cridar directament utilitzant les opcions d'estil antic que acceptava en versions anteriors del compilador.
Interfície C comuna Aquest compilador ara es pot adaptar a la interfície MPLAB Common C, permetent que el codi font es porti més fàcilment a tots els compiladors MPLAB XC. L'opció -mext=cci sol·licita aquesta característica, habilitant una sintaxi alternativa per a moltes extensions d'idioma.
Nou conductor bibliotecari Un nou controlador de bibliotecari es col·loca per sobre de l'anterior bibliotecari PIC libr i el bibliotecari AVR avr-ar. Aquest controlador accepta opcions d'estil arxivador GCC, que es tradueixen o es transmeten al bibliotecari que s'està executant. El nou controlador permet utilitzar un conjunt similar d'opcions amb una semàntica similar per crear o manipular qualsevol biblioteca PIC o AVR file i per tant és la forma recomanada d'invocar el bibliotecari. Si es requereix per a projectes heretats, es pot cridar directament al bibliotecari anterior utilitzant les opcions d'estil antic que acceptava en versions anteriors del compilador.
Problemes de migració
Les següents són característiques que ara el compilador gestiona de manera diferent. Aquests canvis poden requerir modificacions al vostre codi font si porteu el codi a aquesta versió del compilador. El número de versió dels subtítols indica la primera versió del compilador que admet els canvis següents.
Versió 2.40
Cap.
Versió 2.39 (Versió de seguretat funcional)
Cap.
Versió 2.36
Cap.
Versió 2.35
Manipulació de bases de corda (XCS-2420) Per garantir la coherència amb altres compiladors XC, les funcions de cadena XC8, com strtol () etc., ja no intentaran convertir una cadena d'entrada si la base especificada és més gran que 36 i, en canvi, establiran errno a EINVAL. L'estàndard C no especifica el comportament de les funcions quan se supera aquest valor base.
Optimitzacions de velocitat inadequades Les optimitzacions d'abstracció de procediments s'estaven habilitant en seleccionar optimitzacions de nivell 3 (-03). Aquestes optimitzacions redueixen la mida del codi a costa de la velocitat del codi, per la qual cosa no s'haurien d'haver realitzat. Els projectes que utilitzen aquest nivell d'optimització poden veure diferències en la mida del codi i la velocitat d'execució quan es creen amb aquesta versió.
Funcionalitat de la biblioteca El codi de moltes de les funcions estàndard de la biblioteca C ara prové de la biblioteca estàndard unificada de Microchip, que pot presentar un comportament diferent en algunes circumstàncies en comparació amb el que proporciona l'antiga biblioteca avr-libc. Per exampja no és necessari enllaçar a la biblioteca lprintf_flt (opció -print _flt) per activar el suport d'IO amb format per als especificadors de format flotant. Les funcions d'IO intel·ligent de la biblioteca estàndard unificada de Microchip fan que aquesta opció sigui redundant. A més, l'ús de rutines amb sufix _p per a funcions de cadena i memòria (per exemple, strcpy_P () etc .. ) que operen amb cadenes const en flash ja no és necessari. Les rutines C estàndard (per exemple, strcpy ()) funcionaran correctament amb aquestes dades quan la funció const-data-in-program-memory estigui habilitada.
Versió 2.32
Cap.
Versió 2.31
Cap.
Versió 2.30
Cap.
Versió 2.29 (Versió de seguretat funcional)
Cap.
Versió 2.20
S'ha canviat el disseny de DFP El compilador assumeix ara un disseny diferent utilitzat pels DFP (paquets familiars de dispositius). Això significarà que un DFP antic pot no funcionar amb aquesta versió i que els compiladors antics no podran utilitzar els DFP més recents.
Versió 2.19 (Versió de seguretat funcional)
Cap.
Versió 2.10
Cap
Versió 2.05
Const objectes a la memòria del programa Tingueu en compte que, per defecte, els objectes qualificats de const es col·locaran i s'accedeix a la memòria del programa (com es descriu aquí). Això afectarà la mida i la velocitat d'execució del vostre projecte, però hauria de reduir l'ús de RAM. Aquesta característica es pot desactivar, si cal, mitjançant l'opció -mnoconst- da ta-in-progmem.
Versió 2.00
Fusibles de configuració Els fusibles de configuració del dispositiu ara es poden programar mitjançant un pragma de configuració seguit de parells de valors per especificar l'estat del fusible, p.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Objectes i funcions absolutes Els objectes i les funcions ara es poden col·locar a una adreça específica a la memòria mitjançant l'especificador CCI _at (adreça), per exempleample: #inclou int foobar a(Ox800100); char at(Ox250) get ID(int offset) { … } L'argument d'aquest especificador ha de ser una constant que representi l'adreça on es col·locarà el primer byte o instrucció. Les adreces de RAM s'indiquen mitjançant un desplaçament de 0x800000. Habiliteu el CCI per utilitzar aquesta funció.
Nova sintaxi de la funció d'interrupció El compilador accepta ara l'especificador d'interrupcions CCI (num) per indicar que les funcions C són gestors d'interrupcions. L'especificador pren un número d'interrupció, per exempleample: #inclou void interrupció (SPI STC_ vect _num) spi Isr (void) { … }
Problemes solucionats
A continuació es mostren les correccions que s'han fet al compilador. Aquests poden corregir errors en el codi generat o alterar el funcionament del compilador segons el que estava previst o especificat per la guia de l'usuari. El número de versió dels subtítols indica la primera versió del compilador que conté solucions per als problemes següents. Les etiquetes entre parèntesis del títol són la identificació d'aquest problema a la base de dades de seguiment. Aquests poden ser útils si necessiteu contactar amb l'assistència.
Tingueu en compte que alguns problemes específics del dispositiu es corregeixen al paquet familiar de dispositius (DFP) associat al dispositiu. Consulteu el MPLAB Pack Manager per obtenir informació sobre els canvis fets als DFP i per descarregar els darrers paquets.
Versió 2.40
Massa relaxat (XCS-2876) Quan s'utilitzava l'opció -mrelax, el compilador no estava assignant algunes seccions juntes, el que resultava en mides de codi menys òptimes. Això podria haver passat amb codi que utilitzava les noves biblioteques MUSL o amb símbols febles.
La funció de mapatge no està desactivada tal com s'indica a l'advertiment (XCS-2875) La funció cost-data-in-config mappedprogmem depèn de la funció de cost-data-in-proem que s'hagi activat. Si la funció cost-data-ipconfig-mapped-proem s'ha activat explícitament mitjançant l'opció i la funció cost-data-inprogmem s'ha desactivat, el pas d'enllaç ha fallat, malgrat un missatge d'advertència que indica que el cons data-in-config-mapped- La funció proem s'havia desactivat automàticament, cosa que no era del tot correcta. La funció const-data-in-config-mapped-proem ara està completament desactivada en aquesta situació.
Canvis de DFP per accedir correctament a NVMCTRL (XCS-2848) El codi d'inici d'execució utilitzat pels dispositius AVR64EA no va tenir en compte que el registre NVMCTRL estava sota Protecció de canvis de configuració (CCP) i no va poder establir l'IO SFR a la pàgina utilitzada pel compilador const-data-in configmapped-proem característica. Els canvis fets a la versió 2.2.55 d'AVR-Ex_DFP permetran que el codi d'inici del temps d'execució escrigui correctament en aquest registre.
Canvis de DFP per evitar el mapeig flash (XCS-2847) S'ha implementat una solució per a un problema amb la funció del dispositiu de mapes flash que s'informa a l'errata de silicona AVR128DA28/32/48/64 (DS80000882). La funció del compilador const-data-in-config-mapped-proem no s'aplicarà de manera predeterminada als dispositius afectats i aquest canvi apareixerà a la versió 2.2.160 d'AVR-Ex_DFP.
Error de compilació amb sinhf o coshf (XCS-2834) Els intents d'utilitzar les funcions de biblioteca sinhf () o coshf () van donar lloc a un error d'enllaç, descrivint una referència no definida. La funció que falta a la qual es fa referència ara s'ha inclòs a la distribució del compilador.
Errors de compilació amb nopa (XCS-2833) L'ús de l'atribut nopa amb una funció que s'ha especificat el seu nom d'assemblador utilitzant com a () ha activat missatges d'error de l'assemblador. Aquesta combinació no és possible.
Error de funció variàdica amb arguments de punter (XCS-2755, XCS-2731) Les funcions amb un nombre variable d'arguments esperen que es passin punters de 24 bits (tipus _memo) a la llista d'arguments variables quan la característica cost-data-in-proem està habilitada. Els arguments que eren punters a la memòria de dades s'estaven passant com a objectes de 16 bits, provocant un error de codi quan finalment es van llegir. Quan la funció cons data-in-proem està habilitada, tots els arguments de punters de 16 bits es converteixen ara en punters de 24 bits. Funcions de biblioteca strtoxxx fallides (XCS-2620) Quan s'ha activat la funció const-data-in-proem, el paràmetre enter de les funcions de biblioteca strtoxxx no s'ha actualitzat correctament per als arguments de la cadena d'origen que no es troben a la memòria del programa.
Alertes d'emissions no vàlides (XCS-2612) El compilador ara emetrà un error si la funció de cost-in-proem està habilitada i l'adreça d'un literal de cadena s'emet explícitament a l'espai d'adreces de dades (eliminant el qualificador const), per exempleample, (uint8 t *) "Hola món!". Hi ha un avís si l'adreça pot ser no vàlida quan un punter de dades const s'emet explícitament a l'espai d'adreces de dades.
Col·locació d'objectes constants no inicialitzats (XCS-2408) Els objectes constants i constants no inicialitzats no s'estaven col·locant a la memòria del programa en dispositius que assignaven tota o part de la memòria del programa a l'espai d'adreces de dades. Per a aquests dispositius, aquests objectes es col·loquen ara a la memòria del programa, fent que el seu funcionament sigui coherent amb altres dispositius.
Versió 2.39 (Versió de seguretat funcional)
Cap.
Versió 2.36
Error en retardar (XCS-2774) Els canvis menors en les optimitzacions per defecte del mode lliure van impedir el plegat constant d'expressions d'operands a les funcions integrades de retard, donant lloc a que es tractessin com a no-contactes i desencadenaven l'error: _buil tin avr delay_ cycles expects ac ompile constant de temps enter.
Versió 2.35
Assignació contigua mitjançant _at (XCS-2653) L'assignació contigua de diversos llocs d'objectes en una secció amb el mateix nom i utilitzant a () no va funcionar correctament. Per example: constchararrl [ ] at tri butte ((sect on (".misses"))) at (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[ ] at tri butte ((secció(“.my s eke”))) = {Bou, bou FE }; hauria d'haver col·locat arr2 immediatament després d'aril.
Especificació de les adreces d'inici de la secció (XCS-2650) L'opció -Wal, –section-start no va poder col·locar les seccions en silenci a l'adreça inicial designada. Aquest problema s'ha solucionat per a les seccions amb nom personalitzat; tanmateix, no funcionarà per a cap secció estàndard, com ara . text o. bss, que s'ha de col·locar mitjançant una opció -Wl, -T.
L'enllaçador es bloqueja quan es relaxa (XCS-2647) Quan es va habilitar l'optimització -relax i hi havia codi o seccions de dades que no encaixaven a la memòria disponible, l'enllaçador es va bloquejar. Ara, en aquesta circumstància, s'emeten missatges d'error.
Accés EEPROM incorrecte (XCS-2629) La rutina de bloc de leproma _read_ no funcionava correctament als dispositius Mega quan s'habilitava l'opció -monist-data-in-proem (que és l'estat per defecte), donant com a resultat que la memòria EEPROM no es llegia correctament.
Assignació de memòria no vàlida (XCS-2593, XCS-2651) Quan l'opció d'enllaç -Text o -Tata (per examps'especifica el fitxer passat mitjançant una opció de controlador -Wl), s'ha actualitzat l'origen de la regió de text/dades corresponent; tanmateix, l'adreça final no es va ajustar en conseqüència, cosa que podria haver fet que la regió superés l'interval de memòria del dispositiu objectiu.
Codi d'interrupció ATtiny no vàlid (XCS-2465) Quan es van crear dispositius Tatin i es van desactivar les optimitzacions (-00), les funcions d'interrupció poden haver activat missatges d'operand fora de l'abast.
Opcions que no s'estan passant (XCS-2452) Quan s'utilitzava l'opció -Wl amb diverses opcions d'enllaç separades per comes, no totes les opcions de l'enllaç s'estaven passant a l'enllaçador.
Error en llegir indirectament la memòria del programa (XCS-2450) En alguns casos, el compilador va produir un error intern (insn irreconeixible) en llegir un valor de dos bytes d'un punter a la memòria del programa.
Versió 2.32
Falla el segon accés a la biblioteca (XCS-2381) Invocant la versió de Windows del xc8-ar. L'arxivador de la biblioteca exe una segona vegada per accedir a un arxiu de biblioteca existent pot haver fallat amb un missatge d'error de canvi de nom.
Versió 2.31
Errors inexplicables del compilador (XCS-2367) Quan s'executen en plataformes Windows que tenien el directori temporal del sistema establert en un camí que inclogués un punt'.' caràcter, és possible que el compilador no s'hagi pogut executar.
Versió 2.30
Etiquetes globals mal col·locades després d'esborrar (XCS-2299) És possible que el codi d'assemblatge escrit a mà que col·loca etiquetes globals dins de seqüències d'assemblatge que es descompten per l'abstracció procedimental no s'hagin reposicionat correctament.
Un accident relaxant (XCS-2287) L'ús de l'opció -merlad podria haver provocat que l'enllaçador es bloquegés quan les optimitzacions de relaxació del salt de cua intentaven eliminar les instruccions ret que no es trobaven al final d'una secció.
Error en optimitzar les etiquetes com a valors (XCS-2282) El codi que utilitza l'extensió del llenguatge GNU C "Etiquetes com a valors" podria haver provocat que les optimitzacions de l'abstracció de procediments s'estavellessin, amb un error de reparació de l'interval VMA descrit.
No tan constant (XCS-2271) Els prototips per a arrenca () i altres funcions des de ja no s'especifica el qualificador de cost no estàndard als punters de cadena retornats quan la funció -monist-data inprogmem està desactivada. Tingueu en compte que amb els dispositius avrxmega3 i avertin, aquesta funció està activada permanentment.
Inicialitzadors perduts (XCS-2269) Quan s'ha col·locat més d'una variable en una unitat de traducció en una secció (utilitzant la secció o l'atribut ((secció))), i la primera d'aquestes variables s'ha inicialitzat zero o no té un inicialitzador, els inicialitzadors per a altres variables de la mateixa unitat de traducció que estaven col·locats en el mateix tram es van perdre.
Versió 2.29 (Versió de seguretat funcional)
Cap.
Versió 2.20
Error amb ordres llargues (XCS-1983) Quan s'utilitza un objectiu AVR, és possible que el compilador s'hagi aturat amb a file error no trobat, si la línia d'ordres era extremadament gran i contenia caràcters especials com cometes, barres invertides, etc.
Secció de rodata no assignada (XCS-1920) L'enllaçador AVR no va poder assignar memòria per a seccions de rodata personalitzades quan es va crear per a arquitectures avrxmega3 i avrtiny, la qual cosa podria produir errors de superposició de memòria.
Versió 2.19 (Versió de seguretat funcional)
Cap.
Versió 2.10
Errors de reubicació (XCS-1891) L'assignador més adequat era deixar "forats" de memòria entre seccions després de la relaxació de l'enllaç. A part de la fragmentació de la memòria, això va augmentar la possibilitat que hi hagués errors de reubicació de l'enllaçador relacionats amb els salts relatius a l'ordinador o les trucades que quedessin fora de rang.
Instruccions no transformades per relaxació (XCS-1889) La relaxació de l'enllaç no s'ha produït per a les instruccions de salt o trucada, els objectius de les quals es poden arribar si estan relaxats.
Falta funcionalitat (XCSE-388) Diverses definicions de , com ara clock_div_t i clock_prescale_set (), no es van definir per als dispositius, inclosos els ATmega324PB, ATmega328PB, ATtiny441 i ATtiny841.
Falten macros El compilador no va definir automàticament les macros del preprocessador_ xcs _MODE_, _xcs VERSION, _xc i xcs. Aquests ja estan disponibles.
Versió 2.05
Error intern del compilador (XCS-1822) Quan es construeix amb Windows, es podria haver produït un error intern del compilador en optimitzar el codi.
Desbordament de memòria RAM no detectat (XCS-1800, XCS-1796) Els programes que superen la memòria RAM disponible no van ser detectats pel compilador en algunes situacions, donant lloc a una fallada del codi de temps d'execució.
Memòria flaix omesa (XCS-1792) Per als dispositius avrxmega3 i avrtiny, l'IDE MPLAB X podria haver deixat parts de la memòria flaix sense programar.
No s'ha pogut executar el principal (XCS-1788) En algunes situacions en què el programa no tenia variables globals definides, el codi d'inici en temps d'execució no es va sortir i la funció principal () no es va arribar mai.
Informació de memòria incorrecta (XCS-1787) Per als dispositius avrxmega3 i avrtiny, el programa avr-size informava que les dades de només lectura consumien RAM en lloc de memòria del programa.
Lectura incorrecta de la memòria del programa (XCS-1783) Els projectes compilats per a dispositius amb memòria de programa assignada a l'espai d'adreces de dades i que defineixen objectes mitjançant la macro/atribut PROGMEM poden haver llegit aquests objectes des de l'adreça incorrecta.
Error intern amb atributs (XCS-1773) S'ha produït un error intern si definiu objectes punter amb el
fitxes _at () o attribute() entre el nom del punter i el tipus no referenciat, per exempleample, char *
_a ( 0x80015 0) cp; Ara s'emet un avís si es troba aquest codi.
No s'ha pogut executar el principal (XCS-1780, XCS-1767, XCS-1754) L'ús de variables EEPROM o la definició de fusibles amb el pragma de configuració podria haver provocat una inicialització incorrecta de dades i/o bloquejat l'execució del programa al codi d'inici del temps d'execució, abans d'arribar a main () .
Error de fusible amb dispositius petits (XCS-1778, XCS-1742) Els dispositius attiny4/5/9/10/20/40 tenien una longitud de fusible incorrecta especificada a la seva capçalera files que donen lloc a errors d'enllaç quan s'intenta crear codi que defineix els fusibles.
Error de segmentació (XCS-1777) S'ha corregit un error de segmentació intermitent.
Causa del muntador (XCS-1761) L'assemblador avr-as podria haver fallat quan el compilador es va executar sota Ubuntu 18.
Objectes no esborrats (XCS-1752) És possible que el codi d'inici del temps d'execució no hagi esborrat els objectes de durada d'emmagatzematge estàtic no inicialitzat.
S'ha ignorat l'especificació del dispositiu en conflicte (XCS-1749) El compilador no generava cap error quan s'utilitzaven diverses opcions d'especificació de dispositius i indicava diferents dispositius.
Corrupció de memòria per munt (XCS-1748) El símbol d'inici heap_ s'estava configurant de manera incorrecta, donant lloc a la possibilitat que les variables ordinàries fossin malmeses per l'heap.
Error de reubicació de l'enllaçador (XCS-1739) Es podria haver emès un error de reubicació de l'enllaçador quan el codi contenia un rjmp o rcall amb un objectiu a exactament 4k bytes de distància.
Versió 2.00
Cap.
Problemes coneguts
Les següents són limitacions en el funcionament del compilador. Aquestes poden ser restriccions de codificació generals o
desviacions de la informació continguda al manual de l'usuari. Les etiquetes entre parèntesis del títol són la identificació d'aquest problema a la base de dades de seguiment. Això pot ser útil si necessiteu contactar amb l'assistència. Els elements que no tenen etiquetes són limitacions que descriuen el mode operandi i que és probable que es mantinguin vigents de manera permanent.
Integració MPLAB X IDE
Integració MPLAB IDE Si el compilador s'ha d'utilitzar des de l'IDE MPLAB, heu d'instal·lar l'IDE MPLAB abans d'instal·lar el compilador.
Generació de codi
Error d'assignació de memòria PA (XCS-2881) Quan s'utilitzen els optimitzadors d'abstracció de procediments, l'enllaçador pot informar d'errors d'assignació de memòria quan la mida del codi és propera a la quantitat de memòria de programa disponible al dispositiu, tot i que el programa hauria de poder adaptar-se a l'espai disponible.
Smart-IO no tan intel·ligent (XCS-2872) La funció smart-io del compilador generarà un codi vàlid però subòptim per a la funció sprint si s'ha desactivat la funció coast-data-in-proem o si el dispositiu té tot el seu flaix assignat a la memòria de dades.
Encara menys intel·ligent Smart-IO (XCS-2869) La funció smart-io del compilador generarà codi vàlid però subòptim quan s'utilitzin les opcions -floe i -fno-buil tin.
Col·locació subòptima de dades de només lectura (XCS-2849) Actualment, l'enllaçador no coneix les seccions de memòria APPCODE i APPDATA, ni les divisions [No-]Read-While-Write al mapa de memòria. Com a resultat, hi ha una petita possibilitat que l'enllaçador assigni dades de només lectura en una àrea de memòria inadequada. La probabilitat que les dades no es col·loquin augmenta si s'habilita la funció coast-data-in-pragma, especialment si la funció coast-data-in-config-mapped-proem també està habilitada. Aquestes funcions es poden desactivar si cal.
Objecte file ordre de processament (XCS-2863) L'ordre en què els objectes files seran processats per l'enllaçador poden variar segons l'ús d'optimitzacions d'abstracció procedimental (opció -mpa). Això només afectaria el codi que defineix funcions febles en diversos mòduls.
Error de l'enllaçador amb absolut (XCS-2777) Quan un objecte s'ha fet absolut en una adreça a l'inici de la memòria RAM i també s'han definit objectes no inicialitzats, es pot activar un error d'enllaç.
Identificadors de despertador breus (XCS-2775) Per als dispositius ATA5700/2, els registres PHID0/1 només es defineixen com a 16 bits d'amplada, en lloc de 32 bits d'amplada.
Error de l'enllaçador quan es truca el símbol (XCS-2758) L'enllaçador pot fallar si s'utilitza l'opció del controlador -merlad quan el codi font crida un símbol que s'ha definit mitjançant l'opció d'enllaç -Wl, –defsym.
Inicialització incorrecta (XCS-2679) Hi ha una discrepància entre on es col·loquen els valors inicials d'alguns objectes globals/estàtics de mida de bytes a la memòria de dades i on s'accedirà a les variables en temps d'execució.
s'ha iniciat incorrectament es posa buit (XCS-2652) En els casos en què una cadena d'assumpte per a la conversió per indicat () conté el que sembla ser un nombre de coma flotant en format exponencial i hi ha un caràcter inesperat després d'un caràcter e, l'adreça buida, si es proporciona, apuntarà al caràcter després la e i no la e mateixa. Per example: stated("hooey", buit); donarà lloc a un senyal buit al caràcter x.
Trucades a funcions indirectes incorrectes (XCS-2628) En alguns casos, les trucades de funcions fetes mitjançant un punter de funció emmagatzemat com a part d'una estructura poden fallar.
strtof retorna zero per a flotants hexadecimals (XCS-2626) Les funcions de biblioteca strtof () et al i scanf () et al, sempre convertiran un nombre hexadecimal de coma flotant que no especifiqui un exponent a
zero. Per example: estator ("Musol", &buit); retornarà el valor 0, no 1.
Missatges d'assessor de pila inexactes (XCS-2542, XCS-2541) En alguns casos, l'avís de l'assessor de pila sobre recursivitat o pila indeterminada utilitzada (possiblement mitjançant l'ús d'alloca()) no s'emet.
Error amb codi d'interrupció duplicat (XCS-2421) Quan més d'una funció d'interrupció té el mateix cos, el compilador pot tenir la sortida d'una funció d'interrupció cridada a l'altra. Això farà que tots els registres de trucada es desaran innecessàriament i les interrupcions s'habilitaran fins i tot abans que s'hagi executat l'epíleg del gestor d'interrupcions actual, cosa que podria provocar un error del codi.
Objectes Const no a la memòria del programa (XCS-2408) Per als projectes avrxmega3 i avertins, els objectes const no idealitzats es col·loquen a la memòria de dades, tot i que un avís suggereix que s'han col·locat a la memòria del programa. Això no afectarà els dispositius que no tinguin memòria de programa assignada a l'espai de memòria de dades, ni afectarà cap objecte que estigui inicialitzat.
Sortida incorrecta amb un camí DFP no vàlid (XCS-2376) Si s'invoca el compilador amb un camí de DFP no vàlid i una "especificació" file existeix per al dispositiu seleccionat, el compilador no informa del paquet familiar de dispositius que falta i, en canvi, selecciona l'"especificació" file, cosa que pot donar lloc a una sortida no vàlida. La "especificació" fileÉs possible que no estiguin actualitzats amb els DFP distribuïts i només estaven pensats per utilitzar-los amb proves internes del compilador.
Superposició de memòria no detectada (XCS-1966) El compilador no detecta la superposició de memòria d'objectes fets absoluts en una adreça (mitjançant at ()) i altres objectes utilitzant l'especificador de la secció () i que estan enllaçats a la mateixa adreça.
Error amb les funcions de la biblioteca i el _meme (XCS-1763) Les funcions flotants límbiques anomenades amb un argument a l'espai d'adreces _memo poden fallar. Tingueu en compte que les rutines de la biblioteca es criden des d'alguns operadors C, per tant, per exempleample, el codi següent està afectat: return regFloatVar > memxFloatVar;
Implementació límbica limitada (AVRTC-731) Per als productes ATTiny4/5/9/10/20/40, la implementació estàndard de la biblioteca C/Matemàtiques en límbic és molt limitada o no està present.
Limitacions de memòria del programa (AVRTC-732) La cadena d'eines admet les imatges de memòria del programa que superen els 128 kb; tanmateix, hi ha casos coneguts d'avortament de l'enllaçador sense relaxació i sense un missatge d'error útil en lloc de generar els talons de funció requerits quan s'utilitza l'opció -relax.
Limitacions d'espai de noms (AVRTC-733) Els espais d'adreces amb nom són compatibles amb la cadena d'eines, subjectes a les limitacions esmentades a la secció de la guia de l'usuari Qualificadors de tipus especials.
Zones horàries El Les funcions de la biblioteca assumeixen GMT i no admeten les zones horàries locals, per tant, l'hora local () tornarà a la mateixa hora que gummite (), per exempleample.
ATENCIÓ AL CLIENT
file:///Aplicacions/microehip/xc8/v 2 .40/docs/Read me_X C 8_ per a A VR. htm
Documents/Recursos
![]() |
Programari compilador MICROCHIP MPLAB XC8 C [pdfManual del propietari MPLAB XC8 C, MPLAB XC8 C Programari compilador, programari compilador, programari |