MICROCHIP - logotipasMPLAB XC8 C kompiliatoriaus 2.39 versijos AVR MCU išleidimo pastabos
Vartotojo vadovas

ŠIAME DOKUMENTE YRA SVARBI INFORMACIJA, SUSIJUSI SU MPLAB XC8 C KOMPILIERIU, KAI TAIKOMA PO MICROCHIP AVR ĮRENGINIUS. PRAŠOME JĄ PERSKAITYTI PRIEŠ NAUDOJANT ŠIĄ PROGRAMINĘ ĮRANGĄ.
ŽR. MPLAB XC8 C KOMPILIATORIAUS IŠLEIDIMO PASTABAS DĖL PIC DOKUMENTO, JEI NAUDOJATE KOMPILIATORIUS 8 BITŲ PIC ĮRENGINIAMS.

Baigėsiview

1.1. Įvadas
Šis „Microchip MPLAB® XC8 C“ kompiliatoriaus leidimas yra funkcinės saugos kompiliatorius, pagrįstas šio kompiliatoriaus v2.36 leidimu ir kuris dabar palaiko tinklo serverio licenciją.
1.2. Išleidimo data
Oficiali šios kompiliatoriaus versijos išleidimo data yra 27 m. sausio 2022 d.
1.3. Ankstesnė versija
Ankstesnė MPLAB XC8 C kompiliatoriaus versija buvo 2.36, išleista 25 m. sausio 2022 d.
1.4. Funkcinės saugos vadovas
MPLAB XC kompiliatorių funkcinės saugos vadovą rasite dokumentų pakete, kai įsigyjate funkcinės saugos licenciją.
1.5. Komponentų licencijos ir versijos® jis MPLAB
XC8 C kompiliatorius, skirtas AVR MCU įrankiai yra parašyti ir platinami pagal GNU bendrąją viešąją licenciją (GPL), o tai reiškia, kad jo šaltinio kodas yra laisvai platinamas ir prieinamas visuomenei.
Įrankių pagal GNU GPL šaltinio kodą galima atsisiųsti atskirai iš Microchip's websvetainę. GNU GPL galite perskaityti faile, pavadintame jūsų diegimo licencijos.txt avr/doc katalogo pakatalogyje. Bendrą GPL principų aptarimą rasite čia.
Antraštės failų, nuorodų scenarijų ir vykdymo laiko bibliotekų palaikymo kodas yra patentuotas kodas ir jam netaikomas GPL.
Šis kompiliatorius yra GCC 5.4.0 versijos, binutils 2.26 versijos ir naudoja 2.0.0 versiją avr-libc.
1.6. Sistemos reikalavimai
MPLAB XC8 C kompiliatorius ir jo naudojama licencijavimo programinė įranga yra prieinama įvairioms operacinėms sistemoms, įskaitant šių 64 bitų versijas: profesionalūs Microsoft Windows 10 leidimai; Ubuntu 18.04; ir macOS 10.15.5. „Windows“ dvejetainiai failai buvo pasirašyti kodu. „MacOS“ dvejetainiai failai buvo pasirašyti kodu ir patvirtinti notaro.
Jei naudojate tinklo licencijų serverį, licencijų serveriui priglobti gali būti naudojami tik kompiuteriai su kompiliatorių palaikomomis operacinėmis sistemomis. Nuo 2.0 xclm versijos tinklo licencijos serverį galima įdiegti Microsoft Windows Server platformoje, tačiau licencijų serveriui nereikia veikti operacinės sistemos serverio versijoje.
1.7. Palaikomi įrenginiai
Šis kompiliatorius palaiko visus 8 bitų AVR MCU įrenginius, žinomus išleidimo metu. Žiūrėkite (kompiliatoriuje avr_chipinfo.html katalogas), kad būtų pateiktas visų palaikomų įrenginių sąrašas. Šiuose failuose taip pat pateikiami kiekvieno įrenginio konfigūracijos bitų dokumento nustatymai.
1.8. Leidimai ir licencijos atnaujinimai
MPLAB XC8 kompiliatorius gali būti aktyvuotas kaip licencijuotas (PRO) arba nelicencijuotas (nemokamas) produktas. Norėdami licencijuoti kompiliatorių, turite įsigyti aktyvinimo raktą. Licencija leidžia pasiekti aukštesnį optimizavimo lygį, palyginti su nemokamu produktu. Licencijuotas kompiliatorius be licencijos gali būti naudojamas neribotą laiką.
MPLAB XC8 funkcinės saugos kompiliatorius turi būti aktyvuotas naudojant funkcinės saugos licenciją, įsigytą iš Microchip. Kompiliatorius neveiks be šios licencijos. Suaktyvinę galite pasirinkti bet kurį optimizavimo lygį ir naudoti visas kompiliatoriaus funkcijas. Šis MPLAB XC funkcinės saugos leidimas
Kompiliatorius palaiko tinklo serverio licenciją.
Norėdami gauti informacijos apie licencijų tipus ir kompiliatoriaus su licencija diegimą, žr. dokumentą MPLAB XC C kompiliatorių diegimas ir licencijavimas (DS50002059).
1.9. Diegimas ir aktyvinimas
Taip pat žr. skyrius Perkėlimo problemos ir apribojimai, kur rasite svarbios informacijos apie naujausią licencijų tvarkyklę, įtrauktą į šį kompiliatorių.
Jei naudojate MPLAB IDE, prieš diegdami šį įrankį būtinai įdiekite naujausią MPLAB X IDE 5.0 ar naujesnę versiją. Prieš diegdami kompiliatorių, išeikite iš IDE. Paleiskite (Windows), (Linux) arba (macOS) .exe .run .app kompiliatoriaus diegimo programą, pvz., ir vykdykite ekrane pateikiamus nurodymus.
XC8-1.00.11403-windows.exe
Rekomenduojamas numatytasis diegimo katalogas. Jei naudojate Linux, turite įdiegti kompiliatorių naudodami terminalą ir iš root paskyros. Įdiekite naudodami „MacOS“ paskyrą su administratoriaus teisėmis.
Dabar aktyvinimas atliekamas atskirai nuo diegimo. Norėdami gauti daugiau informacijos, žr. dokumentą License Manager for MPLAB® XC C kompiliatoriai (DS52059).
Jei nuspręsite paleisti kompiliatorių pagal vertinimo licenciją, dabar gausite įspėjimą kompiliavimo metu, kai baigsite 14 dienų nuo vertinimo laikotarpio pabaigos. Tas pats įspėjimas pateikiamas, jei esate per 14 dienų nuo HPA prenumeratos pabaigos.
XC tinklo licencijos serveris yra atskira diegimo programa ir nėra įtraukta į vieno vartotojo kompiliatoriaus diegimo programą.
„XC License Manager“ dabar palaiko slankiojo tinklo licencijų tarptinklinį ryšį. Ši funkcija skirta mobiliojo ryšio naudotojams, todėl slankioji licencija trumpam laikui gali išeiti iš tinklo. Naudodami šią funkciją galite atsijungti nuo tinklo ir vis tiek naudoti savo MPLAB XC kompiliatorių. Norėdami sužinoti daugiau apie šią funkciją, žr. XCLM diegimo aplanką doc.
MPLAB X IDE apima licencijų langą (Įrankiai > Licencijos), kad galėtumėte vizualiai valdyti tarptinklinį ryšį.

1.9.1. Diegimo problemų sprendimas
Jei kyla sunkumų diegiant kompiliatorių bet kurioje iš Windows operacinės sistemos, išbandykite šiuos pasiūlymus.

  • Paleiskite diegimą kaip administratorius.
  • Nustatykite diegimo programos leidimus į „Visas valdymas“. (Dešiniuoju pelės mygtuku spustelėkite failą, pasirinkite Ypatybės, Sauga, pasirinkite vartotoją, redaguokite.)
  • Nustatykite laikinojo aplanko leidimus į „Visa kontrolė!.
  • Norėdami nustatyti laikinojo aplanko vietą, įveskite komandą Vykdyti („Windows“ logotipo klavišas + R). %temp% Tai atvers failų naršyklės dialogo langą, rodantį tą katalogą, ir leis nustatyti to aplanko kelią.

1.10. Kompiliatoriaus dokumentacija

MICROCHIP MPLAB XC8 C kompiliatoriaus versija 2.39 AVR MCU išleidimo pastabos – dokumentasKompiliatoriaus vartotojo vadovus galima atidaryti iš HTML puslapio, kuris atsidaro jūsų naršyklėje spustelėjus mėlyną pagalbos mygtuką MPLAB X IDE prietaisų skydelyje, kaip nurodyta ekrano kopijoje.
Jei kuriate 8 bitų AVR taikinius, MPLAB® XC8 C kompiliatoriaus vartotojo® vadovas, skirtas AVR
MCU yra informacijos apie tas kompiliatoriaus parinktis ir funkcijas, kurios yra taikomos šiai architektūrai.

1.11. Pagalba klientams
„Microchip“ laukia pranešimų apie klaidas, pasiūlymų ar komentarų apie šią kompiliatoriaus versiją. Visus pranešimus apie klaidas ar funkcijų užklausas nukreipkite per palaikymo sistemą.

Dokumentacijos atnaujinimai

Norėdami gauti internetines ir naujausias MPLAB XC8 dokumentacijos versijas, apsilankykite Microchip's Online
Techninė dokumentacija websvetainę.
Nauja arba atnaujinta AVR dokumentacija šioje laidoje:
MPLAB® XC C kompiliatorių (DS50002059) versijos L diegimas ir licencijavimas
„Microchip Unifid Standard Library“ informaciniame vadove aprašoma „Microchip Unified Standard Library“ apibrėžtų funkcijų elgsena ir sąsaja su jomis, taip pat numatomas bibliotekos tipų ir makrokomandų naudojimas. Dalis šios informacijos anksčiau buvo pateikta MPLA® XC8 C Compiler User!s Guide® for AVR
MCU. Šiame kompiliatoriaus vadove vis dar yra konkrečiam įrenginiui skirtos bibliotekos informacija.
Hexmate vartotojo vadovas buvo įtrauktas į šio leidimo katalogą. Šis vadovas skirtas dokumentams, kurie naudoja Hexmate kaip atskirą programą.
Tolesniuose skyriuose pateikiami pataisymai ir papildomos informacijos, pateiktos kartu su kompiliatoriumi pateiktuose vartotojo vadovuose.

2.1. Smart-io formato parinktis
Parinktis-msmart-io-format=fmt fmt, kur yra eilutė su suformatuotomis IO konvertavimo specifikacijomis, praneša kompiliatoriui, kad išvardytas specifikacijas naudoja išmaniosios IO funkcijos.
Kad sumažintų kodo dydį, kompiliatorius pritaiko bibliotekos kodą, susietą su išmaniųjų IO funkcijų spausdinimo ir nuskaitymo šeimomis, remdamasis konvertavimo specifikacijomis, esančiomis formato eilutėse, sulygintose visuose šių funkcijų iškvietimuose. Ši funkcija yra visiškai automatinė ir negali būti išjungta.
Kai kuriais atvejais kompiliatorius negali nustatyti naudojimo informacijos iš suformatuoto IO funkcijos iškvietimo. Jei ši parinktis buvo naudojama, reikiamos šių funkcijų konvertavimo specifikacijos gaunamos iš eilutės; kitu atveju kompiliatorius nedaro prielaidų, kaip naudojamos -msmart-io-format=fmt fmt funkcijos, ir užtikrina, kad visiškai veikiančios suformatuotos IO funkcijos būtų susietos su galutiniu programos atvaizdu.
Pavyzdžiui,ample, apsvarstykite šiuos išmaniųjų IO funkcijų iškvietimus.

vscanf ("%d:%li", va_list1);
vprintf(“%-s%d”, va_list2);
vprintf(fmt1, va_list3);// dviprasmiškas naudojimas
vscanf(fmt2, va_list4);// dviprasmiškas naudojimas

Apdorodamas paskutinius du iškvietimus, kompiliatorius negali išvesti jokios naudojimo informacijos nei iš formato eilučių, nei iš argumentų. Tokiais atvejais gali būti naudojama parinktis -msmart-io-format, kuri galbūt leis sugeneruoti optimalesnes suformatuotas I0 funkcijas, taip sumažinant programos kodo dydį. Pavyzdžiui,ample, jei formato eilutės, į kurias nurodo fmtl ir fmt2, kartu naudoja tik „%d“, „%i“ ir „% s“ konversijos specifikacijas, -msmart-io-format=fmt=”%d%i%s“ “ turėtų būti išleistas variantas.

Atspalvio eilutėje gali būti bet kokios galiojančios konversijos specifikacijos, įskaitant vėliavėles ir modifikatorius (pvz.,ample "%-13. 91s“), ir turėtų tiksliai atspindėti tas, kurias naudoja funkcijos, kurių naudojimas yra dviprasmiškas. Specifikacijos neįtraukimas į šiek tiek argumentas, kai jį naudojo suformatuotos I0 funkcijos, gali sukelti kodo gedimą.
Jei fmt yra tuščia eilutė arba joje nėra pastebimų konvertavimo specifikacijų, pateikiamas įspėjimas ir visiškai veikiančios suformatuotos I0 funkcijos susiejamos su galutiniu programos vaizdu.
Ši parinktis gali būti naudojama kelis kartus komandinėje eilutėje. Sukaupiamos kiekvienos parinkties konversijos specifikacijos.

2.2. omt-frame-pointer Parinktis
Parinktis – f omit-frame-pointer nurodo kompiliatoriui tiesiogiai naudoti dėklo žymeklį, kad pasiektų krūvos objektus, ir, jei įmanoma, praleisti kodą, kuris išsaugo, inicijuoja ir atkuria kadrų registrą. Jis automatiškai įjungiamas visais optimizavimo lygiais, kurie nėra nuliniai.
Parinkties neigimas naudojant -fno-omit- frame-pointer gali padėti derinti optimizuotą kodą; tačiau ši parinktis negarantuoja, kad rėmelio rodyklė bus naudojama visada.

2.3. unroll-loops Parinktys
Funrol I-loops ir -(unroll-all-loops parinktys valdo į greitį orientuotą optimizavimą, kuris bando pašalinti kilpų išsišakojimą. Išvyniotos kilpos paprastai padidina sugeneruoto kodo vykdymo greitį didesnio kodo dydžio sąskaita.
Funrol I-loops parinktis išvynioja kilpas, kuriose galima nustatyti iteracijų skaičių kompiliavimo metu arba kai kodas patenka į kilpą. Parinktis -funroll-all-loops yra agresyvesnė, išvynioja visas kilpas, net kai iteracijų skaičius nežinomas. Paprastai tai yra mažiau veiksminga gerinant vykdymo greitį nei „Funrol 1-loops“ parinktis.

2.4. riebalai-Ito-objektai Parinktis
Parinktis – f fat-1 to-objects reikalauja, kad kompiliatorius sugeneruotų riebalų objektą files, kuriuose yra abu
objekto kodas ir GIMPLE (viena iš GCC vidinių atvaizdų), įrašyti į unikalius ELF skyrius. Tokie objektai files yra naudingos bibliotekos kodui, kuris gali būti susietas su projektais, kuriuose naudojamas ir nenaudojamas standartinis nuorodos laiko optimizavimo įrankis, valdomas -flto parinktimi.
Šios parinkties forma – fno-fat-lto-objects, kuri yra numatytoji, jei nenurodyta jokia parinktis, slopina objekto kodo įtraukimą į objektą files, todėl kūrimas greitesnis. Tačiau toks objektas files visada turi būti susietos naudojant standartinę nuorodos laiko optimizavimo priemonę.

2.5. Ito skaidinio parinktis
The – flto-partiti ant=a Igo ri thm parinktis valdo algoritmą, naudojamą objekto skaidymui files paleidus nuorodos laiko optimizavimo priemonę. Argumentas „ne“ visiškai išjungia skaidymą ir vykdo susiejimo laiko optimizavimo veiksmą tiesiai iš visos programos analizės (WPA) fazės. Šis veikimo režimas duos optimaliausius rezultatus dėl didesnių kompiliatoriaus atminties poreikių ir ilgesnio kūrimo laiko, nors mažai tikėtina, kad tai bus problema naudojant mažas programas. Objekto padalijimas files gali pagerinti kūrimo našumą. Argumente vienas nurodo, kad turi būti naudojamas tiksliai vienas skaidinys, o argumentas lto1 nurodo skaidymą, kuris atspindi pradinio šaltinio padiktuotą skaidymą files. Numatytasis argumentas yra subalansuotas, kuris nurodo skaidymą į vienodo dydžio dalis, kai įmanoma.

2.6. Papildymas prie 3.6.11 skyriaus Susiejimo parinktys
-wl, -skyrius-pradžia =sek tion=addr trūksta dažniausiai naudojamų linkerio parinkčių lentelėje, kurią galima pasiekti naudojant -wl kompiliatoriaus tvarkyklės parinktį. Ši parinktis leidžia nurodytu adresu talpinti pasirinktinai pavadintas sekcijas. Jis negali būti naudojamas standartinėms sekcijoms, pvz., ( . data, . bss, . tekstas), kuris turi būti įdėtas naudojant parinktį -wl, -'r.

2.7. 4.14.2 skirsnio pakeitimas Skirtos dalies keitimas ir susiejimas
Atkreipkite dėmesį, kad, priešingai nei šioje vartotojo vadovo dalyje, šiame leidime atlikti kompiliatoriaus pakeitimai dabar reiškia, kad pasirinktines skiltis galima susieti naudojant -w1, – sekta jonų- pradžia=sekcija=acicir parinktį ir nereikia keisti nuorodos scenarijaus.

Kas naujo

Toliau pateikiamos naujos AVR tikslinės funkcijos, kurias dabar palaiko kompiliatorius. Versijos numeris paantraštėse nurodo pirmąją kompiliatoriaus versiją, kuri palaiko toliau pateiktas funkcijas.

3.1. 2.39 versija (funkcinės saugos leidimas)
Tinklo serverio licencija Šis MPLAB XC8 funkcinės saugos kompiliatoriaus leidimas palaiko tinklo serverio licenciją.

3.2. 2.36 versija 
Nėra.
3.3. 2.35 versija 
Naujų įrenginių palaikymas Galimas šių AVR dalių palaikymas: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 ir AVR64DD32.
Patobulintas konteksto perjungimas Naujoji parinktis -mcall-isr-prologues pakeičia, kaip pertraukimo funkcijos išsaugo registrus įvedus ir kaip tie registrai atkuriami, kai pertraukimo tvarka baigiasi. Jis veikia panašiai kaip parinktis -mcall-prologues, bet veikia tik pertraukimo funkcijas (ISR).
Dar labiau patobulintas konteksto perjungimas Naujasis -mgas-isr-prologai parinktis valdo kontekstinio jungiklio kodą, sugeneruotą mažoms pertraukimo paslaugų procedūroms. Įjungus šią funkciją, surinkėjas nuskaitys ISR ir išsaugos tik tuos naudotus registrus, jei reikia.
Konfigūruojamas „flash“ atvaizdavimas Kai kurie AVR DA ir AVR DB šeimos įrenginiai turi SFR (pvz., FLMAP), kuris nurodo, kuri 32k programos atminties dalis bus susieta su duomenų atmintimi. Naujoji parinktis „mconst-data-in-config-mapped-progmem“ gali būti naudojama, kad susiejimo priemonė patalpintų visus „cons t“ kvalifikuotus duomenis į vieną 32k sekciją ir automatiškai inicijuotų atitinkamą SFR registrą, kad būtų užtikrinta, jog šie duomenys būtų susieti su duomenimis. atminties vietos, kur ji bus efektyviau pasiekiama.

Mikroschemų vieningos standartinės bibliotekos Visos MPLAB XC kompiliatoriai dalinsis „Microchip Unified Standard Library“, kurią dabar galima įsigyti su šiuo MPLAB XC8 leidimu. The MPLAB® XC8 C kompiliatorius
AVR vartotojo vadovas® MCU nebėra šių standartinių funkcijų dokumentų. Šią informaciją dabar galima rasti Mikroschemos vieningos standartinės bibliotekos informacinis vadovas. Atminkite, kad kai kurios anksčiau avr-libc apibrėžtos funkcijos nebėra prieinamos. (Matyti Bibliotekos funkcionalumas.)
Smart I0 Kaip dalis naujų suvienodintų bibliotekų, JO funkcijos printf ir scanf šeimose dabar yra sugeneruojamos pagal užsakymą kiekvienoje versijoje, atsižvelgiant į tai, kaip šios funkcijos naudojamos programoje. Tai gali žymiai sumažinti programos naudojamus išteklius.
„Smart I0“ pagalbos parinktis Analizuodamas „Smart I0“ funkcijų (pvz., printf () arba scanf ()) iškvietimus, kompiliatorius ne visada gali nustatyti pagal formato eilutę arba iš argumentų nustatyti iškvietimui reikalingų konversijos specifikacijų. Anksčiau kompiliatorius visada nedarė jokių prielaidų ir užtikrino, kad 10 visiškai veikiančių funkcijų būtų susietos su galutiniu programos vaizdu. Pridėta nauja – msma rt-io- format=fmt parinktis, kad vartotojas galėtų informuoti kompiliatorių apie konvertavimo specifikacijas, kurias naudoja išmaniosios I0 funkcijos, kurių naudojimas yra dviprasmiškas, neleidžiant susieti pernelyg ilgų 10 rutinų. (Matyti smart-io formatu Galimybė gauti daugiau informacijos.)
Pasirinktinių sekcijų įdėjimas Anksčiau parinktis -W1, -section-start nurodytą sekciją įdėdavo tik prašomu adresu, kai susiejimo scenarijus apibrėžė išvesties sekciją tuo pačiu pavadinimu. Kai to nebuvo, skyrius buvo patalpintas linkerio pasirinktu adresu ir parinktis iš esmės buvo ignoruojama. Dabar ši parinktis bus taikoma visoms pasirinktinėms sekcijoms, net jei nuorodos scenarijus neapibrėžia skyriaus. Tačiau atminkite, kad standartiniams skyriams, tokiems kaip . tekstas,. bss arba . duomenys, geriausiai tinkantis skirstytuvas vis tiek visiškai valdys jų vietą, o parinktis neturės jokios įtakos. Naudokite -wl, -Tsection=addr parinktis, kaip aprašyta vartotojo vadove.

3.4. 2.32 versija
Stack Guidance Galima naudoti su PRO kompiliatoriaus licencija, kompiliatoriaus dėklo valdymo funkcija gali būti naudojama norint įvertinti maksimalų bet kurios programos naudojamo dėklo gylį. Jis sukuria ir analizuoja programos iškvietimo grafiką, nustato kiekvienos funkcijos dėklo naudojimą ir parengia ataskaitą, iš kurios galima spręsti apie programos naudojamų krūvų gylį.
Ši funkcija įjungiama naudojant komandų eilutės parinktį -mchp-stack-usage. Po vykdymo išspausdinama dėklo naudojimo santrauka. Išsamią krūvos ataskaitą rasite žemėlapyje file, kurio galima prašyti įprastu būdu.
Naujo įrenginio palaikymas Galimas šių AVR dalių palaikymas: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTNY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32, AVR28DB64, AVR32, AVR32.
Atitraukto įrenginio palaikymas Palaikymas nebepasiekiamas šioms AVR dalims: AVR 16DA28, AVR16DA32 ir AVR16DA48.

3.5. 2.31 versija Nėra.
3.6. 2.30 versija
Nauja parinktis užkirsti kelią duomenų inicijavimui Nauja -mno-data-init tvarkyklės parinktis neleidžia inicijuoti duomenų ir išvalyti bss sekciją. Jis veikia slopindamas do_copy_data ir do_clear_bss simbolių išvestį surinkime files, o tai savo ruožtu neleis jungties programai įtraukti šias procedūras.
Patobulintas optimizavimas Buvo atlikta daug optimizavimo patobulinimų, įskaitant perteklinių grąžinimo instrukcijų pašalinimą, kai kurių šuoliukų pašalinimą po nurodymo praleisti bitą, patobulinta procedūrinė abstrakcija ir galimybė kartoti šį procesą.
Dabar galimos papildomos parinktys, leidžiančios valdyti kai kuriuos iš šių optimizacijų, ypač -fsection-inchors, kuri leidžia pasiekti statinius objektus, susijusius su vienu simboliu; -mpa-iteracijos =n, kuri leidžia pakeisti procedūrinių abstrakcijos iteracijų skaičių nuo numatytojo 2; ir -mpa-callcost-shortcal 1, kuri atlieka agresyvesnę procedūrinę abstrakciją, tikintis, kad nuoroda gali atpalaiduoti ilgus skambučius. Ši paskutinė parinktis gali padidinti kodo dydį, jei pagrindinės prielaidos nebus įgyvendintos.
Nauja įrenginio palaikymas Galimas šių AVR dalių palaikymas: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DA28, AVR128DA32, AVR DB128, AVR 48DB128, AVR64 XNUMXDBXNUMX.
Ištraukto įrenginio palaikymas Šių AVR dalių palaikymas nebepasiekiamas: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, 6617CATA664251 ir XNUMXATAXNUMX.

3.7. 2.29 versija (funkcinės saugos leidimas)
Antraštė file kompiliatorių įjungimams Siekiant užtikrinti, kad kompiliatorius atitiktų kalbos specifikacijas, tokias kaip MISRA, antraštę file, kuris automatiškai įtraukiamas , buvo atnaujinta. Šioje antraštėje yra visų integruotų funkcijų prototipai, pvz., built in_avr_nop ( ) ir _builtin_avr_delay_cycles () . Kai kurios integruotos gali būti nesuderinamos su MISRA; jų galima praleisti į kompiliatoriaus komandų eilutę įtraukus define XC_STRICT MISRA. Integruotosios dalys ir jų deklaracijos buvo atnaujintos, kad būtų naudojami fiksuoto pločio tipai.

3.8. 2.20 versija
Nauja įrenginio palaikymas Galimas šių AVR dalių palaikymas: ATTINY 1624, ATTINY1626 ir ATTINY 1 627.
Tinkamesnis paskirstymas Kompiliatoriaus geriausiai tinkantis skirstytuvas (BFA) buvo patobulintas taip, kad skyriai būtų paskirstomi tokia tvarka, kad būtų galima geriau optimizuoti. BFA dabar palaiko pavadintas adresų erdves ir geriau tvarko duomenų inicijavimą.
Patobulinta procedūrinė abstrakcija Procedūrinės abstrakcijos optimizavimas dabar atliekamas su daugiau kodų sekų. Ankstesnės situacijos, kai dėl optimizavimo galėjo padidėti kodo dydis, buvo išspręstos optimizavimo kodui informuojant susiejančiojo šiukšlių surinkimo procesą.
Nėra AVR Assembler AVR Assembler nebėra įtrauktas į šį platinimą. 3.9. 2.19 versija (Funkcinė sauga Išleisti)
Nėra.
3.10. 2.10 versija
Kodo aprėptis Šiame leidime yra kodo aprėpties funkcija, kuri palengvina projekto šaltinio kodo vykdymo masto analizę. Norėdami ją įjungti, naudokite parinktį -mcodecov=ram. Paleidus programą jūsų aparatinėje įrangoje, kodo aprėpties informacija bus sugretinta įrenginyje ir gali būti perkelta į MPLAB X IDE ir rodoma naudojant kodo aprėpties papildinį. Informaciją apie šį papildinį galite rasti IDE dokumentacijoje.
#pragma nocodecov gali būti naudojamas norint neįtraukti paskesnių funkcijų iš aprėpties analizės. Idealiu atveju pragma turėtų būti pridėta pradžioje file pašalinti tą visą file iš aprėpties analizės. Arba _atributas_ ((nocodecov)) gali būti naudojamas norint neįtraukti konkrečių funkcijų iš aprėpties analizės.
Įrenginio aprašymas files Naujas įrenginys file vadinamas avr_chipinfo.html yra dokumentų kataloge

kompiliatoriaus paskirstymas. Tai file išvardija visus įrenginius, kuriuos palaiko kompiliatorius. Spustelėkite įrenginio pavadinimą ir bus atidarytas puslapis, kuriame bus rodomos visos to įrenginio leistinos konfigūracijos bitų nustatymų / reikšmių poros, pvz.amples.

Procedūrinė abstrakcija Į kompiliatorių buvo įtrauktas procedūrinis abstrakcijos optimizavimas, kuris pakeičia įprastus surinkimo kodo blokus iškvietimais į ištrauktą to bloko kopiją. Tai atlieka atskira programa, kurią automatiškai iškviečia kompiliatorius, pasirinkdamas 2, 3 arba s optimizavimus. Šie optimizavimai sumažina kodo dydį, tačiau gali sumažinti vykdymo greitį ir kodo derinimo galimybes.
Procedūrinę abstrakciją galima išjungti aukštesniuose optimizavimo lygiuose naudojant parinktį -mno-pa arba įjungti žemesniuose optimizavimo lygiuose (pagal jūsų licenciją) naudojant -mpa. Jis gali būti išjungtas objektui file naudojant -mno-pa-on-f ile=filepavadinimas arba išjungta funkcijai naudojant -mno-pa-onfunotion=f uncija.
Šaltinio kode funkcijos procedūrinė abstrakcija gali būti išjungta naudojant atributą_ ( (nopa) ) su funkcijos apibrėžimu arba naudojant nopa, kuris išplečiamas iki _attribute_ ( (nopa, noinline) ) ir taip neleidžiama atlikti funkcijos įtraukimo. ir yra įtraukto kodo abstrakcija.
Užrakto antgalių atrama pragma #pragma konfigūracija dabar gali būti naudojama norint nurodyti AVR užrakto bitus ir kitus konfigūracijos bitus. Patikrinkite avr_chipinfo.html file (minėta aukščiau), kad nustatytumėte / reikšmes poras, kurios bus naudojamos su šia pragma.
Nauja įrenginio palaikymas Galimas šių dalių palaikymas: AVR28DAl28, AVR64DAl28, AVR32DAl28 ir AVR48DAl28.

3.11. 2.05 versija
Daugiau bitų už jūsų pinigus Šio kompiliatoriaus ir licencijų tvarkyklės „macOS“ versija dabar yra 64 bitų programa. Tai užtikrins, kad kompiliatorius bus įdiegtas ir veiks be įspėjimų naujausiose „MacOS“ versijose.
Const objektai programos atmintyje Dabar kompiliatorius gali įdėti const kvalifikuotus objektus į programos „Flash“ atmintį, o ne turėti juos RAM. Kompiliatorius buvo modifikuotas taip, kad „cons t“ kvalifikuoti pasauliniai duomenys būtų saugomi programos „flash“ atmintyje ir šiuos duomenis būtų galima tiesiogiai ir netiesiogiai pasiekti naudojant atitinkamas programos atminties instrukcijas. Ši nauja funkcija įjungta pagal numatytuosius nustatymus, tačiau ją galima išjungti naudojant parinktį -mno-const-data-in-progmem. Avrxmega3 ir avrtiny architektūroms ši funkcija nereikalinga ir visada išjungta, nes programos atmintis yra susieta su šių įrenginių duomenų adresų erdve.
Standartas nemokamai Nelicencijuotos (nemokamos) šio kompiliatoriaus versijos dabar leidžia optimizuoti iki 2 lygio imtinai. Tai leis gauti panašų, nors ir ne identišką, išvestį, kaip anksčiau buvo galima naudojant standartinę licenciją.
Sveiki atvykę į AVRASM2 2 bitų įrenginių AVRASM8 surinkėjas dabar įtrauktas į XC8 kompiliatoriaus diegimo programą. Šis surinkėjas nenaudojamas XC8 kompiliatoriuje, bet yra prieinamas projektams, pagrįstiems ranka rašytu surinkimo šaltiniu.
Nauja įrenginio palaikymas Galimas šių dalių palaikymas: ATMEGA1608, ATMEGA 1609, ATMEGA808 ir ATMEGA809.

3.12. 2.00 versija
Aukščiausio lygio vairuotojas Nauja tvarkyklė, vadinama xc8 -cc, dabar yra virš ankstesnės avr-gcc tvarkyklės ir xc8 tvarkyklės ir gali iškviesti atitinkamą kompiliatorių pagal tikslinio įrenginio pasirinkimą. Ši tvarkyklė priima GCC stiliaus parinktis, kurios yra išverstos arba perduodamos vykdomam kompiliatoriui. Ši tvarkyklė leidžia naudoti panašų parinkčių rinkinį su panašia semantika su bet kokiu AVR arba PIC tikslu, todėl yra rekomenduojamas būdas iškviesti kompiliatorių. Jei reikia, seną avr-gcc tvarkyklę galima iškviesti tiesiogiai naudojant senojo stiliaus parinktis, kurias ji priėmė ankstesnėse kompiliatoriaus versijose.
Bendra C sąsaja Šis kompiliatorius dabar gali atitikti MPLAB bendrąją C sąsają, todėl šaltinio kodą lengviau perkelti į visus MPLAB XC kompiliatorius. Parinktis -mext=cci reikalauja šios funkcijos, įgalindama alternatyvią daugelio kalbų plėtinių sintaksę.
Naujasis bibliotekininkas vairuotojas A naujas bibliotekininkas vairuotojas yra aukščiau nei ankstesnis PIC bibliotekininkas ir AVR avr-ar bibliotekininkas. Ši tvarkyklė priima GCC archyvatoriaus stiliaus parinktis, kurios yra išverstos arba perduodamos vykdomam bibliotekininkui. Naujoji tvarkyklė leidžia naudoti panašų parinkčių rinkinį su panašia semantika kuriant ar manipuliuojant bet kokia PIC arba AVR biblioteka file ir todėl yra rekomenduojamas būdas kreiptis į bibliotekininką. Jei reikia seniems projektams, ankstesnį bibliotekininką galima iškviesti tiesiogiai naudojant senojo stiliaus parinktis, kurias jis priėmė ankstesnėse kompiliatoriaus versijose.

Migracijos problemos

Toliau pateikiamos funkcijos, kurias dabar kompiliatorius tvarko skirtingai. Dėl šių pakeitimų gali tekti pakeisti šaltinio kodą, jei kodą perkeliate į šią kompiliatoriaus versiją. Versijos numeris paantraštėse nurodo pirmąją kompiliatoriaus versiją, kuri palaiko tolesnius pakeitimus.

4.1. 2.39 versija (funkcinės saugos leidimas)
Nėra.
4.2. 2.36 versija Nėra.
4.3. Versija 2.35
Eilučių į bazes tvarkymas (XC8-2420) Siekiant užtikrinti suderinamumą su kitais XC kompiliatoriais, XC8 eilučių į funkcijos, pvz., strtol () ir kt., nebebandys konvertuoti įvesties eilutės, jei nurodyta bazė yra didesnė nei 36, ir vietoj to nustatys errno į EINVAL. C standartas nenurodo elgesio funkcijos, kai ši bazinė vertė viršijama.
Netinkamas greičio optimizavimas Pasirinkus 3 lygio optimizavimą (-03) buvo įjungtas procedūrinis abstrakcijos optimizavimas. Šie optimizavimai sumažina kodo dydį kodo greičio sąskaita, todėl neturėjo būti atliekami. Projektuose, kuriuose naudojamas šis optimizavimo lygis, gali skirtis kodo dydis ir vykdymo greitis, kai jie sukurti naudojant šį leidimą.
Bibliotekos funkcionalumas Daugelio standartinių C bibliotekos funkcijų kodas dabar gaunamas iš Microchip Unified Standard Library, kuri tam tikromis aplinkybėmis gali elgtis kitaip, palyginti su buvusia avr-libc biblioteka. Pavyzdžiui,ample, nebereikia susieti 1printf flt bibliotekoje (-1printf_flt parinktis), kad įjungtumėte suformatuoto I0 palaikymą slankiojo formato specifikatoriams. Dėl 10 išmaniųjų „Microchip Unified Standard Library“ funkcijų ši parinktis yra nereikalinga. Be to, eilučių ir atminties funkcijoms (pvz., strcpy_P ( ) ir t. t.), kurios veikia su const eilutėmis, nebereikia naudoti _P. Standartinės C procedūros (pvz., strcpy 0 ) tinkamai veiks su tokiais duomenimis, kai įjungta const-data-in-program-memory funkcija.

4.4. 2.32 versija
Nėra.
4.5. 2.31 versija
Nėra.
4.6. 2.30 versija
Nėra.
4.1. 2.29 versija (funkcinės saugos leidimas)
Nėra.
4.2. 2.20 versija
Pakeistas DFP išdėstymas Kompiliatorius dabar naudoja kitokį DFP (įrenginių šeimos paketų) naudojamą išdėstymą. Tai reikš, kad senesnis DFP gali neveikti su šiuo leidimu, o senesni kompiliatoriai negalės naudoti naujausių DFP.

4.3. 2.19 versija (funkcinės saugos leidimas)
Nėra.
4.4. 2.10 versija Nėra
4.5. 2.05 versija
Const objektai programos atmintyje Atminkite, kad pagal numatytuosius nustatymus const kvalifikuoti objektai bus patalpinti ir pasiekiami programos atmintyje (kaip aprašyta jos). Tai turės įtakos jūsų projekto dydžiui ir vykdymo greičiui, tačiau turėtų sumažinti RAM naudojimą. Jei reikia, šią funkciją galima išjungti naudojant parinktį -mnocons t-data-in-pr ogmem.

4.6. 2.00 versija
Konfigūracijos saugikliai Dabar įrenginio konfigūracijos saugiklius galima užprogramuoti naudojant konfigūracijos pragma, po kurios pateikiamos nustatymo-reikšmių poros, kad būtų nurodyta saugiklio būsena, pvz., #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
Absoliutūs objektai ir funkcijos Objektai ir funkcijos dabar gali būti dedami į atmintį tam tikru adresu naudojant CCI _at (adresas) specifikatorius, pvzampLe:
jei apima
int foobar adresu (0)0300100);
char at(0x250) getID(int offset) ( Šio specifikatoriaus argumentas turi būti konstanta, nurodanti adresą, kuriame bus įdėtas pirmasis baitas arba komanda. RAM adresai nurodomi naudojant poslinkį Ox800000. Įgalinkite CCI, kad naudoti šią funkciją.
Nauja pertraukimo funkcijos sintaksė Kompiliatorius dabar priima CCI _pertraukimą (nr) specifikatorius, nurodantis, kad C funkcijos yra pertraukimų tvarkyklės. Specifikacija paima pertraukimo skaičių, pvzampLe:

Išspręstos problemos

Toliau pateikiami kompiliatoriaus pataisymai. Tai gali ištaisyti sugeneruoto kodo klaidas arba pakeisti kompiliatoriaus veikimą į tą, kuris buvo numatytas arba nurodytas vartotojo vadove. Versijos numeris paantraštėse nurodo pirmąją kompiliatoriaus versiją, kurioje yra tolesnių problemų pataisymai. Pavadinime esanti (-ės) etiketė (-ės) skliausteliuose yra šios problemos identifikavimas stebėjimo duomenų bazėje. Tai gali būti naudinga, jei reikia susisiekti su palaikymo tarnyba.
Atminkite, kad kai kurios su įrenginiu susijusios problemos yra ištaisytos „Device Family Pack“ (DR)), susietas su įrenginiu. Norėdami gauti informacijos apie DFP pakeitimus ir atsisiųsti naujausius paketus, žr. MPLAB paketų tvarkytuvę.

5.1. 2.39 versija (funkcinės saugos leidimas)
Nėra.
5.2. 2.36 versija
Klaida vėluojant (XCS2774) Nedideli numatytųjų laisvojo režimo optimizavimo pakeitimai neleido nuolat sulankstyti operandų išraiškų į įtaisytąsias delsos funkcijas, todėl jos buvo traktuojamos kaip nepastovios ir sukėlė klaidą. built in_avr_delay_cycles tikisi kompiliavimo laiko konstantos.

5.3. 2.35 versija
Gretima paskirstymas naudojant _at (XCS2653) Gretimas kelių objektų vietų paskirstymas skyriuje tuo pačiu pavadinimu ir naudojant _at () neveikė tinkamai. Pavyzdžiui,ampLe:
const char arrl[ ] atributas (section(.mysec) at (0x500) = (OxAB, OxCD);
const char arr2[ ] atributas (sectionr.mysec)= (OxEF, OxFE);
turėjo įdėti arr2 iš karto po arri.
Nurodykite skyriaus pradžios adresus (XCS2650) -wl, -section-start parinktis tyliai nesugebėjo patalpinti sekcijų nurodytu pradžios adresu. Ši problema buvo išspręsta bet kokioms pasirinktinio pavadinimo sekcijoms; tačiau jis neveiks jokiems standartiniams skyriams, pvz., . tekstas arba . bss, kurį reikia įdėti naudojant a -wl, -T variantas.
Linker sugenda atsipalaiduojant (XCS2647) Kada buvo įjungtas -mrelax optimizavimas ir tai buvo kodo ar duomenų sekcijos, kurios netilpo į turimą atmintį, linkeris sugedo. Dabar tokiomis aplinkybėmis vietoj to pateikiami klaidų pranešimai.
Ne nekrintantisatgal (XCS2646) – „nofallback“ parinktis nebuvo tinkamai įdiegta ar dokumentuota. Dabar tai galima pasirinkti siekiant užtikrinti, kad kompiliatorius negrįžtų į žemesnį optimizavimo parametrą, jei kompiliatorius yra nelicencijuotas, o vietoj to išduos klaidą.
Netinkamas greičio optimizavimas (XCS2637) Pasirinkus 3 lygio optimizavimą (-03) buvo įjungtas procedūrinis abstrakcijos optimizavimas. Šie optimizavimai sumažina kodo dydį kodo greičio sąskaita, todėl neturėjo būti atliekami.
Bloga EEPROM prieiga (XCS2629) eeprom_read_block rutina netinkamai veikė Xmega įrenginiuose, kai buvo įjungta parinktis -mconst-data-in-progmem (tai yra numatytoji būsena), todėl EEPROM atmintis nebuvo nuskaitoma tinkamai.
Neteisingas atminties paskirstymas (X03-2593, XC8-2651) Kada parinktis -Ttext arba -Tdata linker (pvz.,ampnurodytas le, perduotas naudojant -wl tvarkyklės parinktį), buvo atnaujinta atitinkama teksto / duomenų srities kilmė; tačiau galutinis adresas nebuvo atitinkamai pakoreguotas, todėl regionas galėjo viršyti tikslinio įrenginio atminties diapazoną.
Strigtis su per daug priskirta funkcija (XC8-2580) Kompiliatorius sugedo, jei funkcija buvo paskelbta naudojant daugiau nei vieną pertraukimo, signalo arba nmi atributą, pvz., _attribute_ ( ( signalas , pertraukimas ) ).
Neteisingas ATtiny pertraukimo kodas (XC8-2465) Kuriant ATtiny įrenginiams ir išjungus optimizavimą (-00), pertraukimo funkcijos galėjo suaktyvinti operando už diapazono surinkėjo pranešimus.
Neperduodamos parinktys (XC8-2452) Kai naudojate -wl parinktis su keliomis kableliais atskirtomis nuorodų parinktimis, ne visos nuorodų parinktys buvo perduotos susiejimo programai.
Klaida netiesiogiai nuskaitant programos atmintį (X03-2450) Kai kuriais atvejais kompiliatorius sukūrė vidinė klaida (neatpažįstama insn), kai nuskaitoma dviejų baitų reikšmė iš rodyklės į programos atmintį

5.4. 2.32 versija
Antroji prieiga prie bibliotekos nepavyksta (X03-2381) Antrą kartą iškvietus xc8-ar.exe bibliotekos archyvo Windows versiją, kad būtų pasiektas esamas bibliotekos archyvas, gali nepavykti gauti klaidos pranešimo, kad nepavyko pervardyti.

5.5. 2.31 versija
Nepaaiškinamas kompiliatoriaus gedimai (XC8-2367) Kai bėga toliau Windows platformos, kuriose laikinajame sistemos kataloge buvo nustatytas kelias, kuriame yra taškas „. simbolį, kompiliatoriui galėjo nepavykti įvykdyti.

5.6. 2.30 versija
Pasaulinės etiketės netinkamai išdėstytos po kontūro (XC8-2299) Ranka rašytas surinkimo kodas, kuriame pateikiamas pasaulinis etikečių surinkimo sekose, kurios buvo išskirtos taikant procedūrinę abstrakciją, padėtis gali būti netinkamai pakeista.
Atpalaiduojanti avarija (XC8-2287) Naudojant - atsipalaiduok Gali būti, kad nuoroda gali sugesti, kai uodegos šuolio atsipalaidavimo optimizavimas bandė pašalinti ret instrukcijas, kurios nebuvo a pabaigoje skyrių.
Strigta optimizuojant etiketes kaip vertes (XC8-2282) Kodas naudojant „Etiketės kaip vertes“ GNU C Kalbos plėtinys galėjo sukelti procedūrinės abstrakcijos optimizavimo strigtį, o taisymo klaidą ištraukė VMA diapazonas.
Ne taip const (XC8-2271) Prototipai, skirti strstr () ir kitos funkcijos iš nebenurodykite nestandartinio const kvalifikatoriaus grąžintose eilutės rodyklėse, kai funkcija -mconst-data- inprogmem išjungta. Atminkite, kad naudojant avrxmega3 ir avrtiny įrenginius ši funkcija įjungta visam laikui.
Prarasti inicializatoriai (XC8-2269) Kai vertime yra daugiau nei vienas kintamasis įrenginys buvo patalpintas į sekciją (naudojant skyrių or atributas ( (skyrius) )), o pirmasis toks kintamasis buvo inicijuotas nuliui arba jis neturėjo inicijavimo, buvo prarasti kitų tame pačiame vertimo vienete esančių kintamųjų iniciatoriai, kurie buvo patalpinti į tą pačią sekciją.

5.1. 2.2 versija 9 (Funkcinės saugos leidimas) Nėra. 
5.2. 2.20 versija
Klaida su ilgomis komandomis (XC8-1983) Naudojant AVR taikinį, kompiliatorius galėjo sustoti su klaidos nerasta klaida, jei komandų eilutė buvo labai didelė ir joje buvo specialių simbolių, tokių kaip kabutės, pasvirieji brūkšniai ir kt.
Nepriskirta rodata sekcija (XC8-1920) Kuriant avrxmega3 ir avrtiny architektūrai AVR linker nepavyko priskirti atminties priskirtoms rodata sekcijoms, todėl gali atsirasti atminties persidengimo klaidų.

5.3. 2.19 versija (funkcinės saugos leidimas)
Nėra.
5.4. 2.10 versija
Perkėlimo gedimai (XC8-1891) Geriausiai pritaikytas skirstytuvas paliko atminties „skyles“ tarp sekcijų po jungties atpalaidavimo. Be atminties suskaidymo, tai padidino tikimybę, kad bus perkeltos sąsajos gedimai, susiję su kompiuterio santykiniais šuoliais arba skambučiais, patenkančiais už diapazono ribų.
Instrukcijos, nepakeistos atsipalaidavimo būdu (XC8-1889) Linkerio atsipalaidavimas neįvyko šuolio ar skambučio instrukcijoms, kurių taikiniai tampa pasiekiami atsipalaidavus.
Dingęs funkcionalumas (XC8E-3 ) Keletas apibrėžimų iš , pvz., clock_div_t ir clock_presc ale_s et () , nebuvo apibrėžti įrenginiams, įskaitant ATmega324PB, ATmega328PB, ATtiny441 ir ATtiny841.
Trūksta makrokomandų Kompiliatorius automatiškai neapibrėžė išankstinio procesoriaus makrokomandų _XC 8_MODE_, XC 8 VERS ION, XC ir xc8. Šie dabar yra prieinami.

5.5. 2.05 versija
Vidinė kompiliatoriaus klaida (XC8-1822) Kuriant sistemoje Windows, optimizuojant kodą galėjo atsirasti vidinė kompiliatoriaus klaida.
RAM perpildymas neaptiktas (XC8-1800, XC8-1796) Programų, kurios viršijo turimą RAM, kai kuriais atvejais kompiliatorius neaptiko, todėl įvyko vykdymo kodo gedimas.
Praleista „flash“ atmintis (XC8-1792) „Avrxmega3“ ir „avrtiny“ įrenginiuose dalis „flash“ atminties galėjo būti neužprogramuota MPLAB X IDE.
Nepavyko vykdyti pagrindinio (XC8-1788) Kai kuriose situacijose, kai programa neapibrėžė visuotinių kintamųjų, vykdymo laiko paleisties kodas nebuvo išjungtas ir pagrindinė () funkcija niekada nebuvo pasiekta.
Neteisinga atminties informacija (XC8-1787) „Avrxmega3“ ir „avrtiny“ įrenginiams „avr-size“ programa pranešdavo, kad tik beprotiški duomenys naudoja RAM, o ne programos atmintį.
Neteisingas programos atminties skaitymas (XC8-1783) Projektai, sudaryti įrenginiams su programos atmintimi, susieta su duomenų adresų erdve ir apibrėžiančius objektus naudojant PROGMEM makrokomandą / atributą, galėjo nuskaityti šiuos objektus iš netinkamo adreso.
Vidinė atributų klaida (XC8-1773) Įvyko vidinė klaida, jei apibrėžėte rodyklės objektus su _at 0 arba atribu() žetonais tarp žymeklio pavadinimo ir nuorodos tipo, pvz.ample, char * _at (0x800150) cp; Aptikus tokį kodą, dabar pateikiamas įspėjimas.

Nepavyko vykdyti pagrindinio (XC8-1780, XC8-1767, XC8-1754) Naudojant EEPROM kintamuosius arba apibrėžiant saugiklius naudojant konfigūracijos pragma, galėjo būti neteisingai inicijuojami duomenys ir (arba) užblokuotas programos vykdymas vykdymo laiko paleisties kode, prieš pasiekiant pagrindinį 0.

Saugiklio klaida naudojant mažus įrenginius (XC8-1778, XC8-1742) Attiny4/5/9/10120140 įrenginių antraštėje nurodytas neteisingas saugiklio ilgis files, dėl kurių atsiranda linkerio klaidų bandant sukurti kodą, apibrėžiantį saugiklius.

Segmentavimo klaida (XC8-1777) Protarpinis segmentavimo gedimas buvo ištaisytas.

Assembler avarija (XC8-1761) Avr -as surinkėjas galėjo sugesti, kai kompiliatorius buvo paleistas naudojant Ubuntu 18.

Objektai neišvalyti (XC8-1752) Neinicializuoti statinės saugojimo trukmės objektai galėjo būti neišvalyti vykdymo laiko paleisties kodu.

Nepaisoma nesuderinamų įrenginio specifikacijų (XC8-1749) Kompiliatorius nesukūrė klaidos, kai buvo naudojamos kelios įrenginio specifikacijos parinktys ir buvo nurodyti skirtingi įrenginiai.

Atminties sugadinimas krūva (XC8-1748) _heap_start simbolis buvo nustatytas neteisingai, todėl gali būti, kad krūva sugadins įprastus kintamuosius.

Linker perkėlimo klaida (XC8-1739) Susiejimo priemonės perkėlimo klaida galėjo atsirasti, kai kode buvo „rjmn“ arba „rccall“, kurio tikslas yra tiksliai 4 XNUMX baitų atstumu.

5.6. 2.00 versija Nėra.

Žinomos problemos

Toliau pateikiami kompiliatoriaus veikimo apribojimai. Tai gali būti bendrieji kodavimo apribojimai arba nukrypimai nuo vartotojo vadove pateiktos informacijos. Skliausteliuose pateikta (-os) etiketė (-ės) potvynyje yra problemos identifikavimas stebėjimo duomenų bazėje. Tai gali būti naudinga, jei reikia susisiekti su palaikymo tarnyba. Tie elementai, kurie neturi etikečių, yra apribojimai, apibūdinantys veikimo būdą ir kurie gali likti galioti visam laikui.
6.1. MPLAB X IDE Integracija
MPLAB IDE integracija Jei kompiliatorius turi būti naudojamas iš MPLAB IDE, prieš diegdami kompiliatorių turite įdiegti MPLAB IDE.
6.2. Kodo generavimas
Neteisinga inicijavimas (XC8-2679) Egzistuoja neatitikimas tarp to, kur kai kurių visuotinių / statinių baitų dydžio objektų pradinės reikšmės dedamos į duomenų atmintį ir kur kintamieji bus pasiekiami vykdymo metu.
„strtod“ neteisingai nustato endptr (XC8-2652) Tais atvejais, kai temos eilutėje, skirtoje konvertuoti naudojant strtod () yra tai, kas atrodo kaip slankiojo kablelio skaičius eksponentiniu formatu, o po e simbolio yra netikėtas simbolis, endptr adresas, jei nurodytas, nurodys simbolį po e, o ne pats e. Pavyzdžiui,ample: strtod („100exy“, endptr);

baigsis endptr, nukreipiantis į x simbolį.

Blogi netiesioginiai funkcijų iškvietimai (X03-2628) Kai kuriais atvejais funkcijų iškvietimas naudojant funkcijos žymeklį, saugomą kaip struktūros dalis, gali nepavykti.

strtof grąžina nulį šešioliktainei slankiojimai sistemai (XC8-2626) Bibliotekos funkcijos strtof () et al ir scanf () et al visada konvertuos šešioliktainį slankiojo kablelio skaičių, nenurodantį eksponento į nulį. Pavyzdžiui,ample: strtof („Oxl“, &endptr) ; grąžins reikšmę 0, o ne 1.
Netikslūs dėklo patarėjo pranešimai (XC8-2542, XC8-2541) Kai kuriais atvejais dėklo patarėjo įspėjimas apie naudojamą rekursiją arba neapibrėžtą krūvą (galbūt naudojant alloca()) neskleistas.
Gedimas naudojant pasikartojantį pertraukimo kodą (XC8-2421) Jei daugiau nei viena pertraukimo funkcija turi tą patį pagrindą, kompiliatorius gali turėti vienos pertraukimo funkcijos išvestį iškviesti kitą. Dėl to visi skambučių užblokuoti registrai bus be reikalo išsaugomi, o pertraukimai bus įjungti dar prieš paleidžiant dabartinės pertraukimų tvarkyklės epilogą, o tai gali sukelti kodo gedimą.
Const objektai, kurių nėra programos atmintyje (XC8-2408) Avrxmega3 ir avrtiny projektuose unitializuoti const objektai įdedami į duomenų atmintį, nors įspėjimas rodo, kad jie buvo patalpinti į programos atmintį. Tai neturės įtakos įrenginiams, kurių programinė atmintis nėra susieta su duomenų atminties erdve, taip pat neturės įtakos jokiam inicijuotam objektui.
Bloga išvestis su netinkamu DFP keliu (XCS-2376) Jei kompiliatorius iškviečiamas naudojant netinkamą DFP kelią ir „specifikaciją“ file yra pasirinktam įrenginiui, kompiliatorius nepraneša apie trūkstamą įrenginio šeimos paketą ir vietoj to pasirenka „specifikaciją“ file, o tai gali sukelti netinkamą išvestį. „Spec.“ files gali būti neatnaujintos paskirstytų DFP ir buvo skirtos naudoti tik atliekant vidinio kompiliatoriaus testavimą.
Atminties persidengimas neaptiktas (XC8-1966) Kompiliatorius neaptinka objektų, suabsoliutuotų adresu (per _at 0), ir kitų objektų, naudojančių _, atminties persidengimosektaion () specifikaciją ir kurios yra susietos su tuo pačiu adresu.
Bibliotekos funkcijų ir _memx (XC8-1763) gedimas Iškviestos libgcc float funkcijos su argumentu _memx adresų erdvėje gali nepavykti. Atminkite, kad bibliotekos rutinos iškviečiamos iš kai kurių C operatorių, taigi, pvzample, paveikiamas šis kodas: return regFloatVar > memxFloatVar;
Ribotas libgcc diegimas (AVRTC-731) Skirta ATTiny4/5/9/10/20/40 produktų, standartinės C / Math bibliotekos įgyvendinimas libgcc yra labai ribotas arba jo nėra.
Programos atminties apribojimai (AVRTC-732) Programos atminties vaizdus, ​​kurių dydis viršija 128 kb, palaiko įrankių grandinė; tačiau yra žinomi atvejai, kai susiejimo priemonė nutrūksta neatsipalaiduojant ir nepateikus naudingo klaidos pranešimo, o ne generuojant reikalingus funkcijos stubus, kai naudojama parinktis -mrelax.
Vardų erdvės apribojimai (AVRTC-733) Įrankių grandinė palaiko pavadintas adresų erdves, atsižvelgiant į apribojimus, nurodytus vartotojo vadovo skyriuje Specialiųjų tipų kvalifikatoriai.
Laiko juostos The bibliotekos funkcijos prisiima GMT ir nepalaiko vietinių laiko juostų, todėl loka Itime 0 grąžins tą patį laiką kaip gmtime ( ), pvz.ample.

Dokumentai / Ištekliai

MICROCHIP MPLAB XC8 C kompiliatoriaus 2.39 versijos AVR MCU išleidimo pastabos [pdfVartotojo vadovas
MPLAB XC8 C kompiliatoriaus 2.39 versijos leidimo pastabos, skirtos AVR MCU, MPLAB XC8 C, kompiliatoriaus 2.39 versijos AVR MCU laidos pastabos, AVR MCU išleidimo pastabos
MICROCHIP MPLAB XC8 C kompiliatoriaus 2.39 versijos AVR MCU išleidimo pastabos [pdfVartotojo vadovas
MPLAB XC8 C kompiliatoriaus 2.39 versijos leidimo pastabos, skirtos AVR MCU, MPLAB XC8 C, kompiliatoriaus versijos 2.39 leidimo pastabos, skirtos AVR MCU, pastabos AVR MCU
MICROCHIP MPLAB XC8 C kompiliatorius [pdfVartotojo vadovas
MPLAB XC8 C kompiliatorius, MPLAB XC8 C, kompiliatorius

Nuorodos

Palikite komentarą

Jūsų el. pašto adresas nebus skelbiamas. Privalomi laukai pažymėti *