Programska oprema za prevajanje MICROCHIP 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
Uvod
Ta izdaja prevajalnika Microchip MPLAB® XC8 C vsebuje več novih funkcij, popravkov napak in podporo za nove naprave.
Datum gradnje
Uradni datum izdelave te različice prevajalnika je 3. julij 2022.
Prejšnja različica
Prejšnja različica prevajalnika MPLAB XC8 C je bila 2.39, funkcionalni varnostni prevajalnik, zgrajen 27. januarja 2022. Prejšnji standardni prevajalnik je bila različica 2.36, zgrajena 27. januarja 2022.
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.
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 file named nahaja podimenik vašega namestitvenega imenika. Splošno razpravo o načelih, na katerih temelji GPL, lahko najdete tukaj. Podporna koda za glavo files, povezovalni skripti in izvajalne knjižnice so lastniška koda in niso zajete 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.
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 mac OS 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.
Podprte naprave
Ta prevajalnik podpira vse 8-bitne naprave AVR MCU, znane v času izdaje. Za seznam vseh podprtih naprav glejte (v imeniku doc prevajalnika). te filenavede tudi nastavitve konfiguracijskih bitov za vsako napravo.
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 dolgo 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).
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 aplikacijo za namestitev prevajalnika .exe (Windows), .run (Linux) ali aplikacijo (macOS), npr. XC8-1.00.11403-windows.exe, in sledite navodilom na zaslonu.
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 izključi omrežje. 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.
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 file, izberite Lastnosti, zavihek Varnost, izberite uporabnika, uredite.)
- Nastavite dovoljenja za začasno mapo na »Popoln nadzor!
Če želite določiti lokacijo začasne mape, vnesite %temp% v ukaz Zaženi (tipka z logotipom Windows + R). To bo odprlo a file pogovorno okno raziskovalca, ki prikazuje ta imenik in vam bo omogočilo, da določite pot do te mape.
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.
Podpora uporabnikom
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:
- Obvestilo o avtorskih pravicah MUSL
- Namestitev in licenciranje prevajalnikov MPLAB XC C (revizija M)
- Uporabniški priročnik MPLAB XC8 za vgrajene inženirje – AVR MCU (revizija A)
- Uporabniški priročnik za prevajalnik MPLAB XC8 C za AVR MCU (revizija F)
- Microchip Unified Standard Library Referenčni vodnik (revizija B)
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 vrst 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 priročniku MPLAB® XC8 User!s Guide for Embedded Engineers – AVR® MCU (DS50003108) informacije o nastavitvi projektov v MPLAB X IDE in pisanju kode. za vaš prvi projekt MPLAB XC8 C. Ta vodnik je zdaj razdeljen s prevajalnikom.
Uporabniški priročnik Hamate je bil vključen v imenik dokumentov v tej izdaji. Ta priročnik je namenjen tistim, ki uporabljajo Hamate 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.
Različica 2.40
Podpora za nove 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 orisati kodo, ki vsebuje navodilo za klic funkcije (priklic klica)). To se bo zgodilo samo, če se sklad ne uporablja za posredovanje argumentov funkciji ali za pridobivanje vrnjene 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 je mogoče onemogočiti z možnostjo monk-pa-outline-calls ali pa lahko postopkovno abstrakcijo v celoti onemogočite za predmet file ali deluje z uporabo -monk-pa-on-file oziroma -mo.-pa-on-function ali z uporabo atributa nipa (specifikator nipa) selektivno s funkcijami
Makro za pokritost kode Prevajalnik zdaj definira makro __CODECOV, če je podana veljavna možnost mcodecov.
Možnost rezervacije pomnilnika Gonilnik xc8-cc bo zdaj sprejel možnost -mreserve=space@start: end pri gradnji za cilje AVR. Ta možnost rezervira podani obseg 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 V funkcijah Smart IO je bilo narejenih več izboljšav, vključno s splošnimi prilagoditvami jedrne kode printf, obravnavanjem specifikatorja pretvorbe %n kot neodvisne različice, povezovanjem v pop rutinah vararg na zahtevo, uporabo krajših podatkovnih tipov, kjer je to mogoče, za obdelavo argumentov funkcije IO , in faktoriziranje skupne kode v širini polja in obdelavi natančnosti. To lahko povzroči znatne prihranke kode in podatkov ter poveča hitrost izvajanja IO.
Različica 2.39 (funkcionalna varnostna izdaja)
Omrežna strežniška licenca Ta izdaja prevajalnika funkcionalne varnosti MPLAB XC8 podpira licenco mrežnega strežnika.
Različica 2.36
Noben.
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 nadzira kodo itch kontekstov, ustvarjeno za rutine storitev majhnih prekinitev. Ko je ta funkcija omogočena, bo asembler pregledal ISR za uporabo registra in te uporabljene registre shranil le, če je potrebno.
Nastavljivo flash preslikavo 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. Nova možnost – mconst-data-in-config-mapped-proem se lahko uporabi tako, da povezovalnik postavi vse kvalificirane podatke cons v en odsek 32k in samodejno inicializira ustrezen register SFR, da zagotovi, da so ti podatki preslikani v prostor podatkovnega pomnilnika , kjer bo dostop do njega učinkovitejši.
Poenotene standardne knjižnice Microchip Vsi prevajalniki MPLAB XC si bodo delili Microchip Unified Standard Library, ki je zdaj na voljo s to izdajo MPLAB XC8. Uporabniški priročnik za prevajalnik MPLAB® XC8 C/ali AVR® 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. (Glej Librar):'. funkcionalnost…)
Pametni IO Kot del novih poenotenih knjižnic so funkcije IO v družinah tiskanja in skeniranja 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 IO Pri analizi klicev pametnih funkcij IO (kot sta printf () ali scanf () ) prevajalnik ne more vedno določiti iz niza formata ali sklepati iz argumentov tistih pretvorbenih specifikatorjev, ki jih zahteva klic. Prej prevajalnik vedno ne bi delal predpostavk in bi zagotovil, da so bile popolnoma delujoče funkcije IO povezane 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 IO, katerih uporaba je dvoumna, kar preprečuje povezovanje predolgih rutin IO. (Za več podrobnosti glejte Možnost formata smart-io.)
Namestitev razdelkov po meri Prej je možnost -Wl, –section-start samo 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 . 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 -Wl, -Tsection=add, kot je opisano v uporabniškem priročniku.
Različica 2.32
Stack Guidance Funkcijo prevajalnika za vodenje sklada, ki je na voljo z licenco za prevajalnik PRO, je mogoče uporabiti 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.
Nova podpora za naprave Podpora je na voljo za naslednje dele AVR: ATTINY 427, ATTINY 424, ATTINY 426, 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.
Različica 2.31
Noben.
Različica 2.30
Nova možnost za preprečevanje inicializacije podatkov Nova možnost gonilnika -mno-data-ini t preprečuje inicializacijo podatkov in brisanje odsekov bss. Deluje tako, da zatre izpis simbolov do_copy_data in d o_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 od teh optimizacij, zlasti sidra odsekov -f, ki omogočajo dostop do statičnih objektov glede na en simbol; -mpai derations=n, ki omogoča spremembo števila ponovitev proceduralne abstrakcije s privzete vrednosti 2; in -mpa- call cost- 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 AVR128DB64.
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.
Različica 2.29 (funkcionalna varnostna izdaja)
Glava file za vgrajene prevajalnike Da bi zagotovili, da se prevajalnik lahko ujema 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 _buil tin _avrnop () in _buil tin_ avr delay_ cycles (). Nekatere vgrajene komponente morda niso združljive z MISRA; te lahko izpustite tako, da v ukazno vrstico prevajalnika dodate definicijo _Xe_ STRICT_ MISRA. Vgrajeni elementi in njihove deklaracije so bili posodobljeni za uporabo tipov s fiksno širino.
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 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.
Različica 2.19 (funkcionalna varnostna izdaja)
Noben.
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 mcodecov 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 ( (mcodecov)) 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 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 pri izbiri stopnje 2, 3 ali optimizacij. Te optimizacije zmanjšajo velikost kode, vendar lahko zmanjšajo hitrost izvajanja in možnost odpravljanja napak kode.
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 na funkcija= funkcija.
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 atribut ( (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 podatke o čipu avr. html file (omenjeno zgoraj) za pare nastavitev/vrednost za uporabo s to pragmo.
Podpora za nove naprave Podpora je na voljo za naslednje dele: AVR28DA128, AVR64DA128, AVR32DA128 in AVR48DA128.
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 const, 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.
Podpora za nove naprave Podpora je na voljo za naslednje dele: ATMEGA1608, ATMEGA1609, ATMEGA808 in ATMEGA809.
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.
Nov knjižničar voznik 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.
Različica 2.40
Noben.
Različica 2.39 (funkcionalna varnostna izdaja)
Noben.
Različica 2.36
Noben.
Različica 2.35
Ravnanje z nizi in bazami (XCS-2420) Da bi zagotovili skladnost z drugimi prevajalniki XC, funkcije XC8 string-to, 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 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 lprintf_flt (možnost -print _flt), da bi vklopili podporo za formatiran IO za specifikatorje plavajočega formata. Pametne funkcije IO Microchip Unified Standard Library naredijo to možnost odvečno. 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.
Različica 2.32
Noben.
Različica 2.31
Noben.
Različica 2.30
Noben.
Različica 2.29 (funkcionalna varnostna izdaja)
Noben.
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.
Različica 2.19 (funkcionalna varnostna izdaja)
Noben.
Različica 2.10
Noben
Različica 2.05
Const objekti v programskem pomnilniku Upoštevajte, da bodo privzeto kvalificirani objekti const nameščeni in dostopni v programskem pomnilniku (kot je opisano tukaj). 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-da ta-in-progmem.
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 WDT0N = NASTAVI
#pragma config B0DLEVEL = B0DLEVEL_4V3
Absolutni objekti in funkcije Objekte in funkcije je zdaj mogoče postaviti na določen naslov v pomnilniku z uporabo specifikatorja CCI _at (naslova), npr.ample: #vključi int foobar na (Ox800100); char at(Ox250) get ID(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 odmikom 0x800000. Za uporabo te funkcije omogočite CCI.
Nova sintaksa prekinitvene funkcije Prevajalnik zdaj sprejme specifikator prekinitve CCI (num), ki označuje, 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 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 (DFP), povezanem z napravo. Oglejte si MPLAB Pack Manager za informacije o spremembah DFP-jev in prenos najnovejših paketov.
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 (XCS-2875) Funkcija cost-data-in-config mappedprogmem je odvisna od omogočene funkcije cost-data-in-proem. Če je bila funkcija cost-data-ipconfig-mapped-proem izrecno omogočena z možnostjo in je bila funkcija cost-data-inprogmem onemogočena, korak povezave ni uspel kljub opozorilnemu sporočilu, ki navaja, da cons data-in-config-mapped- funkcija proem je bila samodejno onemogočena, kar ni bilo povsem pravilno. Funkcija const-data-in-config-mapped-proem je v tej situaciji zdaj popolnoma onemogočena.
Spremembe DFP za pravilen dostop do NVMCTRL (XCS-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 IO SFR na stran, ki jo uporablja prevajalnik const-data-in configmapped-proem funkcija. 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, da se izognete preslikavi v bliskavici (XCS-2847) Izvedena je bila rešitev za težavo s funkcijo naprave za preslikavo bliskavice, o kateri poroča AVR128DA28/32/48/64 Silicon Errata (DS80000882). Funkcija prevajalnika const-data-in-config-mapped-proem ne bo privzeto uporabljena za prizadete naprave in ta sprememba bo prikazana v različici AVR-Ex_DFP 2.2.160.
Napaka pri gradnji s sinhf ali coshf (XCS-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 gradnje z nopa (XCS-2833) Uporaba atributa nopa s funkcijo, katere ime sestavljalnika je določeno z as (), je sprožila sporočila o napakah iz sestavljalnika. Ta kombinacija ni možna.
Napaka variadične funkcije z argumenti kazalca (XCS-2755, XCS-2731) Funkcije s spremenljivim številom argumentov pričakujejo, da bodo 24-bitni (tip _memo) kazalci posredovani na seznamu spremenljivih argumentov, ko je omogočena funkcija podatkov o stroških v programu. 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 omogočena funkcija cons data-in-proem, so vsi argumenti 16-bitnih kazalcev zdaj pretvorjeni v 24-bitne kazalce. Funkcije knjižnice strtoxxx niso uspele (XCS-2620) Ko je bila funkcija const-data-in-proem omogočena, parameter enter v funkcijah knjižnice strtoxxx ni bil pravilno posodobljen za argumente izvornega niza, ki niso v programskem pomnilniku.
Opozorila za neveljavne oddaje (XCS-2612) Prevajalnik bo zdaj izdal napako, če je omogočena funkcija cost-in-proem in je naslov nizovnega literala izrecno pretvorjen v podatkovni naslovni prostor (izpusti kvalifikator const), npr.ample, (uint8 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 (XCS-2408) Neinicializirani objekti const in const v volatile niso bili postavljeni 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.
Različica 2.39 (funkcionalna varnostna izdaja)
Noben.
Različica 2.36
Napaka pri zakasnitvi (XCS-2774) Manjše spremembe v privzetih optimizacijah prostega načina so preprečile stalno zlaganje izrazov operandov v vgrajene funkcije zakasnitve, zaradi česar so bili obravnavani kot brezkontaktni in so sprožili napako: _buil tin avr delay_ cycles expects ac ompile časovna celoštevilska konstanta.
Različica 2.35
Neprekinjeno dodeljevanje z uporabo _at (XCS-2653) Neprekinjeno dodeljevanje več predmetov v razdelek z enakim imenom in uporaba pri () ni delovalo pravilno. Na primerample: constchararrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[] at tri butte ((section(“.my s eke”))) = {Oxen, Ox FE }; moral bi postaviti arr2 takoj za aril.
Določanje začetnih naslovov razdelkov (XCS-2650) Možnost -Wal, –section-start tiho ni uspela postaviti razdelkov 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 -Wl, -T.
Povezovalnik se zruši pri sprostitvi (XCS-2647) Ko je bila omogočena optimizacija -relax in so bili razdelki kode ali podatkov, ki niso ustrezali razpoložljivemu pomnilniku, se je povezovalnik zrušil. Zdaj se v takšnih okoliščinah namesto tega izdajo sporočila o napakah.
Slab dostop do EEPROM (XCS-2629) Bločna rutina leproma _read_ ni delovala pravilno na napravah Mega, ko je bila omogočena možnost -monist-data-in-proem (kar je privzeto stanje), zaradi česar pomnilnik EEPROM ni bil pravilno prebran.
Neveljavna dodelitev pomnilnika (XCS-2593, XCS-2651) Ko je možnost povezovalnika -Text ali -Tata (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.
Neveljavna prekinitvena koda ATtiny (XCS-2465) Pri gradnji za naprave Tatin in so bile optimizacije onemogočene (-00), so prekinitvene funkcije morda sprožile sporočila asemblerja operanda izven območja.
Možnosti niso posredovane (XCS-2452) Pri uporabi možnosti -Wl z več povezovalnimi možnostmi, ločenimi z vejicami, vse možnosti povezovalnika niso bile posredovane povezovalniku.
Napaka pri posrednem branju programskega pomnilnika (XCS-2450) V nekaterih primerih je prevajalnik povzročil notranjo napako (neprepoznaven insn), ko je prebral dvobajtno vrednost iz kazalca v programski pomnilnik
Različica 2.32
Drugi dostop do knjižnice ni uspel (XCS-2381) Priklic različice xc8-ar za Windows. arhiviranje knjižnice exe drugič za dostop do obstoječega arhiva knjižnice morda ni uspelo s sporočilom o napaki ni mogoče preimenovati.
Različica 2.31
Nepojasnjene napake prevajalnika (XCS-2367) Pri izvajanju na platformah Windows, ki so imele sistemski začasni imenik nastavljen na pot, ki vključuje piko.' znakov, prevajalnik morda ni uspel izvesti.
Različica 2.30
Globalne oznake so napačno postavljene po orisu (XCS-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 (XCS-2287) Uporaba možnosti -merlad 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 (XCS-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 (XCS-2271) Prototipi za starts () in druge funkcije iz ne določajo več kvalifikatorja nestandardnih stroškov na vrnjenih kazalcih nizov, ko je funkcija -monist-data inprogmem onemogočena. Upoštevajte, da je pri napravah avrxmega3 in avertin ta funkcija trajno omogočena.
Izgubljeni inicializatorji (XCS-2269) Ko je bila več kot ena spremenljivka v prevajalski enoti umeščena v odsek (z uporabo odseka ali atributa ((odsek))) in je bila prva takšna spremenljivka inicializirana na nič ali ni imela inicializatorja, inicializatorji za druge spremenljivke v isti prevajalski enoti ki so bili postavljeni v isti del, so bili izgubljeni.
Različica 2.29 (funkcionalna varnostna izdaja)
Noben.
Različica 2.20
Napaka pri dolgih ukazih (XCS-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 odsek rodata (XCS-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
Različica 2.19 (funkcionalna varnostna izdaja)
Noben.
Različica 2.10
Napake pri premestitvi (XCS-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 (XCS-1889) Sprostitev povezovalnika se ni zgodila za navodila za skok ali klic, katerih cilji postanejo dosegljivi, če so sproščeni.
manjka funkcionalnost (XCSE-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 Makro predprocesorja_ xcs _MODE_, _xcs VERSION, _xc in xcs prevajalnik ni definiral samodejno. Ti so zdaj na voljo.
Različica 2.05
Notranja napaka prevajalnika (XCS-1822) Pri gradnji v sistemu Windows je morda prišlo do notranje napake prevajalnika pri optimizaciji kode.
Prelivanje RAM-a ni zaznano (XCS-1800, XCS-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 (XCS-1792) Pri napravah avrxmega3 in avrtiny je MPLAB X IDE morda pustil dele bliskovnega pomnilnika neprogramirane.
Napaka pri izvedbi glavnega (XCS-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 (XCS-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 (XCS-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 (XCS-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 (0x80015 0) cp; Če se odkrije takšna koda, se zdaj izda opozorilo.
Napaka pri izvedbi glavnega (XCS-1780, XCS-1767, XCS-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 (XCS-1778, XCS-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.
Napaka segmentacije (XCS-1777) Občasna napaka segmentacije je bila odpravljena.
Zrušitev asemblerja (XCS-1761) Sestavljalnik avr-as se je morda zrušil, ko je bil prevajalnik zagnan pod Ubuntu 18.
Predmeti niso izbrisani (XCS-1752) Neinicializirani objekti trajanja statičnega shranjevanja morda niso bili izbrisani z zagonsko kodo izvajalnega okolja.
Specifikacija naprave v nasprotju je prezrta (XCS-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 (XCS-1748) Simbol heap_ start je bil nepravilno nastavljen, kar je povzročilo možnost, da bi kopica poškodovala običajne spremenljivke.
Napaka pri premestitvi povezovalnika (XCS-1739) Napaka pri premestitvi povezovalnika je morda oddana, ko je koda vsebovala rjmp ali rcall s ciljem, oddaljenim natanko 4k bajtov.
Različica 2.00
Noben.
Znane težave
Sledijo omejitve pri delovanju prevajalnika. To so lahko splošne omejitve kodiranja, oz
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. Tisti elementi, ki nimajo oznak, so omejitve, ki opisujejo način delovanja in bodo verjetno ostale v veljavi trajno.
Integracija MPLAB X IDE
Integracija MPLAB IDE Če boste prevajalnik uporabljali iz MPLAB IDE, morate pred namestitvijo prevajalnika namestiti MPLAB IDE.
Generiranje kode
Napaka pri dodelitvi pomnilnika PA (XCS-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-IO (XCS-2872) Funkcija pametnega io prevajalnika bo ustvarila veljavno, a podoptimalno kodo za funkcijo sprinta, če je bila funkcija obrežnih podatkov v proemu onemogočena ali če ima naprava ves svoj flash preslikan v podatkovni pomnilnik.
Še manj pameten Smart-IO (XCS-2869) Funkcija pametnega io prevajalnika bo ustvarila veljavno, a neoptimalno kodo, ko bosta uporabljeni obe možnosti -floe in -fno-buil tin.
Neoptimalna postavitev podatkov samo za branje (XCS-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 coast-data-in-pragma, zlasti če je omogočena tudi funkcija coast-data-in-config-mapped-proem. Te funkcije lahko po potrebi onemogočite.
Objekt file obdelava naročila (XCS-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 (XCS-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 (XCS-2775) Za naprave ATA5700/2 so registri PHID0/1 definirani samo kot 16-bitni in ne 32-bitni.
Zrušitev povezovalnika pri klicu simbola (XCS-2758) Povezovalnik se lahko zruši, če je uporabljena možnost gonilnika -merlad, ko izvorna koda kliče simbol, ki je bil definiran z možnostjo povezovalnika -Wl, –defsym.
Nepravilna inicializacija (XCS-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.
nepravilno zagnan nastavi prazen (XCS-2652) V primerih, ko predmetni niz za pretvorbo z navedenim () vsebuje nekaj, kar je videti kot število s plavajočo vejico v eksponentni obliki in je za znakom e nepričakovan znak, bo prazen naslov, če je na voljo, kazal na znak za njim e in ne e sam. Na primerample: navedeno ("hooey", prazno); rezultat bo prazno, ki kaže na znak x.
Slabi posredni funkcijski klici (XCS-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 (XCS-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: stator("Sova", &prazno); bo vrnil vrednost 0, ne 1.
Netočno sporočanje svetovalca za sklad (XCS-2542, XCS-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 (XCS-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.
Konstantni objekti niso v programskem pomnilniku (XCS-2408) Pri projektih avrxmega3 in avertins so neidealizirani 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 (XCS-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 _meme (XCS-1763) Klicane limbične plavajoče funkcije z argumentom v naslovnem prostoru _memo 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 limbična izvedba (AVRTC-731) Za izdelke ATTiny4/5/9/10/20/40 je standardna izvedba knjižnice C/Math v limbiku 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 -relax.
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 lokalni čas () vrnil isti čas kot gummite (), npr.ample.
POMOČ STRANKAM
file:///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ za A VR. htm
Dokumenti / Viri
![]() |
Programska oprema za prevajanje MICROCHIP MPLAB XC8 C [pdf] Priročnik za lastnika MPLAB XC8 C, MPLAB XC8 C programska oprema za prevajanje, programska oprema za prevajanje, programska oprema |