Software di compilazione MICROCHIP MPLAB XC8 C 

Software di compilazione MICROCHIP MPLAB XC8 C

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

Cuntenuti ammuccià

Overview

Introduzione

Questa versione di u compilatore Microchip MPLAB® XC8 C cuntene parechje funzioni novi, correzioni di bug è supportu di novu dispositivu.

Data di custruzzione

A data ufficiale di creazione di sta versione di compilatore hè u 3 di lugliu 2022.

Versione Precedente

A versione precedente di u compilatore MPLAB XC8 C era 2.39, un compilatore di sicurezza funziunale, custruitu u 27 di ghjennaghju di u 2022. U compilatore standard precedente era a versione 2.36, custruitu u 27 di ghjennaghju di u 2022.

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 10.15.5. I binari per Windows sò stati firmati in codice. I binari per mac OS 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.

Dispositivi Supportati

Stu compilatore supporta tutti i dispositi MCU AVR 8-bit cunnisciuti à u mumentu di a liberazione. Vede (in u cartulare doc di u compilatore) per una lista di tutti i dispositi supportati. Quessi fileElenca 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 .exe (Windows), .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 sottu à 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 right file, sceglite 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 %temp% in u cumandamentu Run (key logu Windows + R). Questu hà da apre a file dialogu di esploratore 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.

Documentazione di compilatore
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

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:

  • Avisu di copyright MUSL
  • Installazione è licenza di compilatori MPLAB XC C (revisione M)
  • MPLAB XC8 User!s Guide for Embedded Engineers - AVR MCUs (revision A)
  • Guida per l'utente di MPLAB XC8 C Compiler per AVR MCU (revisione F)
  • Microchip Unified Standard Library Reference Guide (revisione B)

U Microchip Unified Standard Library Reference Guide descrive u cumpurtamentu è l'interfaccia à e funzioni definite da a Microchip Unified Standard Library, è ancu l'usu destinatu di i tipi di biblioteca è macros. Alcune di queste informazioni eranu precedentemente contenute in u MPLAB® XC8 C Compiler User!s Guide for AVR® MCU. L'infurmazione di a biblioteca specifica di u dispositivu hè sempre cuntenuta in questa guida di compilatore.

Sè avete principiatu cù i dispositi 8-bit è u compilatore MPLAB XC8 C, a Guida di l'Usuariu MPLAB® XC8 per Ingegneri Embedded - AVR® MCUs (DS50003108) hà informazioni nantu à a creazione di prughjetti in l'IDE MPLAB X è à scrive u codice. per u vostru primu prughjettu MPLAB XC8 C. Sta guida hè avà distribuita cù u compilatore.

A Guida di l'Usuariu di Hamate hè stata inclusa in u cartulare docs in questa versione. Questa guida hè destinata à quelli chì correnu Hamate 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.40

Supportu novu dispositivu U supportu hè avà dispunibule per e seguenti parti AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EAVREA32.
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 recall)) 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 monk-pa-outline-calls, o l'astrazione procedurale pò esse disattivata interamente per un oggettu. file o funzione usendu u -monk-pa-on-file è -mo.-pa-on-funzione rispettivamente, o usendu l'attributu nipa ( nipa specifier ) selettivamente cù e funzioni

Macro di copertura di codice U compilatore definisce avà a macro __CODECOV se una opzione mcodecov valida hè specificata.

Opzione di riservazione di memoria U driver xc8-cc avà accettà l'opzione -mreserve=space@start: end quandu custruisce per i miri AVR. Questa opzione riserva l'intervallu di memoria specificata in u spaziu di memoria di dati o di prugramma, impediscendu à u linker di populà codice o oggetti in questa zona.

IO intelligente più intelligente 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 trattà l'argumenti di funzione IO. , è factoring codice cumunu in larghezza di campu è manipulazione di precisione. Questu pò esse un risparmiu significativu di codice è 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

Supportu novu dispositivu U 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 A nova opzione -mgas-isr-prologues cuntrolla i cuntesti itch code 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.

Mappatura flash configurabile Certi dispusitivi in ​​a famiglia AVR DA è AVR DB anu un SFR (per esempiu, FLMAP) chì specifica quale sezione 32k di memoria di u prugramma serà mappata in a memoria di dati. A nova - mconst-data-in-config-mapped-proem opzione pò esse usata per avè u linker mette tutti i dati qualificati cuns in una sezione 32k è inizializza automaticamente u registru SFR pertinente per assicurà chì sta dati hè mappatu in u spaziu di memoria di dati. , induve serà accessu più efficacemente.

Biblioteche standard unificate Microchip Tutti i compilatori MPLAB XC sparteranu una Biblioteca Standard Unificata Microchip, chì hè avà dispunibule cù questa versione di MPLAB XC8. U MPLAB® XC8 C Compiler User's Guide/o AVR® MCU ùn include più a documentazione per queste funzioni standard. Questa infurmazione pò esse truvata in u Microchip Unified Standard Library Reference Guide. Nota chì alcune funziunalità definite prima da avr-libc ùn sò più dispunibili. (Vede Libratura):'. funziunalità ...)

Smart IO Cum'è parte di e novi biblioteche unificate, e funzioni IO in e famiglie di stampa è di scansione sò oghji generati persunalizati 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 IO Quandu analizà e chjama à e funzioni IO intelligenti (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 IO cumplettamente funziunali eranu ligati à l'imaghjini di u prugramma finale. Una nova opzione - msmart-io-format = fmt hè stata aghjunta in modu chì u compilatore pò esse infurmatu da l'utilizatori di i specificatori di cunversione utilizati da funzioni IO intelligenti chì l'usu hè ambiguu, impediscendu chì e rutine IO eccessivamente longu sò ligati. (Vede l'opzione smart-io-format per più dettagli.)

Pone 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 stessu nome. Quandu ùn era micca u casu, a rùbbrica hè stata posta à un indirizzu sceltu da u linker è l'opzione era essenzialmente ignorata. Avà l'opzione serà onorata per tutte e rùbbriche persunalizate, ancu s'è u script di linker ùn definisce micca a sezione. Nota, però, chì per e sezioni standard, cum'è . testu,. bss o. dati, l'allocatore più adattatu avarà sempre un cuntrollu tutale di a so piazzamentu, è l'opzione ùn hà micca effettu. Aduprate l'opzione -Wl, -Tsection=add, cum'è descritta in a guida di l'utilizatori.

Versione 2.32

Stack Guida 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.

Supportu di novu dispositivu hè dispunibule per e seguenti parti AVR: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48

Supportu di supportu di u dispositivu ritiratu ù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-ini t impedisce l'inizializazione di dati è a sbulicità di e sezioni bss. Funziona suppressione l'output di i simboli do_ copy_ è d o_ 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 queste ottimisazioni, in particulare -f seccione ancore, chì permette l'accessu di l'uggetti statichi per esse realizatu relative à un simbulu; -mpai derations=n, chì permette u numeru di iterazioni di astrazione procedurali per esse cambiatu da u predeterminatu di 2; è, -mpa- call cost- shortcall, chì esegue una astrazione procedurale più aggressiva, in a speranza chì u linker pò rilassà e long calls. Quest'ultima opzione pò aumentà a dimensione di u codice se l'assunzioni sottostanti ùn sò micca realizati.

Supportu novu dispositivu U supportu hè dispunibule per e seguenti parti AVR: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48, è AVR128DB.

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, ATA6617C, e ATA664251C, è ATAXNUMX.

Versione 2.29 (Release Functional Safety)

Intestazione file per i cumpilatori integrati Per assicurà chì u compilatore pò cunforme à e specificazioni di lingua cum'è MISRA, u intestazione file, chì hè automaticamente inclusu da , hè stata aghjurnata. Questu header cuntene i prototipi per tutte e funzioni integrate, cum'è _buil tin _avrnop () è _buil tin_ avr delay_ cycles () . Certi integrati ùn ponu micca esse conformi à MISRA; questi ponu esse omessi aghjunghjendu a definizione _Xe_ 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

Supportu novu dispositivu U supportu hè dispunibule per e seguenti parti AVR: ATTINY1624, ATTINY1626, è ATTINY1627.

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.

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 mcodecov 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, l'attributu ((mcodecov)) pò esse usatu per escludiri una funzione specifica da l'analisi di a cobertura.

Descrizzione di u dispusitivu files Un novu dispusitivu file chjamatu avr chipinfo. html hè situatu in u cartulare docs di a distribuzione compilatore. Questu file elenca tutti i dispositi supportati da u compilatore. Cliccate nant'à u nome di un dispositivu, è 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 ors ottimisazioni. Queste ottimisazioni riducenu a dimensione di u codice, ma ponu riduce a velocità di esecuzione è a debuggabilità di codice.
L'astrazione procedurale pò esse disattivata à livelli di ottimisazione più altu cù l'opzione -mno-pa, o pò esse attivata à livelli di ottimisazione più bassi (sughjettu à a vostra licenza) utilizendu -mpa. Pò esse disattivatu per un oggettu file usendu -mno-pa-on-file=filenome, o disabilitatu per una funzione usendu -mno-pa nantu à funzione = 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 à l'attributu ((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 l'infurmazioni di u chip avr. html file (citatu sopra) per i paràmetri / valore per aduprà cù stu pragma.
Supportu novu dispositivu U supportu hè dispunibule per e seguenti parti: AVR28DA128, AVR64DA128, AVR32DA128, è AVR48DA128.

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.
Oggetti cust in memoria di u prugramma U compilatore pò avà mette l'uggetti cust-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 cust-qualificati sò guardati in a memoria flash di u prugramma è sta 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.
Supportu novu dispositivu U 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 dispositivu 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 driver bibliotecariu Un novu driver di bibliotecariu hè posizionatu sopra u bibliotecariu PIC librariu precedente è u bibliotecariu AVR avr-ar. Stu driver accetta l'opzioni in stile GCC-archiver, chì sò sia tradutti per o trasmessi à u bibliotecariu chì hè eseguitu. U novu driver permette un settore simili di opzioni cù semantica simili per esse utilizatu per creà o manipulà qualsiasi libreria PIC o AVR. file è hè cusì u modu cunsigliatu per invucà u bibliotecariu. Se necessariu per i prughjetti legati, u bibliotecariu precedente pò esse chjamatu direttamente utilizendu l'opzioni di u vechju stile chì accettava in versioni di compilatori precedenti.

Problemi di migrazione

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

Versione 2.40

Nimu.

Versione 2.39 (Release Functional Safety)

Nimu.

Versione 2.36

Nimu.

Versione 2.35

Manipolazione di basi di corda (XCS-2420) Per assicurà a coherenza cù altri compilatori XC, e funzioni di stringa XC8, cum'è strtol () etc., ùn pruvaranu più di cunvertisce una stringa di input se a basa specificata hè più grande di 36 è invece mette errno à EINVAL. U standard C ùn specifica micca u cumpurtamentu di e funzioni quandu stu valore di basa hè superatu.

Ottimisazioni di velocità inappropriate L'ottimisazioni di astrazione procedurali sò state attivate quandu selezziunate l'ottimisazioni di livellu 3 (-03). Queste ottimisazioni reducenu a dimensione di u codice à a spesa di a velocità di u codice, cusì ùn deve micca esse realizatu. I prughjetti chì utilizanu stu livellu di ottimisazione puderanu vede differenze in a dimensione di u codice è a velocità di esecuzione quandu sò custruiti cù questa versione.

Funzionalità di a biblioteca U codice per parechje di e funzioni standard di a libreria C vene avà da a Biblioteca Standard Unificata di Microchip, chì puderia esibisce un cumpurtamentu diversu in 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 -print _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 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 ()) funzioneranu currettamente 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.20

U layout DFP hà cambiatu U compilatore assume avà un layout sfarente utilizatu da i DFP (Pacchetti di Famiglia di Dispositivi). Questu significarà chì un DFP più anticu puderia micca travaglià cù questa versione, è i compilatori più vechji ùn puderanu micca aduprà l'ultimi DFP.

Versione 2.19 (Release Functional Safety)

Nimu.

Versione 2.10

Nimu

Versione 2.05

Const oggetti in memoria di prugramma Nota chì l'uggetti predeterminati, cust-qualfiied seranu piazzati è accede in a memoria di u prugramma (cum'è discrittu 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 -mnoconst- da ta-in-progmem.

Versione 2.00

Fusibili di cunfigurazione I fusibili di cunfigurazione di u dispositivu ponu avà programatu cù un pragma di cunfigurazione seguitu da coppie di valore per specificà u statu di fusible, per esempiu.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Oggetti assoluti è funzioni L'uggetti è e funzioni ponu avà esse piazzati in un indirizzu specificu in memoria utilizendu u specificatore CCI _at (indirizzu), per es.ample: #include int foobar at (Ox800100); char at (Ox250) get ID (int offset) { ... } L'argumentu à questu specificatore deve esse una constante chì rapprisenta l'indirizzu à quale u primu byte o struzzione serà piazzatu. L'indirizzi RAM sò indicati cù un offset di 0x800000. Abilita a CCI per aduprà sta funzione.
Nova sintassi di funzione di interruzzione U compilatore accetta avà u specificatore di interruzzione CCI (num) per indicà chì e funzioni C sò gestori di interruzzione. U specifier piglia un numeru di interruzzione, per esempiuample: #include void interrupt (SPI STC_ vect _num) spi Isr (void) { … }

Problemi fissi

I seguenti sò currezzione chì sò state fatte à u compilatore. Quessi puderanu riparà bugs in u codice generatu o alteranu l'operazione di u compilatore à quellu chì era previstu o specificatu da a guida di l'utilizatori. U numeru di versione in i 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ò 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.40

Troppu rilassatu (XCS-2876) Quandu s'utilice l'opzione -mrelax, u compilatore ùn hà micca attribuitu alcune rùbbriche inseme, risultatu in dimensioni di codice menu ottimali. Questu puderia esse accadutu cù u codice chì usava e novi librerie MUSL o cù simboli debuli.
A funzione di mappatura ùn hè micca disattivata cum'è dichjaratu in l'avvisu (XCS-2875) A funzione cost-data-in-config mappedprogmem dipende da a funzione cost-data-in-proem chì hè attivata. Se a funzione cost-data-ipconfig-mapped-proem hè stata esplicitamente attivata usendu l'opzione è a funzione cost-data-inprogmem hè stata disattivata, u passu di u ligame hà fiascatu, malgradu un missaghju d'avvertimentu chì indicava chì u cuns data-in-config-mapped- A funzione proem hè stata disattivata automaticamente, chì ùn era micca sanu currettu. A funzione const-data-in-config-mapped-proem hè issa completamente disattivata in questa situazione.
DFP cambia per accede currettamente à NVMCTRL (XCS-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 Configurazione (CCP) è ùn era micca capace di stabilisce l'IO SFR à a pagina utilizata da u compilatore const-data-in configmapped-proem. funziunalità. I cambiamenti fatti in AVR-Ex_DFP versione 2.2.55 permettenu à u codice di startup runtime di scrive currettamente in stu registru.
DFP cambia per evità a mappatura flash (XCS-2847) Un travagliu per un prublema cù a funzione di u dispositivu di mapping flash rappurtatu in l'AVR128DA28/32/48/64 Silicon Errata (DS80000882) hè stata implementata. A funzione di compilatore const-data-in-config-mapped-proem ùn serà micca applicata per difettu per i dispositi affettati, è questu cambiamentu appariscerà in AVR-Ex_DFP versione 2.2.160.
Errore di creazione cù sinhf o coshf (XCS-2834) I tentativi di utilizà e funzioni di biblioteca sinhf () o coshf () anu risultatu in un errore di ligame, chì descrive una riferenza indefinita. A funzione mancante riferita hè stata inclusa in a distribuzione di compilatore.
Custruisce errori cù nopa (XCS-2833) Aduprà l'attributu nopa cù una funzione chì hà avutu u so nome di assembler specificatu utilizendu cum'è () attivatu messagi d'errore da l'assembler. Sta cumminazzioni ùn hè micca pussibule.
Errore di funzione Variadic cù argumenti di puntatore (XCS-2755, XCS-2731) E funzioni cù un numeru variabile di argumenti aspettanu punters 24-bit (tipu _memo) per esse passati in a lista di argumenti variabili quandu a funzione di costu-data-in-proem hè attivata. L'argumenti chì eranu punters à a memoria di dati sò stati passati cum'è oggetti di 16 bit, causannu fallimentu di codice quandu sò stati ultimamente letti. Quandu a funzione cons data-in-proem 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 (XCS-2620) Quandu a funzione const-data-in-proem hè stata attivata, u paràmetru di inserimentu in e funzioni di a libreria strtoxxx ùn hè micca aghjurnatu bè per l'argumenti di stringa fonte chì ùn sò micca in memoria di u prugramma.
Avvisi per cast invalidi (XCS-2612) U compilatore avà emette un errore se a funzione cost-in-proem hè attivata è l'indirizzu di una stringa literale hè esplicitamente esplicitatu à u spaziu di l'indirizzu di dati (abbandunendu u qualificatore const), per esempiu.ample, (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.
Posizionamentu di l'oggetti cust micca inizializzati (XCS-2408) L'uggetti cust e cust v olatile non inizializzati ùn sò micca stati posti in a memoria di u prugramma in i dispositi chì mappanu tuttu o parte di a so memoria di prugramma in u spaziu di l'indirizzu di dati. Per questi dispusitivi, tali oggetti sò avà posti in a memoria di u prugramma, facendu u so funziunamentu coherente cù altri dispositi.

Versione 2.39 (Release Functional Safety)

Nimu.

Versione 2.36

Errore durante u ritardu (XCS-2774) I cambiamenti minori in l'ottimisazioni di u modu liberu predeterminatu impediscenu a piegatura constante di l'espressioni di l'operandu à e funzioni integrate di ritardu, chì anu da esse trattatu cum'è non-contacts è scatenendu l'errore: _buil tin avr delay_ cycles aspetta ac ompile constante di tempu interu.

Versione 2.35

Allocazione contigua utilizendu _at (XCS-2653) L'assegnazione contigua di parechji posti d'oggetti in una sezione cù u stessu nome è cù l'usu di () ùn hà micca travagliatu bè. Per esample: constchararrl [ ] at tri butte ((sect on (".misses"))) at (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[ ] at tri butte ((section (".my s eke"))) = {Oxen, Ox FE }; duverebbe mette arr2 immediatamente dopu à aril.
Specificà l'indirizzi di partenza di a sezione (XCS-2650) L'opzione -Wal, -section-start falliva in silenziu per mette e sezioni à l'indirizzu iniziale nominatu. Stu prublema hè stata risolta per ogni sezione chjamata persunalizata; in ogni modu, ùn hà micca travagliatu per qualsiasi sezzioni standard, cum'è . testu o. bss, chì deve esse piazzatu cù l'opzione -Wl, -T.
Linker si blocca quandu si rilassa (XCS-2647) Quandu l'ottimisazione -relax hè stata attivata è ci era codice o sezioni di dati chì ùn sò micca intrudutte in a memoria dispunibile, u linker crash. Avà, in una tale circustanza, i missaghji d'errore sò emessi invece.
Accessu EEPROM sbagliatu (XCS-2629) A rutina di bloccu di leproma _read_ ùn hà micca travagliatu bè in i dispositi Mega quandu l'opzione -monist-data-in-proem hè stata attivata (chì hè u statu predeterminatu), risultatu in a memoria EEPROM chì ùn hè micca lettu bè.
Allocazione di memoria invalida (XCS-2593, XCS-2651) Quandu l'opzione -Text o -Tata linker (per esampu passatu 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.
Codice di interruzzione ATtiny invalidu (XCS-2465) Quandu custruite per i dispositi Tatin è l'ottimisazioni sò stati disattivati ​​(-00), e funzioni di interruzzione pò avè attivatu l'operandu fora di messagi di assembler.
Opzioni chì ùn passanu micca (XCS-2452) Quandu si usa l'opzione -Wl cù parechje opzioni di ligame separati da virgola, micca tutte l'opzioni di ligame sò stati passati à u ligame.
Errore di lettura indiretta di a memoria di u prugramma (XCS-2450) In certi casi, u compilatore hà pruduciutu un errore internu (insn unrecognizable) quandu leghje un valore di dui byte da un puntatore à a memoria di u prugramma.

Versione 2.32

U secondu accessu à a biblioteca falla (XCS-2381) Invucà a versione Windows di u xc8-ar. L'archiviu di a biblioteca exe una seconda volta per accede à un archiviu di a biblioteca esistente pò esse fallutu cù un missaghju d'errore incapace di rinominà.

Versione 2.31

Errori di compilatore inspiegabili (XCS-2367) Quandu eseguite nantu à e plataformi Windows chì avianu u cartulare temporale di u sistema stabilitu in una strada chì includeva un puntu ". carattere, u compilatore pò esse fiascatu à eseguisce.

Versione 2.30

Etichette globale sbagliate dopu a delineazione (XCS-2299) U codice di assemblea scritta à manu chì mette etichette globale in sequenze di assemblea chì sò fatturate da l'astrazione procedurale puderia micca esse riposizionata currettamente.
Un crash rilassante (XCS-2287) Utilizà l'opzione -merlad puderia avè causatu u ligame per crash quandu l'ottimisazioni di rilassazione di u saltu di a cuda tentavanu di sguassà l'istruzzioni ret chì ùn eranu micca à a fine di una sezione.
Crash quandu ottimisate etichette cum'è valori (XCS-2282) U codice chì utilizeghja l'estensione di lingua GNU C "Etichette cum'è valori" puderia avè causatu l'ottimisazioni di l'astrazione procedurale à crash, cù un errore di correzione di una gamma VMA Outlined.
Micca cusì cust (XCS-2271) I prototipi per parte () è altre funzioni da ùn specifica più u qualificatore di costu non standard nantu à i puntatori di stringa restituiti quandu a funzione -monist-data inprogmem hè disattivata. Nota chì cù i dispositi avrxmega3 è avertin, sta funzione hè permanentemente attivata.
Inizializzatori persi (XCS-2269) Quandu più di una variabile in una unità di traduzzione hè stata posta in una sezione (usendu a sezione o l'attributu ((sezione))), è a prima variabile hè stata inizializzata cero o ùn hà micca un inizializzatore, inizializzatori per altre 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 (XCS-1983) Quandu si usa un target AVR, u compilatore pò esse firmatu cù a file Errore micca truvatu, se a linea di cummanda era estremamente grande è cuntene caratteri speciali cum'è virgolette, backslash, etc.
Sezione rodata non assignata (XCS-1920) L'AVR linker ùn hà micca riesciutu à 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

Falli di traslocazione (XCS-1891) L'allocatore più adattatu era di 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 chì sò fora di u range.
Istruzzioni micca trasfurmate da rilassazione (XCS-1889) U rilassamentu di Linker ùn hè micca accadutu per l'istruzzioni di salti o chjamate chì i miri sò raggiungibili se rilassati.
Mancu funziunalità (XCSE-388) Parechje definizioni da , cum'è clock_div_t è clock_prescale_set (), ùn sò micca definiti per i dispositi, cumpresi l'ATmega324PB, ATmega328PB, ATtiny441 è ATtiny841.
Macro mancanti U preprocessore macros_ xcs _MODE_, _xcs VERSION, _xc, è xcs ùn sò micca definiti automaticamente da u compilatore. Quessi sò avà dispunibili.

Versione 2.05

Errore internu di u compilatore (XCS-1822) Quandu si custruisce sottu Windows, un errore di compilatore internu puderia esse statu pruduttu quandu ottimisimu u codice.
Overflow RAM ùn hè micca rilevatu (XCS-1800, XCS-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 (XCS-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 (XCS-1788) In certi situazioni induve u prugramma ùn hà micca definitu variabili glubale, u codice di startup runtime ùn esce micca è a funzione principale () ùn hè mai stata ghjunta.
Informazioni di memoria sbagliate (XCS-1787) Per i dispositi avrxmega3 è avrtiny, u prugramma avr-size hà infurmatu chì i dati di sola lettura cunsumanu RAM invece di memoria di prugramma.
Lettura di memoria di prugramma sbagliata (XCS-1783) I prughjetti cumpilati per i dispositi cù memoria di prugramma mappata in u spaziu di l'indirizzu di dati è chì definiscenu l'uggetti chì utilizanu a macro / attributu PROGMEM puderanu leghje questi oggetti da l'indirizzu sbagliatu.
Errore internu cù attributi (XCS-1773) Un errore internu hè accadutu se avete definitu l'uggetti di puntatore cù u
_at () o attribute () tokens trà u nome di u puntatore è u tipu dereferenced, per esempiuample, char *
_at (0x80015 0) cp; Un avvirtimentu hè avà emessu se un tali codice hè scontru.
Fallu di eseguisce principale (XCS-1780, XCS-1767, XCS-1754) L'usu di variabili EEPROM o a definizione di fusibili cù u pragma di cunfigurazione puderia avè causatu l'inizializazione di dati incorrecte è / o l'esekzione di u prugramma bloccatu in u codice di startup runtime, prima di ghjunghje à main () .
Errore di fusible cù i dispositi minusculi (XCS-1778, XCS-1742) I dispositi attiny4/5/9/10/20/40 avianu una lunghezza di fusible incorrecta specificata in u so header. files chì portanu à l'errori di linker quandu pruvate di custruisce codice chì definisce i fusibili.
Errore di segmentazione (XCS-1777) Un difettu di segmentazione intermittente hè statu currettu.
Crash di l'assembler (XCS-1761) L'assembleur avr-as puderia esse crashatu quandu u compilatore era eseguitu sottu Ubuntu 18.
Oggetti micca sbulicati (XCS-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 (XCS-1749) U compilatore ùn hà micca generatu un errore quandu parechje opzioni di specificazione di u dispositivu sò state aduprate è indicò diverse dispositi.
Corruzzione di memoria da heap (XCS-1748) U simbulu di l'iniziu di u heap_ hè statu stallatu in modu incorrectu, risultatu in a pussibilità di variàbili ordinarii esse currutti da u heap.
Errore di traslocazione di u linker (XCS-1739) Un errore di trasferimentu di linker puderia esse statu emessu quandu u codice cuntene un rjmp o rcall cù un target esattamente 4k bytes di distanza.

Versione 2.00

Nimu.

Problemi cunnisciuti

I seguenti sò limitazioni in u funziunamentu di u compilatore. Quessi ponu esse restrizioni di codificazione generale, o
deviazioni da l'infurmazioni cuntenute in u manuale di l'usu. L'etichetta (s) in u titulu sò l'identificazione di u prublema in a basa di dati di seguimentu. Questu pò esse di benefiziu se avete bisognu di cuntattà u supportu. Quelli elementi chì ùn anu micca etichette sò limitazioni chì descrizanu u modu operandi è chì prubabilmente restanu in vigore permanentemente.

Integrazione MPLAB X IDE

Integrazione MPLAB IDE Se u compilatore deve esse usatu da MPLAB IDE, allora avete da installà MPLAB IDE prima di installà u compilatore.

Generazione di codice

Errore di allocazione di memoria PA (XCS-2881) Quandu s'utilice l'ottimisazioni di astrazione procedurale, u linker puderia signalà errori di allocazione di memoria quandu a dimensione di u codice hè vicinu à a quantità di memoria di prugramma dispunibule nantu à u dispusitivu, ancu s'ellu u prugramma deve esse capace di adattà u spaziu dispunibule.
Smart-IO micca cusì intelligente (XCS-2872) A funzione smart-io di u compilatore genererà un codice validu ma sub-ottimale per a funzione di sprint se a funzione di costa-data-in-proem hè stata disattivata o se u dispusitivu hà tutte e so flash mappate in memoria di dati.
Smart-IO ancu menu intelligente (XCS-2869) A funzione smart-io di u compilatore genererà un codice validu ma subottimale quandu l'opzioni -floe è -fno-buil tin sò tramindui usati.
Posizionamentu di dati di sola lettura subottimali (XCS-2849) U ligame ùn hè micca cunuscenza di e sezioni di memoria APPCODE è APPDATA, nè e divisioni [No-] Lettura-Mentre-Scrittura 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 chance di dati misplaced aumenta se a funzione coast-data-in-pragma hè attivata, soprattuttu se a funzione coast-data-in-config-mapped-proem hè ancu attivata. Queste funzioni ponu esse disattivate se necessariu.
Ughjettu file ordine di trasfurmazioni (XCS-2863) L'ordine in quale l'uggetti files seranu processati da u linker puderia differisce basatu annantu à l'usu di ottimisazioni di astrazione procedurale (opzione -mpa). Questu averebbe affettatu solu u codice chì definisce e funzioni debuli in parechji moduli.
Errore di linker cù assolutu (XCS-2777) Quandu un ughjettu hè statu assulutu à un indirizzu à l'iniziu di RAM è l'uggetti micca inizializzati sò ancu definiti, un errore di linker pò esse attivatu.
ID brevi di sveglia (XCS-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 Linker quandu si chjama u simbulu (XCS-2758) U linker puderia fallu se l'opzione -merlad driver hè aduprata quandu u codice fonte chjama un simbulu chì hè statu definitu cù l'opzione -Wl, -defsym linker.
Inizializazione sbagliata (XCS-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.
iniziatu in modu incorrectu mette viotu (XCS-2652) In i casi induve una stringa di sughjettu per a cunversione da () cuntene ciò chì pare esse un numeru à virgule flottante in formatu esponenziale è ci hè un caratteru inaspittatu dopu un caratteru e, allora l'indirizzu viotu, se furnitu, indicà à u caratteru dopu. l'e è micca l'e stessu. Per esample: dichjaratu ("hooey", viotu); risulterà in un puntu viotu à u caratteru x.
Chjama di funzione indiretta sbagliata (XCS-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 (XCS-2626) E funzioni di libreria strtof () et al è scanf () et al, cunvertiranu sempre un numeru esadecimale in virgola mobile chì ùn specifica micca un esponente à
zeru. Per esample: stator ("Guvetta", &empty); restituverà u valore 0, micca 1.
Missaghju imprecisu di u cunsigliu di stack (XCS-2542, XCS-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 (XCS-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.
Oggetti Const micca in memoria di prugramma (XCS-2408) Per i prughjetti avrxmega3 è avertins, l'ughjetti di cunstu unidealized sò posti in memoria di dati, ancu s'è un avvisu 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 (XCS-1966) U compilatore ùn rileva micca a sovrapposizione di memoria di l'uggetti assuluti à un indirizzu (via à ()) è altri ogetti chì utilizanu a sezione () specifier è chì sò ligati à u stessu indirizzu.
Fallu cù e funzioni di biblioteca è _meme (XCS-1763) Chjamate funzioni limbic float cun un argumentu in u spaziu di indirizzu _memo 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 limbica limitata (AVRTC-731) Per i prudutti ATTiny4/5/9/10/20/40, l'implementazione standard di a libreria C / Math in limbic 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 modu, 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 -relax 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 U E funzioni di a biblioteca assumenu GMT è ùn supportanu micca i fusi orari lucali, cusì l'ora locale () tornerà u listessu tempu cum'è gummite (), per ex.ample.

SUPPORTU CLIENTI

file:///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ per A VR. htm

Documenti / Risorse

Software di compilazione MICROCHIP MPLAB XC8 C [pdfManuale di u pruprietariu
MPLAB XC8 C, MPLAB XC8 C Compiler Software, Compiler Software, Software

Referenze

Lascia un cumentu

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