MPLAB XC8 C Compiler Versione 2.39 Note di rilascio per AVR MCU
Guida d'usu
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 hè un compilatore di sicurezza funziunale, basatu annantu à a versione v2.36 di stu compilatore è chì avà sustene a Licenza di u Servitore di Rete.
1.2. Data di liberazione
A data di liberazione ufficiale di sta versione di compilatore hè u 27 di ghjennaghju 2022.
1.3. Versione Precedente
A versione precedente di u compilatore MPLAB XC8 C era 2.36, liberata u 25 di ghjennaghju di u 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.
Sè vo site un servitore di licenza di rete, solu l'urdinatori cù sistemi operativi supportati da i compilatori ponu esse aduprati per accoglie u servitore di licenza. Da a versione xclm 2.0, u servitore di licenza di rete pò esse installatu nantu à una piattaforma Microsoft Windows Server, ma u servitore di licenza ùn hà micca bisognu di eseguisce nantu à una versione di u servitore di u sistema operatore.
1.7. Dispositivi supportati
Stu compilatore supporta tutti i dispositi MCU AVR 8-bit cunnisciuti à u mumentu di a liberazione. Vede (in u compilatore avr_chipinfo.html directory) per una lista di tutti i dispositi supportati. Questi fugliali listanu ancu i paràmetri di doc di bit di cunfigurazione per ogni dispusitivu.
1.8. 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
U compilatore 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.9. 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 stallazione 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.9.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à.)
- Pone i permessi di u cartulare temp à "Controllu cumpletu!.
- Per determinà u locu di u cartulare temp, scrivite in u cumandamentu Run (key logu Windows + R). %temp% Questu aprirà un dialogu di l'esploratore di fugliali chì mostra quellu cartulare è vi permetterà di determinà u percorsu di quellu cartulare.
1.10. 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 costruendo per obiettivi AVR a 8 bit, MPLAB® XC8 C Compiler User's® Guide for AVR
MCU cuntene infurmazioni nantu à quelli opzioni di compilatore è funzioni chì sò applicabili à questa architettura.
1.11. 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 è aghjurnate di a documentazione MPLAB XC8, visitate Microchip's Online
Documentazione tecnica websitu.
Documentazione AVR nova o aghjurnata in questa versione:
Installazione è licenza di compilatori MPLAB® XC C (DS50002059) versione L
A Guida di Riferimentu di Biblioteche Standard Unificate di Microchip descrive u cumpurtamentu è l'interfaccia à e funzioni definite da a Biblioteca Standard unificata di Microchip, è ancu l'usu previstu di i tipi di biblioteca è macros. Alcune di sta infurmazione era prima cuntenuta in u MPLA® XC8 C Compiler User!s Guide® for AVR
MCU. L'infurmazione specifica di a biblioteca hè sempre cuntenuta in sta guida di compilatore.
A Guida di l'Usuariu di Hexmate hè stata inclusa in u cartulare in questa versione. Questa guida hè destinata à i documenti chì eseguenu Hexmate cum'è una applicazione stand-alone.
I seguenti rùbbriche furnisce correzioni è infurmazioni supplementari à quelli chì si trovanu in i guide di l'utilizatori spediti cù u compilatore.
2.1. Opzione smart-io-format
L'opzione-msmart-io-format=fmt fmt, induve hè una stringa chì cuntene specificazioni di cunversione IO formattate, notifica à u compilatore chì e specificazioni listate sò aduprate da funzioni IO intelligenti.
Per riduce a dimensione di u codice, u compilatore persunalizeghja u codice di biblioteca assuciatu cù e famiglie di stampa è scansione di funzioni intelligenti di IO, basatu annantu à e specificazioni di cunversione presenti in e stringhe di formate cullate in tutte e chjamate à queste funzioni. Questa funzione hè cumplettamente automatica è ùn pò micca esse disattivata.
In certi casi, u compilatore ùn hè micca capace di determinà l'infurmazioni d'usu da a chjama di a funzione IO furmatu. Se l'opzione hè stata aduprata, e specificazioni di cunversione richieste per queste funzioni sò ottenute da a stringa; altrimenti, u compilatore ùn face micca supposizioni nantu à cumu si usanu e funzioni -msmart-io-format=fmt fmt è assicura chì e funzioni IO formatate cumpletamente funziunali sò ligati à l'imaghjini di u prugramma finale.
Per esample, cunzidira i seguenti chjami à funzioni intelligenti IO.
vscanf ("%d:%li", va_list1);
vprintf ("%-s%d", va_list2);
vprintf (fmt1, va_list3);// usu ambigu
vscanf (fmt2, va_list4);// usu ambiguu
Quandu si tratta di l'ultimi dui chjamati, u compilatore ùn pò micca deduce alcuna infurmazione d'usu da i strings di furmatu, nè l'argumenti. In questi casi, l'opzione -msmart-io-format pò esse aduprata è permetterà potenzalmentu di generà funzioni I0 formattate più ottimali, riducendu cusì a dimensione di codice di u prugramma. Per esample, se e stringhe di furmatu indicate da fmtl è fmt2 usanu cullettivamente solu i specificatori di cunversione "%d", "%i" è "% s", u -msmart-io-format=fmt="%d%i%s L'opzione deve esse emessa.
A stringa di tinta pò cuntene qualsiasi specificazione di cunversione valida, cumprese bandiere è modificatori (per esample "% -13. 91s"), è deve riflette esattamente quelli utilizati da e funzioni chì l'usu hè ambiguu. A mancanza di include una specificazione in u pocu argumentu induve hè stata utilizata da e funzioni I0 furmatu pò esse risultatu in fallimentu di codice.
Se fmt hè una stringa viota o ùn cuntene micca specificazioni di cunversione discernibile, un avvisu deve esse emessu è e funzioni I0 furmatu cumpletamente funziunali sò ligati à l'imaghjini di u prugramma finale.
Questa opzione pò esse usata parechje volte nantu à a linea di cummanda. E specificazioni di cunversione aduprate cù ogni opzione sò accumulate.
2.2. omit-frame-pointer Opzione
L'opzione - f omit- frame-pointer urdineghja à u compilatore per aduprà direttamente u puntatore di stack per accede à l'uggetti nantu à a pila è, se pussibule, omette u codice chì salva, inizializza è restaurà u registru di u quadru. Hè attivatu automaticamente à tutti i livelli di ottimisazione micca zero.
A negazione di l'opzione, usendu -fno-omit- frame-pointer, puderia aiutà à debugging codice ottimizatu; in ogni modu, sta opzione ùn guarantisci micca chì u puntatore di frame serà sempre usatu.
2.3. Unroll-loops Opzioni
L'opzioni - funrol I-loops è -(unroll-all-loops cuntrolanu l'ottimisazioni orientate à a velocità chì tentanu di caccià i ritardi di branching in loops. I loops unrolled tipicamente aumentanu a velocità di esecuzione di u codice generatu, à a spesa di una dimensione di codice più grande.
L'opzione - funrol I-loops unrolls loops induve u numeru di iterazioni pò esse determinatu in tempu di compilazione o quandu u codice entra in u ciclu. L'opzione -funroll-all-loops hè più aggressiva, unrolling all loops, ancu quandu u numeru di iterazioni hè scunnisciutu. Hè tipicamenti menu efficau à migliurà a velocità di esecuzione cà l'opzione - funrol 1-loops.
2.4. fat-Ito-oggetti Opzione
L'opzione -f fat-1 to-objects richiede chì u compilatore generà un oggettu grassu files, chì cuntene i dui
codice d'ughjettu è GIMPLE (una di e rapprisentazione interna di GCC), scritti in sezioni ELF uniche. Tali ogetti files sò utili per u codice di a biblioteca chì puderia esse ligata cù prughjetti chì facenu è ùn utilizanu micca l'optimizazione di u tempu di ligame standard, cuntrullata da l'opzione -flto.
A forma - fno-fat-lto-objects di sta opzione, chì hè u predeterminatu se ùn ci hè micca specificatu alcuna opzione, supprime l'inclusione di u codice di l'ughjettu in l'ughjettu. files, risultatu in custruzzioni più veloci. Tuttavia, tali oggettu files deve esse sempre ligatu cù l'optimizazione di u tempu di ligame standard.
2.5. Opzione Ito-partition
U – flto-partiti on = a Igo ri thm L'opzione cuntrola l'algoritmu utilizatu per particionà l'ughjettu files quandu eseguite l'optimizazione di u tempu di ligame. L'argumentu nimu disattiva a particione sanu è eseguisce u passu di ottimisazione di u tempu di ligame direttamente da a fase di analisi di u prugramma tutale (WPA). Stu modu di funziunamentu pruducerà i risultati più ottimali, à a spesa di esigenze di memoria di compilatore più grande è tempi di custruzzione più longu, ancu s'ellu hè improbabile di esse un prublema cù i prugrammi chjuchi. Particionà l'ughjettu files pò migliurà u rendiment di custruzzione. L'argumentu unu specifica chì esattamente una partizione deve esse usata, è l'argumentu lto1 specifica a particione chì riflette quella dettata da a fonte originale. files. L'argumentu predeterminatu hè equilibratu, chì specifica a particione in pezzi di uguali dimensioni, quandu hè pussibule.
2.6. Addizione à a Sezione 3.6.11 Opzioni di Linker Maped
U -wl, -parte-iniziu = sec tion=addr manca da a tavula di l'opzioni di linker cumunimenti usate, accessibile cù l'opzione di u driver di compilatore -wl. Questa opzione permette di piazzamentu di e sezioni di nome persunalizati à l'indirizzu specificatu. Ùn pò micca esse usatu per mette e sezzioni standard, cum'è ( . data, . bss, . testu), chì deve esse piazzatu cù l'opzione -wl, -'r.
2.7. Amenda à a Sezione 4.14.2 Cambia è Ligà a Sezione Allocata
Nota chì cuntrariu à l'infurmazioni cuntenute in questa sezione di a guida di l'Usuariu, i cambiamenti fatti à u compilatore in questa liberazione significanu avà chì e sezioni persunalizate ponu esse ligate cù u -w1, -sect ion- start=section=acicir opzione è senza avè da mudificà u script di linker.
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.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.2. Versione 2.36
Nimu.
3.3. 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 à l'entrata è cumu quelli 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).
Cambiamentu di cuntestu ancu più migliuratu U novu -mgas-isr-prologues L'opzione cuntrola 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 è salvà 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 tutti i dati cuns t-qualificati in una sezione 32k è inizializza automaticamente u registru SFR pertinente per assicurà chì sta dati hè mappatu in i dati. spaziu di memoria, induve serà accessu più efficace.
Biblioteche standard unificate Microchip Tutti MPLAB I compilatori XC sparteranu un Microchip Unified Standard Library, chì hè avà dispunibule cù questa versione di MPLAB XC8. U MPLAB® Compiler XC8 C
Guida d'utilizatore per AVR® MCU ùn include più a documentazione per queste funzioni standard. Sta infurmazione pò avà esse truvata in u Microchip Unified Standard Library Reference Guide. Nota chì alcune funziunalità definite prima da avr-libc ùn sò più dispunibili. (Vede Funzionalità di a biblioteca).
Smart I0 Comu parte di e novi biblioteche unificate, e funzioni JO in e famiglii printf è scanf sò oghji generate apposta 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 I0 Quandu analizà e chjama à e funzioni intelligenti I0 (cum'è printf () 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 - msma rt-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 smart-io-formatu Opzione 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 u -wl, -Tsection=addr opzione, cum'è descritta in a guida di l'utilizatori.
3.4. 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, ATTNY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX.
U supportu di u dispositivu ritiratu ùn hè più dispunibule per e seguenti parti AVR: AVR 16DA28, AVR16DA32 è AVR16DA48.
3.5. Versione 2.31 Nimu.
3.6. 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 suppressione l'output di i simboli do_copy_data è do_clear_bss in assemblea files, chì à u turnu impediscenu l'inclusione di quelli rutini da u linker.
Ottimisazioni rinfurzate Una quantità di migliuramentu di ottimisazione sò stati fatti, cumpresa a rimuzione di l'istruzzioni di ritornu redundante, a rimuzione di alcuni salti dopu à una struzzione di skip-if-bit-is, è l'astrazione procedurale mejorata è a capacità di iterà stu prucessu.
Opzioni supplementari sò avà dispunibuli per cuntrullà alcune di sti ottimisazioni, in particulare -fsection-anchors, chì permette l'accessu di l'uggetti statichi per esse realizatu relative à un simbulu; -mpa-iterazioni =n, chì permette u numeru di iterazioni di astrazione procedurali per esse cambiatu da u predeterminatu di 2; è, -mpa-callcost-shortcal 1, chì eseguisce una astrazione procedurale più aggressiva, in a speranza chì u linker pò rilassate long calls. Quest'ultima opzione pò aumentà a dimensione di u codice se l'assunzioni sottostanti ùn sò micca realizati.
Novu sustegnu dispusitivu U supportu hè dispunibule per e seguenti parti AVR: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48, AVR128DB64 XNUMXDBXNUMX.
Supportu di u dispositivu ritratu U supportu ùn hè più dispunibule per e seguenti parti AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617, ATA664251, ATAXNUMX
3.7. Versione 2.29 (Release Functional Safety)
Intestazione file per i bunt-ins di u compilatore 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'è built in_avr_nop ( ) è _builtin_avr_delay_cycles () . Certi integrati ùn ponu micca esse conformi à MISRA; questi ponu esse omessi aghjunghjendu a definizione XC_STRICT MISRA à a linea di cummanda di compilatore. I integrati è e so dichjarazioni sò stati aghjurnati per utilizà tipi di larghezza fissa.
3.8. Versione 2.20
Novu sustegnu dispusitivu U supportu hè dispunibule per e seguenti parti AVR: ATTINY 1624, ATTINY1626, è ATTINY 1 627.
Megliu l'allocazione di u megliu adattatu L'allocatore di u megliu adattatu (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 l'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 AVR Assembler L'Assembler AVR ùn hè più inclusu cù sta distribuzione. 3.9. Versione 2.19 (Sicurezza Funziunale liberazione)
Nimu.
3.10. Versione 2.10
Copertura di u 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, _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 si trova in u cartulare docs di
a distribuzione di compilatore. Questu file elenca tutti i dispositi supportati da u compilatore. Cliccate nant'à u nome di un dispositivu, è aprirà una pagina chì mostra tutti i paràmetri di bit di cunfigurazione permessi / coppie 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. Questi 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-f ile=filenome, o disabilitatu per una funzione usendu -mno-pa-onfunotion=f unzione.
Dentru u vostru codice fonte, l'astrazione procedurale pò esse disattivata per una funzione usendu attribute_ ( (nopa) ) cù a definizione di a funzione, o usendu nopa, chì si espande à _attribute_ ((nopa, noinline) ) è cusì impedisce a funzione inlining da esse realizatu. è ci hè astrazione di codice inlineed.
Lock bit support in pragma A cunfigurazione #pragma pò avà esse usata per specificà i bit di serratura AVR è ancu l'altri bit di cunfigurazione. Verificate u avr_chipinfo.html file (citatu sopra) per i paràmetri / valore per aduprà cù stu pragma.
Novu sustegnu dispusitivu U supportu hè dispunibule per e seguenti parti: AVR28DAl28, AVR64DAl28, AVR32DAl28 è AVR48DAl28.
3.11. Versione 2.05
Più pezzi per u vostru soldi 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 oggetti in memoria di prugramma U compilatore pò avà mette 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 è questi dati ponu accede direttamente è indirettu cù l'istruzzioni appropritatu 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 manuscrita.
Novu sustegnu dispusitivu U supportu hè dispunibule per e seguenti parti: ATMEGA1608, ATMEGA 1609, ATMEGA808 è ATMEGA809.
3.12. 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 cumuni Stu compilatore pò avà cunfurmà à l'Interfaccia MPLAB Common C, 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.
Novu cunduttore bibliotecariu A U 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
E seguenti sò caratteristiche chì sò avà trattate in modu diversu da u compilatore. Questi cambiamenti ponu esse bisognu di mudificazione di u vostru codice fonte se porta u codice in questa 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.39 (Release Functional Safety)
Nimu.
4.2. Versione 2.36 Nimu.
4.3. Versione 2.35
Gestione di basi di stringa (XC8-2420) Per assicurà a coerenza cù altri compilatori XC, u XC8 string-to funzioni, 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 supportu I0 furmatu per i specificatori di formatu float. E funzioni intelligenti 10 di a Biblioteca Standard Unificata di 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 0 ) travaglià bè cù tali dati quandu a funzione const-data-in-program-memory hè attivata.
4.4. Versione 2.32
Nimu.
4.5. Versione 2.31
Nimu.
4.6. Versione 2.30
Nimu.
4.1. Versione 2.29 (Release Functional Safety)
Nimu.
4.2. Versione 2.20
Disposizione DFP cambiata 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
Oggetti Cust in memoria di prugramma Nota chì l'uggetti custificati per difettu seranu posti è accede à a memoria di u prugramma (cum'è descritta a so). 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 -mnocons t-data-in-pr ogmem.
4.6. Versione 2.00
Fusibili di cunfigurazione I fusibili di cunfigurazione di u dispositivu ponu avà programatu utilizendu un pragma di cunfigurazione seguitu da coppie di valore per specificà u statu di fusible, per esempiu #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
Oggetti assoluti è funzioni L'uggetti è e funzioni ponu avà esse piazzati in un indirizzu specificu in memoria cù u CCI _at (indirizzu) specificatore, per esampLe:
se include
int foobar à (0)0300100);
char at(0x250) getID(int offset) (L'argumentu à questu specificatore deve esse una constante chì rapprisenta l'indirizzu à quale serà piazzatu u primu byte o struzzione. L'indirizzi RAM sò indicati cù un offset di Ox800000. Attivate u CCI per aduprà sta funzione.
Nova sintassi di funzione di interruzzione U compilatore avà accetta a CCI _interrupt (num) specificatore per indicà chì e funzioni C sò gestori di interrupt. U specifier piglia un numeru di interruzzione, per esempiuampLe:
Problemi fissi
E seguenti sò correzioni 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 subtituli indica a prima versione di compilatore per cuntene correzioni per i prublemi chì seguitanu. L'etichetta (s) in u titulu sò l'identificazione di u 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ò curretti in u Device Family Pack (DR)) 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.39 (Release Functional Safety)
Nimu.
5.2. Versione 2.36
Errore in ritardu (XCS–2774) I cambiamenti minori in l'ottimisazioni di u modu liberu predeterminatu impediscenu a piegatura constante di l'espressioni di l'operandi à e funzioni integrate di ritardu, chì anu da esse trattatu cum'è non-custanti è scatenendu l'errore. built in_avr_delay_cycles aspetta una constante integer di tempu di compilazione.
5.3. Versione 2.35
Cuntinuu allocazione usendu _at (XCS–2653) L'assegnazione contigua di parechji posti d'oggetti in una sezione cù u stessu nome è cù _at () ùn hà micca travagliatu bè. Per esampLe:
const char arrl[ ] attributu (section (".mysec") à (0x500) = (OxAB, OxCD);
const char arr2[ ] attributu (sectionr.mysec")= (OxEF, OxFE);
duverebbe mette arr2 immediatamente dopu à arri.
Specificà l'indirizzi di partenza di a sezione (XCS–2650) U L'opzione -wl, -section-start falliva in silenziu per mette 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ù a -wl, Opzione -T.
Linker si blocca quandu si rilassa (XCS–2647) Quandu l'ottimisazione -mrelax hè stata attivata è eranu codice o sezioni di dati chì ùn sò micca intrudutte in a memoria dispunibile, u linker crashed. Avà, in una tale circustanza, i missaghji d'errore sò emessi invece.
Innò nò–caduta–daretu (XCS–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 (XCS–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.
Accessu EEPROM sbagliatu (XCS–2629) 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 (X03-2593, XC8-2651) Quandu l'opzione -Ttext o -Tdata linker (per esampu passatu attraversu cù una opzione di driver -wl) 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è cascatu se una funzione hè stata dichjarata utilizendu più di l'attributi 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 sò micca passatu (XC8-2452) Quandu si usa u - wl opzione cù parechje opzioni di linker, separate da virgola, micca tutte l'opzioni di linker sò state passate à u linker.
Errore di lettura indiretta di memoria di prugramma (X03-2450) In certi casi, u compilatore hà pruduttu un errore internu (insn unrecognizable) quandu leghje un valore di dui byte da un puntatore à a memoria di prugramma
5.4. Versione 2.32
U secondu accessu à a biblioteca falla (X03-2381) Invucà a versione Windows di l'archiviu di a biblioteca xc8-ar.exe una seconda volta per accede à un archiviu di a biblioteca esistente pò esse fallutu cù un missaghju d'errore incapace di rinominà.
5.5. Versione 2.31
Inspiegabile fallimenti di u compilatore (XC8-2367) Quandu corre Windows piattaforme chì avianu u cartulare tempuranee di u sistema stabilitu à una strada chì includeva un puntu '.' carattere, u compilatore pò esse fiascatu à eseguisce.
5.6. Versione 2.30
Etichette glubale misplaced after delineing (XC8-2299) Codice di assemblea scritta à manu chì mette in u mondu etichette in sequenze di assemblea chì sò fatturate da l'astrazione procedurale puderia micca esse stata riposizionata currettamente.
Un crash rilassante (XC8-2287) Utilizendu u - mrelax L'opzione puderia avè causatu u ligame per crash quandu tail jump relaxation optimisations pruvatu à caccià ret instruction chì ùn eranu à a fine di a sezione.
Crash durante l'ottimisazione di etichette cum'è valori (XC8-2282) Codice utilizendu "Etichette cum'è valori" GNU C L'estensione di a lingua puderia avè causatu l'ottimisazioni di l'astrazione procedurale à crash, cù una gamma VMA Outlined spans fixup error.
Micca cusì cust (XC8-2271) I prototipi per strstr () è altre funzioni da ùn specifica 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 traduzzione unità hè stata posta in una sezione (using sezione or attributu ( (sezzione) )), è a prima variabile tali era cero inizializzata o ùn avia micca un inizializzatore, l'inizializazione per altre variàbili in a listessa unità di traduzzione chì sò stati posti in a listessa sezione sò stati persi.
5.1. Versione 2.2 9 (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ù un errore micca truvatu, se a linea di cumanda era estremamente grande è cuntene caratteri speciali cum'è quotes, backslashes, etc.
Sezione di rodata non assignata (XC8-1920) U linker AVR hà fallutu per assignà memoria per e sezioni di rodata persunalizati quandu custruiscenu per l'architetture avrxmega3 è avrtiny, putenzialmente pruducendu errori di sovrapposizione di memoria.
5.3. Versione 2.19 (Release Functional Safety)
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-3 ) Diversi definizioni da , cum'è clock_div_t è clock_presc ale_s et () , ùn sò micca definitu per i dispusitivi, cumpresi l'ATmega324PB, ATmega328PB, ATtiny441, è ATtiny841.
Macro mancanti I macros preprocessori _XC 8_MODE_, XC 8 VERS ION, XC è xc8 ùn sò micca definiti automaticamente da u compilatore. Quessi sò avà dispunibili.
5.5. Versione 2.05
Errore di compilatore internu (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 stata 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.
Infurmazioni di memoria incorrette (XC8-1787) Per i dispositi avrxmega3 è avrtiny, u prugramma avr-size hà infurmatu chì e dati pazzi sò cunsumati RAM invece di memoria di prugramma.
Lettura di memoria di prugramma incorretta (XC8-1783) Prughjetti compilati 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 puderia avè lettu questi oggetti da l'indirizzu sbagliatu.
Errore internu cù attributi (XC8-1773) Un errore internu hè accadutu si avete definitu oggetti di puntatore cù i tokens _at 0 o attribute() trà u nome di puntatore è u tipu dereferenziatu, per esempiu.ample, 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) Aduprendu variabili EEPROM o definisce i fusi cù u pragma di cunfigurazione puderia avè causatu l'inizializazione di dati incorrecte è / o l'esekzione di u prugramma bloccatu in u codice di startup runtime, prima di ghjunghje à u principale 0 .
Errore di fusible cù i dispositi minusculi (XC8-1778, XC8-1742) I dispositi attiny4/5/9/10120140 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.
Errore di segmentazione (XC8-1777) Un difettu di segmentazione intermittente 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 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 rjmn o rcall cù un target esattamente 4k byte 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 a marea sò l'identificazione di quellu prublema in a basa di dati di seguimentu. Questu pò esse di benefiziu se avete bisognu di cuntattà l'assistenza. Quelli elementi chì ùn anu micca etichette sò limitazioni chì descrizanu modi operandi è chì sò prubabilmente restanu in vigore permanentemente.
6.1. MPLAB X IDE Integrazione
MPLAB Integrazione IDE 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
Incorrettu inizializazione (XC8-2679) Ci 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.
strtod imposta incorrectamente endptr (XC8-2652) In i casi induve una stringa di sughjettu per a cunversione da strtod () cuntene ciò chì pare esse un numeru in virgule flottante in formatu esponenziale è ci hè un caratteru inesperu dopu un caratteru e, allora l'indirizzu endptr, se furnitu, indicà à u caratteru dopu. l'e è micca l'e stessu. Per esample: strtod ("100exy", endptr);
risultatu in endptr chì punta à u caratteru x.
Chjama di funzione indiretta cattiva (X03-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 1.
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.
Custanza oggetti chì ùn sò micca in memoria di u prugramma (XC8-2408) Per i prughjetti avrxmega3 è avrtiny, l'uggetti const unitialized sò posti in a memoria di dati, ancu s'è un avvirtimentu suggerisce chì sò stati posti in memoria di u prugramma. Questu ùn affetterà micca i dispositi chì ùn anu micca una memoria di prugramma mappata in u spaziu di memoria di dati, nè affettarà qualsiasi ughjettu chì hè inizializatu.
Sorta sbagliata cù percorsu DFP invalidu (XCS-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 sovrapposizione di memoria di l'uggetti assuluti à un indirizzu (via _at 0) è altri oggetti chì utilizanu _section () specifier è chì sò ligati à u listessu indirizzu.
Fallu cù e funzioni di biblioteca è _memx (XC8-1763) Chjamate libgcc float functions cù un argumentu in u spaziu di indirizzu _memx puderia fallu. Nota chì e rutine di biblioteca sò chjamati da certi operatori C, cusì, per esempiuample, u seguente codice hè affettatu: return regFloatVar> memxFloatVar;
Implementazione libgcc limitata (AVRTC-731) Per u Prodotti ATtiny4/5/9/10/20/40, l'implementazione standard di a 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 -mrelax 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 a biblioteca assumenu GMT è ùn supportanu micca i fusi orari lucali, cusì loca It ime 0 tornerà u stessu tempu cum'è gmtime ( ), per ex.ample.
Documenti / Risorse
![]() |
MICROCHIP MPLAB XC8 C Compiler Versione 2.39 Note di rilascio per AVR MCU [pdfGuida di l'utente MPLAB XC8 C Compiler Versione 2.39 Note di rilascio per AVR MCU, MPLAB XC8 C, Compiler Versione 2.39 Note di rilascio per AVR MCU, Note di rilascio per AVR MCU |
![]() |
MICROCHIP MPLAB XC8 C Compiler Versione 2.39 Note di rilascio per AVR MCU [pdfGuida di l'utente MPLAB XC8 C Compiler Versione 2.39 Note di rilascio per AVR MCU, MPLAB XC8 C, Compiler Versione 2.39 Note di rilascio per AVR MCU, Note per AVR MCU |
![]() |
MICROCHIP MPLAB XC8 C Compiler [pdfGuida di l'utente MPLAB XC8 C compilatore, MPLAB XC8 C, compilatore |






