Opombe ob izdaji prevajalnika MPLAB® XC8 C različice 2.41 za AVR® MCU
Navodila za uporabo
Programska oprema za razvoj prevajalnika MPLAB XC8 C
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 vsebuje več novih funkcij in popravkov napak.
1.2. Datum gradnje
Uradni datum izdelave te različice prevajalnika je 8. februar 2023.
1.3. Prejšnja različica
Prejšnja različica prevajalnika MPLAB XC8 C je bila 2.40, izdelana 3. julija 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 in različice komponent
Orodja MPLAB 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 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 notarsko overjene. MPLAB XC Network License Server je na voljo za različne 64-bitne operacijske sisteme, vključno z Microsoft Windows 10 in novejšimi; Ubuntu 18.04 in novejši; ali macOS 10.15 in novejši. Strežnik lahko deluje tudi na različnih drugih operacijskih sistemih, vključno z Windows Server, distribucijami Linuxa, kot sta Oracle® Enterprise Linux® in Red Hate Enterprise Linux, ter starejšimi različicami podprtih operacijskih sistemov. Vendar strežnik omrežnih licenc MPLAB XC ni preizkušen v teh operacijskih sistemih. MPLAB XC Network License Server je mogoče zagnati na navideznih računalnikih podprtega operacijskega sistema z uporabo licence za navidezni stroj za omrežne licence (SW006021-VM). Vse 32-bitne različice omrežnega strežnika MPLAB XC so ukinjene od različice 3.00.
Podprte naprave
Ta prevajalnik podpira vse razpoložljive 8-bitne naprave AVR MCU v času izdaje. Za seznam vseh podprtih naprav glejte (v imeniku prevajalnika). Te datoteke so tudi navedene
avr_chipinfo.html konfiguracijske bitne nastavitve dokumenta za vsako napravo.
1.7. 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 prevajalnika funkcionalne varnosti MPLAB XC 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.8. 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.8.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 %temp% v ukaz Zaženi (tipka z logotipom Windows + R).
To bo odprlo pogovorno okno raziskovalca datotek, ki prikazuje ta imenik in vam bo omogočilo, da določite pot do te mape.
1.9. Dokumentacija prevajalnika
Navodila 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, uporabniški priročnik prevajalnika MPLAB® XC8 C za AVR® MCU vsebuje informacije o tistih možnostih in funkcijah prevajalnika, ki so uporabne za to arhitekturo.

1.10. Podpora za stranke
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 tehnično dokumentacijo webmesto. Nova ali posodobljena dokumentacija AVR v tej izdaji:
- Uporabniški priročnik za prevajalnik MPLAB® XC8 C za AVR® MCU (revizija G)
- Priročnik za migracijo AVR® GNU Toolchain na MPLAB® XC8 (revizija A)
- Uporabniški priročnik za Hexmate (revizija B)
Priročnik za migracijo AVR® GNU Toolchain na MPLAB® XC8 opisuje spremembe izvorne kode in možnosti gradnje, ki bi lahko bile potrebne, če se odločite za selitev projekta, ki temelji na C-ju, iz AVR 8-bitne GNU Toolchain na Microchip MPLAB XC8 C Compiler. Referenčni vodnik po poenoteni standardni knjižnici Microchip opisuje delovanje in vmesnik funkcij, ki jih definira poenotena standardna knjižnica Microchip, kot tudi predvideno uporabo tipov knjižnic in makrov. Nekatere od teh informacij so bile prej vsebovane v Uporabniškem priročniku prevajalnika MPLAB® XC8 C za AVR® MCU. Informacije o knjižnici, specifične za napravo, so še vedno v tem priročniku za prevajalnik.
Če šele začenjate z 8-bitnimi napravami in prevajalnikom MPLAB XC8 C, so v Uporabniškem priročniku MPLAB® XC8 za vgrajene inženirje – AVR® MCU (DS50003108) informacije o nastavitvi projektov v MPLAB X IDE in pisanju kode za vaše prvi projekt MPLAB XC8 C. Ta vodnik je zdaj razdeljen s prevajalnikom.
Uporabniški priročnik za Hexmate je namenjen tistim, ki uporabljajo Hexmate kot samostojno aplikacijo.
Kaj je novega
Sledijo nove ciljne funkcije AVR, ki jih prevajalnik zdaj podpira. Številka različice v podnaslovih označuje prvo različico prevajalnika, ki podpira funkcije, ki sledijo.
3.1. Različica 2.41
Podpora za zagon (XC8-3053) Prevajalnik bo postavil vsebino vseh odsekov s predpono at.bootrow naslov 0x860000 v HEX datoteko. Ti razdelki se uporabljajo za pomnilnik BOOTROW, ki je namenjen shranjevanju ključev in drugih varnih informacij, do katerih mora dostopati le zagonski nalagalnik.
Odprava odvečnega vračanja (XC8-3048) Prevajalnik bo zdaj odpravil odvečna navodila v funkcijah ret s preskokom na repu, ko se uporabljajo skripti povezovalnika po meri. To je podobna optimizacija, kot je bila izvedena prej, vendar se zdaj izvaja na vseh osirotelih odsekih, tudi če je uporabljen povezovalni skript po meri in ni v igri najprimernejša shema dodeljevanja. Sprememba časovnega tipa (XC8-2982, 2932) Standardni tip knjižnice C99 je bil spremenjen iz time_t v tip, ki daje izboljšave velikosti kode v nekaterih funkcijah, povezanih s časom, kot npr. nepodpisani dolgi mktime()
Nov nop (XC8-2946, 2945) Makro je bil dodan. Ta makro vstavi no-NOP() navodilo za delovanje nop v izhod.
Posodobitev na XCLM (XC8-2944) Upravitelj licenc, ki se uporablja s prevajalnikom, je bil posodobljen in je zdaj bolj odziven pri preverjanju podrobnosti licence prevajalnika.
Trampolinirani klici (XC8-2760) Prevajalnik lahko zdaj izvede zamenjavo klicnih navodil dolge oblike s krajšimi relativnimi klici, ko bi bile relativne oblike navodil običajno izven dosega svojega cilja. V tem primeru bo prevajalnik poskušal nadomestiti z navodili za klic rcall navodilo, ki bo 'trampoline' izvedba na zahtevani naslov, nprample: jmp
rcall tramp_foo ;je bil klic foo
…
rcall tramp_foo
…
tramp_foo:
jmp foo
To optimizacijo, skupaj s podobnimi optimizacijami poteka programa, nadzira možnost -mrelax.
3.2. Različica 2.40
Nova podpora za naprave Podpora je zdaj na voljo za naslednje dele AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32 in AVR64EA48.
Izboljšana proceduralna abstrakcija Orodje za optimizacijo proceduralne abstrakcije (PA) je bilo izboljšano, tako da je mogoče razčleniti kodo, ki vsebuje navodilo za klic funkcije (/ ). To se bo izvedlo le pri klicu rcall, če se sklad ne uporablja za posredovanje argumentov funkciji ali za pridobitev povratne vrednosti iz funkcije. Sklad se uporablja pri klicu funkcije s seznamom spremenljivih argumentov ali pri klicu funkcije, ki sprejme več argumentov, kot je za ta namen določenih registrov. To funkcijo lahko onemogočite z možnostjo ali pa lahko postopkovno abstrakcijo v celoti onemogočite za objektno datoteko ali funkcijo z uporabo- in oziroma z uporabo atributa (specifikatorja) selektivno s funkcijami.
mno-pa-outline-calls -mno-pa-on-file -mno-pa-on-function nopa Makro pokritosti kode Prevajalnik zdaj definira makro, če je navedena veljavna možnost __nopa __CODECOV -mcodecov.
Možnost rezervacije pomnilnika Gonilnik bo zdaj sprejel možnost xc8-cc -mreserve=space@start:end pri gradnji za cilje AVR. Ta možnost rezervira določeno območje pomnilnika v podatkovnem ali programskem pomnilniškem prostoru, kar povezovalcu preprečuje, da bi zapolnil kodo ali objekte v tem območju. Pametnejši pametni IO Funkcije Smart IO so bile narejene na več izboljšavah, vključno s splošnimi prilagoditvami jedrne kode printf, obravnavo pretvorbenega specifikatorja %n kot neodvisne različice, povezovanje v pop rutinah vararg na zahtevo, uporaba krajših podatkovnih vrst, kjer je to mogoče, za ravnanje Argumenti funkcije IO in faktorizacija skupne kode v širini polja in obdelavi natančnosti. To lahko privede do znatnih prihrankov kode in podatkov ter poveča hitrost izvajanja IO.
3.3. 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.4. Različica 2.36
Noben.
3.5. 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 Nova možnost -mgas-isr-prologues nadzoruje kodo preklopa konteksta, ustvarjeno za rutine storitev 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 je mogoče uporabiti, da povezovalnik postavi vse podatke, kvalificirane za const, v en razdelek 32k in samodejno inicializira ustrezni register SFR, da zagotovi, da so ti podatki preslikani v podatkovni pomnilnik prostor, kjer bo učinkoviteje dostopen.
Poenotene standardne knjižnice Microchip Vsi prevajalniki MPLAB XC si bodo delili poenoteno standardno knjižnico Microchip, ki je zdaj na voljo s to izdajo MPLAB XC8. Uporabniški priročnik za prevajalnik MPLA# XC8 C za AVO MCU ne vključuje več dokumentacije za te standardne funkcije. Te informacije je zdaj mogoče najti v Referenčnem priročniku Microchip Unified Standard Library. Upoštevajte, da nekatere funkcije, ki jih je prej definiral avr-libc, niso več na voljo. (Glejte funkcionalnost Lila.)
Smart I0 Kot del novih poenotenih knjižnic so funkcije I0 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 pametnega ICI Pri analizi klicev funkcij pametnega I0 (kot sta print f () ali scanf ()) prevajalnik ne more vedno določiti iz niza formata ali sklepati iz argumentov tistih specifikatorjev 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 – msmart-io-format=fmt, tako da lahko uporabnik namesto tega prevajalnik obvesti o specifikatorjih pretvorbe, ki jih uporabljajo pametne funkcije I0, katerih uporaba je dvoumna, kar preprečuje povezovanje predolgih 10 rutin. (Za več podrobnosti glejte Možnost formata smart-io.)
Postavitev odsekov po meri Prej je možnost -W1, –section-start postavljala podani odsek na zahtevani naslov le, 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 . podatkov, bo imel najboljši razdelilnik še vedno popoln nadzor nad njihovo umestitvijo in možnost ne bo imela nobenega učinka. Uporabite možnost -ton, -Tsection=addr, kot je opisano v uporabniškem priročniku.
3.6. 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 z možnostjo 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, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32 in AVR32DB48. Podpora za umaknjeno napravo Podpora ni več na voljo za naslednje dele AVR: AVR16DA28, AVR16DA32 in AVR16DA48.
3.7. Različica 2.31
Noben.
3.8. 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 onemogoči izpis do copy data in do clear bss simbolov 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. Dodatne možnosti so zdaj na voljo za nadzor nekaterih od teh optimizacij, posebej -f sidra odsekov, ki omogočajo dostop do statičnih objektov glede na en simbol; -mpa-iterations=n, ki omogoča spremembo števila ponovitev proceduralne abstrakcije s privzete vrednosti 2; in -mpa-callcost-shortcall, 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.
Podpora za nove naprave Podpora je na voljo za naslednje dele AVR: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 in A VR128DB64. Podpora za umaknjene naprave Podpora ni več na voljo za naslednje dele AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C in ATA664251.
3.9. Različica 2.29 (funkcionalna varnostna izdaja)
Glava file za vgrajene prevajalnike Da bi zagotovili, da se prevajalnik lahko sklada z jezikovnimi specifikacijami, kot je MISRA, glava file, ki ga samodejno vključi , je bil posodobljen. Ta glava vsebuje prototipe za vse vgrajene funkcije, kot sta builtin_avr_nop () in vgrajeni avr delay_cycles (). Nekatere vgrajene komponente morda niso združljive z MISRA; te lahko izpustite tako, da v ukazno vrstico prevajalnika dodate defineXCSTRICT_MISRA. Vgrajeni elementi in njihove deklaracije so bili posodobljeni za uporabo tipov s fiksno širino.
3.10. Različica 2.20
Podpora za nove naprave Podpora je na voljo za naslednje dele AVR: ATTINY1624, ATTINY1626 in ATTINY1627.
Boljša dodelitev najboljšega prileganja Dodeljevalec 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, ko 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 Assembler AVR Assembler ni več vključen v to distribucijo.
3.11. Različica 2.19 (funkcionalna varnostna izdaja)
Noben.
3.12. 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 se _atribut_ ( (nocodecov)) uporabi za izključitev določene funkcije iz analize pokritosti.
Opis naprave files Nova naprava file imenovan avr_chipinfo. html se nahaja v imeniku docs distribucije prevajalnika. to file navaja vse naprave, ki jih podpira prevajalnik. Kliknite ime naprave in odprla se bo stran, ki prikazuje vse dovoljene konfiguracijske bitne nastavitve/vrednosti 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, ko izbere optimizacijo stopnje 2, 3 ali s. 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-file=fileime ali onemogočeno za funkcijo z uporabo -mno-pa-on-function=function. Znotraj izvorne kode lahko onemogočite postopkovno abstrakcijo za funkcijo z uporabo atributa ( (nopa) ) z definicijo funkcije ali z uporabo nope, ki se razširi na atribut ( (nopa, noinline) ) in tako prepreči vstavljanje funkcij. in obstaja abstrakcija vstavljene kode.
Podpora za zaklepanje bitov v pragmi Konfiguracijo #pragma je zdaj mogoče uporabiti za določanje zaklepnih bitov AVR kot tudi drugih konfiguracijskih bitov. Preverite avr_chipinfo. html file (omenjeno zgoraj) za pare nastavitev/vrednost za uporabo s to pragmo. Podpora za nove naprave Podpora je na voljo za naslednje dele: AVR28DAl28, AVR64DAl28, AVR32DA 128 in AVR48DA 128.
3.13. 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.
Konstantni objekti v programskem pomnilniku Prevajalnik lahko zdaj postavi objekte, ki so kvalificirani za const, v programski bliskovni pomnilnik, 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 za brezplačno Nelicencirane (brezplačne) različice tega prevajalnika zdaj omogočajo optimizacije do in vključno z 2. stopnjo. To bo omogočilo podoben, čeprav ne enak izhod, 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.
Podpora za nove naprave Podpora je na voljo za naslednje dele: ATMEGA1608, ATMEGA1609, ATMEGA808 in ATMEGA809.
3.14. Različica 2.00
Gonilnik najvišje ravni Nov gonilnik, imenovan xc8-cc, je zdaj 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 se bodisi prevedejo v prevajalnik, ki se izvaja, ali pa se posredujejo 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 prikličete neposredno z uporabo možnosti starega sloga, ki jih je sprejel v prejšnjih različicah prevajalnika.
Skupni vmesnik C Ta prevajalnik se zdaj lahko 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.
Nov knjižničarski gonilnik Nov 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 bodisi prevedene bodisi 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
Sledijo funkcije, 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.41
Odstranjene netočne funkcije fma (XC8-2913) Standardna knjižnica C99 fma 0 -družinske funkcije ( ) ni izračunal množenja-seštevanja z neskončno natančnostjo za posamezno zaokroževanje, ampak je namesto tega kopičil napake zaokroževanja z vsako operacijo. Te funkcije so bile odstranjene iz priložene knjižnice.
4.2. Različica 2.40
Noben.
4.3. Različica 2.39 (funkcionalna varnostna izdaja)
Noben.
4.4. Različica 2.36 Brez.
4.5. Različica 2.35
Ravnanje z nizi v baze (XC8-2420) Da bi zagotovili skladnost z drugimi prevajalniki XC, XC8 funkcije string v, kot je strtol () itd., ne bodo več poskušale pretvoriti vhodnega niza, če je navedena osnova večja od 36 in bo namesto tega nastavil errno na EINVAL. Standard C ne določa obnašanja funkcij, 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 vklopite formatirano I0 podpora za specifikatorje plavajočega formata. Pametni I0 značilnosti poenotene standardne knjižnice Microchip naredijo to 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) bodo pravilno delovale s takimi podatki, ko je omogočena funkcija const-data-in-program-memory.
4.6. Različica 2.32
Noben.
4.7. Različica 2.31
Noben.
4.8. 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
Noben
4.5. Različica 2.05
Konstantni objekti v programskem pomnilniku Upoštevajte, da bodo privzeto konst-kvalificirani objekti nameščeni in dostopni v programskem pomnilniku (kot je opisan odtenek). 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 -mnoconst-data-in-progmem.
4.6. Različica 2.00
Konfiguracijske varovalke Varovalke konfiguracije naprave je zdaj mogoče programirati s pomočjo konfiguracijske pragme, ki ji sledijo pari vrednosti nastavitev 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 specifikatorja CCI (naslova), npr.ample:
#vključi
int foobar_at(0x800100);
char __at(0x250) getID(int offset) { … }
Argument za ta specifikator mora biti konstanta, ki predstavlja naslov, na katerega bo postavljen prvi bajt ali ukaz. Naslovi RAM so označeni z odmikom 0x800000. Omogočite CCI za uporabo te funkcije.
Nova sintaksa prekinitvene funkcije Prevajalnik zdaj sprejme specifikator CCI _interrupt (num), ki nakazuje, da so funkcije C obdelovalci prekinitev. Specifikator vzame številko prekinitve, nprample:
#vključi
void __interrupt(SPI_STC_vect_num) spi_Isr(void) { … }
Odpravljene težave
Sledijo 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 te težave v zbirki podatkov za sledenje. To je lahko koristno, če se morate obrniti na podporo.
Upoštevajte, da so nekatere težave, specifične za napravo, odpravljene v družinskem paketu naprav (DFP), povezanem z napravo. Oglejte si MPLAB Pack Manager za informacije o spremembah DFP-jev in prenos najnovejših paketov.
5.1. Različica 2.41
Težave s ključki na ključkih Ventura (XC8-3088). uporabljen za licenciranje prevajalnik morda ni bil pravilno prebran na gostiteljih macOS Ventura, kar je povzročilo napake pri licenciranju. Spremembe upravitelja licenc XCLM odpravijo to težavo.
Napačen prikaz dodelitve pomnilnika (XC8-2925) Poskus dodelitve SIZE_MAX bajtov (ali vrednosti, ki je blizu te) pomnilnika z uporabo standardnih funkcij za upravljanje pomnilnika knjižnice (malloc () et al) je nepravilno uspel. Ni upoštevalo, da so bili potrebni dodatni bajti poleg zahtevanega bloka pri uporabi preproste implementacije dinamičnega dodeljevanja pomnilnika. V takšnih situacijah bo zdaj vrnjen kazalec NULL in errno nastavljen na ENOMEM.
Odstranjene netočne funkcije fma (XC8-2913) Standardna knjižnica C99 fma ( ) -družina funkcij ( ) ni izračunal množenja-seštevanja z neskončno natančnostjo za posamezno zaokroževanje, ampak je namesto tega kopičil napake zaokroževanja z vsako operacijo. Te funkcije so bile odstranjene iz priložene knjižnice.
Slabo ravnanje s pretvorbo nizov (XC8-2921, XC8-2652) Ko je 'zadevno zaporedje' za pretvorbo strtod Cr vsebovalo nekaj, kar je bilo videti kot število s plavajočo vejico v eksponentni obliki in je bil za znakom e/E nepričakovan znak, je bil tam, kjer je bil naveden endptr, dodeljen naslov, ki je kazal na znak za e/E, medtem ko bi moral kazati na sam znak e/E, ker ta ni bil pretvorjen. Na primerample, strtod (»100exx«, &ep) bi moral vrniti 100.00 in nastaviti ep tako, da kaže na »exx« del niza, medtem ko je funkcija vračala pravilno vrednost, vendar je nastavila ep tako, da kaže na »xx« del niza .
5.2. Različica 2.40
Preveč sproščeno (XCS-2876) Pri uporabi možnosti -mrelax prevajalnik nekaterih odsekov ni dodelil skupaj, kar je povzročilo manj optimalne velikosti kode. To se je morda zgodilo s kodo, ki je uporabljala nove knjižnice MUSL, ali s šibkimi simboli.
Funkcija preslikave ni onemogočena, kot je navedeno v opozorilu (XC8-2875) Funkcija const-data-in-config-mappedprogmem je odvisna od omogočene funkcije const-data-in-progmem. Če je bila funkcija const-data-inconfig-mapped-progmem izrecno omogočena z možnostjo in je bila funkcija const-data-inprogmem onemogočena, korak povezave ni uspel, kljub opozorilnemu sporočilu, ki navaja, da const-data-in-con fig- funkcija mapped-progmem je bila samodejno onemogočena, kar ni bilo povsem pravilno. Funkcija const-data-in-config-mapped-progmem je v tej situaciji zdaj popolnoma onemogočena.
Spremembe DFP za pravilen dostop do NVMCTRL (XC8-2848) Zagonska koda med izvajanjem, ki so jo uporabljale naprave AVR64EA, ni upoštevala, da je bil register NVMCTRL pod zaščito pred spremembo konfiguracije (CCP) in ni mogel nastaviti I0 SFR na stran, ki jo uporablja const-data-in-configmapped-progmem funkcija prevajalnika. Spremembe v različici AVR-Ex_DFP 2.2.55 bodo omogočile, da se zagonska koda med izvajanjem pravilno zapisuje v ta register.
Spremembe DFP, ki se jim je treba izogibati preslikava bliskavice (XC8-2847) Izvedena je bila rešitev za težavo s funkcijo naprave za preslikavo bliskavice, o kateri je poročal AVR128DA28/32/48/64 Silicon Errata (D580000882). Funkcija prevajalnika const-data-in-config-mapped-progmem ne bo privzeto uporabljena za prizadete naprave in ta sprememba bo prikazana v različici AVR-Dx_DFP 2.2.160.
Napaka pri gradnji s sinhf ali coshf (XC8-2834) Poskusi uporabe funkcij knjižnice sinhf () ali coshf () so povzročili napako povezave, ki opisuje nedefinirano referenco. Navedena manjkajoča funkcija je zdaj vključena v distribucijo prevajalnika.
Napake pri gradnji z nopa (XC,8-2833) Uporaba atributa nopa s funkcijo, katere ime sestavljalnika je določeno z asm ( ), je sprožila sporočila o napakah iz sestavljalnika. Ta kombinacija ni možna.
Napaka variadične funkcije z argumenti kazalca (XC8-2755, XC8-2731) Funkcije s spremenljivim številom argumentov pričakujejo, da bodo 24-bitni (tip memx) kazalci posredovani na seznamu spremenljivih argumentov, ko je omogočena funkcija const-data-in-progmem. Argumenti, ki so bili kazalci na podatkovni pomnilnik, so bili posredovani kot 16-bitni objekti, kar je povzročilo napako kode, ko so bili končno prebrani. Ko je funkcija constdata-in-progmem omogočena, so vsi argumenti 16-bitnih kazalcev zdaj pretvorjeni v 24-bitne kazalce.
funkcije knjižnice strtoxxx ne delujejo (XC8-2620) Ko je bila funkcija const-data-in-progmem omogočena, parameter endptr v funkcijah knjižnice strtoxxx ni bil pravilno posodobljen za argumente izvornega niza, ki niso v programskem pomnilniku.
Opozorila za neveljavne oddaje (XC8-2612) Prevajalnik bo zdaj izdal napako, če je funkcija const-in-progmem omogočena in je naslov literala niza izrecno pretvorjen v podatkovni naslovni prostor (izpusti kvalifikator const), npr.ample, (uint 8_t *) "Pozdravljen svet!". Opozorilo je težava, če je naslov morda neveljaven, ko je kazalec konstantnih podatkov izrecno pretvorjen v naslovni prostor podatkov.
Postavitev neinicializiranih objektov const (XC8-2408) Neinicializirani objekti const in hlapljivi objekti const niso bili nameščeni v programski pomnilnik na napravah, ki preslikajo celoten ali del svojega programskega pomnilnika v podatkovni naslovni prostor. Za te naprave so takšni objekti zdaj postavljeni v programski pomnilnik, zaradi česar je njihovo delovanje skladno z drugimi napravami.
5.3. Različica 2.39 (funkcionalna varnostna izdaja)
Noben.
5.4. Različica 2.36
Napaka pri zakasnitvi (XC8-2774) Manjše spremembe v privzetih optimizacijah prostega načina so preprečile stalno zlaganje izrazov operandov v vgrajene funkcije zakasnitve, zaradi česar so bile obravnavane kot nekonstante in so sprožile napako: vgrajeni avr delay_cycles pričakuje celoštevilsko konstanto časa prevajanja.
5.5. Različica 2.35
Neprekinjeno dodeljevanje z uporabo _at (XC8-2653) Neprekinjeno dodeljevanje več predmetov v razdelku z istim imenom in z uporabo _at ( ) ni delovalo pravilno. Na primerample:
const char arr1[] __attribute__((section(“.mysec”))) __at (0x500) = {0xAB, 0xCD};
const char arr2[] __atribut__((section(“.mysec”))) = {0xEF, 0xFE};
moral postaviti arr2 takoj za arr1.
Določanje začetnih naslovov odsekov (XC8-2650) The -W1, –možnost začetka odseka tiho ni uspela postaviti odsekov na imenovani 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 možnostjo -W1, -T.
Povezovalnik se zruši pri sproščanju (XC8-2647) Ko je bila omogočena optimizacija -mrelax in obstajajo razdelki kode ali podatkov, ki se ne prilegajo razpoložljivemu pomnilniku, se povezovalnik zruši. Zdaj se v takšnih okoliščinah namesto tega izdajo sporočila o napakah.
Brez vračanja nazaj (XC8-2646) 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.
Neprimerne optimizacije hitrosti (X03-2637) 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 EEPROM dostop (XC8-2629) The 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 (XC8-2593, XC8-2651) Ko Možnost povezovalnika -Ttext ali -Tdata (nprampdatoteka, posredovana z uporabo možnosti gonilnika -vl), je bil podan ustrezni izvor besedilne/podatkovne regije; 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. atributa ( (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 možnosti 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 povzročil notranjo napako (neprepoznaven insn), ko je prebral dvobajtno vrednost iz kazalca v programski pomnilnik
5.6. Različica 2.32
Drugi dostop do knjižnica ne uspe (XC8-2381) Priklic različice xc8-ar za Windows. Arhivar knjižnice .exe, ko drugič dostopa do obstoječega arhiva knjižnice, morda ni uspel s sporočilom o napaki, da ni mogoče preimenovati.
5.7. Različica 2.31
Nepojasnjen prevajalnik napake (XC8-2367) Pri izvajanju na platformah Windows, kjer je bil sistemski začasni imenik nastavljen na pot, ki je vsebovala piko '.' znakov, prevajalnik morda ni uspel izvesti.
5.8. Različica 2.30
Globalne oznake so napačno postavljene po orisu (XC8-2299) Ročno napisana sestavna koda, ki postavlja globalne oznake v sestavna zaporedja, ki so faktorizirana s proceduralno abstrakcijo, morda ni bila pravilno prestavljena.
Sproščujoče trčenje (XC8-2287) Uporaba možnosti -mrelax je morda povzročila zrušitev povezovalnika, ko so optimizacije sprostitve skoka repa poskušale odstraniti navodilo ret, ki ni bilo na koncu odseka.
Zrušitev pri optimizaciji oznak kot vrednosti (XC8-2282) Koda, ki uporablja jezikovno razširitev GNU C »Oznake kot vrednosti«, je morda povzročila zrušitev optimizacij postopkovne abstrakcije z napako popravka Orisani razpon VMA obsega.
Ni tako konst (XC8-2271) Prototipi za st rstr ( ) in druge funkcije iz ne določajo 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 več kot ena spremenljivka v prevajalski enoti je bila postavljena v razdelek (z uporabo _section ali _attribute_ ( (section) )), prva taka spremenljivka pa je bila inicializirana z ničlo ali ni imela inicializatorja, inicializatorjev za druge spremenljivke v isti prevajalski enoti, ki so bile postavljene v istem odseku so bili izgubljeni.
5.1. Različica 2.29 (funkcionalna varnostna izdaja)
Noben.
5.2. Različica 2.20
Napaka pri dolgih ukazih (XC8-1983) Pri uporabi cilja AVR se je prevajalnik morda ustavil z a file Napaka ni bilo najdeno, č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 odseke 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
Neuspeh pri selitvi (XC8-1891) Najprimernejši alokator je puščal spominske 'luknje' med odseki po sprostitvi povezovalca. 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-388) Več definicij iz , kot sta clock_div_t in clock_prescale set (), niso bili definirani za naprave, vključno z ATmega324PB, ATmega328PB, ATtiny441 in ATtiny841.
Manjkajoči makri Prevajalnik ni samodejno definiral makrov predprocesorja _XC8_MODE_, _XC8_VERS ION, _XC in _XC8. Ti 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 MPLAB X morda ostali neprogramirani IDE.
Napaka pri izvedbi glavnega (XC8-1788) V nekaterih situacijah, ko program ni imel definiranih globalnih spremenljivk, se zagonska koda med izvajanjem ni zaprla in glavna ( ) funkcija ni bila nikoli dosežena.
Napačne informacije o pomnilniku (XC8-1787) Za naprave avrxmega3 in avrtiny je program velikosti avr poročal, da podatki samo za branje porabljajo RAM namesto programskega pomnilnika.
Nepravilno branje pomnilnika programa (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) Prišlo je do notranje napake, če ste kazalne objekte definirali z
_at () ali attribute() žetoni med imenom kazalca in dereferenciranim tipom, nprample, 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 main ( ).
Napaka varovalke z majhnimi napravami (XC8-1778, XC8-1742) Naprave attiny4/5/9/10/20/40 so imele v glavi napačno dolžino varovalke fileki vodijo do napak povezovalnika pri poskusu izdelave kode, ki definira varovalke.
Segmentacija napaka (XC8-1777) Prekinjena napaka segmentacije je bila popravljena.
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) 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 rjmp ali rcall s ciljem, oddaljenim natanko 4k bajtov.
5.6. Različica 2.00
Noben.
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 naslovu so identifikacija zadeve 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
Segfault z možnostjo sidra odsekov (XC8-3045) Program, ki je definiral funkcije s seznami spremenljivih argumentov in uporablja možnost -fsection-anchors, je morda sprožil notranjo napako prevajalnika: napaka segmentacije.
Informacije o odpravljanju napak niso sinhronizirane (XC8-2948) Ko optimizacija sprostitve povezovalnika skrči navodila (nprample navodila za klic v rcall), preslikave izvorne vrstice v naslov morda ne bodo ostale sinhronizirane, ko se v odseku pojavi več kot ena operacija krčenja.
V spodnjem nprample, obstajata dva klica foo, ki se končata sproščeno na relativne klice.
Napaka pri dodelitvi pomnilnika PA (XC8-2881) Pri uporabi optimizatorjev proceduralne abstrakcije lahko povezovalnik poroča o napakah pri dodeljevanju pomnilnika, ko je velikost kode blizu količine razpoložljivega programskega pomnilnika v napravi, čeprav bi program moral ustrezati razpoložljivemu prostoru.
Ni tako pameten Smart-I0 (XC8-2872) Funkcija smart-io prevajalnika bo ustvarila veljavno, vendar neoptimalno kodo za funkcijo snprint f, če je bila funkcija const-data-in-progmem onemogočena ali če ima naprava ves svoj flash preslikan v podatkovni pomnilnik.
Še manj pameten Smart-I0 (XC8-2869) Funkcija pametnega io prevajalnika bo ustvarila veljavno, vendar neoptimalno kodo, ko bosta uporabljeni obe možnosti -flto in -fno-builtin.
Neoptimalna postavitev podatkov samo za branje (XC8-2849) Povezovalnik trenutno ne pozna odsekov pomnilnika APPCODE in APPDATA niti razdelkov [No-Read-While-Write v pomnilniški karti. Posledično obstaja majhna možnost, da bi povezovalnik dodelil podatke samo za branje v neprimernem območju pomnilnika. Možnost napačno postavljenih podatkov se poveča, če je omogočena funkcija const-data-in-progmem, zlasti če je omogočena tudi funkcija const-data-in-config-mapped-progmem. Te funkcije lahko po potrebi onemogočite.
Objekt file naročilo za obdelavo (XC8-2863) Vrstni red predmetov files, ki jih bo povezovalnik obdelal, se lahko razlikujejo glede na uporabo optimizacij postopkovne abstrakcije (možnost -mpa). To bi vplivalo samo na kodo, ki definira šibke funkcije v več modulih.
Napaka povezovalca z absolutnim (XC8-2777) Ko je bil objekt postavljen kot absoluten na naslovu na začetku RAM-a in so bili definirani tudi neinicializirani objekti, se lahko sproži napaka povezovalca.
Kratki ID-ji za bujenje (XC8-2775) Za naprave ATA5700/2 so registri PHIDO/1 definirani samo kot 16-bitni in ne 32-bitni.
Zrušitev povezovalnika pri klicu simbola (XC8-2758) Povezovalnik se lahko zruši, če je uporabljena možnost gonilnika -mrelax, ko izvorna koda kliče simbol, ki je bil definiran z možnostjo povezovalnika -cc., –de f sym.
Nepravilna inicializacija (XC8-2679) Obstaja je neskladje med tem, kje so začetne vrednosti za nekatere globalne/statične objekte velikosti bajtov v podatkovnem pomnilniku in kje se bo do spremenljivk dostopalo med izvajanjem.
Slabi posredni funkcijski klici (XC8-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 I.
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.
Slab rezultat z neveljavno potjo DFP (XC8-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 zaznava prekrivanja pomnilnika objektov, ki so absolutni na naslovu (prek _at ( )) in drugih objektov, ki uporabljajo specifikator razdelka ( ) in 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 implementacija libgcc (AVRTC-731) Za izdelke 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 -mre lax.
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 localtime ( ) vrnil isti čas kot gmtime ( ), npr.ample.
file:///Applications/microchip/xc8/v2.41/docs/Readme_XC8_for_AVR.htm
Dokumenti / Viri
![]() |
Programska oprema za razvoj prevajalnika MICROCHIP MPLAB XC8 C [pdf] Priročnik za lastnika MPLAB XC8 C, MPLAB XC8 C Programska oprema za razvoj prevajalnika, Programska oprema za razvoj prevajalnika, Razvojna programska oprema, Programska oprema |




