MICROCHIP MPLAB XC8 C kompilaatori tarkvara 

MICROCHIP MPLAB XC8 C kompilaatori tarkvara

KÄESOLEV DOKUMENT SISALDAB MIKROKIIPIDE AVR-SEADMETE SIHTIMISELT OLULIST TEAVE KOHTA MPLAB XC8 C KOMPILERIGA.
PALUN LUGEGE SEDA ENNE SELLE TARKVARA KASUTAMIST. KUI KASUTATE KOMPILERIT 8-BITISTE PIC-SEADMETE PUHUL, VT MPLAB XC8 C KOMPILERI VÄLJAANNE MÄRKUSED.

Sisu peita

Läbiview

Sissejuhatus

See Microchip MPLAB® XC8 C kompilaatori väljalase sisaldab mitmeid uusi funktsioone, veaparandusi ja uue seadme tuge.

Ehitamise kuupäev

Selle kompilaatori versiooni ametlik ehituskuupäev on 3. juuli 2022.

Eelmine versioon

Eelmine MPLAB XC8 C kompilaatori versioon oli 2.39, funktsionaalne ohutuskompilaator, ehitatud 27. jaanuaril 2022. Eelmine standardkompilaator oli versioon 2.36, ehitatud 27. jaanuaril 2022.

Funktsionaalne ohutusjuhend

Funktsionaalohutuse juhend MPLAB XC kompilaatorite jaoks on saadaval dokumentatsioonipaketis, kui ostate funktsionaalohutuse litsentsi.

Komponentide litsentsid ja versioonid

AVR MCU tööriistade MPLAB® XC8 C kompilaator on kirjutatud ja levitatud GNU üldise avaliku litsentsi (GPL) all, mis tähendab, et selle lähtekoodi levitatakse vabalt ja avalikkusele. GNU GPL-i alla kuuluvate tööriistade lähtekoodi saab Microchipist eraldi alla laadida websaidile. GNU GPL-i saate lugeda jaotisest file nimega asub teie installikataloogi alamkataloogis. GPL-i aluseks olevate põhimõtete üldise arutelu leiate siit. Päise tugikood files, linkeri skriptid ja käitusaegsed teegid on patenteeritud kood ega kuulu GPL-i alla.

See kompilaator on GCC versiooni 5.4.0, binutils versiooni 2.26 ja kasutab avr-libc versiooni 2.0.0.

Süsteeminõuded

MPLAB XC8 C kompilaator ja selle kasutatav litsentsimistarkvara on saadaval mitmesuguste operatsioonisüsteemide jaoks, sealhulgas järgmiste operatsioonisüsteemide 64-bitised versioonid: Microsoft Windows 10 professionaalsed väljaanded; Ubuntu 18.04; ja macOS 10.15.5. Windowsi binaarfailid on koodallkirjaga. Mac OS-i binaarfailid on koodallkirjaga ja notariaalselt kinnitatud.

Kui kasutate võrgulitsentsiserverit, võib litsentsiserveri hostimiseks kasutada ainult kompilaatorite toetatud operatsioonisüsteemidega arvuteid. Alates xclm versioonist 2.0 saab võrgulitsentsi serveri installida Microsoft Windows Serveri platvormile, kuid litsentsiserver ei pea töötama operatsioonisüsteemi serveriversioonil.

Toetatavad seadmed

See kompilaator toetab kõiki avaldamise ajal teadaolevaid 8-bitise AVR MCU seadmeid. Kõigi toetatud seadmete loendi leiate (kompilaatori dokumentide kataloogist). Need files loetleb ka iga seadme konfiguratsioonibiti seaded.

Väljaanded ja litsentsi täiendused

MPLAB XC8 kompilaatorit saab aktiveerida litsentsitud (PRO) või litsentsimata (tasuta) tootena. Kompilaatori litsentsimiseks peate ostma aktiveerimisvõtme. Litsents võimaldab tasuta tootega võrreldes kõrgemat optimeerimise taset. Litsentsita kompilaatorit võib ilma litsentsita töötada määramata aja.

MPLAB XC8 Functional Safety kompilaator tuleb aktiveerida Microchipist ostetud funktsionaalohutuse litsentsiga. Ilma selle litsentsita kompilaator ei tööta. Pärast aktiveerimist saate valida mis tahes optimeerimistaseme ja kasutada kõiki kompilaatori funktsioone. See MPLAB XC Functional Safety Compileri väljalase toetab võrguserveri litsentsi.
Litsentsitüüpide ja litsentsiga kompilaatori installimise kohta leiate teavet dokumendist MPLAB XC C kompilaatorite installimine ja litsentsimine (DS50002059).

Paigaldamine ja aktiveerimine

Vt ka migratsiooniprobleemide ja piirangute jaotisi, et saada olulist teavet selle kompilaatoriga kaasas oleva uusima litsentsihalduri kohta.
Kui kasutate MPLAB IDE-d, installige enne selle tööriista installimist kindlasti uusim MPLAB X IDE versioon 5.0 või uuem. Enne kompilaatori installimist sulgege IDE. Käivitage .exe (Windows), .run (Linux) või rakenduse (macOS) kompilaatori installirakendus, nt XC8-1.00.11403-windows.exe ja järgige ekraanil kuvatavaid juhiseid.
Soovitatav on installimise vaikekataloog. Kui kasutate Linuxit, peate installima kompilaatori terminali ja juurkonto kaudu. Installige administraatoriõigustega macOS-i kontoga.

Aktiveerimine toimub nüüd installimisest eraldi. Lisateabe saamiseks vaadake dokumenti MPLAB® XC C kompilaatorite litsentsihaldur (DS52059).

Kui otsustate käivitada kompilaatori hindamislitsentsi alusel, saate nüüd koostamise ajal hoiatuse, kui olete hindamisperioodi lõpust 14 päeva jooksul. Sama hoiatus antakse, kui olete oma HPA tellimuse lõppemisest 14 päeva jooksul.

XC võrgulitsentsi server on eraldi installer ja see ei sisaldu ühe kasutaja kompilaatori installiprogrammis.

XC litsentsihaldur toetab nüüd ujuva võrgulitsentside rändlust. See mobiilikasutajatele mõeldud funktsioon võimaldab ujuval litsentsil lühikeseks ajaks võrgust välja lülitada. Seda funktsiooni kasutades saate võrguühenduse katkestada ja siiski kasutada oma MPLAB XC kompilaatorit. Selle funktsiooni kohta lisateabe saamiseks vaadake XCLM-i installi kausta doc. MPLAB X IDE sisaldab rändluse visuaalseks haldamiseks litsentside akent (Tööriistad > Litsentsid).

Installimisprobleemide lahendamine

Kui teil tekib kompilaatori installimisel mõne Windowsi operatsioonisüsteemi alla raskusi, proovige järgmisi soovitusi.

  • Käivitage installimine administraatorina.
  • Seadistage installirakenduse õigused valikule "Täielik kontroll". (Paremklõpsake file, valige Atribuudid, vahekaart Turvalisus, valige kasutaja, redigeerige.)
  • Määrake ajutise kausta õigused väärtusele "Täielik kontroll!

Ajutise kausta asukoha määramiseks tippige käsku Käivita %temp% (Windowsi logoga klahv + R). See avab a file explorer dialoog, mis näitab seda kataloogi ja võimaldab teil määrata selle kausta tee.

Koostaja dokumentatsioon

Kompilaatori kasutusjuhendid saab avada HTML-lehelt, mis avaneb teie brauseris, kui klõpsate MPLAB X IDE armatuurlaual sinist abinuppu, nagu on näidatud ekraanipildil.

Koostaja dokumentatsioon
Kui ehitate 8-bitiste AVR-i sihtmärkide jaoks, sisaldab MPLAB® XC8 C kompilaatori kasutusjuhend AVR® MCU jaoks teavet kompilaatori valikute ja funktsioonide kohta, mis on selle arhitektuuri jaoks rakendatavad.

Klienditugi

Microchip tervitab veateateid, soovitusi või kommentaare selle kompilaatori versiooni kohta. Palun suunake kõik veateated või funktsioonipäringud tugisüsteemi kaudu.

Dokumentatsiooni värskendused

MPLAB XC8 dokumentatsiooni on-line ja ajakohastatud versioonide vaatamiseks külastage Microchipi veebipõhist tehnilist dokumentatsiooni websaidile.

Uus või värskendatud AVR-i dokumentatsioon selles väljaandes:

  • MUSL-i autoriõiguste teatis
  • MPLAB XC C kompilaatorite installimine ja litsentsimine (redaktsioon M)
  • MPLAB XC8 kasutusjuhend sisseehitatud inseneridele – AVR MCU-d (redaktsioon A)
  • MPLAB XC8 C kompilaatori kasutusjuhend AVR MCU jaoks (redaktsioon F)
  • Microchip Unified Standard Library teatmik (redaktsioon B)

Microchip Unified Standard Library Reference Guide kirjeldab Microchip Unified Standard Library määratletud funktsioonide käitumist ja liidest, samuti teegitüüpide ja makrode kavandatud kasutust. Osa sellest teabest sisaldus varem MPLAB® XC8 C kompilaatori kasutusjuhendis AVR® MCU jaoks. Seadmespetsiifiline teegi teave sisaldub endiselt selles kompilaatori juhendis.

Kui te alles alustate 8-bitiste seadmete ja MPLAB XC8 C kompilaatoriga, sisaldab MPLAB® XC8 User!s Guide for Embedded Engineers – AVR® MCUs (DS50003108) teavet projektide seadistamise kohta MPLAB X IDE-s ja koodi kirjutamise kohta. oma esimese MPLAB XC8 C projekti jaoks. Seda juhendit levitatakse nüüd koos kompilaatoriga.

Hamate'i kasutusjuhend on lisatud selle versiooni dokumentide kataloogi. See juhend on mõeldud neile, kes kasutavad Hamatet eraldiseisva rakendusena.

Mis on uut

Järgmised on uued AVR-i sihtfunktsioonid, mida kompilaator nüüd toetab. Versiooninumber alampealkirjades näitab esimest kompilaatori versiooni, mis toetab järgmisi funktsioone.

Versioon 2.40

Uue seadme tugi Tugi on nüüd saadaval järgmistele AVR-i osadele: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32, AVR64, AVR48.
Täiustatud protseduuriline abstraktsioon Protseduurilise abstraktsiooni (PA) optimeerimise tööriista on täiustatud, nii et koodi, mis sisaldab funktsiooni kutsumiskäsku (kõne tagasikutsumine)) saab visandada. See toimub ainult siis, kui pinu ei kasutata funktsioonile argumentide edastamiseks ega funktsioonilt tagastusväärtuse saamiseks. Pinu kasutatakse muutujate argumentide loendiga funktsiooni kutsumisel või funktsiooni kutsumisel, mis võtab rohkem argumente kui selleks otstarbeks määratud registrid. Selle funktsiooni saab keelata kasutades suvandit munk-pa-outline-calls või protseduurilise abstraktsiooni saab objektil täielikult keelata file või kasutage funktsiooni -munk-pa-on-file ja -mo.-pa-on-function või kasutades atribuuti nipa ( nipa spetsifikaator) valikuliselt koos funktsioonidega

Koodi katvuse makro Kompilaator määratleb nüüd makro __CODECOV, kui on määratud kehtiv mcodecov suvand.

Mälu reserveerimise võimalus xc8-cc draiver aktsepteerib nüüd AVR-i sihtmärkide loomisel suvandit -mreserve=space@start: end. See suvand reserveerib määratud mäluvahemiku kas andme- või programmimälus, takistades linkeril selles piirkonnas koodi või objekte sisestamast.

Targem nutikas IO Smart IO-funktsioone on tehtud mitmeid täiustusi, sealhulgas printf-i põhikoodi üldised muudatused, %n teisenduse spetsifikaatori käsitlemine iseseisva variandina, vararg pop-rutiinide nõudmisel linkimine, võimaluse korral IO-funktsiooni argumentide käsitlemiseks lühemate andmetüüpide kasutamine. , ning faktooringu ühiskoodi väljalaiuse ja täppiskäsitluse osas. See võib kaasa tuua märkimisväärse koodi ja andmete kokkuhoiu ning suurendada IO täitmiskiirust.

Versioon 2.39 (funktsionaalse ohutuse väljalase)

Võrguserveri litsents See MPLAB XC8 Functional Safety Compileri väljalase toetab võrguserveri litsentsi.

Versioon 2.36

Mitte ühtegi.

Versioon 2.35

Uue seadme tugi Tugi on saadaval järgmistele AVR-i osadele: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 ja AVR64DD32.

Täiustatud kontekstivahetus Uus suvand -mcall-isr-prologues muudab seda, kuidas katkestusfunktsioonid registreid sisenemisel salvestavad ja kuidas need registrid katkestusrutiini lõppedes taastatakse. See töötab sarnaselt suvandiga -mcall-prologues, kuid mõjutab ainult katkestusfunktsioone (ISR).

Veelgi parem kontekstivahetus Uus suvand -mgas-isr-prologues juhib kontekstis sügeleva koodi, mis on loodud väikeste katkestusteenuste rutiinide jaoks. Kui see funktsioon on sisse lülitatud, laseb see monteerija ISR-i registrikasutuse osas skannida ja salvestab need kasutatud registrid ainult vajaduse korral.

Konfigureeritav välklampide kaardistamine Mõnel AVR DA ja AVR DB perekonna seadmel on SFR (nt FLMAP), mis määrab, milline 32k osa programmimälust kaardistatakse andmemällu. Uut suvandit mconst-data-in-config-mapped-proem saab kasutada selleks, et linker paigutaks kõik miinused kvalifitseeritud andmed ühte 32k sektsiooni ja initsialiseeriks automaatselt vastava SFR-registri, et tagada nende andmete kaardistamine andmemäluruumi. , kus sellele on tõhusam juurdepääs.

Microchip Unified Standard Libraries Kõik MPLAB XC kompilaatorid jagavad Microchip Unified Standard Library, mis on nüüd saadaval selle MPLAB XC8 väljalaskega. MPLAB® XC8 C kompilaatori kasutusjuhend/või AVR® MCU ei sisalda enam nende standardfunktsioonide dokumentatsiooni. Selle teabe leiate nüüd Microchip Unified Standard Library viitejuhendist. Pange tähele, et mõned varem avr-libc defineeritud funktsioonid pole enam saadaval. (Vt Raamatukogu):'. funktsionaalsus…)

Nutikas IO Uute ühendatud teekide osana luuakse nüüd iga järgu jaoks kohandatud IO-funktsioonid printimis- ja skannimisperedes, lähtudes sellest, kuidas neid funktsioone programmis kasutatakse. See võib programmi kasutatavaid ressursse oluliselt vähendada.
Nutikas IO abivõimalus Nutikate IO-funktsioonide (nt printf () või scanf () ) kõnede analüüsimisel ei saa kompilaator alati vormingustringi põhjal kindlaks teha ega järeldada argumentidest neid konversioonispetsifikaatoreid, mida kõne nõuab. Varem ei teinud kompilaator alati mingeid eeldusi ja tagas, et täielikult funktsioneerivad IO-funktsioonid lingiti programmi lõpliku kujutisega. Lisatud on uus – msmart-io-format=fmt valik, et kasutaja saaks kompilaatorit hoopis informeerida nutikate IO funktsioonide kasutatavatest konversioonispetsifikaatidest, mille kasutamine on mitmetähenduslik, vältides liiga pikkade IO-rutiinide linkimist. (Lisateavet vaadake Smart-io-vormingu valikust.)

Kohandatud sektsioonide paigutamine Varem paigutas suvand -Wl, –section-start määratud jaotise soovitud aadressile ainult siis, kui linkeri skript määratles sama nimega väljundsektsiooni. Kui see nii ei olnud, paigutati jaotis linkeri valitud aadressile ja seda võimalust sisuliselt ignoreeriti. Nüüd kasutatakse seda valikut kõigi kohandatud jaotiste puhul, isegi kui linkeri skript seda jaotist ei määratle. Pange tähele, et standardsektsioonide puhul on näiteks . tekst,. bss või . andmetel on kõige sobivamal jaotajal endiselt täielik kontroll nende paigutuse üle ja valikul ei ole mingit mõju. Kasutage suvandit -Wl, -Tsection=add, nagu on kirjeldatud kasutusjuhendis.

Versioon 2.32

Virna juhised PRO-kompilaatori litsentsiga saadaval oleva kompilaatori pinu juhtimise funktsiooni saab kasutada programmis kasutatava mis tahes virna maksimaalse sügavuse hindamiseks. See koostab ja analüüsib programmi kutsegraafikut, määrab iga funktsiooni pinukasutuse ja koostab aruande, millest saab järeldada programmis kasutatavate virnade sügavust. See funktsioon on lubatud käsurea suvandi -mchp-stack-usage kaudu. Pärast täitmist prinditakse kokkuvõte virna kasutamisest. Üksikasjalik virna aruanne on saadaval kaardil file, mida saab taotleda tavapärasel viisil.

Uue seadme tugi tugi on saadaval järgmiste AVR-i osade jaoks: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32, AVR28DB64, AVR32, AVR32, 48.

Sissetõmmatud seadme tugi tugi pole enam saadaval järgmiste AVR osade jaoks: AVR16DA28, AVR16DA32 ja AVR16DA48.

Versioon 2.31

Mitte ühtegi.

Versioon 2.30

Uus suvand andmete initsialiseerimise vältimiseks Uus draiveri suvand -mno-data-ini t takistab andmete lähtestamist ja bss-i sektsioonide tühjendamist. See töötab, surudes maha do_ copy_ data ja d o_ clear_ bss sümboli väljundi koostamisel files, mis omakorda takistab linkeri poolt nende rutiinide kaasamist.

Täiustatud optimeerimised Tehtud on mitmeid optimeerimise täiustusi, sealhulgas eemaldatud üleliigsed tagastusjuhised, eemaldatud mõned hüpped pärast käsku vahelejätmine, kui bitt on, ning täiustatud protseduuriline abstraktsioon ja võime seda protsessi itereerida.

Nüüd on saadaval lisavalikud, et juhtida mõnda neist optimeerimistest, täpsemalt -f sektsiooni ankrud, mis võimaldab juurdepääsu staatilistele objektidele ühe sümboli suhtes; -mpai derations=n, mis võimaldab muuta protseduurilise abstraktsiooni iteratsioonide arvu vaikeväärtusest 2; ja -mpa- call cost- shortcall, mis teostab agressiivsemat protseduurilist abstraktsiooni, lootuses, et linker saab pikki kõnesid lõdvestada. See viimane valik võib koodi suurust suurendada, kui aluseks olevad eeldused ei realiseeru.

Uue seadme tugi Tugi on saadaval järgmistele AVR osadele: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 ja AVR128DB64 ja AVRXNUMXDBXNUMX.

Sissetõmmatud seadme tugi Tugi pole enam saadaval järgmistele AVR-i osadele: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C ja 664251ATAXNUMXC.

Versioon 2.29 (funktsionaalse ohutuse väljalase)

Päis file sisseehitatud kompilaatori jaoks Tagamaks, et kompilaator vastaks keele spetsifikatsioonidele nagu MISRA, päis file, mille lisab automaatselt , on värskendatud. See päis sisaldab kõigi sisseehitatud funktsioonide prototüüpe, nagu _buil tin _avrnop () ja _buil tin_ avr delay_ cycles () . Mõned sisseehitatud seadmed ei pruugi MISRA-ga ühilduda; need saab ära jätta, lisades kompilaatori käsureale define _Xe_ STRICT_ MISRA. Sisseehitatud seadmeid ja nende deklaratsioone on värskendatud, et kasutada fikseeritud laiusega tüüpe.

Versioon 2.20

Uue seadme tugi Tugi on saadaval järgmistele AVR-i osadele: ATTINY1624, ATTINY1626 ja ATTINY1627.

Parem sobivaim jaotus Kompilaatori parima sobivuse jaoturit (BFA) on täiustatud nii, et jaotised jaotatakse paremat optimeerimist võimaldavas järjekorras. BFA toetab nüüd nimega aadressiruume ja saab paremini hakkama andmete initsialiseerimisega.

Täiustatud protseduuriline abstraktsioon Protseduurilise abstraktsiooni optimeerimine toimub nüüd rohkemate koodijadade puhul. Varasemad olukorrad, kus see optimeerimine võis koodi suurust suurendada, on lahendatud, muutes optimeerimiskoodi linkeri prügikogumisprotsessist teadlikuks.

AVR Assembleri puudumine AVR Assembler ei ole enam selle distributsiooniga kaasas.

Versioon 2.19 (funktsionaalse ohutuse väljalase)

Mitte ühtegi.

Versioon 2.10

Koodi katvus See versioon sisaldab koodi katvuse funktsiooni, mis hõlbustab projekti lähtekoodi täitmise ulatuse analüüsi. Kasutage selle lubamiseks suvandit -mcodecov=ram. Pärast programmi käivitamist teie riistvaras koondatakse seadmesse koodi katvuse teave ning seda saab MPLAB X IDE-le edastada ja kuvada koodikatte pistikprogrammi kaudu. Selle pistikprogrammi kohta teabe saamiseks vaadake IDE dokumentatsiooni. Funktsiooni #pragma mcodecov saab kasutada järgmiste funktsioonide katvuse analüüsist väljajätmiseks. Ideaalis tuleks pragma lisada algusesse file kogu selle välistamiseks file katvuse analüüsist. Alternatiivina võib atribuuti ( (mcodecov) ) kasutada konkreetse funktsiooni katvuse analüüsist väljajätmiseks.

Seadme kirjeldus files Uus seade file nimega avr chipinfo. html asub kompilaatori distributsiooni kataloogis docs. See file loetleb kõik seadmed, mida kompilaator toetab. Klõpsake seadme nimel ja see avab lehe, mis näitab kõiki selle seadme jaoks lubatud konfiguratsioonibiti seadistuste/väärtuste paare koos nt.ampvähem.

Protseduuriline abstraktsioon Kompilaatorisse on lisatud protseduurilised abstraktsiooni optimeerimised, mis asendavad komplekteerimiskoodi tavalised plokid kõnedega selle ploki ekstraktitud koopiale. Neid teostab eraldi rakendus, mille kompilaator 2., 3. või XNUMX., XNUMX. taseme optimeerimise valimisel automaatselt välja kutsub. Need optimeerimised vähendavad koodi suurust, kuid võivad vähendada täitmise kiirust ja koodi silumist.
Protseduurilise abstraktsiooni saab keelata kõrgematel optimeerimistasemetel, kasutades suvandit -mno-pa, või lubada madalamatel optimeerimistasemetel (olenevalt teie litsentsist), kasutades -mpa. Selle saab objekti puhul keelata file kasutades -mno-pa-on-file=filenimi või funktsiooni jaoks keelatud, kasutades funktsiooni -mno-pa funktsiooni function= abil.
Lähtekoodis saab funktsiooni puhul protseduurilise abstraktsiooni keelata, kasutades funktsiooni definitsiooniga atribuuti _attribute_ ( (nopa)) või atribuuti _nopa, mis laieneb atribuudiks ( (nopa, noinline)) ja seega takistab funktsiooni lisamist. ja seal on sisse kirjutatud koodi abstraktsioon.
Lukustusotsaku tugi pragmas #pragma konfiguratsiooni saab nüüd kasutada nii AVR-i lukustusbittide kui ka muude konfiguratsioonibittide määramiseks. Kontrollige avr-kiibi teavet. html file (eespool mainitud) selle pragma jaoks kasutatavate seadistuste/väärtuste paaride jaoks.
Uue seadme tugi Tugi on saadaval järgmistele osadele: AVR28DA128, AVR64DA128, AVR32DA128 ja AVR48DA128.

Versioon 2.05

Rohkem bitte oma raha eest Selle kompilaatori ja litsentsihalduri macOS-i versioon on nüüd 64-bitine rakendus. See tagab, et kompilaator installib ja töötab macOS-i viimastes versioonides ilma hoiatusteta.
Const-objektid programmimälus Kompilaator saab nüüd paigutada const-kvalifitseeritud objektid programmi välkmällu, mitte hoida neid RAM-is. Kompilaatorit on muudetud nii, et konst-kvalifitseeritud globaalsed andmed salvestatakse programmi välkmällu ning nendele andmetele saab otse ja kaudselt juurde pääseda, kasutades vastavaid programmimälu juhiseid. See uus funktsioon on vaikimisi lubatud, kuid selle saab keelata, kasutades suvandit -mno-const-data-in-progmem. Avrxmega3 ja avrtiny arhitektuuride puhul pole see funktsioon vajalik ja see on alati keelatud, kuna programmimälu on nende seadmete jaoks kaardistatud andmeaadressiruumi.
Standard tasuta Selle kompilaatori litsentsimata (tasuta) versioonid võimaldavad nüüd optimeerimist kuni tasemeni 2 (kaasa arvatud). See võimaldab sarnast, kuigi mitte identset väljundit, mis oli varem võimalik standardlitsentsi abil.
Tere tulemast AVRASM2 2-bitiste seadmete AVRASM8 monteerija on nüüd XC8 kompilaatori installeris. Seda komplekteerijat XC8 kompilaator ei kasuta, kuid see on saadaval käsitsi kirjutatud koosteallikal põhinevate projektide jaoks.
Uue seadme tugi Tugi on saadaval järgmistele osadele: ATMEGA1608, ATMEGA1609, ATMEGA808 ja ATMEGA809.

Versioon 2.00

Tipptasemel juht Uus draiver, nimega xc8-cc, asub nüüd eelmise avr-gcc draiveri ja xc8 draiveri kohal ning võib sihtseadme valiku alusel helistada sobivale kompilaatorile. See draiver aktsepteerib GCC-stiilis valikuid, mis tõlgitakse või edastatakse käivitatavale kompilaatorile. See draiver võimaldab sarnase semantikaga sarnaste valikute komplekti kasutada mis tahes AVR- või PIC-sihtmärgiga ja on seega soovitatav viis kompilaatori käivitamiseks. Vajadusel saab vana avr-gcc draiveri otse välja kutsuda, kasutades vana stiili suvandeid, mida see kompilaatori varasemates versioonides aktsepteeris.

Ühine C-liides See kompilaator ühildub nüüd MPLAB Common C liidesega, võimaldades lähtekoodi hõlpsamini teisaldada kõigis MPLAB XC kompilaatorites. Valik -mext=cci nõuab seda funktsiooni, võimaldades paljude keelelaiendite jaoks alternatiivset süntaksit.

Uus raamatukoguhoidja autojuht Uus raamatukoguhoidja draiver on paigutatud eelmise PIC-raamatukoguhoidja ja AVR-i raamatukoguhoidja kohale. See draiver aktsepteerib GCC-arhiivi stiilis valikuid, mis tõlgitakse või edastatakse täidetavale raamatukoguhoidjale. Uus draiver võimaldab PIC- või AVR-teegi loomiseks või manipuleerimiseks kasutada sarnase semantikaga sarnast valikute komplekti file ja on seega soovitatav viis raamatukoguhoidja kutsumiseks. Kui seda nõutakse pärandprojektide jaoks, saab eelmise raamatukoguhoidja otse välja kutsuda, kasutades vanas stiilis valikuid, mida see kompilaatori varasemates versioonides aktsepteeris.

Rändeprobleemid

Järgnevalt on toodud funktsioonid, mida kompilaator käsitleb nüüd erinevalt. Need muudatused võivad vajada lähtekoodi muutmist, kui teisaldate koodi sellesse kompilaatori versiooni. Versiooninumber alampealkirjades näitab esimest kompilaatori versiooni, mis toetab järgnevaid muudatusi.

Versioon 2.40

Mitte ühtegi.

Versioon 2.39 (funktsionaalse ohutuse väljalase)

Mitte ühtegi.

Versioon 2.36

Mitte ühtegi.

Versioon 2.35

String-aluste käsitlemine (XCS-2420) Teiste XC-kompilaatoritega kooskõla tagamiseks ei püüa XC8 string-to funktsioonid, nagu strtol () jne, enam sisendstringi teisendada, kui määratud alus on suurem kui 36, vaid määrab selle asemel errno väärtuseks EINVAL. C-standard ei täpsusta funktsioonide käitumist selle baasväärtuse ületamisel.

Sobimatu kiiruse optimeerimine 3. taseme optimeerimise (-03) valimisel lubati protseduurilise abstraktsiooni optimeerimine. Need optimeerimised vähendavad koodi suurust koodi kiiruse arvelt, seega poleks tohtinud seda teha. Seda optimeerimistaset kasutavad projektid võivad selle versiooniga koostamisel koodi suuruses ja täitmiskiiruses näha erinevusi.

Raamatukogu funktsionaalsus Paljude standardsete C teegi funktsioonide kood pärineb nüüd Microchipi ühtsest standardteegist, mis võib teatud juhtudel käituda erinevalt võrreldes endise avr-libc teegiga. Näiteksample, pole enam vaja lprintf_flt teegis linkida (valik -print _flt), et sisse lülitada ujukvormingu spetsifikaatorite vormindatud IO tugi. Microchip Unified Standard Library nutikad IO funktsioonid muudavad selle valiku üleliigseks. Lisaks pole _p-liitega rutiinide kasutamine stringi- ja mälufunktsioonide jaoks (nt strcpy_P () jne .. ), mis töötavad flashis const stringidel, enam vajalik. Standardsed C rutiinid (nt strcpy ()) töötavad selliste andmetega õigesti, kui const-data-in-program-memory funktsioon on lubatud.

Versioon 2.32

Mitte ühtegi.

Versioon 2.31

Mitte ühtegi.

Versioon 2.30

Mitte ühtegi.

Versioon 2.29 (funktsionaalse ohutuse väljalase)

Mitte ühtegi.

Versioon 2.20

Muudetud DFP paigutust Kompilaator eeldab nüüd teistsugust paigutust, mida kasutavad DFP-d (Device Family Packs). See tähendab, et vanem DFP ei pruugi selle versiooniga töötada ja vanemad kompilaatorid ei saa kasutada uusimaid DFP-sid.

Versioon 2.19 (funktsionaalse ohutuse väljalase)

Mitte ühtegi.

Versioon 2.10

Mitte ühtegi

Versioon 2.05

Const objektid programmimälus Pange tähele, et vaikimisi paigutatakse konst-kvalifitseeritud objektid programmi mällu ja neile pääseb juurde (nagu siin kirjeldatud) . See mõjutab teie projekti suurust ja täitmiskiirust, kuid peaks vähendama RAM-i kasutamist. Selle funktsiooni saab vajadusel keelata, kasutades suvandit -mnoconst- da ta-in-progmem.

Versioon 2.00

Konfiguratsiooni kaitsmed Seadme konfiguratsioonikaitsmeid saab nüüd programmeerida, kasutades konfiguratsioonipragmat, millele järgneb seadistusväärtuste paar, et määrata kaitsme olek, nt
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Absoluutsed objektid ja funktsioonid Objekte ja funktsioone saab nüüd paigutada mällu kindlale aadressile, kasutades CCI _at (aadress) spetsifikaatorit, näiteksample: #kaasa int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Selle spetsifikaatori argument peab olema konstant, mis tähistab aadressi, kuhu esimene bait või käsk paigutatakse. RAM-i aadressid näidatakse nihkega 0x800000. Selle funktsiooni kasutamiseks lubage CCI.
Uus katkestusfunktsiooni süntaks Kompilaator aktsepteerib nüüd CCI katkestuse (numbri) spetsifikaatorit, mis näitab, et C-funktsioonid on katkestuste töötlejad. Täpsustaja võtab katkestuse numbri, näiteksample: #kaasa void interrupt(SPI STC_ vect _num) spi Isr(void) { … }

Parandatud probleemid

Järgnevalt on toodud koostajasse tehtud parandused. Need võivad parandada loodud koodi vigu või muuta kompilaatori tööd vastavalt kasutusjuhendis ette nähtud või täpsustatule. Versiooninumber alampealkirjades näitab esimest kompilaatori versiooni, mis sisaldab järgnevate probleemide parandusi. Pealkirjas olevad sulgudes olevad sildid on selle probleemi tunnus(ed) jälgimisandmebaasis. Need võivad olla kasulikud, kui peate toega ühendust võtma.

Pange tähele, et mõned seadmepõhised probleemid parandatakse seadmega seotud Device Family Packis (DFP). Vaadake MPLAB Pack Managerist teavet DFP-des tehtud muudatuste kohta ja uusimate pakettide allalaadimiseks.

Versioon 2.40

Liiga lõdvestunud (XCS-2876) Suvandi -mrelax kasutamisel ei eraldanud kompilaator mõnda jaotist kokku, mille tulemuseks oli vähem optimaalne koodi suurus. See võis juhtuda koodiga, mis kasutas uusi MUSL-i teeke, või nõrkade sümbolitega.
Kaardistamisfunktsioon ei ole keelatud, nagu on öeldud hoiatuses (XCS-2875) Kuluandmete konfiguratsioonis kaardistatud programmi funktsioon sõltub sellest, kas kuluandmete funktsioon on lubatud. Kui funktsioon cost-data-ipconfig-mapped-proem oli suvandi abil selgesõnaliselt lubatud ja funktsioon kuluandmete-inprogmem oli keelatud, siis linkimine ebaõnnestus, hoolimata hoiatusteatest, mis teatas, et cons data-in-config-mapped- proem funktsioon oli automaatselt keelatud, mis ei olnud täiesti õige. Funktsioon const-data-in-config-mapped-proem on selles olukorras nüüd täielikult keelatud.
DFP muudab NVMCTRL-ile õigesti juurdepääsu (XCS-2848) AVR64EA seadmete kasutatav käitusaegne käivituskood ei võtnud arvesse seda, et NVMCTRL-i register oli konfiguratsioonimuutuste kaitse (CCP) all ja ei saanud seadistada IO SFR-i lehele, mida kasutab const-data-in configmapped-proem kompilaator. tunnusjoon. AVR-Ex_DFP versioonis 2.2.55 tehtud muudatused võimaldavad käitusaegsel käivituskoodil sellesse registrisse õigesti kirjutada.
DFP muudatused vältimaks flash-kaardistamist (XCS-2847) Rakendatud on lahendus AVR128DA28/32/48/64 Silicon Errata (DS80000882) kirjeldatud välklambi kaardistamisseadme funktsiooniga seotud probleemile. Kompilaatori const-data-in-config-mapped-proem kompilaatorit ei rakendata mõjutatud seadmete puhul vaikimisi ja see muudatus ilmub AVR-Ex_DFP versioonis 2.2.160.
Koostamisviga sinhfi või coshfiga (XCS-2834) Katsed kasutada teegi funktsioone sinhf () või coshf () andsid tulemuseks lingivea, mis kirjeldas määratlemata viidet. Viidatud puuduv funktsioon on nüüd lisatud kompilaatori jaotusse.
Nopa (XCS-2833) koostamise vead Atribuudi nopa kasutamine funktsiooniga, mille koostaja nimi on määratud kui () käivitas assemblerilt saadud veateated. See kombinatsioon pole võimalik.
Variadic funktsiooni tõrge kursori argumentidega (XCS-2755, XCS-2731) Muutuva arvu argumentidega funktsioonid eeldavad 24-bitiste (_memo tüüpi) osutite edastamist muutujate argumentide loendis, kui funktsioon kuluandmete-in-proem on lubatud. Argumendid, mis osutasid andmemällu, edastati 16-bitiste objektidena, mis põhjustas nende lugemisel kooditõrke. Kui miinuste andme-in-proem funktsioon on lubatud, teisendatakse kõik 16-bitiste osutite argumendid nüüd 24-bitisteks osutiteks. strtoxxx teegi funktsioonid ebaõnnestuvad (XCS-2620) Kui funktsioon const-data-in-proem oli lubatud, ei värskendatud strtoxxx teegi funktsioonide sisestusparameetrit õigesti lähtestringiargumentide jaoks, mis ei olnud programmimälus.
Hoiatused kehtetute heidete kohta (XCS-2612) Kompilaator annab nüüd veateate, kui sissemakse funktsioon on lubatud ja stringliteraali aadress kantakse selgesõnaliselt andme-aadressiruumi (konst-kvalifikaatori mahajätmine), näiteksample, (uint8 t *) “Tere maailm!”. Hoiatus on probleem, kui aadress võib olla kehtetu, kui konstandmekursor suunatakse selgesõnaliselt andmeaadressiruumi.
Initsialiseerimata const-objektide paigutamine (XCS-2408) Initsialiseerimata const ja const v volatiile objekte ei paigutatud programmimällu seadmetes, mis kaardistavad kogu oma programmimälu või osa sellest andmete aadressiruumi. Nende seadmete puhul paigutatakse sellised objektid nüüd programmimällu, muutes nende töö teiste seadmetega kooskõlas.

Versioon 2.39 (funktsionaalse ohutuse väljalase)

Mitte ühtegi.

Versioon 2.36

Viga viivitamisel (XCS-2774) Väiksed muudatused vaikevaba režiimi optimeerimises takistasid operandiavaldiste pidevat voltimist viivitusega sisseehitatud funktsioonidesse, mille tulemusena käsitleti neid mittekontaktidena ja käivitas tõrke: _buil tin avr delay_ cycles eeldab ac ompile ajaline täisarv konstant.

Versioon 2.35

Külgne jaotus _at (XCS-2653) abil Mitme objekti kohtade jaotamine sama nimega jaotises ja kasutades at () ei toiminud õigesti. Näiteksample: constchararrl [ ] at tri butte ((sect on(.miss”)))) at (Ox50 0 ) = {Oxo , Ox CD} ; kulu char arr2[ ] at tri butte ((section(.my s eke”)))) = {Härg, härg FE }; oleks pidanud asetama arr2 kohe pärast aril.
Sektsiooni algusaadresside määramine (XCS-2650) Valik -Wal, –section-start ei suutnud vaikselt sektsioone määratud algusaadressile paigutada. See probleem on kõigi kohandatud nimega jaotiste puhul parandatud; kuid see ei tööta ühegi standardse jaotise puhul, näiteks . tekst või . bss, mis tuleb paigutada suvandi -Wl, -T abil.
Linker jookseb lõdvestades kokku (XCS-2647) Kui optimeerimine -relax oli lubatud ja seal oli koodi- või andmelõike, mis vabasse mällu ei mahtunud, jooksis linker kokku. Nüüd antakse sellisel juhul hoopis veateateid.
Halb EEPROM-i juurdepääs (XCS-2629) Leproma _read_ plokkrutiin ei töötanud Mega seadmetes õigesti, kui suvand -monist-data-in-proem oli lubatud (mis on vaikeolek), mistõttu EEPROM-i mälu ei loetud õigesti.
Kehtetu mälueraldus (XCS-2593, XCS-2651) Kui suvand -Tekst või -Tata linker (ntample edastatud kasutades -Wl draiveri suvandit) on määratud, värskendati vastavat teksti/andmepiirkonna päritolu; aga lõpp-aadressi ei kohandatud vastavalt, mis võis viia selleni, et piirkond ületas sihtseadme mäluvahemiku.
Vigane ATtiny katkestuskood (XCS-2465) Tatini seadmetele ehitamisel ja optimeerimised keelati (-00), võisid katkestusfunktsioonid käivitada operandi vahemikust väljas assembleri teated.
Võimalusi ei edastata (XCS-2452) Kui kasutate suvandit -Wl koos mitme komadega eraldatud linkeri valikuga, ei edastatud linkerile kõiki linkeri valikuid.
Viga programmi mälu kaudsel lugemisel (XCS-2450) Mõnel juhul tekitas kompilaator kahebaidise väärtuse lugemisel kursorist programmimällu sisemise vea (tundmatu insn).

Versioon 2.32

Teine juurdepääs teegile ebaõnnestub (XCS-2381) xc8-ar Windowsi versiooni kutsumine. exe raamatukogu arhiveerija teist korda olemasolevale teegi arhiivile juurdepääsuks võis ebaõnnestuda, kuna tõrketeadet ei saa ümber nimetada.

Versioon 2.31

Seletamatud kompilaatori tõrked (XCS-2367) Kui töötate Windowsi platvormidel, mille süsteemi ajutine kataloog oli seatud teele, mis sisaldas punkti". tähemärki, võis kompilaatori täitmine ebaõnnestuda.

Versioon 2.30

Üldised sildid on pärast piirjooni valesti paigutatud (XCS-2299) Käsitsi kirjutatud montaažikood, mis asetab globaalsed sildid monteerimisjadadesse, mis arvestatakse välja protseduurilise abstraktsiooniga, ei pruugi olla õigesti ümber paigutatud.
Lõõgastav kokkupõrge (XCS-2287) Suvandi -merlad kasutamine võis põhjustada linkeri kokkujooksmise, kui sabahüppe lõdvestamise optimeerimine üritas eemaldada ret-käske, mis ei olnud jaotise lõpus.
Krahh siltide optimeerimisel väärtustena (XCS-2282) Kood, mis kasutas GNU C keelelaiendit "Sildid väärtustena", võis põhjustada protseduurilise abstraktsiooni optimeerimise kokkujooksmise, mille tulemuseks oli parandusvea piiritletud VMA vahemiku ulatus.
Pole nii kindel (XCS-2271) Alguste () ja muude funktsioonide prototüübid kui funktsioon -monist-data inprogmem on keelatud, ei määra enam mittestandardset kulutähist tagastatud stringi osutitel. Pange tähele, et avrxmega3 ja avertin seadmete puhul on see funktsioon püsivalt lubatud.
Kadunud lähtestajad (XCS-2269) Kui tõlkeüksuses paigutati sektsiooni rohkem kui üks muutuja (kasutades jaotist või atribuuti ((section))) ja esimene selline muutuja oli nullinitsialiseeritud või sellel ei olnud initsialiseerijat, siis sama tõlkeüksuse teiste muutujate lähtestajad mis paigutati samasse sektsiooni, läksid kaduma.

Versioon 2.29 (funktsionaalse ohutuse väljalase)

Mitte ühtegi.

Versioon 2.20

Viga pikkade käskude korral (XCS-1983) Kui kasutate AVR-i sihtmärki, võib kompilaator olla peatunud tähega a file viga ei leitud, kui käsurida oli äärmiselt suur ja sisaldas erimärke, näiteks jutumärke, kaldkriipsu jne.
Määramata rodata osa (XCS-1920) AVR-i linker ei suutnud avrxmega3 ja avrtiny arhitektuuride jaoks kohandatud rodata sektsioonide jaoks mälu määrata, mis võib põhjustada mälu kattumise vigu

Versioon 2.19 (funktsionaalse ohutuse väljalase)

Mitte ühtegi.

Versioon 2.10

Ümberpaigutamise tõrked (XCS-1891) Kõige sobivam jaotur oli pärast linkeri lõdvestamist sektsioonide vahele mäluaukude jätmine. Lisaks mälu killustamisele suurendas see linkeri ümberpaigutamise tõrkeid, mis on seotud arvuti suhteliste hüpetega või kõnede levialast välja jäämisega.
Juhised, mida lõõgastus ei muuda (XCS-1889) Linkeri lõdvestumine ei toimunud hüppe- või helistamisjuhiste puhul, mille sihtmärgid muutuvad lõdvestatuna kättesaadavaks.
Kadunud funktsionaalsus (XCSE-388) Mitmed definitsioonid alates , nagu clock_ div_ t ja clock_prescale_set (), ei olnud seadmete jaoks määratletud, sealhulgas ATmega324PB, ATmega328PB, ATtiny441 ja ATtiny841.
Puuduvad makrod Eelprotsessori makrosid_ xcs _MODE_, _xcs VERSION, _xc ja xcs ei määratlenud kompilaator automaatselt. Need on nüüd saadaval.

Versioon 2.05

Sisemine kompilaatori viga (XCS-1822) Windowsi all ehitamisel võib koodi optimeerimisel tekkida sisemine kompilaatori viga.
RAM-i ülevoolu ei tuvastatud (XCS-1800, XCS-1796) Mõnes olukorras ei tuvastanud kompilaator programme, mis ületasid saadaoleva RAM-i, mille tulemuseks oli käituskoodi tõrge.
Välkmälu on välja jäetud (XCS-1792) Avrxmega3 ja avrtiny seadmete puhul võis MPLAB X IDE jätta osa välkmälust programmeerimata.
Peamise käivitamise ebaõnnestumine (XCS-1788) Mõnes olukorras, kus programmis ei olnud globaalseid muutujaid määratletud, ei väljunud käitusaja käivituskood ja põhifunktsiooni () ei saavutatud kunagi.
Vale mäluteave (XCS-1787) Avrxmega3 ja avrtiny seadmete puhul teatas avr-size programm, et kirjutuskaitstud andmed tarbivad programmimälu asemel RAM-i.
Vale programmimälu lugemine (XCS-1783) Projektid, mis on koostatud seadmetele, mille programmimälu on kaardistatud andmete aadressiruumi ja mis määratlevad objekte makro/atribuudi PROGMEM abil, võisid neid objekte valelt aadressilt lugeda.
Sisemine viga atribuutidega (XCS-1773) Ilmnes sisemine viga, kui määrasite kursoriobjektid
_at () või atribuut() märgid kursori nime ja viiteta tüübi vahel, ntample, sar*
_at ( 0x80015 0) cp; Sellise koodi ilmnemisel antakse nüüd hoiatus.
Peamise käivitamise ebaõnnestumine (XCS-1780, XCS-1767, XCS-1754) EEPROM-i muutujate kasutamine või kaitsmete defineerimine konfiguratsioonipragma abil võis põhjustada andmete vale initsialiseerimise ja/või lukustada programmi käitamise käitusaegses käivituskoodis enne põhipunkti jõudmist () .
Kaitsme viga väikeste seadmetega (XCS-1778, XCS-1742) Attiny4/5/9/10/20/40 seadmetel oli päises määratud vale kaitsme pikkus files, mis viivad linkeri vigadeni, kui üritatakse luua kaitsmeid määratlevat koodi.
Segmenteerimisviga (XCS-1777) Vahepealne segmenteerimise viga on parandatud.
Assembleri krahh (XCS-1761) Avr-as assembler võis kokku kukkuda, kui kompilaatorit käitati Ubuntu 18 all.
Objekte ei kustutata (XCS-1752) Käitusaja käivituskood ei pruukinud kustutada initsialiseerimata staatilise salvestuse kestuse objekte.
Konfliktset seadme spetsifikatsiooni eirati (XCS-1749) Kompilaator ei tekitanud tõrget, kui kasutati mitut seadme spetsifikatsiooni valikut ja osutas erinevatele seadmetele.
Mälu rikutud kuhjaga (XCS-1748) Heap_ start sümbol oli valesti seatud, mille tulemuseks oli võimalus, et hunnik rikub tavalisi muutujaid.
Linkeri ümberpaigutamise viga (XCS-1739) Linkeri ümberpaigutamise tõrge võis ilmneda siis, kui kood sisaldas rjmp- või rckutset, mille sihtmärk oli täpselt 4 XNUMX baiti kaugusel.

Versioon 2.00

Mitte ühtegi.

Teadaolevad probleemid

Järgmised on kompilaatori töö piirangud. Need võivad olla üldised kodeerimispiirangud või
kõrvalekalded kasutusjuhendis sisalduvast teabest. Pealkirjas olevad sulgudes olevad sildid on selle probleemi tunnus(ed) jälgimisandmebaasis. Sellest võib kasu olla, kui peate toega ühendust võtma. Üksused, millel pole silte, on piirangud, mis kirjeldavad töörežiimi ja jäävad tõenäoliselt püsivalt kehtima.

MPLAB X IDE integreerimine

MPLAB IDE integreerimine Kui kompilaatorit kasutatakse MPLAB IDE-st, peate enne kompilaatori installimist installima MPLAB IDE.

Koodi genereerimine

PA-mälu eraldamise tõrge (XCS-2881) Protseduuriliste abstraktsioonide optimeerijate kasutamisel võib linker teatada mälu jaotamise vigadest, kui koodi suurus on lähedane seadmes saadaoleva programmimälu mahule, kuigi programm peaks mahtuma vaba ruumi.
Mitte nii nutikas Smart-IO (XCS-2872) Kompilaatori smart-io funktsioon genereerib kehtiva, kuid ebaoptimaalse koodi sprindifunktsiooni jaoks, kui rannikuandmete-in-proem funktsioon on keelatud või kui seadme kogu välkmälu on kaardistatud andmemällu.
Veelgi vähem nutikas Smart-IO (XCS-2869) Kompilaatori smart-io funktsioon genereerib kehtiva, kuid mitteoptimaalse koodi, kui kasutatakse suvandeid -floe ja -fno-buil tin.
Mitteoptimaalne kirjutuskaitstud andmepaigutus (XCS-2849) Linker ei ole praegu teadlik APPCODE ja APPDATA mälusektsioonidest ega [No-]Read-While-Write jaotustest mälukaardil. Selle tulemusena on väike võimalus, et linker võib eraldada kirjutuskaitstud andmed ebasobivas mälupiirkonnas. Valesti paigutatud andmete tõenäosus suureneb, kui rannikuandmed pragmas on lubatud, eriti kui lubatud on ka rannikuandmete konfiguratsioonis-mapped-proem funktsioon. Neid funktsioone saab vajadusel keelata.
Objekt file tellimuse töötlemine (XCS-2863) Objektide järjekord fileLinker töötleb s-id, mis võib erineda sõltuvalt protseduurilise abstraktsiooni optimeerimise kasutamisest (-mpa valik). See mõjutaks ainult koodi, mis määratleb mitme mooduli nõrgad funktsioonid.
Linkeri viga absoluutsega (XCS-2777) Kui objekt on muudetud RAM-i alguses asuval aadressil absoluutseks ja määratletud on ka initsialiseerimata objektid, võib vallandada linkeri tõrge.
Lühikese äratuse ID-d (XCS-2775) ATA5700/2 seadmete puhul on PHID0/1 registrid defineeritud ainult 16 bitti laiustena, mitte 32 bitti laiustena.
Linkeri krahh helistamisel sümbol (XCS-2758) Linker võib kokku kukkuda, kui kasutatakse suvandit -merlad draiver, kui lähtekood kutsub esile sümboli, mis on määratletud võtmega -Wl, –defsym linker.
Vale lähtestamine (XCS-2679) On lahknevus selle vahel, kus mõne globaalse/staatilise baidisuuruse objekti algväärtused andmemällu paigutatakse ja kus muutujatele käitusajal juurde pääsetakse.
käivitatud valesti seab tühjaks (XCS-2652) Juhtudel, kui tähise () abil teisendatav teemastring sisaldab eksponentsiaalses vormingus ujukomaarvu ja e-märgi järel on ootamatu märk, osutab tühi aadress, kui see on ette nähtud e ja mitte e ise. Näiteksample: stated(“hooey”, tühi); tulemuseks on tühi osutamine tähemärgile x.
Halvad kaudsed funktsioonikutsed (XCS-2628) Mõnel juhul võivad struktuuri osana salvestatud funktsiooniosuti kaudu tehtud funktsioonikutsed ebaõnnestuda.
strtof tagastab kuueteistkümnendsüsteemi ujukite jaoks nulli (XCS-2626) Teegi funktsioonid strtof () et al ja scanf () jt teisendavad alati kuueteistkümnendsüsteemi ujukomaarvu, mis ei määra eksponenti
null. Näiteksample: staator("Öökull", &tühi); tagastab väärtuse 0, mitte 1.
Ebatäpne virnanõustaja sõnumside (XCS-2542, XCS-2541) Mõnel juhul ei edastata pinunõustaja hoiatust kasutatud rekursiooni või määramatu virna kohta (võimalik, et alloca() kasutamise tõttu).
Tõrge dubleeritud katkestuskoodiga (XCS-2421) Kui rohkem kui ühel katkestusfunktsioonil on sama keha, võib kompilaatoril olla ühe katkestusfunktsiooni väljund teise jaoks. Selle tulemuseks on see, et kõik kõnedega blokeeritud registrid salvestatakse asjatult ja katkestused lubatakse isegi enne, kui praeguse katkestuse töötleja epiloog on käivitatud, mis võib põhjustada koodi tõrke.
Const-objektid, mis pole programmimälus (XCS-2408) Avrxmega3 ja avertinsi projektide puhul paigutatakse andmemällu idealiseerimata const-objektid, kuigi hoiatus viitab sellele, et need on paigutatud programmimällu. See ei mõjuta seadmeid, millel pole andmemäluruumi kaardistatud programmimälu, ega ka ühtegi lähtestatud objekti.
Vale väljund vale DFP teega (XCS-2376) Kui kompilaatorit kutsutakse välja vale DFP tee ja spetsifikatsiooniga file on valitud seadme jaoks olemas, kompilaator ei teata puuduvast seadmeperepaketist ja valib selle asemel spetsifikatsiooni file, mis võib seejärel põhjustada kehtetu väljundi. 'spetsifikaat' files ei pruugi olla hajutatud DFP-dega ajakohased ja mõeldud kasutamiseks ainult kompilaatori sisemise testimisega.
Mälu kattumine on tuvastamata (XCS-1966) Kompilaator ei tuvasta objektide mälu kattumist, mis on tehtud aadressiga absoluutseks (läbi ()) ja muude objektide, kasutades jaotise () spetsifikaatorit ja mis on lingitud sama aadressiga.
Teegi funktsioonide ja _meme (XCS-1763) tõrge Nimetatud limbilised ujukifunktsioonid, mille argument on aadressiruumis _memo, võivad ebaõnnestuda. Pange tähele, et teegirutiine kutsutakse mõnelt C-operaatorilt, nii et näiteksample, mõjutab see järgmist koodi: return regFloatVar > memxFloatVar;
Piiratud limbiline rakendamine (AVRTC-731) ATTiny4/5/9/10/20/40 toodete puhul on standardne C / Math teegi limbilise juurutus väga piiratud või puudub.
Programmi mälu piirangud (AVRTC-732) Tööriistaahel toetab programmimälu pilte, mis on suuremad kui 128 kb; Siiski on teada juhtumeid, kus linker katkeb ilma lõdvestuseta ja ilma abistava veateateta, selle asemel, et genereerida nõutud funktsioonide käsku, kui kasutatakse suvandit -relax.
Nimeruumi piirangud (AVRTC-733) Nimetatud aadressiruume toetab tööriistaahel, võttes arvesse piiranguid, mis on mainitud kasutusjuhendi jaotises Eritüüpi kvalifikatsioonid.
Ajavööndid The raamatukogu funktsioonid eeldavad GMT-d ja ei toeta kohalikke ajavööndeid, seega tagastab kohalik aeg () sama aja kui gummite (), näiteksample.

KLIENDITUGI

file:///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ VR jaoks. htm

Dokumendid / Ressursid

MICROCHIP MPLAB XC8 C kompilaatori tarkvara [pdfKasutusjuhend
MPLAB XC8 C, MPLAB XC8 C kompilaatori tarkvara, kompilaatori tarkvara, tarkvara

Viited

Jäta kommentaar

Teie e-posti aadressi ei avaldata. Kohustuslikud väljad on märgitud *