MICROCHIP - logotipOpombe ob izdaji prevajalnika MPLAB XC8 C različice 2.39 za AVR MCU
Uporabniški priročnik

TA DOKUMENT VSEBUJE POMEMBNE INFORMACIJE V ZVEZI S PREVAJALNIKOM MPLAB XC8 C, KADA CILJNO UPORABLJATE NAPRAVE MICROCHIP AVR. PROSIMO, PREBERITE GA PRED ZAGONOM TE PROGRAMSKE OPREME.
GLEJTE OPOMBE OB IZDAJI PREVAJALNIKA MPLAB XC8 C ZA DOKUMENT PIC, ČE UPORABLJATE PREVAJALNIK ZA 8-BITNE NAPRAVE PIC.

konecview

1.1. Uvod
Ta izdaja prevajalnika Microchip MPLAB® XC8 C je funkcionalni varnostni prevajalnik, ki temelji na izdaji v2.36 tega prevajalnika in zdaj podpira licenco za mrežni strežnik.
1.2. Datum izdaje
Uradni datum izdaje te različice prevajalnika je 27. januar 2022.
1.3. Prejšnja različica
Prejšnja različica prevajalnika MPLAB XC8 C je bila 2.36, izdana 25. januarja 2022.
1.4. Priročnik o funkcionalni varnosti
Priročnik za funkcionalno varnost za prevajalnike MPLAB XC je na voljo v paketu dokumentacije, ko kupite licenco za funkcionalno varnost.
1.5. Licence za komponente in različice® on MPLAB
Orodja XC8 C Compiler za AVR MCU so napisana in distribuirana pod GNU General Public License (GPL), kar pomeni, da je njegova izvorna koda prosto distribuirana in dostopna javnosti.
Izvorno kodo za orodja pod GNU GPL lahko prenesete ločeno od Microchipa webmesto. GNU GPL lahko preberete v datoteki z imenom, ki se nahaja v podimeniku vašega namestitvenega imenika licence.txt avr/doc. Splošno razpravo o načelih, na katerih temelji GPL, lahko najdete tukaj.
Podporna koda za datoteke glave, povezovalne skripte in izvajalne knjižnice je lastniška koda in ni zajeta v GPL.
Ta prevajalnik je implementacija GCC različice 5.4.0, binutils različice 2.26 in uporablja avr-libc različice 2.0.0.
1.6. Sistemske zahteve
Prevajalnik MPLAB XC8 C in programska oprema za licenciranje, ki jo uporablja, sta na voljo za različne operacijske sisteme, vključno s 64-bitnimi različicami naslednjega: profesionalne izdaje sistema Microsoft Windows 10; Ubuntu 18.04; in macOS 10.15.5. Binarne datoteke za Windows so podpisane s kodo. Binarne datoteke za macOS so podpisane in notarizirane.
Če uporabljate omrežni licenčni strežnik, lahko za gostovanje licenčnega strežnika uporabljate samo računalnike z operacijskimi sistemi, ki jih podpirajo prevajalniki. Od xclm različice 2.0 lahko omrežni licenčni strežnik namestite na platformo Microsoft Windows Server, vendar licenčnemu strežniku ni treba delovati v strežniški različici operacijskega sistema.
1.7. Podprte naprave
Ta prevajalnik podpira vse 8-bitne naprave AVR MCU, znane v času izdaje. Glej (v prevajalniku avr_chipinfo.html imenik) za seznam vseh podprtih naprav. V teh datotekah so navedene tudi konfiguracijske nastavitve bit doc za vsako napravo.
1.8. Izdaje in nadgradnje licenc
Prevajalnik MPLAB XC8 je mogoče aktivirati kot licenčni (PRO) ali nelicenčni (brezplačni) izdelek. Za licenciranje prevajalnika morate kupiti aktivacijski ključ. Licenca omogoča višjo stopnjo optimizacije v primerjavi z brezplačnim izdelkom. Prevajalnik brez licence lahko deluje neomejeno brez licence.
Prevajalnik MPLAB XC8 Functional Safety mora biti aktiviran z licenco za funkcionalno varnost, kupljeno pri Microchipu. Brez te licence prevajalnik ne bo deloval. Ko je aktiviran, lahko izberete katero koli raven optimizacije in uporabite vse funkcije prevajalnika. Ta izdaja MPLAB XC Functional Safety
Prevajalnik podpira licenco mrežnega strežnika.
Za informacije o vrstah licenc in namestitvi prevajalnika z licenco glejte dokument Namestitev in licenciranje prevajalnikov MPLAB XC C (DS50002059).
1.9. Namestitev in aktiviranje
Za pomembne informacije o najnovejšem upravitelju licenc, vključenem v ta prevajalnik, glejte tudi razdelke Težave in omejitve pri selitvi.
Če uporabljate MPLAB IDE, pred namestitvijo tega orodja namestite najnovejšo različico MPLAB X IDE 5.0 ali novejšo. Pred namestitvijo prevajalnika zaprite IDE. Zaženite (Windows), (Linux) ali (macOS) aplikacijo za namestitev prevajalnika .exe .run .app, npr. in sledite navodilom na zaslonu.
XC8-1.00.11403-windows.exe
Priporočen je privzeti namestitveni imenik. Če uporabljate Linux, morate prevajalnik namestiti s terminalom in iz korenskega računa. Namestite z uporabo računa macOS s skrbniškimi pravicami.
Aktivacija se zdaj izvede ločeno od namestitve. Za več informacij glejte dokument Upravitelj licenc za prevajalnike MPLAB® XC C (DS52059).
Če se odločite za zagon prevajalnika pod licenco za ocenjevanje, boste med prevajanjem prejeli opozorilo, ko boste v roku 14 dni od konca ocenjevalnega obdobja. Enako opozorilo je izdano, če ste v 14 dneh po koncu naročnine na HPA.
Strežnik omrežnih licenc XC je ločen namestitveni program in ni vključen v namestitveni program prevajalnika za enega uporabnika.
XC License Manager zdaj podpira gostovanje plavajočih omrežnih licenc. Ta funkcija, namenjena mobilnim uporabnikom, omogoča, da plavajoča licenca za kratek čas izgine iz omrežja. S to funkcijo lahko prekinete povezavo z omrežjem in še vedno uporabljate prevajalnik MPLAB XC. Za več o tej funkciji glejte mapo doc namestitve XCLM.
MPLAB X IDE vključuje okno z licencami (Orodja > Licence) za vizualno upravljanje gostovanja.

1.9.1. Reševanje težav z namestitvijo
Če imate težave pri namestitvi prevajalnika v katerem koli operacijskem sistemu Windows, poskusite naslednje predloge.

  • Zaženite namestitev kot skrbnik.
  • Dovoljenja namestitvene aplikacije nastavite na »Popolni nadzor«. (Z desno miškino tipko kliknite datoteko, izberite Lastnosti, zavihek Varnost, izberite uporabnika, uredite.)
  • Nastavite dovoljenja za začasno mapo na »Full Control!.
  • Če želite določiti lokacijo začasne mape, vnesite ukaz Zaženi (tipka z logotipom Windows + R). %temp% To bo odprlo pogovorno okno raziskovalca datotek, ki prikazuje ta imenik in vam bo omogočilo, da določite pot do te mape.

1.10. Dokumentacija prevajalnika

Opombe ob izdaji MICROCHIP MPLAB XC8 C prevajalnika različice 2.39 za AVR MCU - dokumentNavodila za uporabo prevajalnika lahko odprete na strani HTML, ki se odpre v vašem brskalniku, ko kliknete modri gumb pomoči na nadzorni plošči MPLAB X IDE, kot je prikazano na posnetku zaslona.
Če gradite za 8-bitne cilje AVR, MPLAB® XC8 C Compiler User's® Guide for AVR
MCU vsebuje informacije o tistih možnostih in funkcijah prevajalnika, ki so uporabne za to arhitekturo.

1.11. Podpora strankam
Microchip pozdravlja poročila o napakah, predloge ali komentarje v zvezi s to različico prevajalnika. Prosimo, da vsa poročila o napakah ali zahteve po funkcijah usmerite prek podpornega sistema.

Posodobitve dokumentacije

Za spletne in najnovejše različice dokumentacije MPLAB XC8 obiščite Microchipovo spletno stran
Tehnična dokumentacija webmesto.
Nova ali posodobljena dokumentacija AVR v tej izdaji:
Namestitev in licenciranje prevajalnikov MPLAB® XC C (DS50002059) revizija L
Referenčni vodnik po poenoteni standardni knjižnici Microchip opisuje vedenje in vmesnik do funkcij, ki jih opredeljuje poenotena standardna knjižnica Microchip, kot tudi predvideno uporabo vrst knjižnic in makrov. Nekatere od teh informacij je prej vseboval MPLA® XC8 C Compiler User!s Guide® for AVR
MCU. Podatki o knjižnici, specifični za napravo, so še vedno v tem priročniku za prevajalnik.
Uporabniški priročnik za Hexmate je bil vključen v imenik te izdaje. Ta priročnik je namenjen dokumentarjem, ki uporabljajo Hexmate kot samostojno aplikacijo.
Naslednji razdelki nudijo popravke in dodatne informacije k tistim v uporabniških priročnikih, ki so priloženi prevajalniku.

2.1. možnost formata smart-io
Možnost-msmart-io-format=fmt fmt, kjer je niz, ki vsebuje oblikovane specifikacije pretvorbe IO, obvesti prevajalnik, da pametne funkcije IO uporabljajo navedene specifikacije.
Za zmanjšanje velikosti kode prevajalnik prilagodi kodo knjižnice, povezano z družinami pametnih IO funkcij za tiskanje in skeniranje, na podlagi specifikacij pretvorbe, ki so prisotne v formatnih nizih, zbranih med vsemi klici teh funkcij. Ta funkcija je popolnoma samodejna in je ni mogoče onemogočiti.
V nekaterih primerih prevajalnik ne more določiti informacij o uporabi iz oblikovanega klica funkcije IO. Če je bila možnost uporabljena, so zahtevane specifikacije pretvorbe za te funkcije pridobljene iz niza; v nasprotnem primeru prevajalnik ne predpostavlja, kako se uporabljajo funkcije -msmart-io-format=fmt fmt, in zagotavlja, da so popolnoma delujoče formatirane funkcije IO povezane v končno sliko programa.
Na primerample, upoštevajte naslednje klice funkcij pametnega IO.

vscanf(“%d:%li”, va_list1);
vprintf(“%-s%d”, va_list2);
vprintf(fmt1, va_list3);// dvoumna uporaba
vscanf(fmt2, va_list4);// dvoumna uporaba

Pri obdelavi zadnjih dveh klicev prevajalnik ne more izpeljati nobenih informacij o uporabi ne iz formatnih nizov ne iz argumentov. V teh primerih je mogoče uporabiti možnost -msmart-io-format, ki bo potencialno omogočila generiranje bolj optimalno oblikovanih funkcij I0 in tako zmanjšala velikost kode programa. Na primerample, če formatni nizi, na katere kažeta fmtl in fmt2, skupaj uporabljajo samo specifikatorje pretvorbe »%d«, »%i« in »% s«, je -msmart-io-format=fmt=»%d%i%s ” je treba izdati možnost.

Niz odtenkov lahko vsebuje katero koli veljavno specifikacijo pretvorbe, vključno z zastavicami in modifikatorji (nprample “%-13. 91s«) in mora natančno odražati tiste, ki jih uporabljajo funkcije, katerih uporaba je dvoumna. Nevključitev specifikacije v bit argument, če so ga uporabile formatirane funkcije I0, lahko povzroči napako kode.
Če je fmt prazen niz ali ali ne vsebuje nobenih opaznih specifikacij pretvorbe, se izda opozorilo in popolnoma delujoče oblikovane funkcije I0 se povežejo v končno sliko programa.
To možnost lahko večkrat uporabite v ukazni vrstici. Specifikacije pretvorbe, ki se uporabljajo za vsako možnost, se zberejo.

2.2. možnost omit-frame-pointer
Možnost – f omit- frame-pointer naroči prevajalniku, naj neposredno uporabi kazalec sklada za dostop do objektov v skladu in, če je mogoče, izpusti kodo, ki shrani, inicializira in obnovi register okvirja. Samodejno je omogočeno na vseh neničelnih ravneh optimizacije.
Zanikanje možnosti z uporabo -fno-omit- frame-pointer lahko pomaga pri razhroščevanju optimizirane kode; vendar ta možnost ne zagotavlja, da bo kazalec okvirja vedno uporabljen.

2.3. Možnosti odvijanja zank
Možnosti – funrol I-loops in -(unroll-all-loops) nadzirata optimizacije, usmerjene v hitrost, ki poskušajo odstraniti zakasnitve razvejanja v zankah. Odmotane zanke običajno povečajo hitrost izvajanja ustvarjene kode na račun večje velikosti kode.
Možnost – funrol I-loops odvije zanke, kjer je mogoče določiti število ponovitev v času prevajanja ali ko koda vstopi v zanko. Možnost -funroll-all-loops je bolj agresivna, saj odvije vse zanke, tudi če število ponovitev ni znano. Običajno je manj učinkovit pri izboljšanju hitrosti izvajanja kot možnost – funrol 1-loops.

2.4. fat-Ito-predmeti Možnost
Možnost – f fat-1 to-obj ects zahteva, da prevajalnik ustvari debel objekt files, ki vsebujejo oboje
objektna koda in GIMPLE (ena od notranjih predstavitev GCC), zapisana v edinstvene razdelke ELF. Takšni predmeti fileso uporabni za knjižnično kodo, ki bi jo lahko povezali s projekti, ki uporabljajo in ne uporabljajo standardnega optimizatorja časa povezave, ki ga nadzira možnost -flto.
Oblika – fno-fat-lto-objects te možnosti, ki je privzeta, če ni podana nobena možnost, prepreči vključitev objektne kode v objekt files, kar ima za posledico hitrejše gradnje. Vendar tak predmet files mora biti vedno povezan s standardnim optimizatorjem časa povezave.

2.5. Možnost particije Ito
The – flto-partiti na=a Igo ri thm možnost nadzoruje algoritem, ki se uporablja za razdelitev predmeta files pri izvajanju optimizatorja časa povezave. Argument none v celoti onemogoči particioniranje in izvede korak optimizacije časa povezave neposredno iz faze analize celotnega programa (WPA). Ta način delovanja bo dal najbolj optimalne rezultate na račun večjih zahtev po pomnilniku prevajalnika in daljših časov gradnje, čeprav je malo verjetno, da bo to težava pri majhnih programih. Razdelitev objekta files lahko izboljša zmogljivost gradnje. Argument ena določa, da je treba uporabiti natanko eno particijo, argument lto1 pa particioniranje, ki odraža tisto, ki ga narekuje izvirni vir files. Privzeti argument je uravnotežen, kar določa razdelitev na enako velike dele, kadar je to mogoče.

2.6. Dodatek k razdelku 3.6.11 Možnosti preslikanega povezovalnika
-wl, – odsek-začetek =sek naslov=naslov manjka v tabeli pogosto uporabljenih možnosti povezovalnika, dostopnih z možnostjo gonilnika prevajalnika -wl. Ta možnost omogoča postavitev po meri poimenovanih razdelkov na podani naslov. Ni ga mogoče uporabiti za postavitev standardnih razdelkov, kot je ( . data, . bss, . besedilo), ki ga je treba postaviti z možnostjo -wl, -'r.

2.7. Sprememba razdelka 4.14.2 Spreminjanje in povezovanje dodeljenega razdelka
Upoštevajte, da v nasprotju z informacijami v tem razdelku uporabniškega priročnika spremembe prevajalnika v tej izdaji zdaj pomenijo, da je razdelke po meri mogoče povezati z uporabo -w1, – sekta ion- začetek=razdelek=acicir in ne da bi morali spremeniti skript povezovalca.

Kaj je novega

Prevajalnik zdaj podpira naslednje nove ciljne funkcije AVR. Številka različice v podnaslovih označuje prvo različico prevajalnika, ki podpira funkcije, ki sledijo.

3.1. Različica 2.39 (funkcionalna varnostna izdaja)
Licenca za omrežni strežnik Ta izdaja prevajalnika funkcionalne varnosti MPLAB XC8 podpira licenco za omrežni strežnik.

3.2. Različica 2.36 
Noben.
3.3. Različica 2.35 
Podpora za nove naprave Podpora je na voljo za naslednje dele AVR: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 in AVR64DD32.
Izboljšano preklapljanje konteksta Nova možnost -mcall-isr-prologues spremeni, kako prekinitvene funkcije shranijo registre ob vnosu in kako se ti registri obnovijo, ko se prekinitvena rutina konča. Deluje na podoben način kot možnost -mcall-prologues, vendar vpliva le na prekinitvene funkcije (ISR).
Še bolj izboljšano preklapljanje konteksta Novo -mgas-isr-prologi možnost nadzira kodo preklopa konteksta, ustvarjeno za rutine storitve majhnih prekinitev. Ko je ta funkcija omogočena, bo asembler pregledal ISR za uporabo registra in shranil te uporabljene registre le, če je potrebno.
Nastavljivo preslikavo bliskavice Nekatere naprave v družini AVR DA in AVR DB imajo SFR (npr. FLMAP), ki določa, kateri 32k del programskega pomnilnika bo preslikan v podatkovni pomnilnik. Novo možnost – mconst-data-in-config-mapped-progmem lahko uporabite tako, da povezovalnik postavi vse podatke, kvalificirane za cons t, v en odsek 32k in samodejno inicializira ustrezen register SFR, da zagotovi, da so ti podatki preslikani v podatke pomnilniški prostor, kjer bo učinkovitejši dostop do njega.

Poenotene standardne knjižnice Microchip Vse MPLAB Prevajalniki XC bodo delili Microchip Unified Standard Library, ki je zdaj na voljo s to izdajo MPLAB XC8. The MPLAB® XC8 C prevajalnik
Uporabniški priročnik za AVR® MCU ne vključuje več dokumentacije za te standardne funkcije. Te informacije je zdaj mogoče najti v Referenčni vodnik po enotni standardni knjižnici Microchip. Upoštevajte, da nekatere funkcije, ki jih je prej definiral avr-libc, niso več na voljo. (Glej Funkcionalnost knjižnice.)
Pametni I0 Kot del novih poenotenih knjižnic so funkcije JO v družinah printf in scanf zdaj ustvarjene po meri pri vsaki gradnji glede na to, kako se te funkcije uporabljajo v programu. To lahko bistveno zmanjša vire, ki jih uporablja program.
Možnost pomoči Smart I0 Pri analizi klicev funkcij pametnega I0 (kot sta printf () ali scanf ()) prevajalnik ne more vedno določiti iz niza formata ali sklepati iz argumentov tistih specifikacij pretvorbe, ki jih zahteva klic. Prej prevajalnik vedno ni delal predpostavk in je zagotovil, da je bilo 10 popolnoma delujočih funkcij povezanih v končno sliko programa. Dodana je bila nova možnost – msma rt-io-format=fmt, tako da lahko prevajalnik namesto tega uporabnik obvesti o specifikatorjih pretvorbe, ki jih uporabljajo pametne funkcije I0, katerih uporaba je dvoumna, kar preprečuje povezovanje predolgih 10 rutin. (Glej format smart-io Možnost za več podrobnosti.)
Postavitev odsekov po meri Prej je možnost -W1, –section-start le postavila podani odsek na zahtevani naslov, ko je povezovalni skript definiral izhodni odsek z istim imenom. Če temu ni bilo tako, je bil razdelek postavljen na naslov, ki ga je izbral povezovalec, možnost pa je bila v bistvu prezrta. Zdaj bo možnost upoštevana za vse razdelke po meri, tudi če povezovalni skript ne definira razdelka. Upoštevajte pa, da za standardne razdelke, kot je . besedilo,. BSS ali . podatki, najbolj primeren razdelilnik bo imel še vedno popoln nadzor nad njihovo umestitvijo in možnost ne bo imela nobenega učinka. Uporabite -wl, -Tsection=addr možnost, kot je opisano v uporabniškem priročniku.

3.4. Različica 2.32
Stack Guidance Funkcijo prevajalnikovega vodenja sklada, ki je na voljo z licenco za prevajalnik PRO, lahko uporabite za oceno največje globine katerega koli sklada, ki ga uporablja program. Konstruira in analizira graf klicev programa, določi uporabo skladov vsake funkcije in izdela poročilo, iz katerega je mogoče sklepati o globini skladov, ki jih uporablja program.
Ta funkcija je omogočena prek možnosti ukazne vrstice -mchp-stack-usage. Po izvedbi se natisne povzetek uporabe sklada. Podrobno poročilo o skladih je na voljo na zemljevidu file, ki ga lahko zahtevate na običajen način.
Podpora za nove naprave Podpora je na voljo za naslednje dele AVR: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTNY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32 in AVR32DB48.
Podpora za umaknjene naprave Podpora ni več na voljo za naslednje dele AVR: AVR 16DA28, AVR16DA32 in AVR16DA48.

3.5. Različica 2.31 Brez.
3.6. Različica 2.30
Nova možnost za preprečevanje inicializacije podatkov Nova možnost gonilnika -mno-data-init preprečuje inicializacijo podatkov in brisanje odsekov bss. Deluje tako, da zatre izpis simbolov do_copy_data in do_clear_bss v sestavu files, kar bo povezovalcu preprečilo vključitev teh rutin.
Izboljšane optimizacije Izvedene so bile številne izboljšave optimizacije, vključno z odstranitvijo odvečnih povratnih navodil, odstranitvijo nekaterih skokov, ki sledijo navodilu preskoči, če je bit-je, ter izboljšano abstrakcijo postopkov in zmožnost ponavljanja tega procesa.
Zdaj so na voljo dodatne možnosti za nadzor nekaterih teh optimizacij, zlasti -fsection-anchors, ki omogoča dostop do statičnih objektov glede na en simbol; -mpa-iteracije =n, ki omogoča spreminjanje števila ponovitev proceduralne abstrakcije s privzete vrednosti 2; in -mpa-callcost-shortcal 1, ki izvaja bolj agresivno proceduralno abstrakcijo, v upanju, da lahko povezovalec sprosti dolge klice. Ta zadnja možnost lahko poveča velikost kode, če osnovne predpostavke niso uresničene.
Novo podporo za naprave Podpora je na voljo za naslednje dele AVR: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR 128DB 32, AVR128DB48 in AVR 128DB64.
Podpora za umaknjeno napravo Podpora ni več na voljo za naslednje dele AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C in ATA664251.

3.7. Različica 2.29 (funkcionalna varnostna izdaja)
Glava file za dodatke prevajalnika Za zagotovitev, da se prevajalnik lahko prilagodi jezikovnim specifikacijam, kot je MISRA, je glava file, ki ga samodejno vključi , je bil posodobljen. Ta glava vsebuje prototipe za vse vgrajene funkcije, kot sta vgrajeni in_avr_nop () in _builtin_avr_delay_cycles (). Nekatere vgrajene komponente morda niso združljive z MISRA; te lahko izpustite tako, da v ukazno vrstico prevajalnika dodate definicijo XC_STRICT MISRA. Vgrajeni elementi in njihove deklaracije so bili posodobljeni za uporabo tipov s fiksno širino.

3.8. Različica 2.20
Novo podporo za naprave Podpora je na voljo za naslednje dele AVR: ATTINY 1624, ATTINY1626 in ATTINY 1 627.
Boljša dodelitev najboljšega prileganja Dodeljevalnik najboljšega prileganja (BFA) v prevajalniku je bil izboljšan, tako da so razdelki dodeljeni v vrstnem redu, ki omogoča boljšo optimizacijo. BFA zdaj podpira imenovane naslovne prostore in bolje obravnava inicializacijo podatkov.
Izboljšana proceduralna abstrakcija Optimizacije proceduralne abstrakcije se zdaj izvajajo na več zaporedjih kode. Prejšnje situacije, v katerih je ta optimizacija morda povečala velikost kode, so bile obravnavane tako, da je bila optimizacijska koda seznanjena s postopkom zbiranja smeti povezovalca.
Odsotnost AVR Assemblerja AVR Assembler ni več vključen v to distribucijo. 3.9. Različica 2.19 (funkcionalna varnost Izdaja)
Noben.
3.10. Različica 2.10
Pokritost kode Ta izdaja vključuje funkcijo pokritosti kode, ki olajša analizo obsega, v katerem je bila izvedena izvorna koda projekta. Uporabite možnost -mcodecov=ram, da jo omogočite. Po izvedbi programa na vaši strojni opremi bodo informacije o pokritosti kode zbrane v napravi in ​​jih je mogoče prenesti v MPLAB X IDE in jih prikazati prek vtičnika za pokritost kode. Za informacije o tem vtičniku si oglejte dokumentacijo IDE.
#pragma nocodecov se lahko uporabi za izključitev naslednjih funkcij iz analize pokritosti. V idealnem primeru bi bilo treba pragmo dodati na začetek file izključiti to celotno file iz analize pokritosti. Druga možnost je, da _atribut_ ((nocodecov)) uporabite za izključitev določene funkcije iz analize pokritosti.
Opis naprave files Nova naprava file imenovan avr_chipinfo.html se nahaja v imeniku dokumentov

distribucija prevajalnika. to file navaja vse naprave, ki jih podpira prevajalnik. Kliknite ime naprave in odprla se bo stran, ki prikazuje vse dovoljene pare konfiguracijskih bitov nastavitev/vrednost za to napravo, z npr.amples.

Proceduralna abstrakcija V prevajalnik so bile dodane optimizacije postopkovne abstrakcije, ki zamenjajo običajne bloke zbirne kode s klici ekstrahirane kopije tega bloka. Te izvaja ločena aplikacija, ki jo prevajalnik samodejno prikliče ob izbiri stopnje 2, 3 oz. s optimizacije. Te optimizacije zmanjšajo velikost kode, vendar lahko zmanjšajo hitrost izvajanja in možnost odpravljanja napak v kodi.
Proceduralno abstrakcijo lahko onemogočite na višjih ravneh optimizacije z možnostjo -mno-pa ali pa jo omogočite na nižjih ravneh optimizacije (odvisno od vaše licence) z uporabo -mpa. Za predmet se lahko onemogoči file z uporabo -mno-pa-on-f ile=fileime ali onemogočeno za funkcijo z uporabo -mno-pa-onfunotion=f maziljenje.
Znotraj izvorne kode lahko onemogočite postopkovno abstrakcijo za funkcijo z uporabo attribute_ ( (nopa) ) z definicijo funkcije ali z uporabo nopa, ki se razširi na _attribute_ ( (nopa, noinline) ) in tako prepreči vstavljanje funkcij in obstaja abstrakcija vstavljene kode.
Podpora za ključavnico v pragmi Konfiguracijo #pragma je zdaj mogoče uporabiti za določitev bitov zaklepanja AVR kot tudi drugih konfiguracijskih bitov. Preverite avr_chipinfo.html file (omenjeno zgoraj) za pare nastavitev/vrednost za uporabo s to pragmo.
Novo podporo za naprave Podpora je na voljo za naslednje dele: AVR28DAl28, AVR64DAl28, AVR32DAl28 in AVR48DAl28.

3.11. Različica 2.05
Več bitov za vaš denar Različica tega prevajalnika in upravitelja licenc za macOS je zdaj 64-bitna aplikacija. To bo zagotovilo, da se bo prevajalnik namestil in zagnal brez opozoril v najnovejših različicah macOS.
Const objekti v programskem pomnilniku Prevajalnik lahko zdaj postavi objekte, kvalificirane za const, v bliskovni pomnilnik programa, namesto da bi jih shranil v RAM. Prevajalnik je bil spremenjen tako, da so globalni podatki, kvalificirani za cons t, shranjeni v bliskovnem pomnilniku programa in da je do teh podatkov mogoče neposredno ali posredno dostopati z uporabo ustreznih navodil programskega pomnilnika. Ta nova funkcija je privzeto omogočena, vendar jo je mogoče onemogočiti z možnostjo -mno-const-data-in-progmem. Za arhitekturi avrxmega3 in avrtiny ta funkcija ni potrebna in je vedno onemogočena, saj je programski pomnilnik preslikan v podatkovni naslovni prostor za te naprave.
Standard brezplačno Nelicencirane (brezplačne) različice tega prevajalnika zdaj omogočajo optimizacije do in vključno z nivojem 2. To bo omogočilo podoben, čeprav ne enak rezultat, kot je bil prej mogoč z uporabo standardne licence.
Dobrodošli AVRASM2 Sestavljalnik AVRASM2 za 8-bitne naprave je zdaj vključen v namestitveni program prevajalnika XC8. Tega sestavljalnika ne uporablja prevajalnik XC8, vendar je na voljo za projekte, ki temeljijo na ročno napisanem izvoru sestavljanja.
Novo podporo za naprave Podpora je na voljo za naslednje dele: ATMEGA1608, ATMEGA 1609, ATMEGA808 in ATMEGA809.

3.12. Različica 2.00
Voznik najvišje ravni Nov gonilnik, imenovan xc8 -cc, je zdaj nameščen nad prejšnjim gonilnikom avr-gcc in gonilnikom xc8 ter lahko pokliče ustrezen prevajalnik glede na izbiro ciljne naprave. Ta gonilnik sprejema možnosti v slogu GCC, ki so bodisi prevedene v prevajalnik, ki se izvaja, bodisi posredovane vanj. Ta gonilnik omogoča uporabo podobnega nabora možnosti s podobno semantiko s katerim koli ciljem AVR ali PIC in je zato priporočen način za priklic prevajalnika. Po potrebi lahko stari gonilnik avr-gcc pokličete neposredno z uporabo možnosti starega sloga, ki jih je sprejel v prejšnjih različicah prevajalnika.
Skupni vmesnik C Ta prevajalnik se lahko zdaj prilagodi skupnemu vmesniku C MPLAB, kar omogoča lažji prenos izvorne kode v vse prevajalnike MPLAB XC. Možnost -mext=cci zahteva to funkcijo, ki omogoča nadomestno sintakso za številne jezikovne razširitve.
Novi knjižničar voznik A novi knjižničarski gonilnik je nameščen nad prejšnjim knjižničarjem PIC libr in knjižničarjem AVR avr-ar. Ta gonilnik sprejema možnosti v slogu arhivarja GCC, ki so prevedene ali posredovane knjižničarju, ki se izvaja. Novi gonilnik omogoča uporabo podobnega nabora možnosti s podobno semantiko za ustvarjanje ali manipulacijo katere koli knjižnice PIC ali AVR file in je zato priporočen način za priklic knjižničarja. Če je to potrebno za podedovane projekte, lahko prejšnjega knjižničarja pokličete neposredno z uporabo možnosti starega sloga, ki jih je sprejel v prejšnjih različicah prevajalnika.

Težave z migracijo

Naslednje funkcije am, ki jih zdaj prevajalnik obravnava drugače. Te spremembe lahko zahtevajo spremembo vaše izvorne kode, če prenašate kodo v to različico prevajalnika. Številka različice v podnaslovih označuje prvo različico prevajalnika, ki podpira spremembe, ki sledijo.

4.1. Različica 2.39 (funkcionalna varnostna izdaja)
Noben.
4.2. Različica 2.36 Noben.
4.3. Različica 2.35
Ravnanje z osnovami nizov (XC8-2420) Da bi zagotovili skladnost z drugimi prevajalniki XC, XC8 string-to funkcije, kot je strtol () itd., ne bodo več poskušale pretvoriti vhodnega niza, če je navedena osnova večja od 36, in bodo namesto tega nastavile errno na EINVAL. Standard C ne določa obnašanja deluje, ko je ta osnovna vrednost presežena.
Neprimerne optimizacije hitrosti Pri izbiri optimizacije stopnje 3 (-03) so bile omogočene optimizacije postopkovne abstrakcije. Te optimizacije zmanjšajo velikost kode na račun hitrosti kode, zato jih ne bi smeli izvesti. Projekti, ki uporabljajo to raven optimizacije, lahko opazijo razlike v velikosti kode in hitrosti izvajanja, če so izdelani s to izdajo.
Funkcionalnost knjižnice Koda za številne standardne funkcije knjižnice C zdaj izvira iz Microchipove poenotene standardne knjižnice, ki se lahko v nekaterih okoliščinah obnaša drugače kot tisto, ki jo zagotavlja prejšnja knjižnica avr-libc. Na primerample ni več potrebna povezava v knjižnici 1printf flt (možnost -1printf_flt), da bi vklopili podporo za formatiran I0 za specifikatorje float-formata. Zaradi pametnih 10 funkcij poenotene standardne knjižnice Microchip je ta možnost odveč. Poleg tega uporaba podprogramov s pripono _P za funkcije niza in pomnilnika (npr. strcpy_P ( ) itd.), ki delujejo na nizih const v flash, ni več potrebna. Standardne rutine C (npr. strcpy 0 ) bodo pravilno delovale s takimi podatki, ko je omogočena funkcija const-data-in-program-memory.

4.4. Različica 2.32
Noben.
4.5. Različica 2.31
Noben.
4.6. Različica 2.30
Noben.
4.1. Različica 2.29 (funkcionalna varnostna izdaja)
Noben.
4.2. Različica 2.20
Spremenjena postavitev DFP Prevajalnik zdaj prevzame drugačno postavitev, ki jo uporabljajo DFP (paketi družine naprav). To bo pomenilo, da starejši DFP morda ne bo deloval s to izdajo, starejši prevajalniki pa ne bodo mogli uporabljati najnovejših DFP-jev.

4.3. Različica 2.19 (funkcionalna varnostna izdaja)
Noben.
4.4. Različica 2.10 Brez
4.5. Različica 2.05
Konstantni objekti v programskem pomnilniku Upoštevajte, da bodo privzeti, const-kvalificirani objekti postavljeni in dostopni v programskem pomnilniku (kot je opisano v njenem). To bo vplivalo na velikost in hitrost izvajanja vašega projekta, vendar bi moralo zmanjšati uporabo RAM-a. To funkcijo lahko po potrebi onemogočite z možnostjo -mnocons t-data-in-pr ogmem.

4.6. Različica 2.00
Konfiguracijske varovalke Varovalke konfiguracije naprave je zdaj mogoče programirati z uporabo konfiguracijske pragme, ki ji sledijo pari vrednosti nastavitve za določitev stanja varovalke, npr. #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
Absolutni objekti in funkcije Objekte in funkcije je zdaj mogoče postaviti na določen naslov v pomnilniku z uporabo CCI _at (naslov) specifikator, nprample:
ifinclude
int foobar na (0)0300100);
char at(0x250) getID(int offset) ( Argument za ta specifikator mora biti konstanta, ki predstavlja naslov, na katerega bo postavljen prvi bajt ali navodilo. Naslovi RAM so označeni z uporabo odmika Ox800000. Omogočite CCI za uporabite to funkcijo.
Nova sintaksa prekinitvene funkcije Prevajalnik zdaj sprejme CCI _interrupt (št) specifikator, ki nakazuje, da so funkcije C upravljalci prekinitev. Specifikator vzame številko prekinitve, nprample:

Odpravljene težave

Naslednji popravki, ki so bili narejeni v prevajalniku. Ti lahko popravijo napake v ustvarjeni kodi ali spremenijo delovanje prevajalnika tako, kot je bilo predvideno ali določeno v uporabniškem priročniku. Številka različice v podnaslovih označuje prvo različico prevajalnika, ki vsebuje popravke za težave, ki sledijo. Oznake v oklepajih v naslovu so identifikacija zadeve v zbirki podatkov za sledenje. To je lahko koristno, če se morate obrniti na podporo.
Upoštevajte, da so nekatere težave, povezane z napravo, odpravljene v družinskem paketu naprav (DR)), povezana z napravo. Oglejte si MPLAB Pack Manager za informacije o spremembah DFP-jev in prenos najnovejših paketov.

5.1. Različica 2.39 (funkcionalna varnostna izdaja)
Noben.
5.2. Različica 2.36
Napaka pri zakasnitvi (XCS2774) Manjše spremembe v privzetih optimizacijah prostega načina so preprečile nenehno zlaganje izrazov operandov v vgrajene funkcije z zakasnitvijo, zaradi česar so bili obravnavani kot nekonstante in so sprožili napako. vgrajeni_avr_delay_cycles pričakuje celoštevilsko konstanto časa prevajanja.

5.3. Različica 2.35
Sosednji dodelitev z uporabo _at (XCS2653) Neprekinjeno dodeljevanje več predmetov v razdelku z istim imenom in z uporabo _at () ni delovalo pravilno. Na primerample:
atribut const char arrl[] (razdelek(“.mysec”) pri (0x500) = (OxAB, OxCD);
const char arr2[] atribut (sectionr.mysec”)= (OxEF, OxFE);
moral postaviti arr2 takoj za arri.
Določanje začetnih naslovov odsekov (XCS2650) The -wl, –section-start možnost tiho ni uspela postaviti odsekov na nominirani začetni naslov. Ta težava je bila odpravljena za vse po meri poimenovane razdelke; vendar ne bo delovalo za standardne razdelke, kot je . besedilo ali. bss, ki mora biti postavljen z a -wl, -T možnost.
Povezovalnik se zruši pri sprostitvi (XCS2647) Kdaj optimizacija -mrelax je bila omogočena in odseki kode ali podatkov se niso prilegali razpoložljivemu pomnilniku, povezovalnik se je zrušil. Zdaj se v takšnih okoliščinah namesto tega izdajo sporočila o napakah.
Ne, nepadanjenazaj (XCS2646) The možnost –nofallback ni bila pravilno implementirana niti dokumentirana. To lahko zdaj izberete, da zagotovite, da se prevajalnik ne bo vrnil na nižjo nastavitev optimizacije, če prevajalnik nima licence, in bo namesto tega izdal napako.
Neustrezne optimizacije hitrosti (XCS2637) Pri izbiri optimizacije stopnje 3 (-03) so bile omogočene optimizacije postopkovne abstrakcije. Te optimizacije zmanjšajo velikost kode na račun hitrosti kode, zato jih ne bi smeli izvesti.
Slab dostop do EEPROM (XCS2629) Rutina eeprom_read_block ni delovala pravilno na napravah Xmega, ko je bila omogočena možnost -mconst-data-in-progmem (kar je privzeto stanje), zaradi česar pomnilnik EEPROM ni bil pravilno prebran.
Neveljavna dodelitev pomnilnika (X03-2593, XC8-2651) Kdaj možnost povezovalnika -Ttext ali -Tdata (nprampdatoteka, posredovana z uporabo možnosti gonilnika -wl), je bil določen izvor ustreznega besedilnega/podatkovnega območja; vendar končni naslov ni bil ustrezno prilagojen, kar bi lahko povzročilo, da je območje preseglo obseg pomnilnika ciljne naprave.
Strmoglavljenje s preveč dodeljeno funkcijo (XC8-2580) Prevajalnik se je zrušil, če je bila funkcija deklarirana z uporabo več kot enega od atributov prekinitve, signala ali nmi, npr. _attribute_ ( (signal, prekinitev)).
Neveljavna prekinitvena koda ATtiny (XC8-2465) Pri izdelavi za naprave ATtiny in so bile optimizacije onemogočene (-00), so prekinitvene funkcije morda sprožile sporočila asemblerja operanda izven območja.
Možnosti niso posredovane (XC8-2452) Pri uporabi -wl možnost z več možnostmi povezovalnika, ločenimi z vejicami, vse možnosti povezovalnika niso bile posredovane povezovalniku.
Napaka pri posrednem branju programskega pomnilnika (X03-2450) V nekaterih primerih je prevajalnik ustvaril notranja napaka (neprepoznaven insn) pri branju dvobajtne vrednosti iz kazalca v programski pomnilnik

5.4. Različica 2.32
Drugi dostop do knjižnice ni uspel (X03-2381) Drugič priklic različice arhiva knjižnice xc8-ar.exe za sistem Windows za dostop do obstoječega arhiva knjižnice morda ni uspel s sporočilom o napaki, da ni mogoče preimenovati.

5.5. Različica 2.31
Nepojasnjeno napake prevajalnika (XC8-2367) Pri teku naprej Windows platforme, ki so imele sistemski začasni imenik nastavljen na pot, ki je vsebovala piko '.' znakov, prevajalnik morda ni uspel izvesti.

5.6. Različica 2.30
Globalne oznake so napačno postavljene po orisu (XC8-2299) Ročno napisana sestavna koda, ki postavlja globalno oznake znotraj sestavnih zaporedij, ki so faktorizirane s proceduralno abstrakcijo, morda niso bile pravilno prestavljene.
Sproščujoče trčenje (XC8-2287) Uporaba -sprostite se možnost je morda povzročila zrušitev povezovalca, ko optimizacije sproščanja skoka repa so poskušale odstraniti navodila ret, ki niso bila na koncu a razdelek.
Zrušitev pri optimizaciji oznak kot vrednosti (XC8-2282) Koda z uporabo »Oznake kot vrednosti« GNU C jezikovna razširitev je morda povzročila zrušitev optimizacije proceduralne abstrakcije, z napako popravka obsega orisanega obsega VMA.
Not so const (XC8-2271) Prototipi za strstr () in druge funkcije iz ne podajajte več nestandardnega kvalifikatorja const na vrnjenih kazalcih nizov, ko je funkcija -mconst-data- inprogmem onemogočena. Upoštevajte, da je pri napravah avrxmega3 in avrtiny ta funkcija trajno omogočena.
Izgubljeni inicializatorji (XC8-2269) Ko je v prevodu več kot ena spremenljivka enota je bila postavljena v razdelek (z uporabo razdelek or atribut ( (razdelek) )) in je bila prva takšna spremenljivka inicializirana na nič ali ni imela inicializatorja, so bili inicializatorji za druge spremenljivke v isti enoti prevajanja, ki so bile postavljene v isti razdelek, izgubljeni.

5.1. Različica 2.2 9 (Funkcionalna varnostna izdaja) Brez. 
5.2. Različica 2.20
Napaka z dolgimi ukazi (XC8-1983) Pri uporabi cilja AVR se je prevajalnik morda ustavil z napako lilt not found, če je bila ukazna vrstica izjemno velika in je vsebovala posebne znake, kot so narekovaji, poševnice nazaj itd.
Nedodeljen razdelek rodata (XC8-1920) Povezovalnik AVR ni uspel dodeliti pomnilnika za razdelke rodata po meri pri gradnji za arhitekturi avrxmega3 in avrtiny, kar lahko povzroči napake prekrivanja pomnilnika

5.3. Različica 2.19 (funkcionalna varnostna izdaja)
Noben.
5.4. Različica 2.10
Napake pri premestitvi (XC8-1891) Najprimernejši alokator je puščal pomnilniške 'luknje' med odseki po sprostitvi povezovalnika. Poleg drobljenja pomnilnika je to povečalo možnost napak pri premestitvi povezovalnika v zvezi s skoki glede na osebni računalnik ali klici, ki postanejo izven dosega.
Navodila, ki niso preoblikovana s sprostitvijo (XC8-1889) Sprostitev povezovalca se ni zgodila za navodila za skok ali klic, katerih cilji postanejo dosegljivi, če so sproščeni.
manjka funkcionalnost (XC8E-3 ) Več definicij iz , kot sta clock_div_t in clock_presc ale_s et (), niso bili definirani za naprave, vključno z ATmega324PB, ATmega328PB, ATtiny441 in ATtiny841.
Manjkajoči makri Prevajalnik ni samodejno definiral makrov predprocesorja _XC 8_MODE_, XC 8 VERS ION, XC in xc8. Te so zdaj na voljo.

5.5. Različica 2.05
Notranja napaka prevajalnika (XC8-1822) Pri gradnji v sistemu Windows je pri optimizaciji kode morda nastala notranja napaka prevajalnika.
Prelivanje RAM-a ni bilo zaznano (XC8-1800, XC8-1796) Programov, ki so presegli razpoložljivi RAM, v nekaterih situacijah prevajalnik ni zaznal, kar je povzročilo napako kode med izvajanjem.
Izpuščen bliskovni pomnilnik (XC8-1792) Pri napravah avrxmega3 in avrtiny so deli bliskovnega pomnilnika morda ostali neprogramirani v MPLAB X IDE.
Napaka pri izvedbi main (XC8-1788) V nekaterih situacijah, ko program ni imel definiranih globalnih spremenljivk, se zagonska koda med izvajanjem ni zaprla in funkcija main () ni bila nikoli dosežena.
Nepravilne informacije o pomnilniku (XC8-1787) Pri napravah avrxmega3 in avrtiny je program velikosti avr poročal, da podatki samo za mad porabljajo RAM namesto programskega pomnilnika.
Nepravilno branje programskega pomnilnika (XC8-1783) Projekti, prevedeni za naprave s programskim pomnilnikom, preslikanim v podatkovni naslovni prostor in ki definirajo objekte z uporabo makra/atributa PROGMEM, so te objekte morda prebrali z napačnega naslova.
Notranja napaka z atributi (XC8-1773) Do notranje napake je prišlo, če ste definirali objekte kazalca z žetoni _at 0 ali attribute() med imenom kazalca in dereferenciranim tipom, npr.ample, char * _at (0x800150) cp; Če se odkrije takšna koda, se zdaj izda opozorilo.

Napaka pri izvedbi glavnega (XC8-1780, XC8-1767, XC8-1754) Uporaba spremenljivk EEPROM ali definiranje varovalk z uporabo konfiguracijske pragme je morda povzročilo nepravilno inicializacijo podatkov in/ali zaklenilo izvajanje programa v zagonski kodi izvajalnega okolja, preden je dosegel glavno 0.

Napaka varovalke z majhnimi napravami (XC8-1778, XC8-1742) Naprave attiny4/5/9/10120140 so imele v glavi napačno dolžino varovalke fileki vodijo do napak povezovalnika pri poskusu izdelave kode, ki definira varovalke.

Napaka segmentacije (XC8-1777) Občasna napaka segmentacije je bila odpravljena.

Zrušitev sestavljalnika (XC8-1761) Sestavljalnik avr -as se je morda zrušil, ko je bil prevajalnik zagnan pod Ubuntu 18.

Predmeti niso izbrisani (XC8-1752) Neinicializirani objekti trajanja statičnega shranjevanja morda niso bili izbrisani z zagonsko kodo izvajalnega okolja.

Specifikacija naprave v nasprotju je prezrta (XC8-1749) The prevajalnik ni generiral napake, ko je bilo uporabljenih več možnosti specifikacije naprave in je nakazal različne naprave.

Poškodba pomnilnika zaradi kopice (XC8-1748) The Simbol _heap_start je bil nepravilno nastavljen, kar je povzročilo možnost, da bi kopica poškodovala navadne spremenljivke.

Napaka pri premestitvi povezovalnika (XC8-1739) Napaka pri premestitvi povezovalnika je morda oddana, ko je koda vsebovala rjmn ali rcall s ciljem, oddaljenim natanko 4 kbajtov.

5.6. Različica 2.00 Brez.

Znane težave

Sledijo omejitve pri delovanju prevajalnika. To so lahko splošne omejitve kodiranja ali odstopanja od informacij v uporabniškem priročniku. Oznake v oklepajih v plimi so identifikacija te težave v zbirki podatkov za sledenje. To vam lahko koristi, če se boste morali obrniti na podporo. Postavke, ki nimajo oznak, so omejitve, ki opisujejo načine delovanja in bodo verjetno ostale v veljavi trajno.
6.1. MPLAB X IDE Integracija
MPLAB IDE integracija Če boste prevajalnik uporabljali iz MPLAB IDE, morate pred namestitvijo prevajalnika namestiti MPLAB IDE.
6.2. Generiranje kode
Nepravilno inicializacija (XC8-2679) Obstaja neskladje med tem, kje so začetne vrednosti za nekatere globalne/statične objekte velikosti bajtov nameščene v podatkovnem pomnilniku in kje se bo do spremenljivk dostopalo med izvajanjem.
strtod nepravilno nastavi endptr (XC8-2652) V primerih, ko predmetni niz za pretvorbo s strtod () vsebuje nekaj, kar je videti kot število s plavajočo vejico v eksponentnem formatu in je za znakom e nepričakovan znak, bo naslov endptr, če je na voljo, kazal na znak za e in ne e sam. Na primerample: strtod (“100exy”, endptr) ;

rezultat bo endptr, ki kaže na znak x.

Slabi posredni funkcijski klici (X03-2628) V nekaterih primerih lahko klici funkcij prek funkcijskega kazalca, shranjenega kot del strukture, ne uspejo.

strtof vrne nič za šestnajstiško število s plavajočim (XC8-2626) Knjižnični funkciji strtof () et al in scanf () et al vedno pretvorita šestnajstiško število s plavajočo vejico, ki ne določa eksponenta, v nič. Na primerample: strtof ("Oxl", &endptr) ; bo vrnil vrednost 0, ne 1.
Netočno sporočanje svetovalca sklada (XC8-2542, XC8-2541) V nekaterih primerih opozorilo svetovalca za sklad glede rekurzije ali uporabljenega nedoločenega sklada (po možnosti z uporabo alloca()) ni oddano.
Napaka s podvojeno kodo prekinitve (XC8-2421) Če ima več kot ena prekinitvena funkcija isto telo, lahko prevajalnik zahteva, da izhod za eno prekinitveno funkcijo pokliče drugo. Posledica tega bo po nepotrebnem shranjevanje vseh registrov, ki so bili pokvarjeni s klici, prekinitve pa bodo omogočene še preden se izvede epilog trenutnega obdelovalca prekinitev, kar lahko povzroči napako kode.
Konst objekti niso v programskem pomnilniku (XC8-2408) Pri projektih avrxmega3 in avrtiny so enotni objekti const postavljeni v podatkovni pomnilnik, čeprav opozorilo nakazuje, da so bili postavljeni v programski pomnilnik. To ne bo vplivalo na naprave, ki nimajo programskega pomnilnika preslikanega v prostor podatkovnega pomnilnika, niti ne bo vplivalo na noben objekt, ki je inicializiran.
Slab rezultat z neveljavno potjo DFP (XCS-2376) Če je prevajalnik priklican z neveljavno potjo DFP in »spec« file obstaja za izbrano napravo, prevajalnik ne poroča o manjkajočem družinskem paketu naprave in namesto tega izbere 'spec' file, kar lahko nato povzroči neveljaven rezultat. "spec" files morda niso posodobljeni s porazdeljenimi DFP-ji in so bili namenjeni samo za uporabo pri internem testiranju prevajalnika.
Prekrivanje pomnilnika ni zaznano (XC8-1966) Prevajalnik ne zazna prekrivanja pomnilnika objektov, ki so bili absolutni na naslovu (prek _at 0 ), in drugih objektov, ki uporabljajo _sektaion () in ki so povezani z istim naslovom.
Napaka s funkcijami knjižnice in _memx (XC8-1763) Klicane funkcije s plavajočim libgcc z argumentom v naslovnem prostoru _memx morda ne uspejo. Upoštevajte, da se rutine knjižnice kličejo iz nekaterih operaterjev C, nprample, je prizadeta naslednja koda: return regFloatVar > memxFloatVar;
Omejena izvedba libgcc (AVRTC-731) Za Izdelkov ATTiny4/5/9/10/20/40 je standardna izvedba knjižnice C / Math v libgcc zelo omejena ali ni prisotna.
Omejitve programskega pomnilnika (AVRTC-732) Veriga orodij podpira slike programskega pomnilnika nad 128 kb; vendar so znani primeri prekinitev povezovalnika brez sprostitve in brez koristnega sporočila o napaki, namesto da bi ustvaril zahtevane funkcijske škrbine, ko je uporabljena možnost -mrelax.
Omejitve prostora za ime (AVRTC-733) Imenovane naslovne prostore podpira veriga orodij, ob upoštevanju omejitev, omenjenih v razdelku Kvalifikatorji posebnega tipa uporabniškega priročnika.
Časovni pasovi The funkcije knjižnice predvidevajo GMT in ne podpirajo lokalnih časovnih pasov, zato bo loca It ime 0 vrnila isti čas kot gmtime ( ), npr.ample.

Dokumenti / Viri

MICROCHIP MPLAB XC8 C Compiler različica 2.39 Opombe ob izdaji za AVR MCU [pdf] Uporabniški priročnik
Prevajalnik MPLAB XC8 C različica 2.39 Opombe ob izdaji za AVR MCU, MPLAB XC8 C, prevajalnik različica 2.39 Opombe ob izdaji za AVR MCU, Opombe ob izdaji za AVR MCU
MICROCHIP MPLAB XC8 C Compiler različica 2.39 Opombe ob izdaji za AVR MCU [pdf] Uporabniški priročnik
MPLAB XC8 C Prevajalnik različice 2.39 Opombe ob izdaji za AVR MCU, MPLAB XC8 C, prevajalnik različice 2.39 Opombe ob izdaji za AVR MCU, Opombe za AVR MCU
Prevajalnik MICROCHIP MPLAB XC8 C [pdf] Uporabniški priročnik
MPLAB XC8 C prevajalnik, MPLAB XC8 C, prevajalnik

Reference

Pustite komentar

Vaš elektronski naslov ne bo objavljen. Obvezna polja so označena *