MICROCHIP-LOGO

MICROCHIP XC8 C Compiler Versione 2.45 Note di versione per AVR MCU

MICROCHIP-XC8-C-Compiler-Version-2-45-Note-di-versione-per-AVR-MCU-PRO

Informazione di u produttu

U MPLAB XC8 C Compiler hè un strumentu software utilizatu per mira à i dispositi Microchip AVR. Hè pensatu per cumpilà u codice C è generà eseguibile files per sti dispusitivi. A versione di compilatore chì hè riferita in stu manuale d'utilizatore hè 2.45, cù una data di custruzzione ufficiale di 18 d'Aostu 2023. A versione precedente era 2.41, custruita l'8 di ferraghju 2023. U compilatore vene cun un Manuale di Sicurezza Funziunale, chì furnisce infurmazioni supplementari. è linee guida quandu si usanu i compilatori MPLAB XC cù applicazioni di sicurezza funzionale. Stu manuale hè inclusu in u pacchettu di documentazione quandu avete acquistatu una licenza di sicurezza funziunale. U compilatore MPLAB XC8 C supporta tutti i dispositi MCU AVR 8-bit dispunibili à u mumentu di a liberazione. Pudete riferite à avr_chipinfo.html file in u cartulare doc di u compilatore per una lista di tutti i dispositi supportati è i so paràmetri di bit di cunfigurazione. Ci sò diverse edizioni di u compilatore MPLAB XC8 dispunibili. L'edizione licenziata (PRO) furnisce un livellu più altu di ottimisazione cumparatu cù l'edizione libera. Per attivà u compilatore cum'è un pruduttu licenziatu, avete bisognu di cumprà una chjave di attivazione. Tuttavia, a versione senza licenza pò esse usata indefinitamente senza licenza. Per l'applicazioni di sicurezza funzionale, un compilatore MPLAB XC8 Functional Safety hè dispunibule. Hè bisognu di una licenza di sicurezza funziunale acquistata da Microchip per l'attivazione. Una volta attivati, tutti i livelli di ottimisazione è e funzioni di compilatore ponu esse utilizati. U MPLAB XC Functional Safety Compiler supporta ancu a Licenza di u Servitore di Rete. L'infurmazione dettagliata nantu à l'installazione, l'attivazione, i tipi di licenza è i prublemi di migrazione ponu esse truvate in u documentu Installazione è Licenza MPLAB XC C Compilers (DS50002059).

Istruzzioni per l'usu di u produttu

  1. Prima di eseguisce u software MPLAB XC8 C Compiler, leghjite u manuale d'utilizatore per infurmazioni impurtanti è struzzioni specifichi per mira à i dispositi Microchip AVR.
  2. Sè vo aduprate u compilatore per i dispositi PIC 8-bit, riferite à u MPLAB XC8 C Compiler Release Notes for document PIC.
  3. Assicuratevi chì u vostru sistema operatore risponde à i requisiti di u sistema per eseguisce u compilatore. I binari per macOS sò stati firmati in codice è notarizzati. U MPLAB XC Network License Server hè dispunibule per Microsoft Windows 10 è sopra, Ubuntu 18.04 è sopra, è macOS 10.15 è sopra. Nota chì u MPLAB XC Network License Server ùn hè micca pruvatu in questi sistemi operativi.
  4. 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.
  5. Per attivà u MPLAB XC8 C Compiler cum'è un pruduttu licenziatu (PRO), cumprà una chjave di attivazione. Questu furnisce un livellu più altu di ottimisazione cumparatu cù a versione libera. Tuttavia, u compilatore senza licenza pò esse operatu indefinitu senza licenza.
  6. Sè aduprate u MPLAB XC8 Functional Safety Compiler per l'applicazioni di sicurezza funzionale, 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. A Licenza di u Servitore di Rete hè supportata da questa versione di MPLAB XC Functional Safety Compiler.
  7. Per istruzioni dettagliate nantu à l'installazione, l'attivazione è a licenza di u compilatore MPLAB XC8 C, riferite à u documentu Installazione è licenza MPLAB XC C Compilers (DS50002059).
  8. Sè vo site u compilatore sottu a licenza di valutazione, riceverete 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.

Overview

Introduzione
Questa liberazione di u compilatore Microchip MPLAB® XC8 C cuntene parechje funziunalità novi, correzioni di bug è supportu per novi dispositi.

Data di custruzzione
A data di creazione ufficiale di sta versione di compilatore hè u 18 d'Agostu 2023.

Versione Precedente
A versione precedente di u compilatore MPLAB XC8 C era 2.41, custruitu l'8 di ferraghju 2023.

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.

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 file chjamatu situatu u subdirectory di u vostru cartulare di installazione. Una discussione generale di i principii sottumessi à a GPL pò esse truvata quì. Codice di supportu furnitu per l'intestazione files, i script di linker è e biblioteche di runtime sò codice proprietariu è micca cuparti 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.

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® 13.2 (Ventura), è Fedora 34. 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 Hat® 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 avr_chipinfo.html (in u cartulare doc di u compilatore) per una lista di tutti i dispositi supportati. Questi file listenu ancu i paràmetri di bit di cunfigurazione per ogni dispusitivu.

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.

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 di installazione di compilatore .run (Linux) o .app (macOS), per esempiu XC8-1.00.11403-windows.exe è seguite e indicazioni nantu à u screnu. 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.

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.

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.MICROCHIP-XC8-C-Compiler-Version-2-45-Note-di-versione-per-AVR-MCU-1

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.

Assistenza Clienti
Pudete dumandà dumande à l'altri utilizatori di stu pruduttu in u Forum XC8. 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:

Nimu

  • 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.
  • 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 queste informazioni eranu precedentemente contenute in u MPLAB® XC8 C Compiler User's Guide for AVR® MCU. L'infurmazione specifica di a biblioteca hè sempre cuntenuta in sta guida di compilatore.
  • Sè avete appena principiatu cù i dispositi 8-bit è u MPLAB XC8 C Compiler, u MPLAB® XC8 User's
  • Guida per Ingegneri Embedded - AVR® MCU (DS50003108) hà infurmazioni nantu à a creazione di prughjetti in l'IDE MPLAB X è a scrittura di codice per u vostru 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.

Versione 2.45
Manager di licenza universale (XC8-3175, XCLM-224) A versione macOS di u gestore di licenza utilizata cù u compilatore hè issa universale, offre un supportu nativu per e macchine basate in Intel è M1. A versione Linux di u gestore di licenza necessita avà almenu a versione 2.25 di glibc. Binari universali Mac (XC8-3168, XC8-2951) I schedarii binari di compilatori per macOS sò avà universali, offrenu supportu nativu per e macchine basate in Intel è M1. Dimensioni ridotte di libreria in virgola flottante (XC8-3112, XC8-3071) Migliuramenti sò stati fatti à e funzioni di libreria in virgola flottante, cumprese sinf() pow(), sqrt(), expf(), log1fp(), è nextafterf() , chì vede una riduzzione di a dimensione di codice per queste rutine. U supportu di novu dispositivu Supportu hè avà dispunibule per e seguenti parti AVR: AVR16EA28, AVR16EA32, AVR16EA48, AVR32EA28, AVR32EA32, AVR32EA48, AVR16EB14, AVR16EB20, AVR16EB28 è AVR16EB32.

Versione 2.41

  • Supportu Bootrow (XC8-3053) U compilatore metterà u cuntenutu di ogni rùbbrica cù un prefissu .bootrow à l'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 ritornu redundante (XC8-3048) U compilatore avà eliminà l'istruzzioni ret redundant in funzioni cù un saltu di coda quandu si usanu 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.
  • Cambiamentu di u tipu di tempu (XC8-2982, 2932) U tipu di libreria standard C99, time_t hè statu cambiatu da un longu longu à un tipu longu senza firmatu, chì dà migliure di a dimensione di codice in alcune funzioni di tempu, cum'è mktime ().
  • New nop (XC8-2946, 2945) A macro NOP() hè stata aghjuntu à . Questa macro inserisce una struzzione nop senza operazione 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 pruverà à rimpiazzà cù l'istruzzioni rcall à una struzzione di chjama jmp chì "trampoline' esecuzione à l'indirizzu necessariu, per esampLe:

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 l'astrazione procedurale (PA) hè statu migliuratu in modu chì u codice chì cuntene una struzzione di chjama di funzione (call / rcall) pò esse delineatu. Questu serà solu se a pila ùn hè micca utilizata 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 -mno-pa-outline-calls, o l'astrazione procedurale pò esse disattivata interamente per un schedariu d'ughjettu è o funzione usendu -mno-pa-on-file -mno-pa-on-function, rispettivamente, o usendu l'attributu nopa (__nopa specifier) selettivamente cù e funzioni.
  • Macro di copertura di codice U compilatore definisce avà a macro __CODECOV se una opzione valida -mcodecov hè specifica.
  • Opzione di riservazione di memoria U driver xc8-cc accetta ora l'opzione -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.

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.

Versione 2.36
Nimu.

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.
  • Mappatura flash cunfigurabile Certi dispositi in a famiglia AVR DA è AVR DB anu un SFR (per esempiu, FLMAP) chì specifica quale sezione di 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 qualificati in una sezione 32k è inizializza automaticamente u registru SFR pertinente per assicurà chì questi dati sò mappati in u spaziu di memoria di dati. , induve serà accessu più efficacemente.
  • Biblioteche standard unificate di Microchip Tutti i compilatori MPLAB XC sparteranu una libreria standard unificata di Microchip, chì hè avà dispunibule cù questa versione di MPLAB XC8. U MPLAB® XC8 C Compiler User's Guide for AVR® MCU ùn include più a documentazione per queste funzioni standard. Questa infurmazione pò esse truvata in a Guida di Riferimentu di Biblioteche Standard Unificate Microchip. Nota chì alcune funziunalità definite prima da avr-libc ùn sò più dispunibili. (Vede a funziunalità Library.)
  • Smart IO Cum'è parte di e novi librerie unificate, e funzioni IO in e famiglie printf è scanf sò oghji generate in modu persunalizatu nantu à ogni custruzzione, basatu annantu à cumu queste funzioni sò aduprate in u prugramma. Questu pò riduce significativamente i risorse utilizati da un prugramma.
  • Opzione di assistenza Smart IO Quandu analizà e chjama à e funzioni intelligenti di IO (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. senza assunzioni è assicuratevi chì e funzioni IO cumpletamente funziunali sò state ligate à 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 specifichi di cunversione utilizati da smart IO. funzioni chì l'usu hè ambiguu, impediscendu chì e rutine IO eccessivamente longu sò ligati (Vede l'Opzione smart-io-format per più dettagli.)
  • Pone e sezioni persunalizate In precedenza, l'opzione -Wl,–section-start hà solu pusatu a sezione specifica à l'indirizzu dumandatu quandu u script di linker hà definitu una sezione di output cù u listessu 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 sezioni persunalizate, ancu s'ellu u script di linker ùn definisce micca a sezione. Nota, però, chì per e rùbbriche standard, cum'è .text, .bss o .data , l'allocatore più adattatu hà sempre un cuntrollu tutale di a so piazzamentu, è l'opzione ùn hà micca effettu. Aduprate l'opzione -Wl,-Tsection=addr, cum'è descritta in a guida di l'utilizatori.

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 u schedariu di mappa, 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, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX
  • U supportu di u dispositivu ritiratu U supportu ùn hè più dispunibule per e seguenti parti AVR: AVR16DA28, AVR16DA32 è, AVR16DA48.

Versione 2.31
Nimu.

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 suppressendu l'output di i simboli do_clear_bss in i fugliali di assemblea, chì à u turnu impediscenu l'inclusione di queste rutine 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 queste ottimisazioni, in particulare -fsection- 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 procedurali 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 hè dispunibule per e seguenti parti di AVR: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DA28, AVR128, AVR32, AVR128, AVR48, AVR128, AVR64 XNUMXDBXNUMX.
  • U supportu di supportu di u dispositivu ritiratu ùn hè più dispunibule per e seguenti parti AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616Q, ATA6617C664251, ATAXNUMX.

Versione 2.29 (Release Functional Safety)

  • File d'intestazione per u compilatore integratu Per assicurà chì u compilatore pò cunfurmà cù e specificazioni di lingua cum'è MISRA, u , 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; quessi 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.

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.

Versione 2.19 (Release Functional Safety)
Nimu.

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 à l'iniziu di u schedariu per escludiri tuttu u schedariu da l'analisi di a cobertura. In alternativa, u __attribute__((nocodecov)) pò esse usatu per escludiri una funzione specifica da l'analisi di copertura.
  • Fichi di descrizzione di u dispositivu Un novu schedariu di u dispositivu chjamatu avr_chipinfo.html si trova in u cartulare docs di a distribuzione di compilatore. Stu schedariu lista tutti i dispositi supportati da u compilatore. Cliccate nant'à u nome di un dispositivu, è apre una pagina chì mostra tutti i paràmetri di bit di cunfigurazione permessi / coppie di valore per quellu dispusitivu, cù ex.amples.
  • Astrazione procedurale L'ottimisazioni di l'astrazione procedurale, chì rimpiazzanu i blocchi cumuni di codice di assemblea cù chjamate à una copia estratta di quellu bloccu, sò stati aghjuntu à 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 schedariu d'ughjettu usendu -mno-pa-on-file=filename , o disattivatu per una funzione usendu -mno-pa-on- function=funzione. 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.
  • Supportu di bit di bloccu in pragma A cunfigurazione #pragma pò avà esse usata per specificà i bit di bloccu AVR è ancu l'altri bit di cunfigurazione. Verificate u schedariu avr_chipinfo.html (citatu sopra) per i paràmetri di paràmetri / valore per utilizà cù stu pragma.
  • U supportu di novu dispositivu Supportu hè dispunibule per e seguenti parti: AVR28DA128, AVR64DA128, AVR32DA128 è AVR48DA128.

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.
  • Oggetti custanti in a memoria di u prugramma U compilatore pò avà mette l'uggetti cunstu-qualificati in a memoria Flash di u prugramma, invece di avè questi situati in RAM. U compilatore hè statu mudificatu in modu chì i dati globale custu-qualificati sò almacenati in a memoria flash di u prugramma è queste dati ponu accede direttamente è indirettamente cù l'istruzzioni di memoria di prugramma appropritate. 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.

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 set di opzioni simili cù una semantica simile per esse utilizatu per creà o manipulà qualsiasi schedariu di biblioteca PIC o AVR è 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.

Versione 2.45
Nimu.

Versione 2.41
Funzioni fma imprecise eliminate (XC8-2913) A biblioteca standard C99 ( ) ùn hà micca calculatu una multiplicazione-aghjunghje cù precisione infinita à un arrotondamentu unicu, ma invece hà accumulatu errori di arrotondamentu cù ogni operazione. Queste funzioni sò state eliminate da a biblioteca furnita.

Versione 2.40
Nimu.

Versione 2.39 (Release Functional Safety)
Nimu.

Versione 2.36
Nimu.

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 specifica hè più grande di 36. è invece metterà. 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 ottimisazioni di livellu 3 (-O3). 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 certi circustanze paragunatu à quellu furnitu da l'antica biblioteca avr-libc. Per esample, ùn hè più necessariu di ligà in a libreria lprintf_flt (opzione -lprintf_flt) per attivà u supportu IO furmatu per i specificatori di formatu float. E funzioni IO intelligenti di a Biblioteca Standard Unificata di Microchip rende questa opzione redundante. Inoltre, l'usu di rutine 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 (per esempiu, strcpy() funziona bè cù tali dati quandu a funzione const-data-in-program-memory hè attivata.

Versione 2.32
Nimu.

Versione 2.31
Nimu.

Versione 2.30
Nimu.

Versione 2.29 (Release Functional Safety)
Nimu.

Versione 2.2
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.

Versione 2.19 (Release Functional Safety)
Nimu.

Versione 2.10
Nimu

Versione 2.05
Oggetti custì in a memoria di u prugramma Nota chì l'uggetti custu-qualificati per difettu seranu posti è accede à a memoria di u prugramma (cum'è descritta quì). 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 -mno-const-data-in-progmem.

Versione 2.00

  • Fusibili di cunfigurazione I fusibili di cunfigurazione di u dispositivu ponu avà programmatu cù un pragma di cunfigurazione seguitu da coppie di valori di paràmetri 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 piazzati in un indirizzu specificu in memoria utilizendu u CCI __at (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. Habilita a CCI per aduprà sta funzione.
  • A nova sintassi di a funzione di interruzzione U compilatore accetta avà u CCI __interrupt(num) specificatore per indicà chì e funzioni C sò gestori di interruzzione. U specificatore 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 correggere i bug 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.

Versione 2.45

  • Errore di licenza di roaming (XCLM-235) Licenze di roaming ùn anu micca travagliatu bè in e plataforme Linux chì utilizanu versioni glibc più tardi di 2.28.
  • Errore internu cù array di strutture (XC8-3069) Quandu i membri di l'array multidimensionale di una struttura sò stati processati, u qualificatore di u spaziu di indirizzu ùn hè micca propagatu currettamente à l'array. Questu hà purtatu à una discrepanza in l'infurmazioni di qualificazione di u spaziu di indirizzu è un errore di compilatore internu. Sta situazione hè stata corretta.
  • Scritte sbagliate à i flussi non inizializzati (ML-353, XC8-3100) Se i flussi standard di output / errore ùn sò micca stati esplicitamente configurati cù FDEV_SETUP_STREAM o _init_stdout/_init_stderr , tentativu di scrive à elli hà risultatu in un cumpurtamentu indefinitu. Questu hà ancu affettatu i scrive da e funzioni stdlib, cum'è perror (). Qualchese scrittura à questi flussi prima ch'elli sò stati inizializzati seranu avà ignorati.
  • Modificatore senza supportu (XC8-2505) A libreria avr-libc ùn hà micca supportatu u modificatore * in i specificatori di cunversione in stile printf, per esempiuample "%.*f". Questu hè avà supportatu cù l'intruduzioni di a Biblioteca Standard Unificata di Microchip.
  • Avvisi multipli non inizializzati (XC8-2409) U compilatore emetteva parechji messagi d'avvirtimenti identici quandu scontra un array const chì ùn era micca inizializatu. U missaghju deve esse statu emessu solu una volta, chì hè avà u casu quandu sta situazione si trova.

Versione 2.41

  • Problemi di Dongle nantu à Ventura (XC8-3088) Dongle utilizati per licenziari u compilatore puderia micca esse stati letti bè nantu à l'ospiti macOS Ventura, risultatu in fallimenti di licenza. I cambiamenti à u gestore di licenze XCLM corregnu stu prublema.
  • Indicazione sbagliata di l'allocazione di memoria (XC8-2925) Tentativu di attribuisce SIZE_MAX byte (o un valore vicinu à questu) di memoria utilizendu e funzioni standard di gestione di memoria di libreria (malloc() et al) dumandate 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 cù 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 sughjettu" per a cunversione da strtod() cuntene ciò chì pareva esse un numeru à virgola flottante in formatu esponenziale è ci era un caratteru inesperu dopu à e / E caractère, alors où endptr avait été fourni, on lui a assigné une adresse qui l'avait pointé vers le caractère après le , 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 indicà a parte "exx" di a stringa, mentre chì a funzione rinviava u valore currettu ma stabilisce a parte "xx" di a stringa.

Versione 2.40

  • Troppu rilassatu (XC8-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-mapped-progmem dipende da a funzione const-data-in-progmem chì hè attivata. Se a funzione const-data-in-config-mapped-progmem hè stata esplicitamente attivata cù l'opzione è a funzione const-data-in-progmem hè stata disattivata, u passu di ligame hà fiascatu, malgradu un missaghju d'avvertimentu chì dichjarava chì u const-data-in A funzione -config-mapped-progmem era stata disattivata automaticamente, chì ùn era micca sanu currettu. A funzione const-data-in-config-mapped-progmem hè avà disattivata cumplettamente in questa situazione.
  • Cambiamenti di DFP 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 Cambia di Cunfigurazione (CCP) è ùn era micca capace di stabilisce l'IO SFR à a pagina utilizata. da a funzione di compilatore const-data-in-config-mapped-progmem. I cambiamenti fatti in AVR-Ex_DFP versione 2.2.55 permettenu à u codice di startup runtime di scrive currettamente in stu registru.
  • Cambiamenti di DFP per evità a mappatura flash (XC8-2847) Una soluzione per un prublema cù a funzione di u dispositivu di flash-mapping riportata in l'AVR128DA28/32/48/64 Silicon Errata (DS80000882) 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 custruzzione cù sinhf o coshf (XC8-2834) I tentativi di utilizà e funzioni di a libreria 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 (XC8-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è attivatu. Argumenti chì eranu punters à a memoria di dati sò stati passati cum'è oggetti di 16-bit, causendu fallimentu di codice quandu sò stati ultimamente letti. Quandu a funzione const-data-in-progmem hè attivata, tutti l'argumenti di puntatori di 16 bit sò avà cunvertiti in puntatori di 24 bit.
  • E funzioni di a 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 a stringa fonte micca in a memoria di u prugramma.
  • Alerts for invalid casts (XC8-2612) U compilatore avà emette un errore se a funzione const-in-progmem hè attivata è l'indirizzu di una stringa literale hè esplicitamente cast à l'spaziu di l'indirizzu di dati (abbandunendu u qualificatore const), per esempiu.ample, (uint8_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.
  • Placement of const objects non inizializzati (XC8-2408) Uninitialized and const object volatile const
    Ù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.

Versione 2.39 (Release Functional Safety)
Nimu.

Versione 2.36
Errore durante u ritardu (XC8-2774) I cambiamenti minori in l'ottimisazioni di u modu liberu predefinitu 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: __builtin_avr_delay_cycles aspetta un interu di compilazione. custanti.

Versione 2.35

  • Allocazione contigua utilizendu __at (XC8-2653) L'assegnazione contigua di parechji posti d'oggetti in una sezione cù u stessu nome è utilizendu __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 iniziu di a sezione (XC8-2650) L'opzione -Wl,–section-start falliva in silenziu per mette e sezioni à l'indirizzu iniziale nominatu. Stu prublema hè stata risolta per ogni sezione di nome persunalizata; in ogni modu, ùn hà micca travagliatu per qualsiasi rùbbriche standard, cum'è .text o .bss, chì deve esse piazzatu cù una opzione -Wl,-T. Linker crashes when relaxing (XC8-2647) Quandu l'ottimisazione -mrelax hè stata attivata è ci era codice o sezioni di dati chì ùn si sò micca inseriti in a memoria dispunibile, u linker hà sbulicatu. Avà, in una tale circustanza, i missaghji d'errore sò emessi invece.
  • No no-fallback-back (XC8-2646) L'opzione -nofallback ùn hè micca stata implementata currettamente, 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 (XC8-2637) L'ottimisazioni di astrazione procedurali sò state attivate quandu selezziunate l'ottimisazioni di livellu 3 (-O3). Queste ottimisazioni reducenu a dimensione di u codice à a spesa di a velocità di u codice, cusì ùn deve micca esse realizatu.
  • Accessu EEPROM Bad (XC8-2629) A rutina 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 l'opzione -Ttext o -Tdata linker (per es.ampu passaghju 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 with over-attributed function (XC8-2580) U compilatore hà crashatu se una funzione hè stata dichjarata utilizendu più di unu di l'attributi interrupt, signal o nmi, per esempiu, __attribute__((__signal__, __interrupt__)).
  • Codice di interruzzione ATtiny invalidu (XC8-2465) Quandu si custruisce per i dispositi ATtiny è l'ottimisazioni sò stati disattivati ​​(-O0), e funzioni di interruzzione pò avè attivatu l'operandu fora di u range.
  • Opzioni chì ùn sò micca passate (XC8-2452) Quandu si usa l'opzione -Wl 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 (XC8-2450) In certi casi, u compilatore hà pruduciutu un errore internu (insn micca ricunnisciutu) quandu leghje un valore di dui byte da un puntatore à a memoria di u prugramma.

Versione 2.32
U secondu accessu di a biblioteca falla (XC8-2381) Invucà a versione di 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 incapaci di rinomina.

Versione 2.31
Errori inspiegabili di u compilatore (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.

Versione 2.30

  • Etichette globale sbagliate dopu a delineazione (XC8-2299) Codice di assemblea scritta a manu chì mette etichette globale in sequenze di assemblea chì sò fatturate da l'astrazione procedurale puderia micca esse stata riposizionata currettamente.
  • Un crash rilassante (XC8-2287) Utilizendu l'opzione -mrelax puderia avè causatu u ligame per crash quandu l'ottimisazioni di rilassazione di u saltu di coda tentavanu di sguassà l'istruzzioni ret chì ùn eranu micca à a fine di una sezione.
  • Crash quandu ottimisate etichette cum'è valori (XC8-2282) Codice utilizendu 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 intervalli.
  • Not so const (XC8-2271) I prototipi per strstr () è altre funzioni da ùn specifica più u qualificatore non standard nantu à i puntatori di stringa restituiti quandu a funzione const -mconst-data-in-progmem 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__((section)) ), è a prima variabile era zero inizializzata o ùn avia micca un inizializzatore, inizializzatori per altri variàbili in a listessa unità di traduzzione chì sò stati posti in a listessa sezione sò stati persi.

Versione 2.29 (Release Functional Safety)
Nimu.

Versione 2.20

  • Errore cù cumandamenti longu (XC8-1983) Quandu si usa un target AVR, u compilatore pò esse firmatu cù un errore di fugliale micca truvatu, se a linea di cumanda era estremamente grande è cuntene caratteri speciali cum'è virgulette, backslash, 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.

Versione 2.19 (Release Functional Safety)
Nimu.

Versione 2.10

  • Fallimenti di trasferimentu (XC8-1891) L'allocatore più adattatu era lascià "buchi" di memoria trà e sezioni dopu a rilassazione di u 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 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, cumpresi l'ATmega324PB, ATmega328PB, ATtiny441 è ATtiny841.
  • Macro mancanti I macros preprocessori _XC8_MODE_, __XC8_VERSION, __XC è __XC8 definiti automaticamente da u compilatore. Quessi sò avà dispunibili.

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 RAM ùn hè micca rilevatu (XC8-1800, XC8-1796) I prugrammi chì anu superatu a RAM dispunibile ùn sò micca stati rilevati da u compilatore in certe situazioni, risultatu 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 avia micca definite variabili globali, u codice di startup runtime ùn hè micca esce è a funzione main() ùn hè mai stata ghjunta.
  • Infurmazione di memoria incorretta (XC8-1787) Per i dispositi avrxmega3 è avrtiny, u prugramma avr-size informava chì i dati di sola lettura cunsumanu 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'ogetti cù 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 l'uggetti di puntatore cù i tokens __at() 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.
  • A mancanza di eseguisce main (XC8-1780, XC8-1767, XC8-1754) Utilizendu variabili EEPROM o definendu fusibili utilizendu u pragma di cunfigurazione puderia avè causatu l'inizializazione di dati incorrecte è / o l'esecuzione di u prugramma bloccata 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 anu una lunghezza di fusible incorrecta specificata in i so schedarii di l'intestazione chì portanu à errori di linker quandu pruvate di custruisce codice chì definisce i fusibili. .
  • Errore di segmentazione (XC8-1777) Un difettu di segmentazione intermittente hè stata corretta.
  • Assembler crash (XC8-1761) L'assembler avr-as puderia avè crashatu quandu u compilatore era eseguitu sottu Ubuntu 18.
  • Oggetti micca sbulicati (XC8-1752) L'oggetti 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 a memoria da u heap (XC8-1748) U simbulu __heap_start hè statu stallatu in modu incorrectu, risultatu in a pussibilità di variàbili ordinarii esse currutti da u heap.
  • Errore di trasferimentu di 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 byte di distanza.

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 tìtulu 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 articuli chì ùn anu micca etichette sò limitazioni chì descrizanu modi operandi è chì sò prubabilmente esse in effettu permanentemente.

Integrazione MPLAB X IDE

  • Integrazione MPLAB IDE Se u compilatore deve esse usatu da MPLAB IDE, allora deve installà MPLAB IDE prima di installà u compilatore.
  • Array debug information (XC8-3157) L'informazione di debug prodotta da u compilatore ùn trasmette micca accuratamente u tipu d'ughjettu per arrays in u spaziu di indirizzu __memx. Questu impedisce l'osservazione di l'ughjettu in un IDE.

Generazione di codice

  • Segfault with section-anchors opzione (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 es.ample 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.
  • Fallu di allocazione di memoria PA (XC8-2881) Quandu si usa l'optimizatori di astrazione procedurale, u linker puderia signalà errori di assegnazione di memoria quandu a dimensione di u codice hè vicinu à a quantità di memoria di prugramma dispunibule nantu à u dispositivu, ancu s'ellu u prugramma deve esse capace di adattà à i dispunibuli dispunibili. spaziu.
  • Micca intelligente Smart-IO (XC8-2872) A funzione smart-io di u compilatore genererà un codice validu ma sub-ottimale per a funzione snprintf se a funzione const-data-in-progmem hè stata disattivata o se u dispusitivu hà tutte e so funzioni. flash mappatu in memoria di dati.
  • Ancu menu smart Smart-IO (XC8-2869) A funzione smart-io di u compilatore genererà un codice validu ma sub-ottimale 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.
  • Ordine di trasfurmazioni di u schedariu d'ughjettu (XC8-2863) L'ordine in quale i fugliali di l'uggetti seranu processati da u linker pò esse diffirenti 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 fattu assolutu à 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 PHID0/1 sò definiti solu cum'è 16 bit di larghezza, invece di 32 bit di larghezza.
  • Crash di u 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 utilizendu l'opzione -Wl,–defsym linker.
  • Inizializazione incorretta (XC8-2679) Ci hè una discrepanza trà induve i valori iniziali per alcuni oggetti di dimensioni di byte globale / statiche sò posti in memoria di dati è induve e variàbili seranu accessu à runtime.
  • Chjama di funzione indiretta cattiva (XC8-2628) In certi casi, e chjama di funzione fatte via un punteru di funzione guardatu cum'è parte di una struttura puderanu falla.
  • strtof restituisce zero per i floats esadecimali (XC8-2626) E funzioni di biblioteca strtof() et al è scanf() et al, cunvertiranu sempre un numeru esadecimale in virgola mobile chì ùn specifica micca un esponente à zero. Per esample: strtof ("0x1", &endptr); restituverà u valore 0, micca 1.
  • Messaggistica imprecisa di u cunsigliu di stack (XC8-2542, XC8-2541) In certi casi, l'avvisu di stack advisor in quantu à a ricursione o a pila indeterminata aduprata (possibilmente 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.
  • Bad output cù un percorsu DFP invalidu (XC8-2376) Se u compilatore hè invucatu cù un percorsu DFP invalidu è esiste un schedariu "spec" per u dispositivu sceltu, u compilatore ùn hà micca signalatu u pacchettu di famiglia di dispositivi mancanti è invece selezziunate "spec" file, chì poi pò purtà à un output invalidu. I fugliali "spec" puderianu micca esse aghjurnati cù i DFP distribuiti è sò stati destinati à aduprà solu cù testi di compilatore internu.
  • Sovrapposizione di memoria micca rilevata (XC8-1966) U compilatore ùn rileva micca a sovrapposizione di memoria di l'uggetti assuluti à un indirizzu (via __at()) è altri oggetti chì utilizanu u __section() specifier è chì sò ligati à u listessu indirizzu.
  • Fallu cù e funzioni di biblioteca è __memx (XC8-1763) Chjamate libgcc float functions cun 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 limitata libgcc (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 -mrelax hè aduprata.
  • Limitazioni di u spaziu di u nome (AVRTC-733) I spazii di l'indirizzu chjamatu sò supportati da a catena di strumenti, sottumessu à e limitazioni citate in a sezione di guida di l'utilizatori Special Type Qualificatori.
  • I fusi orari The E funzioni di biblioteca assumenu GMT è ùn supportanu micca i fusi orari lucali, cusì localtime () restituverà u stessu tempu cum'è gmtime () , per esempiuample.

Documenti / Risorse

MICROCHIP XC8 C Compiler Versione 2.45 Note di versione per AVR MCU [pdf] Istruzzioni
AVR MCU, XC8 C, XC8 C Compiler Versione 2.45 Note di rilascio per AVR MCU, Compiler Versione 2.45 Note di rilascio per AVR MCU, Versione 2.45 Note di rilascio per AVR MCU, Note di rilascio per AVR MCU, Note per AVR MCU, AVR MCU

Referenze

Lascia un cumentu

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