MICROCHIP MPLAB XC8 C kompiliatoriaus programinė įranga
Š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
Įvadas
Šiame Microchip MPLAB® XC8 C kompiliatoriaus leidime yra keletas naujų funkcijų, klaidų pataisymų ir naujo įrenginio palaikymas.
Sukūrimo data
Oficiali šios kompiliatoriaus versijos sukūrimo data yra 3 m. liepos 2022 d.
Ankstesnė versija
Ankstesnė MPLAB XC8 C kompiliatoriaus versija buvo 2.39, funkcinės saugos kompiliatorius, sukurtas 27 m. sausio 2022 d. Ankstesnis standartinis kompiliatorius buvo 2.36 versija, sukurta 27 m. sausio 2022 d.
Funkcinės saugos vadovas
MPLAB XC kompiliatorių funkcinės saugos vadovą rasite dokumentų pakete, kai įsigyjate funkcinės saugos licenciją.
Komponentų licencijos ir versijos
MPLAB® XC8 C kompiliatorius, skirtas AVR MCU įrankiams, yra parašytas ir platinamas 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 file pavadintas yra jūsų diegimo katalogo pakatalogis. Bendrą GPL principų aptarimą rasite čia. Palaikymo kodas pateiktas antraštei files, nuorodų scenarijai ir vykdymo laiko bibliotekos yra patentuotas kodas ir jiems netaikomas GPL.
Šis kompiliatorius yra GCC 5.4.0 versijos, binutils 2.26 versijos ir naudoja 2.0.0 versiją avr-libc.
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. „Mac OS“ 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.
Palaikomi įrenginiai
Šis kompiliatorius palaiko visus 8 bitų AVR MCU įrenginius, žinomus išleidimo metu. Visų palaikomų įrenginių sąrašą žr. (kompiliatoriaus dokumentų kataloge). Šie files taip pat pateikia kiekvieno įrenginio konfigūracijos bitų nustatymus.
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 kompiliatoriaus leidimas 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).
Montavimas 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 .exe (Windows), .run (Linux) arba programos (macOS) kompiliatoriaus diegimo programą, pvz., XC8-1.00.11403-windows.exe ir vykdykite ekrane pateikiamas instrukcijas.
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šį.
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 file, pasirinkite Ypatybės, skirtuką Sauga, pasirinkite vartotoją, redaguokite.)
- Nustatykite laikinojo aplanko leidimus į „Visa kontrolė!
Norėdami nustatyti laikinojo aplanko vietą, komandoje Vykdyti įveskite %temp% („Windows“ logotipo klavišas + R). Tai atvers a file naršyklės dialogo langas, rodantis tą katalogą, ir leis jums nustatyti to aplanko kelią.
Kompiliatoriaus dokumentacija
Kompiliatoriaus 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 vadove, skirtame AVR® MCU, pateikiama informacija apie tas kompiliatoriaus parinktis ir funkcijas, kurios tinka šiai architektūrai.
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 internetinėje techninėje dokumentacijoje websvetainę.
Nauja arba atnaujinta AVR dokumentacija šioje laidoje:
- MUSL autorių teisių įspėjimas
- MPLAB XC C kompiliatorių diegimas ir licencijavimas (M versija)
- MPLAB XC8 vartotojo vadovas įterptiesiems inžinieriams – AVR MCU (A versija)
- MPLAB XC8 C kompiliatoriaus vartotojo vadovas, skirtas AVR MCU (F versija)
- „Microchip Unified Standard Library“ informacinis vadovas (B versija)
„Microchip Unified Standard Library“ informaciniame vadove aprašoma „Microchip Unified Standard Library“ apibrėžtų funkcijų veikimas ir sąsaja su jomis, taip pat numatomas bibliotekos tipų ir makrokomandų naudojimas. Dalis šios informacijos anksčiau buvo pateikta MPLAB® XC8 C kompiliatoriaus vartotojo vadove, skirtame AVR® MCU. Šiame kompiliatoriaus vadove vis dar yra informacija apie konkretų įrenginį.
Jei tik pradedate naudoti 8 bitų įrenginius ir MPLAB XC8 C kompiliatorių, MPLAB® XC8 vartotojo vadove įterptiesiems inžinieriams – AVR® MCU (DS50003108) yra informacijos apie projektų nustatymą MPLAB X IDE ir kodo rašymą. pirmajam MPLAB XC8 C projektui. Šis vadovas dabar platinamas kartu su kompiliatoriumi.
„Hamate“ vartotojo vadovas buvo įtrauktas į šio leidimo dokumentų katalogą. Šis vadovas skirtas tiems, kurie naudoja Hamate kaip atskirą programą.
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.
2.40 versija
Naujo įrenginio palaikymas Dabar galimas šių AVR dalių palaikymas: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32, A64EA48EAXNUMX, AVRXNUMX.
Patobulinta procedūrinė abstrakcija Procedūrinės abstrakcijos (PA) optimizavimo įrankis buvo patobulintas, kad būtų galima apibūdinti kodą, kuriame yra funkcijos iškvietimo instrukcija (skambučių atšaukimas)). Tai įvyks tik tuo atveju, jei kaminas nebus naudojamas argumentams perduoti ar funkcijos grąžinimo vertei gauti. Stackas naudojamas iškviečiant funkciją su kintamųjų argumentų sąrašu arba funkcijai, kuriai reikia daugiau argumentų, nei yra tam skirtų registrų. Šią funkciją galima išjungti naudojant parinktį monk-pa-outline-calls arba procedūrinę abstrakciją galima visiškai išjungti objektui file arba veikia naudojant -monk-pa-on-file ir -mo.-pa-on-function arba pasirinktinai naudojant nipa atributą (nipa specifier) su funkcijomis
Kodo aprėpties makrokomanda Kompiliatorius dabar apibrėžia makrokomandą __CODECOV, jei nurodyta tinkama mcodecov parinktis.
Atminties rezervavimo galimybė Dabar xc8-cc tvarkyklė priims parinktį -mreserve=space@start: end, kai kuria AVR taikinius. Ši parinktis rezervuoja nurodytą atminties diapazoną duomenų arba programos atminties erdvėje, neleidžiant nuorodai šioje srityje užpildyti kodo ar objektų.
Sumanesnis išmanusis IO Buvo atlikti keli „Smart IO“ funkcijų patobulinimai, įskaitant bendrus printf pagrindinio kodo patobulinimus, %n konversijos specifikatoriaus traktavimą kaip nepriklausomą variantą, „vararg pop“ rutinų susiejimą pagal poreikį, naudojant trumpesnius duomenų tipus, jei įmanoma IO funkcijos argumentams apdoroti. ir faktoringo bendrą lauko pločio ir tikslaus tvarkymo kodą. Tai gali žymiai sutaupyti kodo ir duomenų, taip pat padidinti IO vykdymo greitį.
2.39 versija (funkcinės saugos leidimas)
Tinklo serverio licencija Šis MPLAB XC8 funkcinės saugos kompiliatoriaus leidimas palaiko tinklo serverio licenciją.
2.36 versija
Nėra.
2.35 versija
Naujo įrenginio 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 Naujoji parinktis -mgas-isr-prologues valdo kontekstų niežėjimo kodą, sugeneruotą mažų pertraukimo paslaugų rutinoms. Įjungus šią funkciją, surinkėjas nuskaitys ISR ir išsaugos tik tuos naudotus registrus, jei reikia.
Konfigūruojamas blykstės žemėlapis 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. Nauja parinktis „mconst-data-in-config-mapped-proem“ gali būti naudojama, kad linkeris patalpintų visus kvalifikuotus duomenis į vieną 32k sekciją ir automatiškai inicijuotų atitinkamą SFR registrą, siekiant užtikrinti, kad šie duomenys būtų susieti su duomenų atminties erdve. , kur jis bus pasiekiamas efektyviau.
Mikroschemų vieningos standartinės bibliotekos Visi MPLAB XC kompiliatoriai dalinsis mikroschemų vieninga standartine biblioteka, kuri dabar pasiekiama su šiuo MPLAB XC8 leidimu. MPLAB® XC8 C kompiliatoriaus vartotojo vadove (arba AVR® MCU) nebėra šių standartinių funkcijų dokumentacijos. Šią informaciją dabar galite rasti „Microchip Unified Standard Library“ informaciniame vadove. Atminkite, kad kai kurios anksčiau avr-libc apibrėžtos funkcijos nebėra prieinamos. (Žr. biblioteką):'. funkcionalumas...)
Išmanusis IO Kaip dalis naujų suvienodintų bibliotekų, IO funkcijos spausdinimo ir nuskaitymo šeimose dabar yra sugeneruojamos kiekvienoje versijoje, atsižvelgiant į tai, kaip šios funkcijos naudojamos programoje. Tai gali žymiai sumažinti programos naudojamus išteklius.
Išmaniosios IO pagalbos parinktis Analizuodamas iškvietimus į išmaniąsias IO funkcijas (pvz., printf () arba scanf () ), kompiliatorius ne visada gali nustatyti iš formato eilutės arba iš argumentų padaryti išvadą, kokių konversijos specifikacijų reikia iškvietimui. Anksčiau kompiliatorius visada nedarė jokių prielaidų ir užtikrino, kad visiškai veikiančios IO funkcijos būtų susietos su galutiniu programos vaizdu. Pridėta nauja – msmart-io-format=fmt parinktis, kad vartotojas galėtų informuoti kompiliatorių apie konvertavimo specifikacijas, kurias naudoja išmaniosios IO funkcijos, kurių naudojimas yra dviprasmiškas, neleidžiant susieti pernelyg ilgų IO veiksmų. (Norėdami gauti daugiau informacijos, žr. Smart-io-format parinktį.)
Pasirinktinių skyrių įdėjimas Anksčiau parinktis -Wl, -section-start nurodytą sekciją patalpindavo 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 . duomenis, geriausiai tinkantis skirstytuvas vis tiek galės visiškai valdyti jų vietą, o parinktis neturės jokios įtakos. Naudokite parinktį -Wl, -Tsection=add, kaip aprašyta vartotojo vadove.
2.32 versija
Stack Guide 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 komandinės 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.
Naujų įrenginių palaikymas Galima įsigyti šioms AVR dalims: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64.
Atitraukto įrenginio palaikymo palaikymas nebepasiekiamas šioms AVR dalims: AVR16DA28, AVR16DA32 ir AVR16DA48.
2.31 versija
Nėra.
2.30 versija
Nauja parinktis užkirsti kelią duomenų inicijavimui Nauja -mno-data-ini t tvarkyklės parinktis neleidžia inicijuoti duomenų ir išvalyti bss skyrius. Jis veikia slopindamas do_ copy_ duomenų ir d o_ 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č -f sekcijos inkarus, kurie leidžia pasiekti statinius objektus, palyginti su vienu simboliu; -mpai derations=n, kuri leidžia pakeisti procedūrinių abstrakcijos iteracijų skaičių nuo numatytojo 2; ir -mpa- skambučio kaina - trumpasis skambutis, kuris atlieka agresyvesnę procedūrinę abstrakciją, tikėdamasis, kad susiejimo priemonė gali atpalaiduoti ilgus skambučius. Ši paskutinė parinktis gali padidinti kodo dydį, jei pagrindinės prielaidos nebus įgyvendintos.
Naujo įrenginio palaikymas Galimas šių AVR dalių palaikymas: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 ir AVR128DB64 ir AVRXNUMXDBXNUMX.
Ištraukto įrenginio palaikymas Palaikymas nebepasiekiamas šioms AVR dalims: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C ir 664251ATA.
2.29 versija (funkcinės saugos leidimas)
Antraštė file integruotiems kompiliatoriams Siekiant užtikrinti, kad kompiliatorius atitiktų kalbos specifikacijas, pvz., MISRA, antraštę file, kuris automatiškai įtraukiamas , buvo atnaujinta. Šioje antraštėje yra visų integruotų funkcijų prototipai, pvz., _buil tin _avrnop () ir _buil tin_ avr delay_ cycles () . Kai kurios integruotos gali būti nesuderinamos su MISRA; jų galima praleisti į kompiliatoriaus komandų eilutę įtraukus define _Xe_ STRICT_ MISRA. Integruotosios dalys ir jų deklaracijos buvo atnaujintos, kad būtų naudojami fiksuoto pločio tipai.
2.20 versija
Naujo įrenginio palaikymas Galimas šių AVR dalių palaikymas: ATTINY1624, ATTINY1626 ir ATTINY1627.
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ūrų 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ą.
2.19 versija (funkcinės saugos leidimas)
Nėra.
2.10 versija
Kodo aprėptis Šioje laidoje 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 mcodecov 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 ( (mcodecov) ) gali būti naudojamas norint neįtraukti konkrečios funkcijos iš aprėpties analizės.
Įrenginio aprašymas files Naujas prietaisas file vadinamas avr chipinfo. html yra kompiliatoriaus paskirstymo docs kataloge. 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 ar XNUMX lygio optimizavimą. Š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-file=filepavadinimą arba išjungti funkcijai naudojant funkciją -mno-pa on function=.
Šaltinio kode funkcijos procedūrinė abstrakcija gali būti išjungta naudojant _attribute_ ((nopa)) su funkcijos apibrėžimu arba naudojant _nopa, kuris išplečiamas iki atributo ((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 lusto informaciją. html file (minėta aukščiau), kad nustatytumėte / reikšmes poras, kurios bus naudojamos su šia pragma.
Naujo įrenginio palaikymas Galimas šių dalių palaikymas: AVR28DA128, AVR64DA128, AVR32DA128 ir AVR48DA128.
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 konst-kvalifikuoti pasauliniai duomenys būtų saugomi programos „flash“ atmintyje ir šie duomenys gali būti 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.
Naujo įrenginio palaikymas Galimas šių dalių palaikymas: ATMEGA1608, ATMEGA1609, ATMEGA808 ir ATMEGA809.
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ę.
Nauja bibliotekininkė vairuotoja Naujas bibliotekininko vairuotojas yra virš ankstesnio PIC bibliotekininko ir AVR avr-ar bibliotekininko. Š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.
2.40 versija
Nėra.
2.39 versija (funkcinės saugos leidimas)
Nėra.
2.36 versija
Nėra.
2.35 versija
Stygos į bazes tvarkymas (XCS-2420) Siekiant užtikrinti suderinamumą su kitais XC kompiliatoriais, XC8 eilutės į funkcijos funkcijos, pvz., strtol () ir kt., nebebandys konvertuoti įvesties eilutės, jei nurodyta bazė yra didesnė nei 36, o vietoj to nustatys errno į EINVAL. C standartas nenurodo funkcijų elgesio, 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 bibliotekoje lprintf_flt (parinktis -print _flt), kad įjungtumėte suformatuoto IO palaikymą slankiojo formato specifikatoriams. Išmaniosios „Microchip Unified Standard Library“ IO funkcijos daro šią parinktį nereikalingą. Be to, eilučių ir atminties funkcijoms (pvz., strcpy_P () ir tt .. ), kurios veikia su const eilutėmis Flash, nebereikia naudoti _p priesaginių eilučių. Standartinės C procedūros (pvz., strcpy ()) veiks tinkamai su tokiais duomenimis, kai įjungta const-data-in-program-memory funkcija.
2.32 versija
Nėra.
2.31 versija
Nėra.
2.30 versija
Nėra.
2.29 versija (funkcinės saugos leidimas)
Nėra.
2.20 versija
Pakeistas DFP išdėstymas Dabar kompiliatorius 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.
2.19 versija (funkcinės saugos leidimas)
Nėra.
2.10 versija
Nėra
2.05 versija
Const objektai programos atmintyje Atminkite, kad pagal numatytuosius nustatymus const kvalifikuoti objektai bus patalpinti ir pasiekiami programos atmintyje (kaip aprašyta čia) . 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į -mnoconst-da ta-in-progmem.
2.00 versija
Konfigūracijos saugikliai Įrenginio konfigūracijos saugiklius dabar galima užprogramuoti naudojant konfigūracijos pragma, po kurios pateikiamos nustatymo ir vertės poros, kad būtų nurodyta saugiklio būsena, pvz.
#pragma config WDT0N = NUSTATYTI
#pragma config B0DLEVEL = B0DLEVEL_4V3
Absoliutūs objektai ir funkcijos Dabar objektus ir funkcijas atmintyje galima įdėti konkrečiu adresu, naudojant CCI _at (adreso) specifikaciją, pvz.ample: #įtraukti int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Šio specifikatoriaus argumentas turi būti konstanta, nurodanti adresą, kuriame bus įdėtas pirmasis baitas arba instrukcija. RAM adresai nurodomi naudojant poslinkį 0x800000. Įgalinkite CCI, kad galėtumėte naudoti šią funkciją.
Nauja pertraukimo funkcijos sintaksė Dabar kompiliatorius priima CCI pertraukimo (skaičiaus) specifikaciją, nurodydamas, kad C funkcijos yra pertraukimų tvarkyklės. Specifikacija paima pertraukimo skaičių, pvzample: #įtraukti galiojantis pertraukimas (SPI STC_ vect _num) spi Isr(void) { … }
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 ištaisytos su įrenginiu susietame įrenginių šeimos pakete (DFP). Norėdami gauti informacijos apie DFP pakeitimus ir atsisiųsti naujausius paketus, žr. MPLAB paketų tvarkytuvę.
2.40 versija
Per daug atsipalaidavęs (XCS-2876) Naudodamas parinktį -mrelax, kompiliatorius kai kurių skyrių nepaskirstė kartu, todėl kodo dydžiai buvo ne tokie optimalūs. Tai galėjo nutikti naudojant kodą, kuriame buvo naudojamos naujos MUSL bibliotekos, arba su silpnais simboliais.
Atvaizdavimo funkcija neišjungta, kaip nurodyta įspėjime (XCS-2875) Kainos duomenų konfigūravimo funkcija „mappedprogmem“ priklauso nuo to, ar įgalinta funkcija „Kainos duomenys projekte“. Jei kaina-data-ipconfig-mapped-proem funkcija buvo aiškiai įjungta naudojant parinktį, o kaina-duomenų-inprogmem funkcija buvo išjungta, susiejimo veiksmas nepavyko, nepaisant įspėjimo pranešimo, kuriame teigiama, kad cons data-in-config-mapped- proem funkcija buvo automatiškai išjungta, o tai nebuvo visiškai teisinga. Šiuo atveju funkcija const-data-in-config-mapped-proem yra visiškai išjungta.
DFP pakeitimai, siekiant tinkamai pasiekti NVMCTRL (XCS-2848) Vykdymo laiko paleisties kodas, kurį naudoja AVR64EA įrenginiai, neatsižvelgė į tai, kad NVMCTRL registrui taikoma konfigūracijos keitimo apsauga (CCP), ir negalėjo nustatyti IO SFR į puslapį, kurį naudoja const-data-in configmapped-proem kompiliatorius. funkcija. Pakeitimai, atlikti AVR-Ex_DFP 2.2.55 versijoje, leis vykdymo laiko paleisties kodui teisingai įrašyti į šį registrą.
DFP pakeitimai, siekiant išvengti „Flash“ atvaizdavimo (XCS-2847) Įdiegtas AVR128DA28/32/48/64 Silicon Errata (DS80000882) aprašytos blykstės atvaizdavimo įrenginio funkcijos problemos sprendimas. Kompiliatoriaus const-data-in-config-mapped-proem funkcija paveiktiems įrenginiams nebus taikoma pagal numatytuosius nustatymus, o šis pakeitimas bus rodomas AVR-Ex_DFP 2.2.160 versijoje.
Sukūrimo klaida naudojant sinhf arba coshf (XCS-2834) Bandant naudoti sinhf () arba coshf () bibliotekos funkcijas, įvyko nuorodos klaida, apibūdinanti neapibrėžtą nuorodą. Trūkstamoji nurodyta funkcija dabar buvo įtraukta į kompiliatoriaus paskirstymą.
Sukūrimo klaidos naudojant nopa (XCS-2833) Atributo nopa naudojimas su funkcija, kurios surinkėjo pavadinimas nurodytas naudojant as () suaktyvintus klaidų pranešimus iš surinkėjo. Šis derinys neįmanomas.
Kintamosios funkcijos gedimas su rodyklės argumentais (XCS-2755, XCS-2731) Funkcijos su kintamu argumentų skaičiumi tikisi, kad kintamųjų argumentų sąraše bus perduotos 24 bitų (_memo tipo) rodyklės, kai įgalinta kainos duomenų projekte funkcija. Argumentai, kurie buvo rodyklės į duomenų atmintį, buvo perduodami kaip 16 bitų objektai, todėl galiausiai nuskaitant juos įvyko kodo gedimas. Kai įjungta „minusų duomenų in-proem“ funkcija, visi 16 bitų rodyklių argumentai dabar konvertuojami į 24 bitų rodykles. strtoxxx bibliotekos funkcijos sugenda (XCS-2620) Kai buvo įjungta const-data-in-proem funkcija, įvesties parametras strtoxxx bibliotekos funkcijose nebuvo tinkamai atnaujintas šaltinio eilutės argumentams, kurie nėra programos atmintyje.
Įspėjimai apie netinkamus išmetimus (XCS-2612) Kompiliatorius dabar išduos klaidą, jei įjungta „cook-in-proem“ funkcija, o eilutės literalo adresas yra aiškiai perduotas į duomenų adresų erdvę (atmetamas const kvalifikatorius), pvz.ample, (uint8 t *) „Sveikas pasauli!“. Įspėjimas yra problema, jei adresas gali būti neteisingas, kai const duomenų žymeklis yra aiškiai perduodamas į duomenų adresų erdvę.
Neinicijuotų const objektų išdėstymas (XCS-2408) Neinicijuoti const ir const v nepastovi objektai nebuvo patalpinti į programos atmintį įrenginiuose, kurie visą arba dalį savo programos atminties susieja į duomenų adresų erdvę. Šiuose įrenginiuose tokie objektai dabar patalpinami į programos atmintį, todėl jų veikimas suderinamas su kitų įrenginių veikimu.
2.39 versija (funkcinės saugos leidimas)
Nėra.
2.36 versija
Klaida delsinant (XCS-2774) Dėl nedidelių numatytųjų laisvojo režimo optimizavimo pakeitimų neleido nuolat sulankstyti operandų išraiškų į įtaisytąsias delsos funkcijas, todėl jos buvo traktuojamos kaip nekontaktinės ir suaktyvino klaidą: _buil tin avr delay_ cycles tikisi ac ompile laiko konstanta sveikasis skaičius.
2.35 versija
Gretimas paskirstymas naudojant _at (XCS-2653) Gretimas kelių objektų vietų paskirstymas skyriuje tuo pačiu pavadinimu ir naudojant adresu () neveikė tinkamai. Pavyzdžiui,ample: constchararrl [ ] at tri butte ((sect on(.miss”)))) at (Ox50 0 ) = {Oxo , Ox CD} ; kaina char arr2[ ] at tri butte ((section(.my s eke”)))) = {Jautis, Jautis FE }; turėjo padėti arr2 iš karto po aril.
Sekcijos pradžios adresų nurodymas (XCS-2650) Parinktis -Wal, -section-start tyliai nesugebėjo patalpinti atkarpų 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, kuris turi būti įdėtas naudojant -Wl, -T parinktį.
Linker sugenda atsipalaiduojant (XCS-2647) Kai buvo įjungtas -relax optimizavimas ir buvo kodo ar duomenų skilčių, kurios netilpo į turimą atmintį, nuoroda sudužo. Dabar tokiomis aplinkybėmis vietoj to pateikiami klaidų pranešimai.
Bloga EEPROM prieiga (XCS-2629) Leproma _read_ bloko rutina netinkamai veikė Mega įrenginiuose, kai buvo įjungta parinktis -monist-data-in-proem (tai yra numatytoji būsena), todėl EEPROM atmintis nebuvo nuskaitoma tinkamai.
Neteisingas atminties paskirstymas (XCS-2593, XCS-2651) Kai pasirenkama parinktis -Text arba -Tata 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ą.
Neteisingas ATtiny pertraukimo kodas (XCS-2465) Kuriant Tatin įrenginiams ir išjungus optimizavimą (-00), pertraukimo funkcijos galėjo suaktyvinti operando už diapazono surinkėjo pranešimus.
Neperduodamos parinktys (XCS-2452) Naudojant parinktį -Wl su keliomis kableliais atskirtomis nuorodų parinktimis, ne visos nuorodų parinktys buvo perduodamos susiejimo įrankiui.
Klaida netiesiogiai nuskaitant programos atmintį (XCS-2450) Kai kuriais atvejais kompiliatorius, nuskaitydamas dviejų baitų reikšmę iš rodyklės į programos atmintį, sukėlė vidinę klaidą (neatpažįstamą insn).
2.32 versija
Antroji prieiga prie bibliotekos nepavyksta (XCS-2381) Iškviečiama xc8-ar Windows versija. exe bibliotekos archyvatorius antrą kartą pasiekti esamą bibliotekos archyvą galėjo nepavykti, nes klaidos pranešimas negali pervardyti.
2.31 versija
Nepaaiškinami kompiliatoriaus gedimai (XCS-2367) Kai veikia Windows platformose, kuriose laikinajame sistemos kataloge nustatytas kelias, kuriame yra taškas“. simbolį, kompiliatoriui galėjo nepavykti įvykdyti.
2.30 versija
Pasaulinės etiketės netinkamai išdėstytos po kontūro (XCS-2299) Gali būti, kad ranka rašytas surinkimo kodas, pagal kurį surinkimo sekose pateikiamos visuotinės etiketės, kurios išskiriamos naudojant procedūrinę abstrakciją, nebuvo tinkamai perkeltas.
Atpalaiduojanti avarija (XCS-2287) Naudojant parinktį -merlad, nuoroda galėjo sugesti, kai uodegos šuolio atpalaidavimo optimizavimas bandė pašalinti ret instrukcijas, kurios nebuvo sekcijos pabaigoje.
Strigtis optimizuojant etiketes kaip vertes (XCS-2282) Kodas naudojant GNU C kalbos plėtinį „Etiketės kaip vertės“ galėjo sukelti procedūrinės abstrakcijos optimizavimo strigtį ir taisymo klaidą.
Ne taip tvirtai (XCS-2271) Paleidimų () ir kitų funkcijų prototipai iš nebenurodykite nestandartinės kainos kvalifikatoriaus grąžintose eilutės rodyklėse, kai išjungta funkcija -monist-data inprogmem. Atminkite, kad naudojant avrxmega3 ir avertin įrenginius ši funkcija įjungta visam laikui.
Pamesti iniciatoriai (XCS-2269) Kai daugiau nei vienas vertimo vieneto kintamasis buvo įtrauktas į skyrių (naudojant skyrių arba atributą ((section))), o pirmasis toks kintamasis buvo inicijuotas nuliui arba jis neturėjo inicijavimo, kitų to paties vertimo vieneto kintamųjų inicializatoriai kurie buvo patalpinti toje pačioje sekcijoje, buvo prarasti.
2.29 versija (funkcinės saugos leidimas)
Nėra.
2.20 versija
Klaida naudojant ilgas komandas (XCS-1983) Naudojant AVR tikslą, kompiliatorius galėjo sustoti su a file klaida nerasta, jei komandų eilutė buvo labai didelė ir joje yra specialių simbolių, tokių kaip kabutės, pasvirieji brūkšniai ir pan.
Nepriskirta rodata sekcija (XCS-1920) Kuriant avrxmega3 ir avrtiny architektūras AVR linker nepavyko priskirti atminties pasirinktinėms rodata sekcijoms, todėl gali atsirasti atminties persidengimo klaidų.
2.19 versija (funkcinės saugos leidimas)
Nėra.
2.10 versija
Perkėlimo gedimai (XCS-1891) Geriausiai pritaikytas skirstytuvas buvo palikti atminties „skyles“ tarp sekcijų po linkerio atsipalaidavimo. 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ų.
Nurodymai, kurių nekeičia atsipalaidavimas (XCS-1889) Linkeris neatsipalaidavo šuolio ar skambučio instrukcijoms, kurių taikiniai tampa pasiekiami atsipalaidavus.
Dingęs funkcionalumas (XCSE-388) Keletas apibrėžimų iš , pvz., clock_ div_ t ir clock_prescale_set (), nebuvo apibrėžti įrenginiams, įskaitant ATmega324PB, ATmega328PB, ATtiny441 ir ATtiny841.
Trūksta makrokomandų Išankstinio procesoriaus makrokomandos_ xcs _MODE_, _xcs VERSION, _xc ir xcs nebuvo automatiškai apibrėžtos kompiliatoriaus. Šiuo metu jie yra prieinami.
2.05 versija
Vidinė kompiliatoriaus klaida (XCS-1822) Kuriant sistemoje „Windows“, optimizuojant kodą galėjo atsirasti vidinė kompiliatoriaus klaida.
RAM perpildymas neaptiktas (XCS-1800, XCS-1796) Kai kuriais atvejais kompiliatorius neaptiko programų, kurios viršijo turimą RAM, todėl įvyko vykdymo kodo gedimas.
Praleista „flash“ atmintis (XCS-1792) „Avrxmega3“ ir „avrtiny“ įrenginiuose dalis „flash“ atminties galėjo būti neužprogramuota MPLAB X IDE.
Nepavyko vykdyti pagrindinio (XCS-1788) Kai kuriose situacijose, kai programoje nebuvo apibrėžtų visuotinių kintamųjų, vykdymo laiko paleisties kodas nebuvo išjungtas ir pagrindinė () funkcija niekada nebuvo pasiekta.
Neteisinga atminties informacija (XCS-1787) Avrxmega3 ir avrtiny įrenginiuose avr dydžio programa pranešė, kad tik skaitomi duomenys naudoja RAM, o ne programos atmintį.
Neteisingas programos atminties skaitymas (XCS-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 (XCS-1773) Įvyko vidinė klaida, jei žymiklio objektus apibrėžėte naudodami
_at () arba atributas() žetonai tarp žymeklio pavadinimo ir nuorodos tipo, pvzample, char*
_at ( 0x80015 0) cp; Aptikus tokį kodą, dabar pateikiamas įspėjimas.
Nepavyko vykdyti pagrindinio (XCS-1780, XCS-1767, XCS-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į () .
Saugiklio klaida naudojant mažus įrenginius (XCS-1778, XCS-1742) Attiny4/5/9/10/20/40 įrenginių antraštėje nurodytas neteisingas saugiklio ilgis files, dėl kurių atsiranda linkerio klaidų bandant sukurti kodą, apibrėžiantį saugiklius.
Segmentavimo klaida (XCS-1777) Protarpinis segmentavimo gedimas buvo ištaisytas.
Assembler avarija (XCS-1761) Avr-as surinkėjas galėjo sugesti, kai kompiliatorius buvo paleistas naudojant Ubuntu 18.
Objektai neišvalyti (XCS-1752) Neinicializuoti statinės saugojimo trukmės objektai galėjo būti neišvalyti vykdymo laiko paleisties kodu.
Nepaisoma nesuderinamų įrenginio specifikacijų (XCS-1749) Kompiliatorius nesukūrė klaidos, kai buvo naudojamos kelios įrenginio specifikacijos parinktys ir buvo nurodyti skirtingi įrenginiai.
Atminties sugadinimas dėl krūvos (XCS-1748) Simbolis heap_ start buvo nustatytas neteisingai, todėl krūva gali sugadinti įprastus kintamuosius.
Linker perkėlimo klaida (XCS-1739) Susiejimo priemonės perkėlimo klaida galėjo atsirasti, kai kode buvo rjmp arba rccall, kurio tikslas yra tiksliai 4 XNUMX baitų atstumu.
2.00 versija
Nėra.
Žinomos problemos
Toliau pateikiami kompiliatoriaus veikimo apribojimai. Tai gali būti bendrieji kodavimo apribojimai arba
nukrypimai nuo informacijos, esančios vartotojo vadove. 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. Tie elementai, kurie neturi etikečių, yra apribojimai, apibūdinantys veikimo režimą ir kurie gali likti galioti visam laikui.
MPLAB X IDE integracija
MPLAB IDE integracija Jei kompiliatorius turi būti naudojamas iš MPLAB IDE, prieš diegdami kompiliatorių turite įdiegti MPLAB IDE.
Kodo generavimas
PA atminties paskirstymo sutrikimas (XCS-2881) Kai naudojate procedūrinius abstrakcijos optimizatorius, susiejimo priemonė gali pranešti apie atminties paskirstymo klaidas, kai kodo dydis yra artimas turimos programos atminties kiekiui įrenginyje, net jei programa turėtų tilpti į laisvą vietą.
Ne toks protingas Smart-IO (XCS-2872) Kompiliatoriaus „smart-io“ funkcija sugeneruos galiojantį, bet neoptimalų „sprint“ funkcijos kodą, jei funkcija „Cross-data-in-proem“ buvo išjungta arba jei visa įrenginio „flash“ atmintis susieta su duomenų atmintimi.
Dar mažiau išmanus Smart-IO (XCS-2869) Kompiliatoriaus „smart-io“ funkcija sugeneruos tinkamą, bet neoptimalų kodą, kai bus naudojamos ir -floe, ir -fno-buil tin parinktys.
Neoptimali tik skaitomų duomenų vieta (XCS-2849) Susiejimo priemonė šiuo metu nežino nei APPCODE, nei APPDATA atminties skyrių, nei [No-]Read-While-Write skyrių atminties žemėlapyje. Dėl to yra nedidelė tikimybė, kad susiejimo priemonė gali priskirti tik skaitymo duomenis netinkamoje atminties srityje. Neteisingų duomenų tikimybė padidėja, jei įjungta funkcija kranto duomenys-pragma, ypač jei įjungta ir pakrantės duomenų konfigūracijos-mapped-proem funkcija. Jei reikia, šias funkcijas galima išjungti.
Objektas file apdorojimo užsakymas (XCS-2863) Objektų tvarka files, kurias apdoros susiejimo priemonė, gali skirtis atsižvelgiant į procedūrinių abstrakcijos optimizacijų naudojimą (-mpa parinktis). Tai paveiktų tik kodą, kuris apibrėžia silpnas kelių modulių funkcijas.
Linkerio klaida su absoliučiu (XCS-2777) Kai objektas buvo suabsoliutintas adresu RAM pradžioje ir taip pat buvo apibrėžti neinicializuoti objektai, gali būti suaktyvinta susiejimo klaida.
Trumpo pažadinimo ID (XCS-2775) ATA5700/2 įrenginiuose PHID0/1 registrai apibrėžiami tik kaip 16 bitų pločio, o ne 32 bitų pločio.
Linker strigtis skambinant simbolis (XCS-2758) Linker gali sugesti, jei naudojama -merlad tvarkyklės parinktis, kai šaltinio kodas iškviečia simbolį, kuris buvo apibrėžtas naudojant parinktį -Wl, -defsym linker.
Neteisingas inicijavimas (XCS-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.
pradėtas neteisingai nustatyta tuščia (XCS-2652) Tais atvejais, kai temos eilutėje, kurią reikia konvertuoti pagal nurodytą (), yra tai, kas atrodo kaip slankiojo kablelio skaičius eksponentiniu formatu, o po e simbolio yra netikėtas simbolis, tuščias adresas, jei nurodytas, nurodys simbolį po e, o ne pats e. Pavyzdžiui,ample: nurodyta ("hoey", tuščias); bus tuščias rodymas į x simbolį.
Blogi netiesioginiai funkcijų iškvietimai (XCS-2628) Kai kuriais atvejais funkcijų iškvietimas naudojant funkcijos žymeklį, saugomą kaip struktūros dalis, gali nepavykti.
strtof grąžina nulį šešioliktainei slankiojimui (XCS-2626) Bibliotekos funkcijos strtof () et al ir scanf () et al visada konvertuos šešioliktainį slankiojo kablelio skaičių, nenurodantį eksponento į
nulis. Pavyzdžiui,ample: statorius („Pelėda“, &tuščias); grąžins reikšmę 0, o ne 1.
Netikslūs dėklo patarėjo pranešimai (XCS-2542, XCS-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ą (XCS-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 nėra programos atmintyje (XCS-2408) Avrxmega3 ir avertins projektams unidealizuoti 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 (XCS-1966) Kompiliatorius neaptinka objektų, suabsoliutuotų adresu (per adresu ()), ir kitų objektų, naudojančių sekcijos () specifikaciją ir susietų su tuo pačiu adresu, atminties persidengimo.
Bibliotekos funkcijų ir _meme (XCS-1763) gedimas Vadinamos limbinės plūdės funkcijos su argumentu _memo 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 limbinis įgyvendinimas (AVRTC-731) ATTiny4/5/9/10/20/40 produktams standartinė C / Math bibliotekos įgyvendinimas limbinėje versijoje 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 be atsipalaidavimo ir be naudingo klaidos pranešimo, o ne generuojant reikiamus funkcijos stubus, kai naudojama parinktis -relax.
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 vietinis laikas () grąžins tą patį laiką kaip gummite (), pvz.ample.
PAGALBA KLIENTAMS
file:///Applications/microhip/xc8/v 2 .40/docs/Read me_X C 8_ for A VR. htm
Dokumentai / Ištekliai
![]() |
MICROCHIP MPLAB XC8 C kompiliatoriaus programinė įranga [pdfNaudotojo vadovas MPLAB XC8 C, MPLAB XC8 C kompiliatoriaus programinė įranga, kompiliatoriaus programinė įranga, programinė įranga |