LOGO MICROCHIPMPLAB® XC8 C Compiler Versione 2.41 Note di rilascio per AVR® MCU
Manuale di u pruprietariu

Software di sviluppu di compilatore MPLAB XC8 C

QUESTU DOCUMENTU CONTENE INFORMAZIONI IMPORTANTI RELATIVE À U COMPILATORE MPLAB XC8 C QUAND TARGETING DISPOSITIVI MICROCHIP AVR.
PER FAVORE, LEGGIU PRIMA DI Eseguisce stu SOFTWARE. VEDE LE NOTE DI RILASCIO DI COMPILATOR MPLAB XC8 C PER I DOCUMENTI PIC SE UTILIZZATE U COMPILATORE PER DISPOSITIVI PIC 8-BIT.

Overview

1.1. Introduzione
Questa versione di u compilatore Microchip MPLAB® XC8 C cuntene parechje funzioni novi è correzioni di bug.
1.2. Data di custruzzione
A data di creazione ufficiale di sta versione di compilatore hè l'8 di ferraghju 2023.
1.3. Versione Precedente
A versione precedente di u compilatore MPLAB XC8 C era 2.40 custruitu u 3 di lugliu 2022.
1.4. Manuale di sicurezza funzionale
Un Manuale di Sicurezza Funzionale per i compilatori MPLAB XC hè dispunibule in u pacchettu di documentazione quandu avete acquistatu una licenza di sicurezza funzionale.
1.5. Licenze di cumpunenti è Versioni
U MPLAB XC8 C Compiler for AVR MCUs tools sò scritti è distribuiti sottu a GNU General Public License (GPL) chì significa chì u so codice fonte hè liberamente distribuitu è ​​dispunibule per u publicu.
U codice fonte per l'arnesi sottu a GNU GPL pò esse scaricatu separatamente da Microchip websitu. Pudete leghje a GNU GPL in u schedariu chjamatu situatu in u subdirectory di u vostru repertoriu di install license.txt avr/doc. Una discussione generale di i principii sottumessi à a GPL pò esse truvata quì.
U codice di supportu furnitu per i fugliali di l'intestazione, i script di linker, è e biblioteche di runtime sò codici proprietarii è micca coperti da a GPL.
Stu compilatore hè una implementazione di a versione GCC 5.4.0, a versione binutils 2.26, è usa a versione avr-libc 2.0.0.
1.6. Requisiti di u sistema
U compilatore MPLAB XC8 C è u software di licenza chì utilizeghja sò dispunibuli per una varietà di sistemi operativi, cumprese versioni 64-bit di i seguenti: Edizioni prufessiunale di Microsoft® Windows® 10; Ubuntu® 18.04; è macOS® 10.15.5. I binari per Windows sò stati firmati in codice. I binari per macOS sò stati firmati in codice è notarizzati. U MPLAB XC Network License Server hè dispunibule per una varietà di sistemi operativi 64-bit, cumpresu Microsoft Windows 10 è sopra; Ubuntu 18.04 è sopra; o macOS 10.15 è sopra. U servitore pò ancu eseguisce in diversi altri sistemi operativi cumpresi Windows Server, distribuzioni Linux, cum'è Oracle® Enterprise Linux® è Red Hate Enterprise Linux, è ancu versioni più vechje di sistemi operativi supportati. Tuttavia, u MPLAB XC Network License Server ùn hè micca pruvatu in questi sistemi operativi. U MPLAB XC Network License Server pò esse eseguitu nantu à Macchine Virtuali di u SO supportatu cù una licenza di macchina virtuale per licenze di rete (SW006021-VM). Tutte e versioni 32-bit di u Servitore di Rete MPLAB XC sò discontinuati da a versione 3.00.
Dispositivi Supportati
Stu compilatore supporta tutti i dispositi MCU AVR 8-bit dispunibili à u mumentu di a liberazione. Vede (in u cartulare di u compilatore) per una lista di tutti i dispositi supportati. Sti schedari dinù lista
avr_chipinfo.html paràmetri di bit di cunfigurazione doc per ogni dispusitivu.

1.7. Edizioni è aghjurnamenti di licenza
U compilatore MPLAB XC8 pò esse attivatu cum'è un pruduttu licenziatu (PRO) o senza licenza (gratuitu). Avete bisognu di cumprà una chjave di attivazione per licenze u vostru compilatore. Una licenza permette un livellu più altu di ottimisazione cumparatu cù u pruduttu Free. Un compilatore senza licenza pò esse operatu indefinitu senza licenza. Un compilatore MPLAB XC8 Functional Safety deve esse attivatu cù una licenza di sicurezza funzionale acquistata da Microchip. U compilatore ùn operarà micca senza sta licenza. Una volta attivatu, pudete selezziunate qualsiasi livellu di ottimisazione è aduprà tutte e funzioni di compilatore. Questa versione di MPLAB XC Functional Safety Compiler supporta a Licenza di u Servitore di Rete.
Vede u documentu Installazione è Licenza MPLAB XC C Compilers (DS50002059) per infurmazione nantu à i tipi di licenza è l'installazione di u compilatore cù una licenza.

1.8. Installazione è Attivazione
Vede ancu e rùbbriche Migration Issues and Limitations per infurmazione impurtante nantu à l'ultimu gestore di licenza inclusu cù stu compilatore.
Sè aduprate MPLAB IDE, assicuratevi di stallà l'ultima versione MPLAB X IDE 5.0 o più tardi prima di stallà sta strumentu. Quit l'IDE prima di installà u compilatore. Eseguite l'applicazione (Windows), (Linux) o (macOS) .exe .run .app compilatore installatore, per esempiu, è seguite e indicazioni nantu à u screnu. XC8-1.00.11403-windows.exe U cartulare di installazione predeterminatu hè cunsigliatu. Sè vo aduprate Linux, duvete installà u compilatore cù un terminal è da un contu root. Installa cù un contu macOS cù privilegi di amministratore.
L'attivazione hè avà realizata separatamente à a stallazione. Vede u documentu License Manager for MPLAB® XC C Compilers (DS52059) per più infurmazione.
Se sceglite di eseguisce u compilatore sottu a licenza di valutazione, avà uttene un avvisu durante a compilazione quandu site in 14 ghjorni da a fine di u vostru periodu di valutazione. U listessu avvisu hè emessu se site in 14 ghjorni da a fine di u vostru abbonamentu HPA.
U XC Network License Server hè un installatore separatu è ùn hè micca inclusu in l'installatore di compilatore unicu utilizatore.
U XC License Manager supporta avà u roaming di licenze di rete flottante. Destinata à l'utilizatori di u telefuninu, sta funzione permette à una licenza flottante per andà fora di a rete per un cortu periodu di tempu. Utilizendu sta funzione, pudete disconnect da a reta è ancu aduprà u vostru compilatore MPLAB XC. Vede u cartulare doc di l'installazione XCLM per più nantu à sta funzione.
MPLAB X IDE include una finestra di Licenze (Strumenti> Licenze) per gestisce visualmente u roaming.

1.8.1. Risolve i prublemi di stallazione
Sè avete difficultà à installà u compilatore in qualsiasi di i sistemi operativi Windows, pruvate i seguenti suggerimenti.
Eseguite l'installazione cum'è amministratore.
Pone i permessi di l'applicazione installatore à "Controllu cumpletu". (Cliccate cù u dirittu di u fugliale, selezziunate Pruprietà, scheda Sicurezza, selezziunate l'utilizatore, edità.)
Stabbilisce i permessi di u cartulare temp à 'Full Control'.
Per determinà u locu di u cartulare temp, scrivite %temp% in u cumandamentu Run (key logu Windows + R).
Questu aprirà un dialogu di l'esploratore di u schedariu chì mostra quellu cartulare è vi permetterà di determinà u percorsu di quellu cartulare.
1.9. Documentazione di compilatore
I guide di l'utilizatori di u compilatore ponu esse aperti da a pagina HTML chì si apre in u vostru navigatore quandu clicchendu u buttone d'aiutu blu in MPLAB X IDE dashboard, cum'è indicatu in a screenshot.

Se stai custruendu per obiettivi AVR 8-bit, a Guida di l'Usuariu di u Compiler MPLAB® XC8 C per AVR® MCU cuntene informazioni nantu à l'opzioni è e funzioni di compilatore chì sò applicabili à questa architettura.

MICROCHIP MPLAB XC8 C Software di sviluppu di compilatore -

1.10.Assistenza Clienti
Microchip accoglie rapporti di bug, suggerimenti o cumenti riguardanti sta versione di compilatore. Per piacè dirighjite ogni rapportu di bug o dumande di funziunalità via u Sistema di Supportu.

Aggiornamenti di Documentazione

Per versioni in linea è aggiornate di a documentazione MPLAB XC8, visitate a Documentazione Tecnica Online di Microchip. websitu. Documentazione AVR nova o aghjurnata in questa versione:

  • MPLAB® XC8 C Compiler User's Guide for AVR® MCU (revision G)
  • AVR® GNU Toolchain to MPLAB® XC8 Migration Guide (revision A)
  • Hexmate User's Guide (revisione B)

A Guida di Migrazione di AVR® GNU Toolchain à MPLAB® XC8 descrive i cambiamenti à u codice fonte è l'opzioni di creazione chì puderanu esse richiesti se decide di migre un prughjettu basatu in C da l'AVR 8-bit GNU Toolchain à u Microchip MPLAB XC8 C Compiler. U Microchip Unified Standard Library Reference Guide descrive u cumpurtamentu è l'interfaccia à e funzioni definite da a Microchip Unified Standard Library, è ancu l'usu destinatu di i tipi di biblioteca è macros. Alcune di queste informazioni eranu precedentemente contenute in u MPLAB® XC8 C Compiler User's Guide for AVR® MCU. L'infurmazione di a biblioteca specifica di u dispositivu hè sempre cuntenuta in questa guida di compilatore.
Sè avete appena principiatu cù i dispositi 8-bit è u compilatore MPLAB XC8 C, a Guida di l'Usuariu MPLAB® XC8 per Ingegneri Embedded - AVR® MCUs (DS50003108) hà informazioni nantu à a creazione di prughjetti in l'IDE MPLAB X è scrive u codice per u vostru IDE. primu prughjettu MPLAB XC8 C. Sta guida hè avà distribuita cù u compilatore.
A Guida di l'Usuariu di Hexmate hè destinata à quelli chì utilizanu Hexmate cum'è una applicazione stand-alone.

Cosa hè Novu

I seguenti sò novi funzioni AVR-target chì u compilatore supporta avà. U numeru di versione in i subtituli indica a prima versione di compilatore per sustene e funzioni chì seguitanu.
3.1. Versione 2.41
Supportu Bootrow (XC8-3053) U compilatore metterà u cuntenutu di ogni rùbbrica cù un prefissu at.bootrow indirizzu 0x860000 in u schedariu HEX. Queste rùbbriche sò aduprate per a memoria BOOTROW, chì hè pensata per l'almacenamiento di chjavi è altre infurmazione sicura chì deve esse accessibile solu per un bootloader.

Eliminazione di u ritornu redundante (XC8-3048) U compilatore avà eliminà l'istruzzioni redundante in e funzioni ret cun un saltu di coda quandu sò usati script di linker persunalizati. Questa hè una ottimisazione simili à quella eseguita prima, ma hè avà eseguita nantu à tutte e sezioni orfane, ancu s'ellu hè adupratu un script di linker persunalizatu è u schema di allocazione megliu adattatu ùn hè micca in ghjocu. U cambiamentu di u tipu di tempu (XC8-2982, 2932) U tipu di libreria standard C99, hè statu cambiatu da un time_t à un tipu, chì dà megliurenze di a dimensione di codice in certi funzioni longu longu, cum'è. unsigned long mktime ()
New nop (XC8-2946, 2945) A macro hè stata aghjunta. Questa macro inserisce un no-NOP() istruzzioni di operazione nop in l'output.
Aghjurnà à XCLM (XC8-2944) U gestore di licenza utilizatu cù u compilatore hè statu aghjurnatu è hè avà più responsive quandu verificate i dettagli di licenza di u compilatore.
TrampChjama olined (XC8-2760) U compilatore pò avà eseguisce a sostituzione di l'istruzzioni di chjama di forma longa cù chjamate relative più brevi quandu e forme relative di l'istruzzioni sò normalment fora di u so destinazione. In questa situazione, u compilatore prova à rimpiazzà cù struzzioni per chjamà rcall una struzzione chì "trampoline' esecuzione à l'indirizzu necessariu, per esample: jmp
rcall tramp_foo; era chjamatu foo

rcall tramp_fou

tramp_fou:
jmp foo

Questa ottimisazione, inseme cù ottimisazioni di flussu di prugramma simili, hè cuntrullata da l'opzione -mrelax.

3.2. Versione 2.40
U supportu di u novu dispositivu Supportu hè avà dispunibule per e seguenti parti AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32, AVR64, e AVR48.
Astrazione procedurale mejorata L'uttellu di ottimisazione di astrazione procedurale (PA) hè statu migliuratu in modu chì u codice chì cuntene una struzzione di chjama di funzione (/ ) pò esse utilizatu. Questu serà solu chjamatu rcall se a pila ùn hè micca usata per passà argumenti nè ottene u valore di ritornu da a funzione. A pila hè aduprata quandu chjamà una funzione cù una lista d'argumenti variàbbili o quandu chjamà una funzione chì piglia più argumenti chì ci sò registri designati per questu scopu. Questa funzione pò esse disattivata usendu l'opzione, o l'astrazione procedurale pò esse disattivata interamente per un schedariu d'ughjettu o una funzione usendu l'- è, rispettivamente, o usendu l'attributu (specificu) selettivamente cù e funzioni.
mno-pa-outline-calls -mno-pa-on-file -mno-pa-on-function nopa Macro di copertura di codice U compilatore ora definisce a macro se una opzione valida hè __nopa __CODECOV -mcodecov specificata.
Opzione di riservazione di memoria U cunduttore avà accettà l'opzione xc8-cc -mreserve=space@start:end quandu custruisce per i miri AVR. Questa opzione riserva a gamma di memoria specifica in u spaziu di memoria di dati o di u prugramma, impediscendu chì u linker pò populate codice o oggetti in questa zona. Smarter smart IO Diversi miglioramenti sò stati fatti à e funzioni Smart IO, cumprese tweaks generale à u codice core printf, trattandu u specificatore di cunversione %n cum'è una variante indipendente, liendu in vararg pop routines on demand, usendu tipi di dati più brevi induve pussibule per a gestione. Argumenti di funzione IO, è factoring codice cumuni in larghezza di campu è gestione di precisione. Questu pò esse risultatu in un risparmiu significativu di codice è di dati, è ancu di aumentà a velocità di esecuzione di IO.

3.3. Versione 2.39 (Release Functional Safety)
Licenza di u Servitore di Rete Questa versione di MPLAB XC8 Functional Safety Compiler supporta a Licenza di u Servitore di Rete.
3.4. Versione 2.36
Nimu.

3.5. Versione 2.35
U supportu di novu dispositivu Supportu hè dispunibule per e seguenti parti AVR: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28, è AVR64DD32.
Cambiamentu di u cuntestu migliuratu A nova opzione -mcall-isr-prologues cambia cumu e funzioni d'interruzzione salvanu i registri in l'entrata è cumu questi registri sò restaurati quandu a rutina di interruzzione finisce. Funziona in una manera simile à l'opzione -mcall-prologues, ma affetta solu e funzioni di interruzzione (ISR).
A nova opzione -mgas-isr-prologues cuntrolla u codice di cambiamentu di u cuntestu generatu per e petite rutine di serviziu di interruzzione. Quandu hè attivata, sta funzione farà chì l'assembler scansà l'ISR per l'usu di u registru è salverà solu questi registri usati se necessariu.
Mapping flash configurable Certi dispositi in a famiglia AVR DA è AVR DB anu un SFR (per esempiu, FLMAP) chì specifica quale sezione 32k di memoria di prugramma serà mappata in a memoria di dati. A nova opzione - mconst-data-in-config-mapped-progmem pò esse aduprata per avè u linker mette tutte e dati cunst-qualificati in una sezione 32k è inizializza automaticamente u registru SFR pertinente per assicurà chì questi dati sò mappati in a memoria di dati. spaziu, induve serà accessu più efficace.
Microchip Unified Standard Libraries Tutti i compilatori MPLAB XC sparteranu una Microchip Unified Standard Library, chì hè avà dispunibule cù questa versione di MPLAB XC8. A MPLA# XC8 C Compiler User's Guide for AVO MCU ùn include più a documentazione per queste funzioni standard. Questa infurmazione pò esse truvata in u Microchip Unified Standard Library Reference Guide. Nota chì alcune funziunalità definite prima da avr-libc ùn sò più dispunibili. (Vede a funziunalità Lila.)
Smart I0 In parte di e novi biblioteche unificate, e funzioni I0 in e famiglii printf è scanf sò oghji persunalizate nantu à ogni custruzzione, basatu annantu à cumu si usanu sti funzioni in u prugramma. Questu pò riduce significativamente i risorse utilizati da un prugramma.
Opzione di assistenza Smart ICI Quandu analizà e chjama à e funzioni intelligenti I0 (cum'è stampa f () o scanf ()), u compilatore ùn pò micca sempre determinà da a stringa di furmatu o inferisce da l'argumenti quelli specificatori di cunversione richiesti da a chjama. In precedenza, u compilatore ùn facia sempre micca ipotesi è assicurava chì e funzioni cumpletamente funziunali 10 eranu ligati à l'imaghjini di u prugramma finale. Una nova opzione - msmart-io-format = fmt hè stata aghjunta in modu chì u compilatore pò esse infurmatu da l'utilizatori di i specificatori di cunversione utilizati da funzioni intelligenti I0 chì l'usu hè ambiguu, impediscendu chì e rutine 10 eccessivamente longu sò ligati. (Vede l'opzione smart-io-format per più dettagli.)
Pone e sezioni persunalizate In precedenza, l'opzione -W1, -section-start hà postu solu a sezione specifica à l'indirizzu dumandatu quandu u script di linker hà definitu una sezione di output cù u stessu nome. Quandu ùn era micca u casu, a rùbbrica hè stata posta à un indirizzu sceltu da u linker è l'opzione era essenzialmente ignorata. Avà l'opzione serà onorata per tutte e rùbbriche persunalizate, ancu s'è u script di linker ùn definisce micca a sezione. Nota, però, chì per e sezioni standard, cum'è . testu,. bss o. dati, l'allocatore più adattatu avarà sempre un cuntrollu tutale di a so piazzamentu, è l'opzione ùn hà micca effettu. Aduprate l'opzione -ton, -Tsection=addr, cum'è descritta in a guida di l'utilizatori.
3.6. Versione 2.32
Stack Guidance Disponibile cù una licenza di compilatore PRO, a funzione di guida di stack di u compilatore pò esse aduprata per stimà a prufundità massima di ogni pila utilizata da un prugramma. Custruisce è analizà u graficu di chjama di un prugramma, determina l'usu di stack di ogni funzione, è pruduce un rapportu, da quale a prufundità di stacks utilizati da u prugramma pò esse inferitu. Questa funzione hè attivata attraversu l'opzione di linea di cummanda -mchp-stack-usage. Un riassuntu di l'usu di stack hè stampatu dopu l'esekzione. Un rapportu di stack detallatu hè dispunibule in a mappa file, chì pò esse dumandatu in u modu di solitu.
U supportu di u novu dispositivu Supportu hè dispunibule per e seguenti parti AVR: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVR16DB28, AVR16DB32 U supportu di u dispositivu ritiratu U supportu ùn hè più dispunibule per e seguenti parti AVR: AVR16DA48, AVRXNUMXDAXNUMX è, AVRXNUMXDAXNUMX.
3.7. Versione 2.31
Nimu.
3.8. Versione 2.30
Nova opzione per impedisce l'inizializazione di dati Una nova opzione di driver -mno-data-init impedisce l'inizializazione di dati è a sbulicità di e sezioni bss. Funziona suppressing the output of the do copy data and do clear bss symbols in assembly files, chì à u turnu impediscenu l'inclusione di quelli rutini da u linker.
Ottimisazioni migliorate Una quantità di migliuramentu di ottimisazione sò stati fatti, cumpresa a rimuzione di l'istruzzioni di ritornu redundante, a rimuzione di qualchi salti dopu à una struzzione skip-if-bit-is, è l'astrazione procedurale mejorata è a capacità di iterà stu prucessu. Opzioni supplementari sò avà dispunibuli per cuntrullà alcune di queste ottimisazioni, in particulare -f section-anchors, chì permette l'accessu di l'uggetti statichi per esse realizatu relative à un simbulu; -mpa-iterations=n, chì permette u numeru di iterazioni di astrazione procedurale per esse cambiatu da u predeterminatu di 2; è, -mpa-callcost-shortcall, chì eseguisce una astrazione procedurale più aggressiva, in a speranza chì u linker pò rilassà e chjama longu. Quest'ultima opzione pò aumentà a dimensione di u codice se l'assunzioni sottostanti ùn sò micca realizati.
U supportu di u novu dispositivu Supportu hè dispunibule per e seguenti parti AVR: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DA28, AVR128, AVR32, AVR128, AVR48DA128 64DB5272. U supportu di supportu di u dispositivu ritiratu ùn hè più dispunibule per e seguenti parti AVR: ATA5790, ATA5790, ATA5791N, ATA5795, ATA6285, ATA6286, ATA6612, ATA6613C, ATA6614C, ATA6616Q, ATA6617Q, ATA664251CXNUMX, ATAXNUMX.
3.9. Versione 2.29 (Release Functional Safety)
Intestazione file per i cumpilatori integrati Per assicurà chì u compilatore pò cunforme à e specificazioni di lingua cum'è MISRA, u intestazione file, chì hè automaticamente inclusu da , hè stata aghjurnata. Questu header cuntene i prototipi per tutte e funzioni integrate, cum'è builtin_avr_nop ( ) è builtin avr delay_cycles () . Certi integrati ùn ponu micca esse conformi à MISRA; questi ponu esse omessi aghjunghjendu u defineXCSTRICT_MISRA à a linea di cummanda di compilatore. I integrati è e so dichjarazioni sò stati aghjurnati per utilizà tipi di larghezza fissa.
3.10. Versione 2.20
U supportu di novu dispositivu Supportu hè dispunibule per e seguenti parti AVR: ATTINY1624, ATTINY1626, è ATTINY1627.
U megliu allocatore megliu (BFA) in u compilatore hè statu migliuratu per chì e sezioni sò attribuite in un ordine chì permette una ottimisazione megliu. U BFA supporta avà i spazii d'indirizzu chjamatu è gestisce megliu l'inizializazione di dati.
Astrazione procedurale mejorata L'ottimisazioni di astrazione procedurale sò avà eseguite nantu à più sequenze di codice. Situazioni precedenti induve sta ottimisazione puderia avè aumentatu a dimensione di u codice sò stati indirizzati facendu u codice di ottimisazione cunsciente di u prucessu di raccolta di basura di u linker.
Assenza di l'Assembler AVR L'Assembler AVR ùn hè più inclusu cù sta distribuzione.
3.11. Versione 2.19 (Release Functional Safety)
Nimu.
3.12. Versione 2.10
Copertura di codice Questa liberazione include una funzione di copertura di codice chì facilita l'analisi di a misura in quale u codice fonte di un prughjettu hè statu eseguitu. Aduprate l'opzione -mcodecov=ram per attivà. Dopu l'esekzione di u prugramma nantu à u vostru hardware, l'infurmazioni di a cobertura di u codice seranu collate in u dispositivu, è questu pò esse trasferitu è ​​mostratu da MPLAB X IDE via un plugin di copertura di codice. Vede a documentazione IDE per infurmazione nantu à stu plugin pò esse acquistatu. U #pragma nocodecov pò esse usatu per escludiri e funzioni successive da l'analisi di copertura. Ideale, u pragma deve esse aghjuntu à u principiu di u file per escludiri tuttu file da l'analisi di a cobertura. In alternativa, u _attribute_ ((nocodecov)) pò esse usatu per escludiri una funzione specifica da l'analisi di a cobertura.
Descrizzione di u dispusitivu files Un novu dispusitivu file chjamatu avr_chipinfo . html hè situatu in u cartulare docs di a distribuzione compilatore. Questu file elenca tutti i dispositi supportati da u compilatore. Cliccate nant'à u nome di un dispositivu, è apre una pagina chì mostra tutte l'impostazioni di cunfigurazione permissibile / u dolore di valore per quellu dispusitivu, cù ex.amples. Astrazzioni prucedurali
L'ottimisazioni di astrazione procedurali, chì rimpiazzanu i blocchi cumuni di codice di assemblea cù chjamate à una copia estratta di quellu bloccu, sò stati aghjunti à u compilatore. Quessi sò realizati da una applicazione separata, chì hè automaticamente invucata da u compilatore quandu selezziunate u nivellu 2, 3 o s ottimisazioni. Queste ottimisazioni riducenu a dimensione di u codice, ma ponu riduce a velocità di esecuzione è a debugability di codice. L'astrazione procedurale pò esse disattivata à livelli di ottimisazione più altu cù l'opzione -mno-pa, o pò esse attivata à livelli di ottimisazione più bassi (sughjettu à a vostra licenza) utilizendu -mpa. Pò esse disattivatu per un oggettu file usendu -mno-pa-on-file=filenome, o disabilitatu per una funzione usendu -mno-pa-on-function=funzione. Dentru u vostru codice fonte, l'astrazione procedurale pò esse disattivata per una funzione usendu l'attributu ((nopa)) cù a definizione di a funzione, o usendu nopa, chì si espande à l'attributu ((nopa, noinline)) è cusì impedisce a funzione inlining da esse realizatu. è ci hè astrazione di codice inlineed.
Supportu di bit di bloccu in pragma A config #pragma pò esse usata avà per specificà i bit di bloccu AVR è ancu l'altri bit di cunfigurazione. Verificate avr_chipinfo. html file (citatu sopra) per i paràmetri / valore per aduprà cù stu pragma. U supportu di novu dispositivu Supportu hè dispunibule per e seguenti parti: AVR28DAl28, AVR64DAl28, AVR32DA 128, è AVR48DA 128.
3.13. Versione 2.05
More bits for your buck A versione macOS di stu compilatore è gestore di licenza hè avà una applicazione 64-bit. Questu hà da assicurà chì u compilatore installerà è eseguirà senza avvisi nantu à e versioni recenti di macOS.
Const objects in memoria di u prugramma U compilatore pò avà mette l'uggetti cust-qualificati in u prugramma memoria Flash, invece di avè questi situati in RAM. U compilatore hè statu mudificatu in modu chì i dati globale cuns t-qualificati sò almacenati in a memoria flash di u prugramma è sta dati ponu accede direttamente è indirettamente cù l'istruzzioni appropritate di u prugramma. Questa nova funzione hè attivata per automaticamente, ma pò esse disattivata cù l'opzione -mno-const-data-in-progmem. Per l'architetture avrxmega3 è avrtiny, sta funzione ùn hè micca necessariu è hè sempre disattivata, postu chì a memoria di u prugramma hè mappata in u spaziu di l'indirizzu di dati per questi dispositi.
Standard for free Versioni senza licenza (Free) di stu compilatore ora permettenu ottimisazioni finu à u nivellu 2. Questu permetterà un output simili, ancu s'ellu ùn hè micca identicu, à ciò chì prima era pussibule cù una licenza Standard.
Benvenuti AVRASM2 L'assembler AVRASM2 per i dispositi 8-bit hè avà inclusu in l'installatore di compilatore XC8. Questu assembler ùn hè micca utilizatu da u compilatore XC8, ma hè dispunibule per i prughjetti basati nantu à a fonte d'assemblea scritta a manu.
U supportu di u novu dispositivu Supportu hè dispunibule per e seguenti parti: ATMEGA1608, ATMEGA1609, ATMEGA808 è ATMEGA809.

3.14. Versione 2.00
Driver di primu livellu Un novu driver, chjamatu xc8-cc, si trova avà sopra u driver avr-gcc precedente è u driver xc8, è pò chjamà u compilatore appropritatu basatu nantu à a selezzione di u dispusitivu di destinazione. Stu driver accetta l'opzioni di stile GCC, chì sò sia tradutti per o passati à u compilatore chì hè eseguitu. Stu driver permette un settore simili d'opzioni cù semantica simili per esse utilizatu cù qualsiasi destinazione AVR o PIC è hè cusì u modu cunsigliatu per invucà u compilatore. Se necessariu, u vechju driver avr-gcc pò esse chjamatu direttamente utilizendu l'opzioni di u vechju stilu accettatu in versioni di compilatori precedenti.
Interfaccia C Comuna Stu compilatore pò avà cunfurmà à l'Interfaccia C Commune MPLAB, chì permette à u codice fonte per esse più facilmente purtatu in tutti i compilatori MPLAB XC. L'opzione -mext=cci richiede sta funzione, chì permette una sintassi alternativa per parechje estensioni di lingua.
Un novu driver di bibliotecariu Un novu driver di bibliotecariu hè posizionatu sopra à u bibliotecariu PIC librariu precedente è u bibliotecariu AVR avr-ar. Stu driver accetta l'opzioni in stile GCC-archiver, chì sò sia tradutti per o trasmessi à u bibliotecariu chì hè eseguitu. U novu driver permette un settore simili di opzioni cù semantica simili per esse utilizatu per creà o manipulà qualsiasi libreria PIC o AVR. file è hè cusì u modu cunsigliatu per invucà u bibliotecariu. Se necessariu per i prughjetti legati, u bibliotecariu precedente pò esse chjamatu direttamente utilizendu l'opzioni di u vechju stile chì accettava in versioni di compilatori precedenti.

Problemi di migrazione

I seguenti sò funziunalità chì sò avà trattati in modu diversu da u compilatore. Questi cambiamenti ponu esse bisognu di mudificazione di u vostru codice fonte se porta u codice à sta versione di compilatore. U numeru di versione in i subtituli indica a prima versione di compilatore per sustene i cambiamenti chì seguitanu.

4.1. Versione 2.41
Funzioni fma imprecise eliminate (XC8-2913) A libreria standard C99 fma 0 -funzioni di famiglia ( ) ùn hà micca calculatu una multiplicazione-aghjunghje cun precisione infinita à un arrotondamentu unicu, ma invece hà accumulatu errori di arrotondamentu cù ogni operazione. Queste funzioni sò state eliminate da a biblioteca furnita.
4.2. Versione 2.40
Nimu.
4.3. Versione 2.39 (Release Functional Safety)
Nimu.
4.4. Versione 2.36 Nimu.
4.5. Versione 2.35
Manipulazione di basi di stringa (XC8-2420) Per assicurà a coerenza cù altri compilatori XC, e funzioni di stringa di XC8, cum'è strtol () etc., ùn pruvaranu più di cunvertisce una stringa di input se a basa specificata hè più grande di 36. è invece mette errno à EINVAL. U standard C ùn specifica micca u cumpurtamentu di e funzioni quandu stu valore di basa hè superatu.
Ottimisazioni di velocità inappropriate L'ottimisazioni di astrazione procedurali sò state attivate quandu selezziunate l'ottimisazioni di livellu 3 (-03). Queste ottimisazioni reducenu a dimensione di u codice à a spesa di a velocità di u codice, cusì ùn deve micca esse realizatu. I prughjetti chì utilizanu stu livellu di ottimisazione puderanu vede differenze in a dimensione di u codice è a velocità di esecuzione quandu sò custruiti cù questa versione.
Funzionalità di a biblioteca U codice per parechje di e funzioni standard di a libreria C vene avà da a Biblioteca Standard Unificata di Microchip, chì puderia esibisce un cumpurtamentu diversu in certe circustanze paragunatu à quellu furnitu da l'antica biblioteca avr-libc. Per esample, ùn hè più necessariu di ligà in a libreria 1printf flt (opzione -1printf_flt) per attivà u furmatu I0 supportu per i specificatori di formatu float. L'intelligente I0 caratteristiche di a Biblioteca Standard Unificata Microchip rende questa opzione redundante. Inoltre, l'usu di rutini suffissi _P per e funzioni di stringa è di memoria (per esempiu strcpy_P ( ) etc..) chì operanu nantu à strings const in flash ùn sò più necessarii. I rutini standard C (p.e. strcpy ) funzionanu currettamente cù tali dati quandu a funzione const-data-in-program-memory hè attivata.

4.6. Versione 2.32
Nimu.
4.7. Versione 2.31
Nimu.
4.8. Versione 2.30
Nimu.
4.1. Versione 2.29 (Release Functional Safety)
Nimu.
4.2. Versione 2.20
U layout DFP hà cambiatu U compilatore assume avà un layout sfarente utilizatu da i DFP (Pacchetti di Famiglia di Dispositivi). Questu significarà chì un DFP più anticu puderia micca travaglià cù questa versione, è i compilatori più vechji ùn puderanu micca aduprà l'ultimi DFP.
4.3. Versione 2.19 (Release Functional Safety)
Nimu.
4.4. Versione 2.10
Nimu
4.5. Versione 2.05
Cust objects in memoria di prugramma Nota chì l'uggetti cust-qualfiied per difettu seranu posti è accede in a memoria di u prugramma (cum'è a tonalità descritta). Questu affetterà a dimensione è a velocità di esecuzione di u vostru prughjettu, ma duverebbe riduce l'usu di RAM. Questa funzione pò esse disattivata, se necessariu, utilizendu l'opzione -mnoconst-data-in-progmem.
4.6. Versione 2.00
Fusibili di cunfigurazione I fusibili di cunfigurazione di u dispositivu ponu avà programatu cù un pragma di cunfigurazione seguitu da coppie di valore per specificà u statu di fusibile, per esempiu.
#pragma config WDTON = SET
#pragma config BODLEVEL = BODLEVEL_4V3
Oggetti assoluti è funzioni L'uggetti è e funzioni ponu avà esse posti in un indirizzu specificu in memoria utilizendu u specificatore CCI (indirizzu), per es.ampLe:
#include
int foobar_at (0x800100);
char __at (0x250) getID (int offset) { … }
L'argumentu à questu specificatore deve esse una constante chì rapprisenta l'indirizzu à quale u primu byte o struzzione serà postu. L'indirizzi RAM sò indicati cù un offset di 0x800000. Abilita a CCI per aduprà sta funzione.
Nova sintassi di funzione di interruzzione U compilatore accetta avà l'indicatore CCI _interrupt (num) per indicà chì e funzioni C sò gestori di interrupt. U specifier piglia un numeru di interruzzione, per esempiuampLe:
#include
void __interrupt(SPI_STC_vect_num) spi_Isr(void) { … }

Problemi fissi

I seguenti sò currezzione chì sò state fatte à u compilatore. Quessi puderanu riparà bugs in u codice generatu o alteranu l'operazione di u compilatore à quellu chì era previstu o specificatu da a guida di l'utilizatori. U numeru di versione in i sottotitoli indica a prima versione di compilatore per cuntene correzioni per i prublemi chì seguitanu. L'etichetta (s) in u tìtulu sò l'identificazione di quellu prublema in a basa di dati di seguimentu. Quessi ponu esse utili se avete bisognu di cuntattà u supportu.
Nota chì certi prublemi specifichi di u dispositivu sò corretti in u Device Family Pack (DFP) assuciatu cù u dispusitivu. Vede u MPLAB Pack Manager per infurmazione nantu à i cambiamenti fatti à DFP è per scaricà l'ultimi pacchetti.

5.1. Versione 2.41
Problemi di Dongle nantu à Ventura (XC8-3088) Dongles utilizatu per licenze u compilatore puderia micca esse lettu bè nantu à l'ospiti di macOS Ventura, risultatu in fallimenti di licenze. I cambiamenti à u gestore di licenze XCLM corregnu stu prublema.
Indicazione sbagliata di allocazione di memoria (XC8-2925) Tentativu di assignà SIZE_MAX byte (o un valore vicinu à questu) di memoria utilizendu e funzioni standard di gestione di a memoria di a biblioteca (malloc () et al) hà successu in modu incorrectu. Ùn hà micca pigliatu in contu chì i byte extra eranu necessarii in più di u bloccu dumandatu quandu si usa l'implementazione simplice di allocazione di memoria dinamica. Un puntatore NULL serà avà tornatu è errno impostatu à ENOMEM in tali situazioni.
Funzioni fma imprecise eliminate (XC8-2913) A libreria standard C99 fma ( ) -funzioni di famiglia ( ) ùn hà micca calculatu una multiplicazione-aghjunghje cun precisione infinita à un arrotondamentu unicu, ma invece hà accumulatu errori di arrotondamentu cù ogni operazione. Queste funzioni sò state eliminate da a biblioteca furnita.
Mala gestione di a cunversione di stringa (XC8-2921, XC8-2652) Quandu una "sequenza di sughjetti" per a cunversione da strtod Cr cuntene ciò chì pareva esse un numeru à virgola flottante in formatu esponenziale è ci era un caratteru inesperu dopu à u caratteru e/E, allora induve endptr era statu furnitu, hè stata assignata un indirizzu chì avait-il pointé vers le caractère après l'e/E, alors qu'il aurait dû pointer vers le caractère e/E lui-même, puisque celui-ci n'avait pas été converti. Per esample, strtod ("100exx", &ep) deve vultà 100.00 è stabilisce ep per puntà à a parte "exx" di a stringa, mentri a funzione rinviava u valore currettu, ma stabilisce ep per puntà à a parte "xx" di a stringa. .

5.2. Versione 2.40
Troppu rilassatu (XCS-2876) Quandu s'utilice l'opzione -mrelax, u compilatore ùn hà micca attribuitu alcune rùbbriche inseme, risultatu in dimensioni di codice menu ottimali. Questu puderia esse accadutu cù u codice chì usava e novi librerie MUSL o cù simboli debuli.
A funzione di mappatura ùn hè micca disattivata cum'è dichjaratu in l'avvisu (XC8-2875) A funzione const-data-in-config-mappedprogmem dipende da a funzione const-data-in-progmem attivata. Se a funzione const-data-inconfig-mapped-progmem hè stata esplicitamente attivata cù l'opzione è a funzione const-data-inprogmem hè stata disattivata, u passu di ligame hà fiascatu, malgradu un missaghju d'avvertimentu chì indicava chì a const-data-in-con fig- A funzione mapped-progmem era stata disattivata automaticamente, chì ùn era micca cumplettamente curretta. A funzione const-data-in-config-mapped-progmem hè issa disattivata cumplettamente in questa situazione.
DFP cambia per accede currettamente à NVMCTRL (XC8-2848) U codice di startup runtime utilizatu da i dispositi AVR64EA ùn hà micca cunsideratu chì u registru NVMCTRL era sottu a Proteczione di Cambiamentu di Configurazione (CCP) è ùn era micca capace di stabilisce l'I0 SFR à a pagina utilizata da u const-data-in-configmapped-progmem. funzione di compilatore. I cambiamenti fatti in AVR-Ex_DFP versione 2.2.55 permettenu à u codice di startup runtime di scrive currettamente in stu registru.
DFP cambia per evità mapping flash (XC8-2847) Un travagliu per un prublema cù a funzione di u dispositivu flash-mapping riportatu in l'AVR128DA28/32/48/64 Silicon Errata (D580000882) hè stata implementata. A funzione di compilatore const-data-in-config-mapped-progmem ùn serà micca applicata per difettu per i dispositi affettati, è questu cambiamentu apparirà in AVR-Dx_DFP versione 2.2.160.
Errore di creazione cù sinhf o coshf (XC8-2834) I tentativi di utilizà e funzioni di biblioteca sinhf () o coshf () anu risultatu in un errore di ligame, chì descrive una riferenza indefinita. A funzione mancante riferita hè stata inclusa in a distribuzione di compilatore.
Custruisce errori cù nopa (XC,8-2833) Utilizendu l'attributu nopa cù una funzione chì hà avutu u so nome di assembler specificatu cù asm ( ) hà attivatu messagi d'errore da l'assembler. Sta cumminazzioni ùn hè micca pussibule.
Fallu di funzione Variadic cù argumenti di puntatore (XC8-2755, XC8-2731) Funzioni cù un numeru variabile di argumenti aspettanu punters 24-bit (tipu memx) per esse passati in a lista di argumenti variabili quandu a funzione const-data-in-progmem hè attivata. L'argumenti chì eranu punters à a memoria di dati sò stati passati cum'è oggetti di 16 bit, causannu fallimentu di codice quandu sò stati ultimamente letti. Quandu a funzione constdata-in-progmem hè attivata, tutti l'argumenti di puntatori di 16 bit sò cunvertiti in puntatori di 24 bit.
E funzioni di biblioteca strtoxxx fallenu (XC8-2620) Quandu a funzione const-data-in-progmem hè stata attivata, u paràmetru endptr in e funzioni di a libreria strtoxxx ùn hè micca aghjurnatu bè per l'argumenti di stringa fonte micca in a memoria di u prugramma.
Avvisi per cast invalidi (XC8-2612) U compilatore avà emette un errore se a funzione const-in-progmem hè attivata è l'indirizzu di una stringa literale hè esplicitamente esplicitatu à u spaziu di l'indirizzu di dati (abbandunendu u qualificatore const), per esempiu.ample, (uint 8_t *) "Hello World!". Un avvirtimentu hè prublema se l'indirizzu pò esse invalidu quandu un puntatore di dati const hè esplicitamente spartu à u spaziu di l'indirizzu di dati.
Posizionamentu di l'uggetti cust micca inizializzati (XC8-2408) L'uggetti uninitialized const è const volatile ùn sò micca stati posti in a memoria di u prugramma nantu à i dispositi chì mappanu tuttu o parte di a so memoria di prugramma in u spaziu di l'indirizzu di dati. Per sti dispusitivi, tali ogetti sò oghji posti in memoria di u prugramma, facendu u so funziunamentu coherente cù l'altri dispositi.

5.3. Versione 2.39 (Release Functional Safety)
Nimu.
5.4. Versione 2.36
Errore in ritardu (XC8-2774) I cambiamenti minori in l'ottimisazioni di u modu liberu predeterminatu impediscenu a piegatura constante di l'espressioni di l'operandu à e funzioni integrate di ritardu, risultatu in esse trattate cum'è non-custanti è innescà l'errore: builtin avr delay_cycles aspetta una constant integer di compilazione.
5.5. Versione 2.35
Allocazione contigua utilizendu _at (XC8-2653) L'assegnazione contigua di parechji posti d'oggetti in una sezione cù u listessu nome è cù _at ( ) ùn hà micca travagliatu bè. Per esampLe:
const char arr1 [] __attribute__((section (".mysec"))) __at (0x500) = {0xAB, 0xCD};
const char arr2 [] __attribute__((section (".mysec"))) = {0xEF, 0xFE};
duverebbe mette arr2 immediatamente dopu à arr1.
Specificà l'indirizzi di partenza di a sezione (XC8-2650) U L'opzione -W1, -section-start ùn era micca in silenziu à pusà e sezioni à l'indirizzu di partenza nominatu. Stu prublema hè stata risolta per ogni sezione chjamata persunalizata; in ogni modu, ùn hà micca travagliatu per qualsiasi sezzioni standard, cum'è . testu o. bss, chì deve esse piazzatu cù l'opzione -W1, -T.
Linker crashes when relaxing (XC8-2647) Quandu l'ottimisazione -mrelax hè stata attivata è ci era codice o sezzioni di dati chì ùn si sò micca inseriti in a memoria dispunibile, u linker crash. Avà, in una tale circustanza, i missaghji d'errore sò emessi invece.

No-faling-back (XC8-2646) U L'opzione -nofallback ùn hè micca stata implementata correttamente, nè documentata. Questu pò avà esse sceltu per assicurà chì u compilatore ùn ricaderà micca in un paràmetru di ottimisazione più bassu se u compilatore ùn hè micca licenziatu, è invece emette un errore.

Ottimisazioni di velocità inappropriate (X03-2637) L'ottimisazioni di astrazione procedurali sò state attivate quandu selezziunate l'ottimisazioni di livellu 3 (-03). Queste ottimisazioni reducenu a dimensione di u codice à a spesa di a velocità di u codice, cusì ùn deve micca esse realizatu.
EEPROM cattiva accessu (XC8-2629) U A rutina di eeprom_read_block ùn hà micca travagliatu bè in i dispositi Xmega quandu l'opzione -mconst-data-in-progmem hè stata attivata (chì hè u statu predeterminatu), risultatu in a memoria EEPROM chì ùn hè micca lettu bè.
Allocazione di memoria invalida (XC8-2593, XC8-2651) Quandu u Opzione di linker -Ttext o -Tdata (per esampu passatu cù una opzione di driver -vl) hè specificatu, l'origine di a regione di testu / dati currispondente hè stata aghjurnata; in ogni modu, l'indirizzu finale ùn hè micca aghjustatu in cunseguenza, chì puderia avè purtatu à a regione chì supera a gamma di memoria di u dispositivu di destinazione.
Crash cù funzione over-attributed (XC8-2580) U compilatore hà crashatu se una funzione hè stata dichjarata cù più di unu di l'attributi di interrupt, signal o nmi, per esempiu, attribute (( signal , interrupt ) ).
Codice di interruzzione ATtiny invalidu (XC8-2465) Quandu custruite per i dispositi ATtiny è l'ottimisazioni sò stati disattivati ​​(-00), e funzioni di interruzzione pò avè attivatu l'operandi fora di messagi di assembler.
Opzioni chì ùn passanu micca (XC8-2452) Quandu si usa l'opzione cù parechje opzioni di linker separati da virgola, micca tutte l'opzioni di linker sò stati passati à u linker.
Errore di lettura indiretta di a memoria di u prugramma (X03-2450) In certi casi, u compilatore hà pruduciutu un errore internu (insn unrecognizable) quandu leghje un valore di dui byte da un puntatore à a memoria di u prugramma.
5.6. Versione 2.32
Secondu accessu à A biblioteca falla (XC8-2381) Invucà a versione Windows di u xc8-ar. L'archiviu di a biblioteca .exe una seconda volta per accede à un archiviu di biblioteca esistente pò esse fallutu cù un missaghju d'errore incapace di rinominà.
5.7. Versione 2.31
Cumpilatore senza spiegazione fallimenti (XC8-2367) Quandu eseguite nantu à e plataformi Windows chì avianu u cartulare temporale di u sistema stabilitu in un percorsu chì includeva un puntu '.' carattere, u compilatore pò esse fiascatu à eseguisce.
5.8. Versione 2.30
Etichette glubale misplaced after delineing (XC8-2299) U codice di assemblea scritta à manu chì mette etichette globale in sequenze di assemblea chì sò fatturate da l'astrazione procedurale puderia micca esse riposizionata currettamente.
Un crash rilassante (XC8-2287) Utilizà l'opzione -mrelax puderia avè causatu u ligame per crash quandu l'ottimisazioni di rilassazione di u saltu di coda anu pruvatu à sguassà l'istruzzioni ret chì ùn eranu micca à a fine di una sezione.
Crash quandu ottimisate etichette cum'è valori (XC8-2282) U codice chì utilizeghja l'estensione di lingua GNU C "Etichette cum'è valori" puderia avè causatu l'ottimisazioni di l'astrazione procedurale à crash, cù un errore di correzione di una gamma VMA Outlined.
Micca cusì cust (XC8-2271) I prototipi per st rstr ( ) è altre funzioni da Ùn specificate più u qualificatore const non standard nantu à i puntatori di stringa restituiti quandu a funzione -mconst-data-inprogmem hè disattivata. Nota chì cù i dispositi avrxmega3 è avrtiny, sta funzione hè permanentemente attivata.
Inizializzatori persi (XC8-2269) Quandu più di una variabile in una unità di traduzzione hè stata piazzata in una sezione (usendu _section o _attribute_ ( (sezione) )), è a prima variabile tali era zero inizializzata o ùn avia micca inizializzatore, inizializzatori per altri variàbili in a listessa unità di traduzzione chì sò stati posti. in a listessa sezione sò stati persi.
5.1. Versione 2.29 (Release Functional Safety)
Nimu.
5.2. Versione 2.20
Errore cù cumandamenti longu (XC8-1983) Quandu si usa un target AVR, u compilatore pò esse firmatu cù a file Errore micca truvatu, se a linea di cummanda era estremamente grande è cuntene caratteri speciali cum'è virgolette, backslash, etc.
Sezione rodata non assignata (XC8-1920) L'AVR linker hà fallutu à assignà memoria per e sezioni di rodata persunalizati quandu custruiscenu per l'architetture avrxmega3 è avrtiny, pruduciendu potenzialmente errori di sovrapposizione di memoria.
5.3. Versione 2.19 (Libru di sicurezza funzionale)
Nimu.
5.4. Versione 2.10
fallimenti di trasferimentu (XC8-1891) L'allocatore più adattatu era lascià "buchi" di memoria trà e sezioni dopu a rilassazione di i linker. A parte di a frammentazione di a memoria, questu hà aumentatu a pussibilità di esse fallimenti di trasferimentu di linker in relazione à salti in relazione à u pc o chjamate chì sò fora di u range.
Istruzzioni micca trasfurmate da a rilassazione (XC8-1889) A rilassazione di u Linker ùn hè micca accadutu per l'istruzzioni di salti o chjamate chì i so obiettivi diventanu raggiungibili se rilassati.
Mancu funziunalità (XC8E-388) Diversi definizioni da , cum'è clock_div_t è clock_prescale set () , ùn sò micca definiti per i dispositi, cumpresu l'ATmega324PB, ATmega328PB, ATtiny441 è ATtiny841.
Macro mancanti I macros preprocessori _XC8_MODE_, _XC8_VERS ION, _XC è _XC8 ùn sò micca definiti automaticamente da u compilatore. Quessi sò avà dispunibili.
5.5. Versione 2.05
Errore internu di u compilatore (XC8-1822) Quandu si custruisce sottu Windows, un errore di compilatore internu puderia esse statu pruduttu quandu ottimisimu u codice.
Un overflow di RAM ùn hè micca rilevatu (XC8-1800, XC8-1796) I prugrammi chì anu superatu quella RAM dispunibile ùn sò micca stati rilevati da u compilatore in certi situazioni, chì risultanu in un fallimentu di codice runtime.
Memoria flash omessa (XC8-1792) Per i dispositi avrxmega3 è avrtiny, parte di a memoria flash puderia esse lasciata micca programata da MPLAB X IDE.
Fallu di eseguisce main (XC8-1788) In certi situazioni induve u prugramma ùn hà micca definitu variabili globale, u codice di startup runtime ùn hè micca esce è a funzione principale ( ) ùn hè mai stata ghjunta.
Informazioni di memoria sbagliate (XC8-1787) Per i dispositi avrxmega3 è avrtiny, u prugramma avr-size hà infurmatu chì i dati di sola lettura cunsumanu RAM invece di memoria di prugramma.
Lettura di memoria di prugramma sbagliata (XC8-1783) I prughjetti cumpilati per i dispositi cù memoria di prugramma mappata in u spaziu di l'indirizzu di dati è chì definiscenu l'uggetti chì utilizanu a macro / attributu PROGMEM puderanu leghje questi oggetti da l'indirizzu sbagliatu.
Errore internu cù attributi (XC8-1773) Un errore internu hè accadutu se avete definitu l'uggetti di puntatore cù u
_at () o attribute () tokens trà u nome di u puntatore è u tipu dereferenced, per esempiuample, char *
_at (0x800150) cp; Un avvirtimentu hè avà emessu se un tali codice hè scontru.
Fallu di eseguisce principale (XC8-1780, XC8-1767, XC8-1754) L'usu di variabili EEPROM o a definizione di fusibili cù u pragma di cunfigurazione puderia avè causatu l'inizializazione di dati incorrecte è / o l'esecuzione di u prugramma chjusu in u codice di startup runtime, prima di ghjunghje à main ( ) .
Errore di fusible cù i dispositi minusculi (XC8-1778, XC8-1742) I dispositi attiny4/5/9/10/20/40 avianu una lunghezza di fusible incorrecta specificata in u so header. files chì portanu à l'errori di linker quandu pruvate di custruisce codice chì definisce i fusibili.
Segmentazione difettu (XC8-1777) Un difettu di segmentazione intermittenti hè statu currettu.
Assembler crash (XC8-1761) L'assembleur avr-as puderia esse crashatu quandu u compilatore era eseguitu sottu Ubuntu 18.
Oggetti micca sbulicati (XC8-1752) L'uggetti di durata di almacenamentu staticu micca inizializzati ùn puderanu micca esse stati sbulicati da u codice di startup runtime.
Specificazione di u dispositivu cunflittu ignorata (XC8-1749) U compilatore ùn hà micca generatu un errore quandu parechje opzioni di specificazione di u dispositivu sò state aduprate è indicò diverse dispositi.
Corruzzione di memoria da u mucchio (XC8-1748) The U simbulu _heap_start hè statu impostatu in modu incorrectu, risultatu in a pussibilità di variàbili ordinarii esse currutti da u heap.
Errore di traslocazione di u linker (XC8-1739) Un errore di trasferimentu di linker puderia esse statu emessu quandu u codice cuntene un rjmp o rcall cù un target esattamente 4k bytes di distanza.
5.6. Versione 2.00
Nimu.

Problemi cunnisciuti

I seguenti sò limitazioni in u funziunamentu di u compilatore. Questi ponu esse restrizioni di codificazione generale, o deviazioni da l'infurmazioni cuntenute in u manuale di l'utilizatori. L'etichetta (s) in u titulu sò l'identificazione di u prublema in a basa di dati di seguimentu. Questu pò esse di benefiziu se avete bisognu di cuntattà u supportu. Quelli articuli chì ùn anu micca etichette sò limitazioni chì descrizanu modi operandi è chì sò prubabilmente esse in effettu permanentemente.
6.1. MPLAB X IDE Integrazione
IDE MPLAB integrazione Se u compilatore deve esse usatu da MPLAB IDE, allora avete da installà MPLAB IDE prima di installà u compilatore.
6.2. Generazione di codice
Segfault with section-anchors option (XC8-3045) U prugramma chì hà definitu e funzioni cù elenchi d'argumenti variabili è chì utilizanu l'opzione -fsection-anchors puderia avè attivatu un errore di compilatore internu: Segmentation fault.
Informazioni di debug fora di sincronia (XC8-2948) Quandu l'ottimisazioni di rilassazione di linker riduce l'istruzzioni (per esample call to rcall instructions), a linea di fonte per indirizzà i mappings puderia micca esse in sincronia quandu ci hè più di una operazione di shrink in una sezione.
In u sottu example, ci sò dui chjama à foo chì finiscinu relaxed à chiama relative.
Errore di allocazione di memoria PA (XC8-2881) Quandu s'utilice l'ottimisazioni di astrazione procedurale, u linker puderia signalà errori di allocazione di memoria quandu a dimensione di u codice hè vicinu à a quantità di memoria di prugramma dispunibule nantu à u dispusitivu, ancu s'ellu u prugramma deve esse capace di adattà u spaziu dispunibule.
Smart-I0 micca cusì intelligente (XC8-2872) A funzione smart-io di u compilatore genererà un codice validu ma sub-ottimale per a funzione snprint f se a funzione const-data-in-progmem hè stata disattivata o se u dispusitivu hà tutte e so flash mapping in memoria di dati.
Ancu menu intelligente Smart-I0 (XC8-2869) A funzione smart-io di u compilatore genererà un codice validu ma subottimale quandu l'opzioni -flto è -fno-builtin sò tramindui usati.
Posizionamentu di dati di sola lettura subottimali (XC8-2849) U ligame ùn hè attualmente cunuscenza di e sezioni di memoria APPCODE è APPDATA, nè e divisioni [No-Read-While-Write in a mappa di memoria. In u risultatu, ci hè una piccula chance chì u linker puderia attribuisce dati di sola lettura in una zona di memoria inadatta. A probabilità di dati misplaced aumenta se a funzione const-data-in-progmem hè attivata, soprattuttu se a funzione const-data-in-config-mapped-progmem hè ancu attivata. Queste funzioni ponu esse disattivate se necessariu.
Ughjettu file ordine di trasfurmazioni (XC8-2863) L'ordine in quale l'uggetti files seranu processati da u linker puderia differisce basatu annantu à l'usu di ottimisazioni di astrazione procedurale (opzione -mpa). Questu averebbe affettatu solu u codice chì definisce e funzioni debuli in parechji moduli.
Errore di linker cù assolutu (XC8-2777) Quandu un ughjettu hè statu assulutu à un indirizzu à l'iniziu di RAM è l'uggetti micca inizializzati sò ancu definiti, un errore di linker pò esse attivatu.
ID brevi di sveglia (XC8-2775) Per i dispositi ATA5700/2, i registri PHIDO/1 sò definiti solu cum'è una larghezza di 16 bit, invece di 32 bit di larghezza.
Crash di Linker quandu si chjama u simbulu (XC8-2758) U linker puderia fallu se l'opzione -mrelax driver hè aduprata quandu u codice fonte chjama un simbulu chì hè statu definitu cù l'opzione -cc., -de f sym linker.
Inizializazione incorrecta (XC8-2679) Ci hè hè una discrepanza trà induve i valori iniziali per alcuni oggetti di dimensione di byte globale / staticu sò posti in memoria di dati è induve e variàbili seranu accessu à runtime.
Chjama di funzione indiretta cattiva (XC8-2628) In certi casi, e chjame di funzione fatte via un puntatore di funzione guardatu cum'è parte di una struttura puderanu falla.
strtof rende zero per i float esadecimali (XC8-2626) E funzioni di a biblioteca strtof et al è scanf ( ) et al, cunvertiranu sempre un numeru esadecimale in virgola flottante chì ùn specifica micca un esponente à zero. Per esampLe:
strtof ("Oxl", &endptr);
restituverà u valore 0, micca I.
Missaghju imprecisu di u cunsigliu di stack (XC8-2542, XC8-2541) In certi casi, l'avvertimentu di u cunsigliu di stack in quantu à a ricursione o a pila indeterminata utilizata (possibbilmente attraversu l'usu di alloca ()) ùn hè micca emessu.
Fallu cù codice di interruzzione duplicata (XC8-2421) Induve più di una funzione di interruzzione hà u stessu corpu, u compilatore puderia avè l'output per una funzione d'interruzzione chjamate l'altru. Questu risultatu in tutti i registri di call-clobbered esse salvati inutilmente, è l'interruzioni seranu attivate ancu prima chì l'epilogo di u gestore di l'interruzzione attuale hè stata svolta, chì puderia purtà à fallimentu di codice.
Sortie cattiva cù un percorsu DFP invalidu (XC8-2376) Se u compilatore hè invucatu cù una strada DFP invalida è una "spec" file esiste per u dispositivu sceltu, u compilatore ùn hà micca signalatu u pacchettu di famiglia di u dispositivu mancante è invece selezziunate a 'spec' file, chì poi pò purtà à un output invalidu. A "specie" files puderia micca esse aghjurnatu cù i DFP distribuiti è sò stati destinati à l'usu cù testi di compilatore internu solu.
Sovrapposizione di memoria micca rilevata (XC8-1966) U compilatore ùn rileva micca a superposizione di memoria di l'uggetti assuluti à un indirizzu (via _at ( )) è altri ogetti chì utilizanu a sezione ( ) specifier è chì sò ligati à u listessu indirizzu.
Fallu cù e funzioni di biblioteca è _memx (XC8-1763) Chjamate funzioni float libgcc cù un argumentu in u spaziu di l'indirizzu memx puderanu falla. Nota chì e rutine di biblioteca sò chjamati da certi operatori C, cusì, per esempiuample, u codice seguente hè affettatu:
torna regFloatVar> memxFloatVar;
Implementazione libgcc limitata (AVRTC-731) Per i prudutti ATTiny4/5/9/10/20/40, l'implementazione standard di libreria C / Math in libgcc hè assai limitata o micca presente.
Limitazioni di memoria di prugramma (AVRTC-732) L'imaghjini di memoria di prugramma oltre 128 kb sò supportati da u toolchain; in ogni casu, ci sò casi cunnisciuti di aborti di linker senza rilassazione è senza un missaghju d'errore utile invece di generà i stubs di a funzione necessaria quandu l'opzione -mre lax hè aduprata.
Limitazioni di u spaziu di u nome (AVRTC-733) I spazii di l'indirizzu chjamati sò supportati da a catena di strumenti, sottumessu à e limitazioni citate in a sezione di guida di l'utilizatori Special Type Qualifiers.
I fusi orari The E funzioni di biblioteca assumenu GMT è ùn supportanu micca i fusi orari lucali, cusì l'ora locale ( ) tornerà u listessu tempu cum'è gmtime ( ) , per esempiuample.

file:///Applications/microchip/xc8/v2.41/docs/Readme_XC8_for_AVR.htm

Documenti / Risorse

MICROCHIP MPLAB XC8 C Software di sviluppu di compilatore [pdfManuale di u pruprietariu
MPLAB XC8 C, MPLAB XC8 C Software di sviluppu di compilatore, Software di sviluppu di compilatore, Software di sviluppu, Software

Referenze

Lascia un cumentu

U vostru indirizzu email ùn serà micca publicatu. I campi obbligatori sò marcati *