Software de compilare MICROCHIP MPLAB XC8 C 

Software de compilare MICROCHIP MPLAB XC8 C

ACEST DOCUMENT CONTINE INFORMAȚII IMPORTANTE REFERITOARE LA COMPILATORUL MPLAB XC8 C CÂND ȚINTIȚI DISPOZITIVELE MICROCHIP AVR.
CITIȚI-O ÎNAINTE DE A RELAȚI ACEST SOFTWARE. VEZI NOTELE DE VERSIUNE A COMPILATORULUI MPLAB XC8 C PENTRU DOCUMENTUL PIC DACĂ UTILIZAȚI COMPILATORUL PENTRU DISPOZITIVE PIC DE 8 BITȚI.

Cuprins ascunde

Pesteview

Introducere

Această versiune a compilatorului Microchip MPLAB® XC8 C conține câteva funcții noi, remedieri de erori și suport pentru dispozitive noi.

Data construirii

Data oficială de construire a acestei versiuni de compilator este 3 iulie 2022.

Versiunea anterioara

Versiunea anterioară a compilatorului MPLAB XC8 C a fost 2.39, un compilator de siguranță funcțională, construit pe 27 ianuarie 2022. Compilatorul standard anterior a fost versiunea 2.36, construită pe 27 ianuarie 2022.

Manual de siguranță funcțională

Un manual de siguranță funcțională pentru compilatoarele MPLAB XC este disponibil în pachetul de documentație atunci când achiziționați o licență de siguranță funcțională.

Licențe și versiuni ale componentelor

Instrumentele MPLAB® XC8 C Compiler pentru AVR MCUs sunt scrise și distribuite sub Licența Publică Generală GNU (GPL), ceea ce înseamnă că codul său sursă este distribuit gratuit și disponibil publicului. Codul sursă pentru instrumentele sub GNU GPL poate fi descărcat separat de Microchip website-ul. Puteți citi GNU GPL în file numit localizat subdirectorul directorului de instalare. O discuție generală a principiilor care stau la baza GPL poate fi găsită aici. Cod de asistență furnizat pentru antet filescripturile de linker și bibliotecile de rulare sunt cod proprietar și nu sunt acoperite de GPL.

Acest compilator este o implementare a GCC versiunea 5.4.0, binutils versiunea 2.26 și folosește avr-libc versiunea 2.0.0.

Cerințe de sistem

Compilatorul MPLAB XC8 C și software-ul de licențiere pe care îl utilizează sunt disponibile pentru o varietate de sisteme de operare, inclusiv versiuni pe 64 de biți ale următoarelor: ediții profesionale ale Microsoft Windows 10; Ubuntu 18.04; și macOS 10.15.5. Binarele pentru Windows au fost semnate prin cod. Binarele pentru mac OS au fost semnate prin cod și legalizate.

Dacă rulați un server de licență de rețea, numai computerele cu sisteme de operare acceptate de compilatoare pot fi folosite pentru a găzdui serverul de licență. Începând cu versiunea xclm 2.0, serverul de licență de rețea poate fi instalat pe o platformă Microsoft Windows Server, dar serverul de licență nu trebuie să ruleze pe o versiune de server a sistemului de operare.

Dispozitive acceptate

Acest compilator acceptă toate dispozitivele MCU AVR pe 8 biți cunoscute la momentul lansării. Vedeți (în directorul doc al compilatorului) pentru o listă a tuturor dispozitivelor acceptate. Aceste filelistează, de asemenea, setările de biți de configurare pentru fiecare dispozitiv.

Ediții și upgrade-uri de licență

Compilatorul MPLAB XC8 poate fi activat ca produs cu licență (PRO) sau fără licență (gratuit). Trebuie să achiziționați o cheie de activare pentru a obține licența compilatorului. O licență permite un nivel mai ridicat de optimizare în comparație cu produsul gratuit. Un compilator fără licență poate fi operat pe termen nelimitat fără licență.

Un compilator MPLAB XC8 Functional Safety trebuie activat cu o licență de siguranță funcțională achiziționată de la Microchip. Compilatorul nu va funcționa fără această licență. Odată activat, puteți selecta orice nivel de optimizare și puteți utiliza toate caracteristicile compilatorului. Această versiune a compilatorului de siguranță funcțională MPLAB XC acceptă licența de server de rețea.
Consultați documentul Instalarea și acordarea licenței compilatoarelor MPLAB XC C (DS50002059) pentru informații despre tipurile de licență și instalarea compilatorului cu o licență.

Instalare și activare

Consultați, de asemenea, secțiunile Probleme și limitări ale migrației pentru informații importante despre cel mai recent manager de licență inclus cu acest compilator.
Dacă utilizați MPLAB IDE, asigurați-vă că instalați cea mai recentă versiune MPLAB X IDE 5.0 sau o versiune ulterioară înainte de a instala acest instrument. Părăsiți IDE-ul înainte de a instala compilatorul. Rulați aplicația de instalare a compilatorului .exe (Windows), .run (Linux) sau aplicație (macOS), de exemplu XC8-1.00.11403-windows.exe și urmați instrucțiunile de pe ecran.
Este recomandat directorul de instalare implicit. Dacă utilizați Linux, trebuie să instalați compilatorul folosind un terminal și dintr-un cont root. Instalați folosind un cont macOS cu privilegii de administrator.

Activarea se realizează acum separat de instalare. Consultați documentul Manager de licență pentru compilatoarele MPLAB® XC C (DS52059) pentru mai multe informații.

Dacă alegeți să rulați compilatorul sub licența de evaluare, acum veți primi un avertisment în timpul compilării când vă aflați în termen de 14 zile de la sfârșitul perioadei de evaluare. Același avertisment este emis dacă vă aflați în termen de 14 zile de la încheierea abonamentului HPA.

Serverul de licențe de rețea XC este un program de instalare separat și nu este inclus în programul de instalare al compilatorului pentru un singur utilizator.

Managerul de licențe XC acceptă acum roamingul licențelor de rețea plutitoare. Destinată utilizatorilor de telefonie mobilă, această caracteristică permite unei licențe flotante să iasă din rețea pentru o perioadă scurtă de timp. Folosind această funcție, vă puteți deconecta de la rețea și puteți utiliza în continuare compilatorul MPLAB XC. Consultați folderul document al instalării XCLM pentru mai multe despre această caracteristică. MPLAB X IDE include o fereastră de licențe (Instrumente > Licențe) pentru a gestiona vizual roamingul.

Rezolvarea problemelor de instalare

Dacă întâmpinați dificultăți la instalarea compilatorului sub oricare dintre sistemele de operare Windows, încercați următoarele sugestii.

  • Rulați instalarea ca administrator.
  • Setați permisiunile aplicației de instalare la „Control total”. (Faceți clic dreapta pe file, selectați Proprietăți, fila Securitate, selectați utilizator, editați.)
  • Setați permisiunile folderului temporar la „Control total!

Pentru a determina locația folderului temp, tastați %temp% în comanda Run (tasta siglă Windows + R). Aceasta va deschide o file dialogul de explorare care arată acel director și vă va permite să determinați calea acelui folder.

Documentația compilatorului

Ghidurile de utilizare ale compilatorului pot fi deschise din pagina HTML care se deschide în browser când faceți clic pe butonul albastru de ajutor din tabloul de bord MPLAB X IDE, așa cum este indicat în captură de ecran.

Documentația compilatorului
Dacă construiți pentru ținte AVR pe 8 biți, Ghidul utilizatorului compilatorului MPLAB® XC8 C pentru AVR® MCU conține informații despre acele opțiuni și caracteristici ale compilatorului care sunt aplicabile acestei arhitecturi.

Asistență pentru clienți

Microchip acceptă rapoarte de erori, sugestii sau comentarii cu privire la această versiune a compilatorului. Vă rugăm să direcționați orice rapoarte de eroare sau solicitări de caracteristici prin sistemul de asistență.

Actualizări de documentație

Pentru versiunile online și actualizate ale documentației MPLAB XC8, vă rugăm să vizitați Documentația tehnică online a Microchip website-ul.

Documentație AVR nouă sau actualizată în această versiune:

  • Notă de copyright MUSL
  • Instalarea și licențierea compilatoarelor MPLAB XC C (reviziunea M)
  • Ghidul utilizatorului MPLAB XC8 pentru ingineri încorporați – MCU-uri AVR (reviziunea A)
  • Ghidul utilizatorului compilatorului MPLAB XC8 C pentru AVR MCU (reviziunea F)
  • Ghid de referință pentru biblioteca standard unificată Microchip (reviziunea B)

Ghidul de referință al bibliotecii standard unificate Microchip descrie comportamentul și interfața cu funcțiile definite de biblioteca standard unificată Microchip, precum și utilizarea prevăzută a tipurilor de bibliotecă și a macrocomenzilor. Unele dintre aceste informații au fost conținute anterior în Ghidul utilizatorului compilatorului MPLAB® XC8 C pentru AVR® MCU. Informațiile despre bibliotecă specifice dispozitivului sunt încă conținute în acest ghid al compilatorului.

Dacă abia începi cu dispozitive pe 8 biți și MPLAB XC8 C Compiler, Ghidul utilizatorului MPLAB® XC8 pentru ingineri încorporați – MCU-uri AVR® (DS50003108) conține informații despre configurarea proiectelor în IDE-ul MPLAB X și scrierea codului. pentru primul tău proiect MPLAB XC8 C. Acest ghid este acum distribuit împreună cu compilatorul.

Ghidul utilizatorului Hamate a fost inclus în directorul docs din această versiune. Acest ghid este destinat celor care rulează Hamate ca aplicație autonomă.

Ce este nou

Următoarele sunt noi caracteristici AVR-țintă pe care compilatorul le acceptă acum. Numărul versiunii din subtitluri indică prima versiune a compilatorului care acceptă caracteristicile care urmează.

Versiunea 2.40

Suport pentru dispozitive noi Asistența este acum disponibilă pentru următoarele piese AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32EA64, și AVR48EAXNUMXEAXNUMX.
Abstracție procedurală îmbunătățită Instrumentul de optimizare a abstracției procedurale (PA) a fost îmbunătățit, astfel încât codul care conține o instrucțiune de apelare a funcției (call recall)) poate fi subliniat. Acest lucru va avea loc numai dacă stiva nu este folosită pentru a transmite argumente sau pentru a obține valoarea returnată de la funcție. Stiva este utilizată atunci când se apelează o funcție cu o listă de argumente variabile sau când se apelează o funcție care ia mai multe argumente decât există registre desemnate în acest scop. Această caracteristică poate fi dezactivată folosind opțiunea monk-pa-outline-calls sau abstracția procedurală poate fi dezactivată complet pentru un obiect file sau să funcționeze folosind -monk-pa-on-file și respectiv -mo.-pa-on-funcție sau prin utilizarea atributului nipa (specificatorul nipa) selectiv cu funcții

Macrocomanda de acoperire a codului Compilatorul definește acum macro-ul __CODECOV dacă este specificată o opțiune mcodecov validă.

Opțiune de rezervare a memoriei Driverul xc8-cc va accepta acum opțiunea -mreserve=space@start: end la construirea pentru ținte AVR. Această opțiune rezervă intervalul de memorie specificat în spațiul de memorie de date sau program, împiedicând linkerul să populeze codul sau obiectele din această zonă.

IO inteligent mai inteligent Au fost aduse mai multe îmbunătățiri la funcțiile Smart IO, inclusiv ajustări generale ale codului de bază printf, tratând specificatorul de conversie %n ca o variantă independentă, conectând rutinele pop vararg la cerere, folosind tipuri de date mai scurte acolo unde este posibil pentru gestionarea argumentelor funcției IO , și factorizarea codului comun în lățimea câmpului și manipularea cu precizie. Acest lucru poate duce la economii semnificative de cod și date, precum și la creșterea vitezei de execuție a IO.

Versiunea 2.39 (Versiunea de siguranță funcțională)

Licență de server de rețea Această versiune a compilatorului de siguranță funcțională MPLAB XC8 acceptă licența de server de rețea.

Versiunea 2.36

Nici unul.

Versiunea 2.35

Suport pentru dispozitive noi Asistența este disponibilă pentru următoarele piese AVR: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 și AVR64DD32.

Schimbarea de context îmbunătățită Noua opțiune -mcall-isr-prologues modifică modul în care funcțiile de întrerupere salvează registrele la intrare și cum acești registre sunt restaurați atunci când rutina de întrerupere se termină. Funcționează într-un mod similar cu opțiunea -mcall-prologues, dar afectează doar funcțiile de întrerupere (ISR).

Schimbarea de context și mai îmbunătățită Noua opțiune -mgas-isr-prologues controlează contextul codului de mâncărime generat pentru rutinele mici de servicii de întrerupere. Când este activată, această caracteristică va face ca asamblatorul să scaneze ISR-ul pentru utilizarea registrelor și să salveze aceste registre utilizate numai dacă este necesar.

Mapare flash configurabilă Unele dispozitive din familia AVR DA și AVR DB au un SFR (de ex. FLMAP) care specifică ce secțiune de 32k a memoriei programului va fi mapată în memoria de date. Noua opțiune – mconst-data-in-config-mapped-proem poate fi utilizată pentru ca linkerul să plaseze toate datele calificate contra într-o secțiune de 32k și să inițializeze automat registrul SFR relevant pentru a se asigura că aceste date sunt mapate în spațiul de memorie de date. , unde va fi accesat mai eficient.

Biblioteci standard unificate Microcip Toate compilatoarele MPLAB XC vor partaja o bibliotecă standard unificată Microchip, care este acum disponibilă cu această versiune a MPLAB XC8. Ghidul utilizatorului MPLAB® XC8 C Compiler/sau AVR® MCU nu mai include documentația pentru aceste funcții standard. Aceste informații pot fi găsite acum în Ghidul de referință al bibliotecii standard unificate Microchip. Rețineți că unele funcționalități definite anterior de avr-libc nu mai sunt disponibile. (Vezi Bibliotecă):'. funcționalitate...)

Smart IO Ca parte a noilor biblioteci unificate, funcțiile IO din familiile de imprimare și scanare sunt acum generate personalizat pe fiecare build, în funcție de modul în care aceste funcții sunt utilizate în program. Acest lucru poate reduce substanțial resursele utilizate de un program.
Opțiune de asistență Smart IO Când analizează apelurile la funcții inteligente IO (cum ar fi printf () sau scanf () ), compilatorul nu poate determina întotdeauna din șirul de format sau deduce din argumente acei specificatori de conversie solicitați de apel. Anterior, compilatorul nu făcea întotdeauna presupuneri și se asigura că funcțiile IO complet funcționale erau legate în imaginea finală a programului. O nouă opțiune – msmart-io-format=fmt a fost adăugată, astfel încât compilatorul să poată fi informat în schimb de către utilizator cu privire la specificatorii de conversie utilizați de funcțiile inteligente IO a căror utilizare este ambiguă, împiedicând conectarea rutinelor IO excesiv de lungi. (Consultați opțiunea smart-io-format pentru mai multe detalii.)

Plasarea secțiunilor personalizate Anterior, opțiunea -Wl, –section-start plasa doar secțiunea specificată la adresa solicitată atunci când scriptul linker a definit o secțiune de ieșire cu același nume. Când nu a fost cazul, secțiunea a fost plasată la o adresă aleasă de linker și opțiunea a fost în esență ignorată. Acum, opțiunea va fi onorată pentru toate secțiunile personalizate, chiar dacă scriptul de linker nu definește secțiunea. Rețineți, totuși, că pentru secțiunile standard, cum ar fi . text, . bss sau . date, cel mai potrivit alocator va avea în continuare control complet asupra plasării lor, iar opțiunea nu va avea niciun efect. Utilizați opțiunea -Wl, -Tsection=add, așa cum este descris în ghidul utilizatorului.

Versiunea 2.32

Îndrumarea stivei Disponibilă cu o licență de compilator PRO, caracteristica de ghidare a stivei a compilatorului poate fi utilizată pentru a estima adâncimea maximă a oricărei stive utilizate de un program. Acesta construiește și analizează graficul de apeluri al unui program, determină utilizarea stivei pentru fiecare funcție și produce un raport, din care se poate deduce adâncimea stivelor utilizate de program. Această caracteristică este activată prin opțiunea de linie de comandă -mchp-stack-usage. Un rezumat al utilizării stivei este tipărit după execuție. Un raport detaliat al stivei este disponibil pe hartă file, care poate fi solicitat în mod obișnuit.

Suport pentru dispozitive noi este disponibil pentru următoarele piese AVR: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, și AVRXNUMXDBXNUMX.

Suport pentru dispozitiv retras nu mai este disponibil pentru următoarele piese AVR: AVR16DA28, AVR16DA32 și AVR16DA48.

Versiunea 2.31

Nici unul.

Versiunea 2.30

Opțiune nouă pentru a preveni inițializarea datelor O nouă opțiune de driver -mno-data-ini t împiedică inițializarea datelor și ștergerea secțiunilor bss. Funcționează prin suprimarea ieșirii datelor do_ copy_ și d o_ clear_ bss simboluri în asamblare files, care va împiedica, la rândul său, includerea acelor rutine de către linker.

Optimizări îmbunătățite Au fost făcute o serie de îmbunătățiri de optimizare, inclusiv eliminarea instrucțiunilor de returnare redundante, eliminarea unor salturi în urma unei instrucțiuni skip-if-bit-is, abstracție procedurală îmbunătățită și capacitatea de a repeta acest proces.

Opțiuni suplimentare sunt acum disponibile pentru a controla unele dintre aceste optimizări, în special ancorele de secțiune -f, care permite accesul obiectelor statice să fie efectuat în raport cu un simbol; -mpai derații=n, care permite modificarea numărului de iterații de abstracție procedurală de la valoarea implicită de 2; și, -mpa- call cost- shortcall, care efectuează o abstractizare procedurală mai agresivă, în speranța că linkerul poate relaxa apelurile lungi. Această ultimă opțiune poate crește dimensiunea codului dacă ipotezele de bază nu sunt realizate.

Suport pentru dispozitive noi Asistența este disponibilă pentru următoarele piese AVR: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 și AVR128DB64.

Suport dispozitiv retras Asistența nu mai este disponibilă pentru următoarele piese AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C și ATA664251C și ATAXNUMX.

Versiunea 2.29 (Versiunea de siguranță funcțională)

Antet file pentru compilator integrat Pentru a se asigura că compilatorul se poate conforma cu specificațiile limbajului, cum ar fi MISRA, the antet file, care este inclus automat de , a fost actualizat. Acest antet conține prototipurile pentru toate funcțiile încorporate, cum ar fi ciclurile _buil tin _avrnop () și _buil tin_ avr delay_ () . Este posibil ca unele integrate să nu fie conforme cu MISRA; acestea pot fi omise prin adăugarea definirii _Xe_ STRICT_ MISRA la linia de comandă a compilatorului. Preluările integrate și declarațiile lor au fost actualizate pentru a utiliza tipuri de lățime fixă.

Versiunea 2.20

Suport pentru dispozitive noi Asistența este disponibilă pentru următoarele piese AVR: ATTINY1624, ATTINY1626 și ATTINY1627.

O alocare mai bună Cel mai bun alocator de potrivire (BFA) din compilator a fost îmbunătățit, astfel încât secțiunile să fie alocate într-o ordine care să permită o optimizare mai bună. BFA acceptă acum spații de adrese denumite și gestionează mai bine inițializarea datelor.

Abstracție procedurală îmbunătățită Optimizările abstracției procedurale sunt acum efectuate pe mai multe secvențe de cod. Situațiile anterioare în care această optimizare ar fi putut crește dimensiunea codului au fost soluționate făcând codul de optimizare conștient de procesul de colectare a gunoiului linkerului.

Absența Asamblatorului AVR Asamblatorul AVR nu mai este inclus în această distribuție.

Versiunea 2.19 (Versiunea de siguranță funcțională)

Nici unul.

Versiunea 2.10

Acoperirea codului Această versiune include o caracteristică de acoperire a codului care facilitează analiza în ce măsură a fost executat codul sursă al unui proiect. Utilizați opțiunea -mcodecov=ram pentru a o activa. După executarea programului pe hardware-ul dvs., informațiile de acoperire a codului vor fi adunate în dispozitiv, iar acestea pot fi transferate și afișate de MPLAB X IDE printr-un plugin de acoperire a codului. Consultați documentația IDE pentru informații despre acest plugin care pot fi obținute. #pragma mcodecov poate fi folosit pentru a exclude funcțiile ulterioare din analiza acoperirii. În mod ideal, pragma ar trebui adăugată la începutul file pentru a exclude acel întreg file din analiza acoperirii. Alternativ, atributul ( (mcodecov) ) poate fi utilizat pentru a exclude o anumită funcție din analiza acoperirii.

Descrierea dispozitivului files Un dispozitiv nou file numit avr chipinfo. html se află în directorul docs al distribuției compilatorului. Acest file listează toate dispozitivele acceptate de compilator. Faceți clic pe numele unui dispozitiv și se va deschide o pagină care afișează toate perechile de setări/valoare permise de biți de configurare pentru acel dispozitiv, cu examples.

Abstracția procedurală Optimizările de abstracție procedurală, care înlocuiesc blocurile comune de cod de asamblare cu apeluri la o copie extrasă a acelui bloc, au fost adăugate la compilator. Acestea sunt efectuate de o aplicație separată, care este invocată automat de compilator la selectarea optimizărilor de nivel 2, 3 sau. Aceste optimizări reduc dimensiunea codului, dar pot reduce viteza de execuție și capacitatea de depanare a codului.
Abstracția procedurală poate fi dezactivată la niveluri superioare de optimizare folosind opțiunea -mno-pa sau poate fi activată la niveluri de optimizare inferioare (sub rezerva licenței dvs.) utilizând -mpa. Poate fi dezactivat pentru un obiect file folosind -mno-pa-on-file=filenume sau dezactivat pentru o funcție folosind -mno-pa pe funcția function=.
În codul sursă, abstracția procedurală poate fi dezactivată pentru o funcție utilizând _attribute_ ( (nopa)) cu definiția funcției sau folosind _nopa, care se extinde la atribut ( (nopa, noinline)) și astfel împiedică introducerea funcției să aibă loc și există o abstracție a codului inline.
Suport de blocare a biților în pragma Configurația #pragma poate fi folosită acum pentru a specifica biții de blocare AVR, precum și ceilalți biți de configurare. Verificați informațiile despre cip avr. html file (menționat mai sus) pentru perechile setare/valoare de utilizat cu această pragma.
Suport pentru dispozitive noi Asistența este disponibilă pentru următoarele piese: AVR28DA128, AVR64DA128, AVR32DA128 și AVR48DA128.

Versiunea 2.05

Mai multe biți pentru banii tăi Versiunea macOS a acestui compilator și manager de licență este acum o aplicație pe 64 de biți. Acest lucru va asigura că compilatorul se va instala și va rula fără avertismente pe versiunile recente de macOS.
Obiecte const în memoria programului Compilatorul poate plasa acum obiecte const-calificate în memoria Flash a programului, mai degrabă decât să le aibă în RAM. Compilatorul a fost modificat astfel încât datele globale calificate const să fie stocate în memoria flash a programului și aceste date să poată fi accesate direct și indirect folosind instrucțiunile corespunzătoare din memoria programului. Această nouă caracteristică este activată implicit, dar poate fi dezactivată folosind opțiunea -mno-const-data-in-progmem. Pentru arhitecturile avrxmega3 și avrtiny, această caracteristică nu este necesară și este întotdeauna dezactivată, deoarece memoria programului este mapată în spațiul de adrese de date pentru aceste dispozitive.
Standard gratuit Versiunile fără licență (gratuite) ale acestui compilator permit acum optimizări până la nivelul 2 inclusiv. Acest lucru va permite o ieșire similară, deși nu identică, cu ceea ce era posibil anterior folosind o licență Standard.
Bun venit AVRASM2 Asamblatorul AVRASM2 pentru dispozitive pe 8 biți este acum inclus în programul de instalare al compilatorului XC8. Acest asamblator nu este folosit de compilatorul XC8, dar este disponibil pentru proiecte bazate pe sursa de asamblare scrisă de mână.
Suport pentru dispozitive noi Asistența este disponibilă pentru următoarele părți: ATMEGA1608, ATMEGA1609, ATMEGA808 și ATMEGA809.

Versiunea 2.00

Șofer de nivel superior Un nou driver, numit xc8-cc, se află acum deasupra driverului anterior avr-gcc și a driverului xc8 și poate apela compilatorul corespunzător în funcție de selecția dispozitivului țintă. Acest driver acceptă opțiuni în stil GCC, care sunt fie traduse pentru, fie transmise compilatorului care este executat. Acest driver permite ca un set similar de opțiuni cu semantică similară să fie utilizat cu orice țintă AVR sau PIC și este astfel modalitatea recomandată de a invoca compilatorul. Dacă este necesar, vechiul driver avr-gcc poate fi apelat direct folosind opțiunile în stil vechi acceptate în versiunile anterioare ale compilatorului.

Interfață C comună Acest compilator se poate conforma acum cu MPLAB Common C Interface, permițând ca codul sursă să fie mai ușor portat în toate compilatoarele MPLAB XC. Opțiunea -mext=cci solicită această caracteristică, permițând sintaxa alternativă pentru multe extensii de limbă.

Noul șofer de bibliotecar Un nou driver de bibliotecar este poziționat deasupra bibliotecarului PIC libr anterior și a bibliotecarului avr-ar AVR. Acest driver acceptă opțiuni în stilul de arhivare GCC, care sunt fie traduse, fie transmise bibliotecarului care este executat. Noul driver permite utilizarea unui set similar de opțiuni cu o semantică similară pentru a crea sau manipula orice bibliotecă PIC sau AVR file și este astfel modalitatea recomandată de a invoca bibliotecarul. Dacă este necesar pentru proiectele moștenite, bibliotecarul anterior poate fi apelat direct folosind opțiunile de stil vechi pe care le-a acceptat în versiunile anterioare ale compilatorului.

Probleme de migrație

Următoarele sunt caracteristici care acum sunt gestionate diferit de compilator. Aceste modificări pot necesita modificarea codului sursă dacă portați codul la această versiune de compilator. Numărul versiunii din subtitluri indică prima versiune a compilatorului care acceptă modificările care urmează.

Versiunea 2.40

Nici unul.

Versiunea 2.39 (Versiunea de siguranță funcțională)

Nici unul.

Versiunea 2.36

Nici unul.

Versiunea 2.35

Manipularea bazelor de snur (XCS-2420) Pentru a asigura coerența cu alte compilatoare XC, funcțiile XC8 string-to, cum ar fi strtol () etc., nu vor mai încerca să convertească un șir de intrare dacă baza specificată este mai mare de 36 și vor seta errno la EINVAL. Standardul C nu specifică comportamentul funcțiilor atunci când această valoare de bază este depășită.

Optimizări inadecvate ale vitezei Optimizările de abstracție procedurală au fost activate la selectarea optimizărilor de nivelul 3 (-03). Aceste optimizări reduc dimensiunea codului în detrimentul vitezei codului, deci nu ar fi trebuit efectuate. Proiectele care utilizează acest nivel de optimizare pot vedea diferențe în dimensiunea codului și viteza de execuție atunci când sunt construite cu această versiune.

Funcționalitatea bibliotecii Codul pentru multe dintre funcțiile standard de bibliotecă C provin acum din Biblioteca standard unificată a Microchip, care poate prezenta un comportament diferit în anumite circumstanțe în comparație cu cel oferit de fosta bibliotecă avr-libc. De exampnu mai este necesară conectarea în biblioteca lprintf_flt (opțiunea -print _flt) pentru a activa suportul IO formatat pentru specificatorii de format float. Caracteristicile inteligente IO ale Bibliotecii standard unificate Microchip fac această opțiune redundantă. În plus, utilizarea rutinelor cu sufixe _p pentru funcții de șir și memorie (de ex. strcpy_P () etc .. ) care operează pe șiruri const în flash nu mai este necesară. Rutinele standard C (de exemplu strcpy ()) vor funcționa corect cu astfel de date atunci când caracteristica const-data-in-program-memory este activată.

Versiunea 2.32

Nici unul.

Versiunea 2.31

Nici unul.

Versiunea 2.30

Nici unul.

Versiunea 2.29 (Versiunea de siguranță funcțională)

Nici unul.

Versiunea 2.20

Aspectul DFP a fost modificat Compilatorul presupune acum un aspect diferit folosit de DFP (pachete de familie de dispozitive). Aceasta va însemna că un DFP mai vechi ar putea să nu funcționeze cu această versiune, iar compilatorii mai vechi nu vor putea folosi cele mai recente DFP.

Versiunea 2.19 (Versiunea de siguranță funcțională)

Nici unul.

Versiunea 2.10

Nici unul

Versiunea 2.05

Const obiecte în memoria programului Rețineți că, implicit, obiectele calificate constant vor fi plasate și accesate în memoria programului (așa cum este descris aici). Acest lucru va afecta dimensiunea și viteza de execuție a proiectului dvs., dar ar trebui să reducă utilizarea RAM. Această caracteristică poate fi dezactivată, dacă este necesar, folosind opțiunea -mnoconst- da ta-in-progmem.

Versiunea 2.00

Siguranțe de configurare Siguranțele de configurare a dispozitivului pot acum programate folosind o pragma de configurare urmată de perechi de valori setate pentru a specifica starea siguranței, de exemplu
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Obiecte și funcții absolute Obiectele și funcțiile pot fi acum plasate la o anumită adresă în memorie folosind specificatorul CCI _at (adresă), de exempluample: #include int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Argumentul acestui specificator trebuie să fie o constantă care reprezintă adresa la care va fi plasat primul octet sau instrucțiune. Adresele RAM sunt indicate prin utilizarea unui offset de 0x800000. Activați CCI să folosească această caracteristică.
Sintaxă nouă a funcției de întrerupere Compilatorul acceptă acum specificatorul de întrerupere CCI (num) pentru a indica faptul că funcțiile C sunt gestionare de întreruperi. Specificatorul ia un număr de întrerupere, de example: #include void întrerupere(SPI STC_ vect _num) spi Isr(void) { … }

Probleme remediate

Următoarele sunt corecții care au fost făcute compilatorului. Acestea pot remedia erorile din codul generat sau pot modifica funcționarea compilatorului la ceea ce a fost intenționat sau specificat de ghidul utilizatorului. Numărul versiunii din subtitluri indică prima versiune a compilatorului care conține remedieri pentru problemele care urmează. Etichetele între paranteze din titlu reprezintă identificarea problemei respective în baza de date de urmărire. Acestea pot fi utile dacă trebuie să contactați asistența.

Rețineți că unele probleme specifice dispozitivului sunt corectate în pachetul de familie de dispozitive (DFP) asociat dispozitivului. Consultați MPLAB Pack Manager pentru informații despre modificările aduse DFP-urilor și pentru a descărca cele mai recente pachete.

Versiunea 2.40

Prea relaxat (XCS-2876) Când a folosit opțiunea -mrelax, compilatorul nu a alocat unele secțiuni împreună, rezultând dimensiuni de cod mai puțin optime. Acest lucru s-ar fi putut întâmpla cu codul care a folosit noile biblioteci MUSL sau cu simboluri slabe.
Caracteristica de cartografiere nu este dezactivată, așa cum se menționează în avertisment (XCS-2875) Caracteristica cost-data-in-config mappedprogmem se bazează pe funcția cost-data-in-proem care este activată. Dacă caracteristica cost-data-ipconfig-mapped-proem a fost activată în mod explicit folosind opțiunea și caracteristica cost-data-inprogmem a fost dezactivată, pasul de legătură a eșuat, în ciuda unui mesaj de avertizare care arăta că cons data-in-config-mapped- Caracteristica proem a fost dezactivată automat, ceea ce nu era complet corect. Caracteristica const-data-in-config-mapped-proem este acum complet dezactivată în această situație.
Modificări DFP pentru a accesa corect NVMCTRL (XCS-2848) Codul de pornire la runtime folosit de dispozitivele AVR64EA nu a ținut cont de faptul că registrul NVMCTRL se afla sub Protecție la modificarea configurației (CCP) și nu a putut seta IO SFR la pagina utilizată de compilatorul const-data-in configmapped-proem caracteristică. Modificările făcute în AVR-Ex_DFP versiunea 2.2.55 vor permite codului de pornire runtime să scrie corect în acest registru.
Modificări DFP pentru a evita maparea flash (XCS-2847) A fost implementată o soluție pentru o problemă cu caracteristica dispozitivului de mapare flash raportată în Errata de silicon AVR128DA28/32/48/64 (DS80000882). Caracteristica compilatorului const-data-in-config-mapped-proem nu va fi aplicată în mod implicit pentru dispozitivele afectate, iar această modificare va apărea în AVR-Ex_DFP versiunea 2.2.160.
Eroare de compilare cu sinhf sau coshf (XCS-2834) Încercările de a utiliza funcțiile de bibliotecă sinhf () sau coshf () au dus la o eroare de legătură, care descrie o referință nedefinită. Funcția lipsă la care se face referire a fost acum inclusă în distribuția compilatorului.
Erori de compilare cu nopa (XCS-2833) Utilizarea atributului nopa cu o funcție care a avut numele de asamblare specificat folosind ca () a declanșat mesaje de eroare de la asamblator. Această combinație nu este posibilă.
Eșecul funcției variadice cu argumente pointer (XCS-2755, XCS-2731) Funcțiile cu un număr variabil de argumente se așteaptă ca pointerii pe 24 de biți (tip _memo) să fie trecuți în lista de argumente variabile atunci când caracteristica cost-data-in-proem este activată. Argumentele care erau indicii către memoria de date au fost transmise ca obiecte pe 16 biți, provocând eșecul codului atunci când au fost în cele din urmă citite. Când caracteristica cons data-in-proem este activată, toate argumentele pointerilor de 16 biți sunt acum convertite în pointerii de 24 de biți. Funcțiile bibliotecii strtoxxx eșuate (XCS-2620) Când a fost activată caracteristica const-data-in-proem, parametrul enter din funcțiile bibliotecii strtoxxx nu a fost actualizat corect pentru argumentele șirului sursă care nu se află în memoria programului.
Alerte pentru proiecții nevalide (XCS-2612) Compilatorul va emite acum o eroare dacă funcția cost-in-proem este activată și adresa unui șir literal este turnată în mod explicit în spațiul de adrese de date (eliminând calificativul const), de exempluample, (uint8 t *) „Bună lume!”. Un avertisment este o problemă dacă adresa poate fi invalidă atunci când un pointer de date const este turnat în mod explicit în spațiul de adrese de date.
Plasarea obiectelor const neinițializate (XCS-2408) Obiectele const și const v olatile neinițializate nu au fost plasate în memoria programului pe dispozitivele care mapează întreaga memorie de program sau o parte a acestora în spațiul de adrese de date. Pentru aceste dispozitive, astfel de obiecte sunt acum plasate în memoria programului, ceea ce face ca funcționarea lor să fie compatibilă cu alte dispozitive.

Versiunea 2.39 (Versiunea de siguranță funcțională)

Nici unul.

Versiunea 2.36

Eroare la întârziere (XCS-2774) Modificările minore ale optimizărilor implicite ale modului Free au împiedicat plierea constantă a expresiilor operanzilor în funcțiile încorporate de întârziere, ceea ce a dus la tratarea lor ca non-contact și declanșând eroarea: _buil tin avr delay_ cycles expects ac ompile constantă întreagă de timp.

Versiunea 2.35

Alocare contiguă folosind _at (XCS-2653) Alocarea contiguă a mai multor locuri de obiecte într-o secțiune cu același nume și folosind la () nu a funcționat corect. De example: 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 }; ar fi trebuit să plaseze arr2 imediat după aril.
Specificarea adreselor de început a secțiunii (XCS-2650) Opțiunea -Wal, –section-start nu a reușit să plaseze secțiuni la adresa de început nominalizată. Această problemă a fost remediată pentru orice secțiuni cu nume personalizate; cu toate acestea, nu va funcționa pentru nicio secțiune standard, cum ar fi . text sau . bss, care trebuie plasat folosind o opțiune -Wl, -T.
Linker-ul se blochează când se relaxează (XCS-2647) Când optimizarea -relax a fost activată și au existat secțiuni de cod sau date care nu se potriveau în memoria disponibilă, linkerul s-a blocat. Acum, într-o astfel de circumstanță, sunt emise mesaje de eroare.
Acces greșit la EEPROM (XCS-2629) Rutina de blocare leproma _read_ nu a funcționat corect pe dispozitivele Mega când a fost activată opțiunea -monist-data-in-proem (care este starea implicită), ceea ce a dus la faptul că memoria EEPROM nu a fost citită corect.
Alocare de memorie nevalidă (XCS-2593, XCS-2651) Când opțiunea -Text sau -Tata linker (de exampse specifică fișierul transmis folosind o opțiune de driver -Wl), a fost actualizată originea regiunii text/date corespunzătoare; cu toate acestea, adresa finală nu a fost ajustată în consecință, ceea ce ar fi putut duce la depășirea zonei de memorie a dispozitivului țintă.
Cod de întrerupere ATtiny nevalid (XCS-2465) Când construirea pentru dispozitivele Tatin și optimizările au fost dezactivate (-00), este posibil ca funcțiile de întrerupere să fi declanșat mesaje de asamblare operand în afara intervalului.
Opțiuni care nu sunt transmise (XCS-2452) Când utilizați opțiunea -Wl cu mai multe opțiuni de linker, separate prin virgulă, nu toate opțiunile de linker au fost transmise linkerului.
Eroare la citirea indirectă a memoriei programului (XCS-2450) În unele cazuri, compilatorul a produs o eroare internă (insn de nerecunoscut) când a citit o valoare de doi octeți de la un pointer în memoria programului

Versiunea 2.32

Al doilea acces la bibliotecă eșuează (XCS-2381) Invocarea versiunii Windows a xc8-ar. Arhivatorul de biblioteci exe a doua oară pentru a accesa o arhivă de bibliotecă existentă poate să fi eșuat cu un mesaj de eroare de imposibilitate de redenumire.

Versiunea 2.31

Eșecuri inexplicabile ale compilatorului (XCS-2367) Când rulați pe platforme Windows care aveau directorul temporar al sistemului setat la o cale care includea un punct'.' caracter, este posibil ca compilatorul să nu se execute.

Versiunea 2.30

Etichete globale greșite după conturare (XCS-2299) Este posibil ca codul de asamblare scris de mână care plasează etichete globale în secvențele de asamblare care sunt luate în considerare prin abstracție procedurală să nu fi fost repoziționat corect.
Un accident relaxant (XCS-2287) Utilizarea opțiunii -merlad ar fi putut cauza blocarea linker-ului atunci când optimizările de relaxare a saltului de coadă au încercat să elimine instrucțiunile ret care nu se aflau la sfârșitul unei secțiuni.
Blocare la optimizarea etichetelor ca valori (XCS-2282) Codul care folosește extensia de limbaj GNU C „Etichete ca valori” ar fi putut cauza blocarea optimizărilor de abstracție procedurală, cu o eroare de remediere a intervalului VMA Outlined.
Nu atât de constant (XCS-2271) Prototipurile pentru porniri () și alte funcții de la nu mai specifica calificativul de cost non-standard pe pointerii șir returnați atunci când caracteristica -monist-data inprogmem este dezactivată. Rețineți că cu dispozitivele avrxmega3 și avertin, această funcție este activată permanent.
Inițializatoare pierdute (XCS-2269) Când mai mult de o variabilă dintr-o unitate de traducere a fost plasată într-o secțiune (folosind secțiune sau atribut ((secțiune))), iar prima astfel de variabilă a fost inițializată la zero sau nu a avut un inițializator, inițializatori pentru alte variabile din aceeași unitate de traducere care au fost plasate în aceeași secțiune s-au pierdut.

Versiunea 2.29 (Versiunea de siguranță funcțională)

Nici unul.

Versiunea 2.20

Eroare la comenzi lungi (XCS-1983) Când utilizați o țintă AVR, compilatorul s-ar fi oprit cu a file eroare nu a fost găsită, dacă linia de comandă era extrem de mare și conținea caractere speciale, cum ar fi ghilimele, barele oblice inverse etc.
Secțiune de rodată nealocată (XCS-1920) Linker-ul AVR nu a reușit să aloce memorie pentru secțiunile personalizate de rodata la construirea pentru arhitecturi avrxmega3 și avrtiny, producând potențial erori de suprapunere a memoriei

Versiunea 2.19 (Versiunea de siguranță funcțională)

Nici unul.

Versiunea 2.10

Eroare la relocare (XCS-1891) Cel mai potrivit alocator a fost lăsarea „găurilor” de memorie între secțiuni după relaxarea linkerului. Pe lângă fragmentarea memoriei, acest lucru a crescut posibilitatea de a exista eșecuri de relocare a linker-ului legate de salturi legate de computer sau apeluri care devin în afara intervalului.
Instrucțiuni netransformate prin relaxare (XCS-1889) Relaxarea linkerului nu a avut loc pentru instrucțiunile de salt sau apel ale căror ținte devin accesibile dacă sunt relaxate.
Lipsă funcționalitate (XCSE-388) Mai multe definiții din , cum ar fi clock_div_t și clock_prescale_set (), nu au fost definite pentru dispozitive, inclusiv ATmega324PB, ATmega328PB, ATtiny441 și ATtiny841.
Lipsesc macrocomenzi Macro-urile preprocesorului_ xcs _MODE_, _xcs VERSION, _xc și xcs nu au fost definite automat de compilator. Acestea sunt acum disponibile.

Versiunea 2.05

Eroare internă a compilatorului (XCS-1822) La construirea sub Windows, este posibil să se fi produs o eroare internă a compilatorului la optimizarea codului.
Depășirea memoriei RAM nu a fost detectată (XCS-1800, XCS-1796) Programele care au depășit RAM disponibilă nu au fost detectate de compilator în unele situații, ceea ce a dus la o eroare a codului de rulare.
Memorie flash omisă (XCS-1792) Pentru dispozitivele avrxmega3 și avrtiny, părți ale memoriei flash ar fi putut fi lăsate neprogramate de MPLAB X IDE.
Eșecul la executarea principală (XCS-1788) În unele situații în care programul nu avea variabile globale definite, codul de pornire de la runtime nu a ieșit și funcția principală () nu a fost niciodată atinsă.
Informații incorecte de memorie (XCS-1787) Pentru dispozitivele avrxmega3 și avrtiny, programul avr-size a raportat că datele numai în citire consumau RAM în loc de memoria programului.
Citire incorectă în memoria programului (XCS-1783) Proiectele compilate pentru dispozitive cu memorie de program mapată în spațiul de adrese de date și care definesc obiecte folosind macro/atributul PROGMEM ar putea să fi citit aceste obiecte de la o adresă greșită.
Eroare internă cu atribute (XCS-1773) A apărut o eroare internă dacă ați definit obiecte pointer cu
_at () sau attribute() tokens între numele pointerului și tipul dereferențiat, de exempluample, char *
_at ( 0x80015 0) cp; Acum este emis un avertisment dacă este întâlnit un astfel de cod.
Eșecul la executarea principală (XCS-1780, XCS-1767, XCS-1754) Utilizarea variabilelor EEPROM sau definirea siguranțelor folosind pragma de configurare ar fi putut cauza inițializarea incorectă a datelor și/sau blocarea execuției programului în codul de pornire de la runtime, înainte de a ajunge la main () .
Eroare de siguranță cu dispozitive mici (XCS-1778, XCS-1742) Dispozitivele attiny4/5/9/10/20/40 aveau o lungime incorectă a siguranței specificată în antetul lor files care duc la erori de linker atunci când încearcă să construiască cod care definește siguranțe.
Eroare de segmentare (XCS-1777) O eroare de segmentare intermitentă a fost corectată.
Prăbușire a asamblatorului (XCS-1761) Asamblatorul avr-as s-ar fi putut prăbuși când compilatorul a fost rulat sub Ubuntu 18.
Obiecte neștergite (XCS-1752) Este posibil ca obiectele cu durată de stocare statică neinițializate să nu fi fost șterse de codul de pornire de la runtime.
Specificația dispozitivului în conflict ignorată (XCS-1749) Compilatorul nu a generat o eroare atunci când au fost utilizate mai multe opțiuni de specificare a dispozitivului și a indicat dispozitive diferite.
Coruperea memoriei prin heap (XCS-1748) Simbolul heap_ start a fost setat incorect, ceea ce a dus la posibilitatea ca variabilele obișnuite să fie corupte de heap.
Eroare de relocare a linkerului (XCS-1739) Este posibil să fi fost emisă o eroare de relocare a linkerului atunci când codul conținea un rjmp sau rcall cu o țintă la exact 4k octeți distanță.

Versiunea 2.00

Nici unul.

Probleme cunoscute

Următoarele sunt limitări în funcționarea compilatorului. Acestea pot fi restricții generale de codare sau
abateri de la informațiile conținute în manualul de utilizare. Etichetele între paranteze din titlu reprezintă identificarea problemei respective în baza de date de urmărire. Acest lucru poate fi util dacă trebuie să contactați asistența. Acele articole care nu au etichete sunt limitări care descriu modul de operare și care sunt probabil să rămână în vigoare permanent.

Integrare MPLAB X IDE

Integrare MPLAB IDE Dacă Compiler urmează să fie utilizat din MPLAB IDE, atunci trebuie să instalați MPLAB IDE înainte de a instala Compiler.

Generarea codului

Eroare de alocare a memoriei PA (XCS-2881) Când se utilizează optimizatorii de abstracție procedurală, linker-ul poate raporta erori de alocare a memoriei atunci când dimensiunea codului este aproape de cantitatea de memorie disponibilă pentru program pe dispozitiv, chiar dacă programul ar trebui să se potrivească spațiului disponibil.
Smart-IO nu este atât de inteligent (XCS-2872) Caracteristica smart-io a compilatorului va genera un cod valid, dar suboptimal pentru funcția de sprint, dacă caracteristica coast-data-in-proem a fost dezactivată sau dacă dispozitivul are toate flash-urile mapate în memoria de date.
Și mai puțin inteligent Smart-IO (XCS-2869) Caracteristica smart-io a compilatorului va genera cod valid, dar suboptim atunci când sunt utilizate ambele opțiuni -floe și -fno-buil tin.
Plasare suboptimă a datelor numai pentru citire (XCS-2849) Linkerul nu cunoaște în prezent secțiunile de memorie APPCODE și APPDATA și nici diviziunile [No-]Read-While-Write din harta memoriei. Ca rezultat, există o mică șansă ca linkerul să aloce date numai pentru citire într-o zonă necorespunzătoare de memorie. Șansa de date greșite crește dacă este activată caracteristica coast-data-in-pragma, mai ales dacă este activată și caracteristica coast-data-in-config-mapped-proem. Aceste caracteristici pot fi dezactivate dacă este necesar.
Obiect file comanda de procesare (XCS-2863) Ordinea în care obiectele files-urile vor fi procesate de linker pot diferi în funcție de utilizarea optimizărilor de abstractizare procedurală (opțiunea -mpa). Acest lucru ar afecta doar codul care definește funcții slabe în mai multe module.
Eroare de linker cu absolut (XCS-2777) Când un obiect a fost făcut absolut la o adresă la începutul memoriei RAM și au fost definite și obiecte neinițializate, poate fi declanșată o eroare de linker.
ID-uri scurte de trezire (XCS-2775) Pentru dispozitivele ATA5700/2, registrele PHID0/1 sunt definite doar ca având o lățime de 16 biți, mai degrabă decât 32 de biți.
Blocarea linkerului la apelarea simbolului (XCS-2758) Linker-ul se poate bloca dacă opțiunea driver -merlad este utilizată când codul sursă apelează un simbol care a fost definit folosind opțiunea linker -Wl, –defsym.
Inițializare incorectă (XCS-2679) Există o discrepanță între locul în care valorile inițiale pentru unele obiecte globale/statice de dimensiunea octetilor sunt plasate în memoria de date și unde vor fi accesate variabilele în timpul execuției.
pornit incorect se setează gol (XCS-2652) În cazurile în care un șir de subiect pentru conversie prin declarat () conține ceea ce pare a fi un număr în virgulă mobilă în format exponențial și există un caracter neașteptat după un caracter e, atunci adresa goală, dacă este furnizată, va indica caracterul după e și nu e în sine. De example: stated(„hooey”, empty); va avea ca rezultat indicarea goală către caracterul x.
Apeluri de funcții indirecte greșite (XCS-2628) În unele cazuri, apelurile de funcții efectuate prin intermediul unui indicator de funcție stocat ca parte a unei structuri pot eșua.
strtof returnează zero pentru motoarele hexazecimale (XCS-2626) Funcțiile de bibliotecă strtof () și colab și scanf () și colab, vor converti întotdeauna un număr hexazecimal în virgulă mobilă care nu specifică un exponent în
zero. De example: stator(„Bufniță”, &empty); va returna valoarea 0, nu 1.
Mesaje incorecte de consilier de stivă (XCS-2542, XCS-2541) În unele cazuri, avertismentul consilier de stivă privind recursiunea sau stiva nedeterminată utilizată (posibil prin utilizarea alloca()) nu este emisă.
Eroare cu codul de întrerupere duplicat (XCS-2421) Acolo unde mai multe funcții de întrerupere au același corp, compilatorul ar putea avea ieșirea pentru o funcție de întrerupere care o apelează pe cealaltă. Acest lucru va duce la salvarea inutilă a tuturor registrelor blocate de apeluri, iar întreruperile vor fi activate chiar înainte de rularea epilogului curentului de gestionare a întreruperilor, ceea ce ar putea duce la eșecul codului.
Obiecte const nu în memoria programului (XCS-2408) Pentru proiectele avrxmega3 și avertins, obiectele const neidealizate sunt plasate în memoria de date, chiar dacă un avertisment sugerează că au fost plasate în memoria programului. Acest lucru nu va afecta dispozitivele care nu au memorie de program mapată în spațiul de memorie de date și nici nu va afecta niciun obiect care este inițializat.
Ieșire greșită cu cale DFP nevalidă (XCS-2376) Dacă compilatorul este invocat cu o cale DFP nevalidă și o „spec” file există pentru dispozitivul selectat, compilatorul nu raportează pachetul de familie de dispozitive lipsă, ci selectează „specificația” file, ceea ce ar putea duce apoi la o ieșire nevalidă. „specificația” files-ar putea să nu fie la zi cu DFP-urile distribuite și au fost destinate utilizării numai cu testarea compilatorului intern.
Suprapunerea memoriei nedetectată (XCS-1966) Compilatorul nu detectează suprapunerea de memorie a obiectelor făcute absolute la o adresă (prin la ()) și a altor obiecte folosind specificatorul de secțiune () și care sunt legate la aceeași adresă.
Eșec cu funcțiile bibliotecii și _meme (XCS-1763) Funcțiile limbic float numite cu un argument în spațiul de adrese _memo ar putea eșua. Rețineți că rutinele bibliotecii sunt apelate de la unii operatori C, deci, de example, următorul cod este afectat: return regFloatVar > memxFloatVar;
Implementare limbică limitată (AVRTC-731) Pentru produsele ATTiny4/5/9/10/20/40, implementarea standard a bibliotecii C/Math în limbic este foarte limitată sau nu este prezentă.
Limitări ale memoriei programului (AVRTC-732) Imaginile din memoria programului de peste 128 kb sunt suportate de lanțul de instrumente; cu toate acestea, există cazuri cunoscute de întreruperi ale linkerului fără relaxare și fără un mesaj de eroare util, mai degrabă decât generarea stub-urilor de funcție necesare când este utilizată opțiunea -relax.
Limitări de spațiu de nume (AVRTC-733) Spațiile de adresă denumite sunt acceptate de lanțul de instrumente, sub rezerva limitărilor menționate în secțiunea Ghidului utilizatorului Calificări speciale de tip.
Fusuri orare The funcțiile bibliotecii presupun GMT și nu acceptă fusurile orare locale, astfel că ora locală () va reveni la aceeași oră cu gummite (), de exempluample.

SUPORT CLIENȚI

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

Documente/Resurse

Software de compilare MICROCHIP MPLAB XC8 C [pdfManual de utilizare
MPLAB XC8 C, software de compilare MPLAB XC8 C, software de compilare, software

Referințe

Lasă un comentariu

Adresa ta de e-mail nu va fi publicată. Câmpurile obligatorii sunt marcate *