MICROCHIP logoMPLAB® XC8 C-samestellerweergawe 2.41-vrystellingsnotas vir AVR® MCU
Eienaarshandleiding

MPLAB XC8 C-samesteller-ontwikkelingsagteware

HIERDIE DOKUMENT BEVAT BELANGRIKE INLIGTING MET BETREKKING TOT DIE MPLAB XC8 C-samesteller WANNEER MICROCHIP AVR-TOESTELLE GETEIK WORD.
LEES DIT ASSEBLIEF VOORDAT U HIERDIE SAGTEWARE LAAT. SIEN DIE MPLAB XC8 C-KOMPILEER-VRYSTELLING-NOTAS VIR PIC-DOKUMENT AS JY DIE SAMESTELLER GEBRUIK VIR 8-BIT PIC-TOESTELLE.

verbyview

1.1. Inleiding
Hierdie vrystelling van die Microchip MPLAB® XC8 C samesteller bevat verskeie nuwe kenmerke en foutoplossings.
1.2. Bou datum
Die amptelike boudatum van hierdie samestellerweergawe is 8 Februarie 2023.
1.3. Vorige weergawe
Die vorige MPLAB XC8 C samesteller weergawe was 2.40 gebou op 3 Julie 2022.
1.4. Funksionele Veiligheidshandleiding
'n Funksionele Veiligheidshandleiding vir die MPLAB XC-samestellers is beskikbaar in die dokumentasiepakket wanneer jy 'n funksionele veiligheidslisensie koop.
1.5. Komponent lisensies en weergawes
Die MPLAB XC8 C-samesteller vir AVR MCU's-nutsgoed word geskryf en versprei onder die GNU General Public License (GPL), wat beteken dat die bronkode daarvan vrylik versprei word en aan die publiek beskikbaar is.
Die bronkode vir gereedskap onder die GNU GPL kan afsonderlik van Microchip's afgelaai word webwerf. Jy kan die GNU GPL lees in die lêer met die naam geleë in die subgids van jou install licence.txt avr/doc gids. 'n Algemene bespreking van beginsels onderliggend aan die GPL kan hier gevind word.
Ondersteuningskode wat voorsien word vir die koplêers, koppelskripte en looptydbiblioteke is eie kode en word nie onder die GPL gedek nie.
Hierdie samesteller is 'n implementering van GCC weergawe 5.4.0, binutils weergawe 2.26, en gebruik avr-libc weergawe 2.0.0.
1.6. Stelselvereistes
Die MPLAB XC8 C samesteller en die lisensiesagteware wat dit gebruik is beskikbaar vir 'n verskeidenheid bedryfstelsels, insluitend 64-bis weergawes van die volgende: Professionele uitgawes van Microsoft® Windows® 10; Ubuntu® 18.04; en macOS® 10.15.5. Binaries vir Windows is kode-onderteken. Binaries vir macOS is kode-onderteken en notarieel. Die MPLAB XC-netwerklisensiebediener is beskikbaar vir 'n verskeidenheid 64-bis-bedryfstelsels, insluitend Microsoft Windows 10 en hoër; Ubuntu 18.04 en hoër; of macOS 10.15 en hoër. Die bediener kan ook op verskeie ander bedryfstelsels loop, insluitend Windows Server, Linux-verspreidings, soos Oracle® Enterprise Linux® en Red Hate Enterprise Linux sowel as ouer weergawes van ondersteunde bedryfstelsels. Die MPLAB XC-netwerklisensiebediener word egter nie op hierdie bedryfstelsels getoets nie. Die MPLAB XC-netwerklisensiebediener kan op virtuele masjiene van die ondersteunde bedryfstelsel gebruik word deur 'n virtuele masjienlisensie vir netwerklisensies (SW006021-VM) te gebruik. Alle 32-bis weergawes van die MPLAB XC Network Server word gestaak vanaf weergawe 3.00.
Toestelle wat ondersteun word
Hierdie samesteller ondersteun alle beskikbare 8-bis AVR MCU toestelle ten tyde van vrystelling. Sien (in die samesteller se gids) vir 'n lys van alle ondersteunde toestelle. Hierdie lêers lys ook
avr_chipinfo.html doc konfigurasie bis instellings vir elke toestel.

1.7. Uitgawes en lisensie-opgraderings
Die MPLAB XC8 samesteller kan as 'n gelisensieerde (PRO) of ongelisensieerde (gratis) produk geaktiveer word. Jy moet 'n aktiveringssleutel koop om jou samesteller te lisensieer. 'n Lisensie maak voorsiening vir 'n hoër vlak van optimalisering in vergelyking met die Gratis produk. 'n Ongelisensieerde samesteller kan onbepaald sonder 'n lisensie bedryf word. 'n MPLAB XC8 Functional Safety-samesteller moet geaktiveer word met 'n funksionele veiligheidslisensie wat by Microchip gekoop is. Die samesteller sal nie sonder hierdie lisensie werk nie. Sodra dit geaktiveer is, kan jy enige optimaliseringsvlak kies en al die samestellerkenmerke gebruik. Hierdie vrystelling van die MPLAB XC Functional Safety Compiler ondersteun die netwerkbedienerlisensie.
Sien die installering en lisensiëring van MPLAB XC C-samestellers (DS50002059) dokument vir inligting oor lisensietipes en installering van die samesteller met 'n lisensie.

1.8. Installasie en aktivering
Sien ook die Migrasie-kwessies en -beperkings-afdelings vir belangrike inligting oor die nuutste lisensiebestuurder wat by hierdie samesteller ingesluit is.
As jy MPLAB IDE gebruik, maak seker dat jy die nuutste MPLAB X IDE weergawe 5.0 of later installeer voordat jy hierdie instrument installeer. Verlaat die IDE voordat die samesteller geïnstalleer word. Begin die (Windows), (Linux) of (macOS) .exe .run .app samesteller installeerder toepassing, bv en volg die aanwysings op die skerm. XC8-1.00.11403-windows.exe Die verstek installasie gids word aanbeveel. As jy Linux gebruik, moet jy die samesteller installeer met behulp van 'n terminaal en vanaf 'n wortelrekening. Installeer met 'n macOS-rekening met administrateurregte.
Aktivering word nou afsonderlik na installasie uitgevoer. Sien die dokument Lisensiebestuurder vir MPLAB® XC C-samestellers (DS52059) vir meer inligting.
As jy kies om die samesteller onder die evalueringslisensie te laat loop, sal jy nou 'n waarskuwing tydens samestelling kry wanneer jy binne 14 dae na die einde van jou evalueringsperiode is. Dieselfde waarskuwing word uitgereik as jy binne 14 dae na die einde van jou HPA-intekening is.
Die XC Network License Server is 'n aparte installeerder en is nie by die enkelgebruiker samesteller installeerder ingesluit nie.
Die XC-lisensiebestuurder ondersteun nou swerwing van swewende netwerklisensies. Gemik op mobiele gebruikers, hierdie kenmerk laat 'n drywende lisensie toe om vir 'n kort tydperk van die netwerk af te gaan. Deur hierdie kenmerk te gebruik, kan jy van die netwerk ontkoppel en steeds jou MPLAB XC-samesteller gebruik. Sien die doc-lêergids van die XCLM-installasie vir meer oor hierdie kenmerk.
MPLAB X IDE bevat 'n lisensievenster (Gereedskap > Lisensies) om swerwing visueel te bestuur.

1.8.1. Los installasie kwessies op
As jy probleme ondervind om die samesteller onder enige van die Windows-bedryfstelsels te installeer, probeer die volgende voorstelle.
Begin die installasie as 'n administrateur.
Stel die toestemmings van die installeerdertoepassing op 'Volledige beheer'. (Regsklik op die lêer, kies Eienskappe, Sekuriteit-oortjie, kies gebruiker, redigeer.)
Stel toestemmings van die temp-lêergids op 'Volledige beheer'.
Om die ligging van die temp-lêergids te bepaal, tik %temp% in die Run-opdrag (Windows-logosleutel + R).
Dit sal 'n lêerverkenner-dialoog oopmaak wat daardie gids wys en sal jou toelaat om die pad van daardie gids te bepaal.
1.9. Samesteller dokumentasie
Die samesteller se gebruikersgidse kan oopgemaak word vanaf die HTML-bladsy wat in jou blaaier oopmaak wanneer jy op die blou hulpknoppie in MPLAB X IDE-kontroleskerm klik, soos in die skermkiekie aangedui.

As jy vir 8-bis AVR-teikens bou, bevat die MPLAB® XC8 C-samestellergebruikersgids vir AVR® MCU inligting oor daardie samestelleropsies en kenmerke wat op hierdie argitektuur van toepassing is.

MICROCHIP MPLAB XC8 C-samesteller-ontwikkelingsagteware -

1.10. Klanteondersteuning
Microchip verwelkom foutverslae, voorstelle of opmerkings oor hierdie samestellerweergawe. Stuur asseblief enige foutverslae of kenmerkversoeke via die ondersteuningstelsel.

Dokumentasie-opdaterings

Vir aanlyn en bygewerkte weergawes van MPLAB XC8 dokumentasie, besoek asseblief Microchip se aanlyn tegniese dokumentasie webwerf. Nuwe of opgedateerde AVR-dokumentasie in hierdie vrystelling:

  • MPLAB® XC8 C-samestellergebruikersgids vir AVR® MCU (hersiening G)
  • AVR® GNU Toolchain na MPLAB® XC8 Migrasiegids (hersiening A)
  • Hexmate Gebruikersgids (hersiening B)

Die AVR® GNU Toolchain na MPLAB® XC8 Migrasiegids beskryf die veranderinge aan bronkode en bouopsies wat nodig mag wees indien jy besluit om 'n C-gebaseerde projek van die AVR 8-bis GNU Toolchain na die Microchip MPLAB XC8 C-samesteller te migreer. Die Microchip Unified Standard Library Reference Guide beskryf die gedrag van en koppelvlak tot die funksies wat deur die Microchip Unified Standard Library gedefinieer word, sowel as die beoogde gebruik van die biblioteektipes en makro's. Sommige van hierdie inligting was voorheen vervat in die MPLAB® XC8 C-samestellergebruikersgids vir AVR® MCU. Toestelspesifieke biblioteekinligting word steeds in hierdie samestellergids vervat.
As jy net begin met 8-bis-toestelle en die MPLAB XC8 C-samesteller, het die MPLAB® XC8-gebruikersgids vir ingebedde ingenieurs – AVR® MCU's (DS50003108) inligting oor die opstel van projekte in die MPLAB X IDE en die skryf van kode vir jou eerste MPLAB XC8 C-projek. Hierdie gids word nou saam met die samesteller versprei.
Die Hexmate-gebruikersgids is bedoel vir diegene wat Hexmate as 'n alleenstaande toepassing gebruik.

Wat is nuut

Die volgende is nuwe AVR-teikenkenmerke wat die samesteller nou ondersteun. Die weergawenommer in die subopskrifte dui die eerste samestellerweergawe aan om die kenmerke wat volg te ondersteun.
3.1. Weergawe 2.41
Bootrow-ondersteuning (XC8-3053) Die samesteller sal die inhoud van enige afdelings met 'n voorvoegsel by.bootrow-adres 0x860000 in die HEX-lêer plaas. Hierdie afdelings word gebruik vir BOOTROW-geheue, wat ontwerp is vir die stoor van sleutels en ander veilige inligting wat slegs vir 'n selflaaiprogram toeganklik behoort te wees.

Uitskakeling van oortollige terugkeer (XC8-3048) Die samesteller sal nou oortollige instruksies in ret-funksies uitskakel met 'n stertsprong wanneer persoonlike koppelskrifte gebruik word. Dit is 'n soortgelyke optimalisering as wat voorheen uitgevoer is, maar dit word nou uitgevoer op alle weesafdelings, selfs al word 'n pasgemaakte koppelskrif gebruik en die beste gepaste toekenningskema is nie in die spel nie. Tydtipe verandering (XC8-2982, 2932) Die C99 standaard biblioteek tipe, is verander van 'n time_t na 'n tipe, wat kodegrootte verbeterings gee in sommige tydverwante lang lang funksies, soos. ongetekende lang mktime()
Nuwe nop (XC8-2946, 2945) Die makro is bygevoeg. Hierdie makro voeg 'n no- NOP() in nop operasie instruksie in die uitset.
Opdatering na XCLM (XC8-2944) Die lisensiebestuurder wat saam met die samesteller gebruik word, is opgedateer en reageer nou meer wanneer die samesteller se lisensiebesonderhede nagegaan word.
Trampgelyn-oproepe (XC8-2760) Die samesteller kan nou vervanging van langvormoproepinstruksies met korter relatiewe oproepe uitvoer wanneer die relatiewe vorms van die instruksies normaalweg buite bereik van hul bestemming sou wees. In hierdie situasie sal die samesteller probeer om te vervang met instruksies om rcall 'n instruksie te noem wat 'trampoline' uitvoering na die verlangde adres, bvampjy: jmp
roep tramp_foo ;was noem foo

roep tramp_foo

tramp_foo:
jmp foo

Hierdie optimalisering, tesame met soortgelyke programvloeioptimalisasies, word beheer deur die -mrelax-opsie.

3.2. Weergawe 2.40
Nuwe toestelondersteuning is nou beskikbaar vir die volgende AVR-onderdele: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32, AVR64EA48 en AVRXNUMX en AVRXNUMX.
Verbeterde prosedurele abstraksie Die prosedurele abstraksie (PA) optimeringsinstrument is verbeter sodat kode wat 'n funksie-oproepinstruksie (/ ) bevat, gebruik kan word. Dit sal slegs plaasvind oproep rcall as die stapel nie gebruik word om argumente deur te gee na of om terugkeerwaarde van die funksie te verkry nie. Die stapel word gebruik wanneer 'n funksie met 'n veranderlike argumentlys geroep word of wanneer 'n funksie geroep word wat meer argumente neem as wat daar registers is wat vir hierdie doel aangewys is. Hierdie kenmerk kan gedeaktiveer word deur die opsie te gebruik, of prosedurele abstraksie kan heeltemal gedeaktiveer word vir 'n objeklêer of funksie deur die- en onderskeidelik te gebruik, of deur die kenmerk (spesifiseerder) selektief met funksies te gebruik.
mno-pa-outline-oproepe -mno-pa-op-file -mno-pa-on-function nopa Kode dekking makro Die samesteller definieer nou die makro as 'n geldige opsie __nopa __CODECOV -mcodecov gespesifiseer is.
Geheuebesprekingsopsie Die bestuurder sal nou die xc8-cc -mreserve=space@start:end opsie aanvaar wanneer jy vir AVR-teikens bou. Hierdie opsie behou die gespesifiseerde geheuereeks in die data- of programgeheuespasie, wat verhoed dat die koppelaar kode of voorwerpe in hierdie area invul. Slimmer slim IO Verskeie verbeterings is aan die Smart IO-funksies aangebring, insluitend algemene aanpassings aan die printf-kernkode, die behandeling van die %n-omskakelingspesifiseerder as 'n onafhanklike variant, skakel in vararg-pop-roetines op aanvraag, gebruik korter datatipes waar moontlik vir hantering IO funksie argumente, en faktorisering van algemene kode in veldwydte en presisiehantering. Dit kan aansienlike kode- en databesparings tot gevolg hê, asook die uitvoeringspoed van IO verhoog.

3.3. Weergawe 2.39 (Funksionele Veiligheidsvrystelling)
Netwerkbedienerlisensie Hierdie vrystelling van die MPLAB XC8 Functional Safety Compiler ondersteun die netwerkbedienerlisensie.
3.4. Weergawe 2.36
Geen.

3.5. Weergawe 2.35
Nuwe toestelondersteuning is beskikbaar vir die volgende AVR-onderdele: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 en AVR64DD32.
Verbeterde kontekswisseling Die nuwe -mcall-isr-prologues opsie verander hoe onderbrekingsfunksies registers stoor by inskrywing en hoe daardie registers herstel word wanneer die onderbrekingsroetine eindig. Dit werk op 'n soortgelyke manier as die -mcall-prologues-opsie, maar beïnvloed slegs onderbrekingsfunksies (ISR's).
Selfs meer verbeterde kontekswisseling Die nuwe -mgas-isr-prologues opsie beheer die konteksskakelaarkode wat vir klein onderbrekingsdiensroetines gegenereer word. Wanneer dit geaktiveer is, sal hierdie funksie die samesteller die ISR laat skandeer vir registergebruik en slegs hierdie gebruikte registers stoor indien nodig.
Konfigureerbare flitskartering Sommige toestelle in die AVR DA- en AVR DB-familie het 'n SFR (bv. FLMAP) wat spesifiseer watter 32k-afdeling van programgeheue in die datageheue gekarteer sal word. Die nuwe – mconst-data-in-config-mapped-progmem opsie kan gebruik word om die skakelaar alle const-gekwalifiseerde data in een 32k-afdeling te plaas en outomaties die relevante SFR-register te inisialiseer om te verseker dat hierdie data in die datageheue gekarteer word ruimte, waar dit meer effektief bereik sal word.
Microchip Unified Standard Library Alle MPLAB XC samestellers sal 'n Microchip Unified Standard Library deel, wat nou beskikbaar is met hierdie vrystelling van MPLAB XC8. Die MPLA# XC8 C-samestellergebruikersgids vir AVO MCU bevat nie meer die dokumentasie vir hierdie standaardfunksies nie. Hierdie inligting kan nou gevind word in die Microchip Unified Standard Library Reference Guide. Let daarop dat sommige funksies wat voorheen deur avr-libc gedefinieer is, nie meer beskikbaar is nie. (Sien Lila-funksionaliteit.)
Smart I0 As deel van die nuwe verenigde biblioteke, word I0-funksies in die printf- en scanf-families nou op elke bouvorm op maat gegenereer, gebaseer op hoe hierdie funksies in die program gebruik word. Dit kan die hulpbronne wat deur 'n program gebruik word aansienlik verminder.
Slim ICI-bystandsopsie Wanneer oproepe na slim I0-funksies (soos print f () of scanf ()) ontleed word, kan die samesteller nie altyd uit die formaatstring bepaal of uit die argumente daardie omskakelingspesifiseerders wat deur die oproep vereis word, aflei nie. Voorheen sou die samesteller altyd geen aannames maak nie en verseker dat ten volle funksionele 10 funksies in die finale programbeeld gekoppel is. 'n Nuwe – msmart-io-format=fmt-opsie is bygevoeg sodat die samesteller eerder deur die gebruiker ingelig kan word oor die omskakeling-spesifiseerders wat gebruik word deur slim I0-funksies waarvan die gebruik dubbelsinnig is, wat verhoed dat buitensporige lang 10 roetines gekoppel word. (Sien smart-io-formaat opsie vir meer besonderhede.)
Plaas pasgemaakte afdelings Voorheen het die -W1, –section-start-opsie slegs die gespesifiseerde afdeling by die gevraagde adres geplaas wanneer die koppelskrif 'n uitvoerafdeling met dieselfde naam gedefinieer het. Toe dit nie die geval was nie, is die afdeling geplaas by 'n adres wat deur die skakelaar gekies is en die opsie is in wese geïgnoreer. Nou sal die opsie vir alle pasgemaakte afdelings geëer word, selfs al definieer die koppelskrif nie die afdeling nie. Let egter daarop dat vir standaardafdelings, soos . teks,. bss of. data, sal die beste gepaste toewyser steeds volledige beheer oor hul plasing hê, en die opsie sal geen effek hê nie. Gebruik die -ton, -Tsection=addr opsie, soos beskryf in die gebruikersgids.
3.6. Weergawe 2.32
Stapelleiding Beskikbaar met 'n PRO samestellerlisensie, die samesteller se stapelleidingkenmerk kan gebruik word om die maksimum diepte van enige stapel wat deur 'n program gebruik word, te skat. Dit konstrueer en ontleed die oproepgrafiek van 'n program, bepaal die stapelgebruik van elke funksie, en produseer 'n verslag waaruit die diepte van stapels wat deur die program gebruik word, afgelei kan word. Hierdie kenmerk word geaktiveer deur die -mchp-stack-usage opdraglyn opsie. 'n Opsomming van stapelgebruik word gedruk na uitvoering. 'n Gedetailleerde stapelverslag is op die kaart beskikbaar file, wat op die gewone manier aangevra kan word.
Nuwe toestelondersteuning is beskikbaar vir die volgende AVR-onderdele: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32, AVR48DB16 en AVR28. Ondersteuning vir teruggetrekte toestelle is nie meer beskikbaar vir die volgende AVR-onderdele nie: AVR16DA32, AVR16DA48 en AVRXNUMXDAXNUMX.
3.7. Weergawe 2.31
Geen.
3.8. Weergawe 2.30
Nuwe opsie om data-inisialisering te voorkom 'n Nuwe -mno-data-init bestuurder opsie verhoed die inisialisering van data en die skoonmaak van bss afdelings. Dit werk deur die uitset van die do copy-data te onderdruk en duidelike bss-simbole in samestelling te doen files, wat op sy beurt die insluiting van daardie roetines deur die skakelaar sal verhoed.
Verbeterde optimalisering 'n Aantal optimaliseringsverbeterings is gemaak, insluitend die verwydering van oortollige terugkeer-instruksies, die verwydering van sommige spronge na aanleiding van 'n skip-as-bis-is-instruksie, en verbeterde prosedurele abstraksie en die vermoë om hierdie proses te herhaal. Bykomende opsies is nou beskikbaar om sommige van hierdie optimaliserings te beheer, spesifiek -f seksie-ankers, wat toelaat dat toegang tot statiese voorwerpe uitgevoer word relatief tot een simbool; -mpa-iterations=n, wat toelaat dat die aantal prosedurele abstraksie-iterasies verander word vanaf die verstek van 2; en, -mpa-callcost-shortcall, wat meer aggressiewe prosedurele abstraksie uitvoer, in die hoop dat die skakelaar lang oproepe kan verslap. Hierdie laaste opsie kan kodegrootte vergroot as die onderliggende aannames nie gerealiseer word nie.
Nuwe toestelondersteuning is beskikbaar vir die volgende AVR-onderdele: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128 AVR28, AVR128, AVR32, AVR128, AVR48, AVR128, AVR64, AVR5272, VR5790DB5790. Ondersteuning vir teruggetrek toestel is nie meer beskikbaar vir die volgende AVR-onderdele nie: ATA5791, ATA5795, ATA6285N, ATA6286, ATA6612, ATA6613, ATA6614, ATA6616C, ATA6617C, ATA664251Q, ATAXNUMXC, ATAXNUMXC, ATAXNUMXC, ATAXNUMXC, ATAXNUMXC, ATAXNUMXC, ATAXNUMXC en XNUMXC
3.9. Weergawe 2.29 (Funksionele Veiligheidsvrystelling)
Opskrif file vir samesteller ingeboude Om te verseker dat die samesteller kan voldoen aan taalspesifikasies soos MISRA, die kop file, wat outomaties ingesluit word deur , is opgedateer. Hierdie kop bevat die prototipes vir alle ingeboude funksies, soos builtin_avr_nop ( ) en ingeboude avr delay_cycles () . Sommige ingeboude is dalk nie aan MISRA voldoen nie; dit kan weggelaat word deur die defineXCSTRICT_MISRA by die samesteller-opdragreël by te voeg. Die ingeboude items en hul verklarings is opgedateer om tipes met vaste breedte te gebruik.
3.10. Weergawe 2.20
Nuwe toestelondersteuning is beskikbaar vir die volgende AVR-onderdele: ATTINY1624, ATTINY1626 en ATTINY1627.
Beter gepaste toekenning Die beste gepaste toewyser (BFA) in die samesteller is verbeter sodat afdelings in 'n volgorde toegewys word wat beter optimering moontlik maak. Die BFA ondersteun nou benoemde adresruimtes en hanteer data-inisialisering beter.
Verbeterde prosedurele abstraksie Die prosedurele abstraksie-optimalisasies word nou op meer kodereekse uitgevoer. Vorige situasies waar hierdie optimalisering kodegrootte kon vergroot het, is aangespreek deur die optimaliseringskode bewus te maak van die skakelaar se vullisversamelingsproses.
Afwesigheid van AVR-samesteller Die AVR-samesteller is nie meer by hierdie verspreiding ingesluit nie.
3.11. Weergawe 2.19 (Funksionele Veiligheidsvrystelling)
Geen.
3.12. Weergawe 2.10
Kodedekking Hierdie vrystelling sluit 'n kodedekkingsfunksie in wat ontledings vergemaklik van die mate waarin 'n projek se bronkode uitgevoer is. Gebruik die opsie -mcodecov=ram om dit te aktiveer. Na die uitvoering van die program op jou hardeware, sal kode dekking inligting in die toestel versamel word, en dit kan oorgedra word na en vertoon word deur die MPLAB X IDE via 'n kode dekking plugin. Sien die IDE-dokumentasie vir inligting oor hierdie inprop kan verkry word. Die #pragma nocodecov kan gebruik word om daaropvolgende funksies uit die dekkingsontledings uit te sluit. Ideaal gesproke moet die pragma aan die begin van die bygevoeg word file om daardie geheel uit te sluit file uit die dekkingsontledings. Alternatiewelik kan die _attribuut_ ((nocodecov) ) gebruik word om 'n spesifieke funksie van die dekkingsontledings uit te sluit.
Toestelbeskrywing files 'n Nuwe toestel file genoem avr_chipinfo . html is geleë in die docs-gids van die samestellerverspreiding. Hierdie file lys alle toestelle wat deur die samesteller ondersteun word. Klik op 'n toestelnaam, en dit sal 'n bladsy oopmaak wat al die toelaatbare konfigurasiebisinstellings/waardepyn vir daardie toestel wys, met bv.amples. Prosedurele abstraksie
Prosedure-abstraksie-optimalisasies, wat algemene blokke van samestellingkode vervang met oproepe na 'n onttrekte kopie van daardie blok, is by die samesteller gevoeg. Dit word uitgevoer deur 'n aparte toepassing, wat outomaties deur die samesteller opgeroep word wanneer vlak 2, 3 of s-optimalisasies gekies word. Hierdie optimaliserings verminder kodegrootte, maar hulle kan uitvoeringspoed en kode-foutbaarheid verminder. Prosedurele abstraksie kan op hoër optimaliseringsvlakke gedeaktiveer word deur die opsie -mno-pa te gebruik, of kan op laer optimaliseringsvlakke (onderhewig aan jou lisensie) geaktiveer word deur -mpa te gebruik. Dit kan vir 'n voorwerp gedeaktiveer word file gebruik -mno-pa-on-file=filenaam, of gedeaktiveer vir 'n funksie deur -mno-pa-on-function=function te gebruik. Binne jou bronkode kan prosedurele abstraksie vir 'n funksie gedeaktiveer word deur kenmerk ( (nopa) ) met die funksie se definisie te gebruik, of deur nopa te gebruik, wat uitbrei na attribuut ( (nopa, noinline) ) en dus verhoed dat funksie inlining plaasvind en daar is abstraksie van inlinede kode.
Sluit bisondersteuning in pragma Die #pragma config kan nou gebruik word om die AVR-slotbissies sowel as die ander konfigurasiebissies te spesifiseer. Gaan die avr_chipinfo na. html file (hierbo genoem) vir die instelling/waarde-pare om met hierdie pragma te gebruik. Nuwe toestelondersteuning Ondersteuning is beskikbaar vir die volgende dele: AVR28DAl28, AVR64DAl28, AVR32DA 128 en AVR48DA 128.
3.13. Weergawe 2.05
Meer stukkies vir jou geld Die macOS-weergawe van hierdie samesteller en lisensiebestuurder is nou 'n 64-bis-toepassing. Dit sal verseker dat die samesteller sonder waarskuwings op onlangse weergawes van macOS sal installeer en loop.
Konst-objekte in programgeheue Die samesteller kan nou konst-gekwalifiseerde voorwerpe in die program Flash-geheue plaas, eerder as om dit in RAM te hê. Die samesteller is so gewysig dat nadele-gekwalifiseerde globale data in programflitsgeheue gestoor word en hierdie data kan direk en indirek verkry word deur die toepaslike programgeheue-instruksies te gebruik. Hierdie nuwe kenmerk is by verstek geaktiveer, maar kan gedeaktiveer word met die -mno-const-data-in-progmem opsie. Vir avrxmega3- en avrtiny-argitekture is hierdie kenmerk nie nodig nie en is dit altyd gedeaktiveer, aangesien programgeheue in die data-adresspasie vir hierdie toestelle gekarteer word.
Standaard vir gratis Ongelisensieerde (gratis) weergawes van hierdie samesteller laat nou optimaliserings tot en met vlak 2 toe. Dit sal 'n soortgelyke, alhoewel nie identiese, uitvoer toelaat as wat voorheen moontlik was met 'n Standaardlisensie.
Welkom AVRASM2 Die AVRASM2 samesteller vir 8-bis toestelle is nou ingesluit in die XC8 samesteller installeerder. Hierdie samesteller word nie deur die XC8-samesteller gebruik nie, maar is beskikbaar vir projekte gebaseer op handgeskrewe samestellingsbron.
Nuwe toestelondersteuning is beskikbaar vir die volgende dele: ATMEGA1608, ATMEGA1609, ATMEGA808 en ATMEGA809.

3.14. Weergawe 2.00
Topvlakbestuurder 'n Nuwe bestuurder, genaamd xc8-cc, sit nou bo die vorige avr-gcc-bestuurder en die xc8-bestuurder, en dit kan die toepaslike samesteller oproep op grond van die keuse van die teikentoestel. Hierdie bestuurder aanvaar GCC-styl opsies, wat óf vertaal word vir óf deurgegee word na die samesteller wat uitgevoer word. Hierdie drywer laat 'n soortgelyke stel opsies met soortgelyke semantiek toe om met enige AVR- of PIC-teiken gebruik te word en is dus die aanbevole manier om die samesteller op te roep. Indien nodig, kan die ou avr-gcc bestuurder direk opgeroep word deur die ou-styl opsies wat dit aanvaar het in vroeër samesteller weergawes.
Common C Interface Hierdie samesteller kan nou ooreenstem met die MPLAB Common C Interface, sodat bronkode makliker oorgedra kan word oor alle MPLAB XC samestellers. Die -mext=cci opsie versoek hierdie kenmerk, wat alternatiewe sintaksis vir baie taaluitbreidings moontlik maak.
Nuwe bibliotekarisbestuurder 'n Nuwe bibliotekarisbestuurder is bo die vorige PIC-bibliotekaris en die AVR-avr-ar-bibliotekaris geposisioneer. Hierdie bestuurder aanvaar GCC-argiverer-styl opsies, wat óf vertaal word vir óf deurgegee word aan die bibliotekaris wat uitgevoer word. Die nuwe bestuurder laat 'n soortgelyke stel opsies met soortgelyke semantiek toe om enige PIC- of AVR-biblioteek te skep of te manipuleer file en is dus die aanbevole manier om die bibliotekaris op te roep. Indien nodig vir nalatenskapprojekte, kan die vorige bibliotekaris direk geskakel word deur die ou-styl opsies wat dit aanvaar het in vroeër samesteller weergawes.

Migrasie kwessies

Die volgende is kenmerke wat nou anders deur die samesteller hanteer word. Hierdie veranderinge mag dalk wysiging aan jou bronkode vereis as jy kode na hierdie samestellerweergawe oordra. Die weergawenommer in die subopskrifte dui die eerste samestellerweergawe aan om die veranderinge wat volg te ondersteun.

4.1. Weergawe 2.41
Onakkurate fma funksies verwyder (XC8-2913) Die C99 standaard biblioteek fma 0 -familie funksies ( ) het nie 'n vermenigvuldig-optel met oneindige akkuraatheid tot 'n enkele afronding bereken nie, maar eerder opgehoopte afrondingsfoute met elke bewerking. Hierdie funksies is uit die verskafde biblioteek verwyder.
4.2. Weergawe 2.40
Geen.
4.3. Weergawe 2.39 (Funksionele Veiligheidsvrystelling)
Geen.
4.4. Weergawe 2.36 Geen.
4.5. Weergawe 2.35
Hantering van string-tot-basisse (XC8-2420) Om konsekwentheid met ander XC-samestellers te verseker, sal die XC8 string-to-funksies, soos strtol () ens., nie meer probeer om 'n invoerstring om te skakel as die gespesifiseerde basis groter as 36 is nie en sal eerder errno op EINVAL stel. Die C-standaard spesifiseer nie die gedrag van die funksies wanneer hierdie basiswaarde oorskry word nie.
Onvanpaste spoedoptimalisering Prosedure-abstraksie-optimalisasies is geaktiveer wanneer vlak 3-optimalisasies (-03) gekies is. Hierdie optimaliserings verminder kodegrootte ten koste van kodespoed, dus moes nie uitgevoer gewees het nie. Projekte wat hierdie optimeringsvlak gebruik, kan dalk verskille in kodegrootte en uitvoeringspoed sien wanneer dit met hierdie vrystelling gebou word.
Biblioteekfunksionaliteit Die kode vir baie van die standaard C-biblioteekfunksies kom nou van Microchip se Unified Standard Library, wat in sommige omstandighede verskillende gedrag kan toon in vergelyking met dié wat deur die voormalige avr-libc-biblioteek verskaf word. Byvoorbeeldample, dit is nie meer nodig om in die 1printf flt-biblioteek (-1printf_flt-opsie) te skakel om geformateer aan te skakel nie I0 ondersteuning vir float-formaat spesifiseerders. Die slim I0 kenmerke van die Microchip Unified Standard Library maak hierdie opsie oorbodig. Daarbenewens is die gebruik van roetines met agtervoegsel _P vir string- en geheuefunksies (bv. strcpy_P ( ) ens..) wat op konstante snare in flits werk, nie meer nodig nie. Die standaard C-roetines (bv. strcpy ) sal korrek met sulke data werk wanneer die const-data-in-program-memory funksie geaktiveer is.

4.6. Weergawe 2.32
Geen.
4.7. Weergawe 2.31
Geen.
4.8. Weergawe 2.30
Geen.
4.1. Weergawe 2.29 (Funksionele Veiligheidsvrystelling)
Geen.
4.2. Weergawe 2.20
DFP-uitleg verander Die samesteller aanvaar nou 'n ander uitleg wat deur DFP's (Device Family Packs) gebruik word. Dit sal beteken dat 'n ouer DFP dalk nie met hierdie vrystelling werk nie, en ouer samestellers sal nie die nuutste DFP's kan gebruik nie.
4.3. Weergawe 2.19 (Funksionele Veiligheidsvrystelling)
Geen.
4.4. Weergawe 2.10
Geen
4.5. Weergawe 2.05
Konst-voorwerpe in programgeheue Let daarop dat die by verstek, konst-gekwalifiseerde voorwerpe in programgeheue geplaas en toeganklik sal wees (soos beskryf kleur). Dit sal die grootte en uitvoeringspoed van jou projek beïnvloed, maar behoort RAM-gebruik te verminder. Hierdie kenmerk kan gedeaktiveer word, indien nodig, met die -mnoconst-data-in-progmem opsie.
4.6. Weergawe 2.00
Configuration fuses Die toestel konfigurasie lont kan nou geprogrammeer word deur gebruik te maak van 'n konfigurasie pragma gevolg deur stel-waarde pare om die lont toestand te spesifiseer, bv.
#pragma config WDTON = SET
#pragma config BODLEVEL = BODLEVEL_4V3
Absolute voorwerpe en funksies Voorwerpe en funksies kan nou by spesifieke adres in die geheue geplaas word deur die CCI (adres) spesifiseerder, bvample:
#insluit
int foobar_at(0x800100);
char __at(0x250) getID(int offset) { … }
Die argument aan hierdie spesifiseerder moet wees 'n konstante wat die adres verteenwoordig waarop die eerste greep of instruksie geplaas sal word. RAM-adresse word aangedui deur 'n offset van 0x800000 te gebruik. Aktiveer die CCI om hierdie kenmerk te gebruik.
Nuwe onderbreking funksie sintaksis Die samesteller aanvaar nou die CCI _interrupt (num) spesifiseerder om aan te dui dat C funksies onderbreking hanteerders is. Die spesifiseerder neem 'n onderbrekingsnommer, bvample:
#insluit
void __interrupt(SPI_STC_vect_num) spi_Isr(void) { … }

Vaste kwessies

Die volgende is regstellings wat aan die samesteller aangebring is. Dit kan foute in die gegenereerde kode regmaak of die werking van die samesteller verander na dit wat deur die gebruikersgids bedoel of gespesifiseer is. Die weergawenommer in die subopskrifte dui die eerste samestellerweergawe aan wat regstellings bevat vir die kwessies wat volg. Die etiket(te) tussen hakies in die titel is daardie kwessie se identifikasie in die opsporingsdatabasis. Dit kan nuttig wees as jy ondersteuning moet kontak.
Let daarop dat sommige toestelspesifieke kwessies reggestel word in die Device Family Pack (DFP) wat met die toestel geassosieer word. Sien die MPLAB-pakketbestuurder vir inligting oor veranderinge wat aan DFP's gemaak is en om die nuutste pakke af te laai.

5.1. Weergawe 2.41
Donglekwessies op Ventura (XC8-3088) Dongles wat gebruik word om die samesteller te lisensieer is dalk nie behoorlik gelees op macOS Ventura-gashere nie, wat lei tot lisensie-mislukkings. Veranderinge aan die XCLM-lisensiebestuurder maak hierdie probleem reg.
Verkeerde aanduiding van geheuetoewysing (XC8-2925) Poging om SIZE_MAX grepe (of 'n waarde naby daaraan) van geheue toe te ken deur gebruik te maak van die standaard biblioteekgeheuebestuurfunksies (malloc () et al), het verkeerdelik geslaag. Dit het nie in ag geneem dat ekstra grepe nodig was bykomend tot die blok wat versoek is wanneer die eenvoudige dinamiese geheuetoewysingsimplementering gebruik word nie. 'n NULL-wyser sal nou teruggestuur word en in sulke situasies nie op ENOMEM gestel word nie.
Onakkurate fma-funksies verwyder (XC8-2913) Die C99 standaard biblioteek fma ( ) -familie funksies ( ) het nie 'n vermenigvuldig-optel met oneindige akkuraatheid tot 'n enkele afronding bereken nie, maar eerder opgehoopte afrondingsfoute met elke bewerking. Hierdie funksies is uit die verskafde biblioteek verwyder.
Slegte hantering van stringomskakeling (XC8-2921, XC8-2652) Wanneer 'n 'onderwerpreeks' vir omskakeling deur strtod Cr bevat wat blykbaar 'n swewende-puntgetal in eksponensiële formaat was en daar was 'n onverwagte karakter na die e/E-karakter, dan waar endptr verskaf is, is dit 'n adres toegeken wat het dit na die karakter ná die e/E laat wys, terwyl dit na die e/E-karakter self moes wys, aangesien dit nie omgeskakel is nie. Byvoorbeeldample, strtod ("100exx", &ep) moet 100.00 terugstuur en stel ep om na die "exx"-deel van die string te wys, terwyl die funksie die korrekte waarde teruggestuur het, maar ep gestel het om na die "xx"-deel van die string te wys .

5.2. Weergawe 2.40
Te ontspanne (XCS-2876) Wanneer die -mrelax-opsie gebruik word, het die samesteller sommige afdelings nie saam toegewys nie, wat gelei het tot minder optimale kodegroottes. Dit kon gebeur het met kode wat die nuwe MUSL-biblioteke gebruik het of met swak simbole.
Karteringkenmerk nie gedeaktiveer nie soos in waarskuwing (XC8-2875) Die const-data-in-config-mappedprogmem-kenmerk is afhanklik daarvan dat die const-data-in-progmem-kenmerk geaktiveer word. As die const-data-inconfig-mapped-progmem-kenmerk uitdruklik geaktiveer is met die opsie en die const-data-inprogmem-kenmerk is gedeaktiveer, het die skakelstap misluk, ten spyte van 'n waarskuwingsboodskap wat sê dat die const-data-in-con fig- gekarteer-program-kenmerk is outomaties gedeaktiveer, wat nie heeltemal korrek was nie. Die const-data-in-config-mapped-progmem-kenmerk is nou volledig gedeaktiveer in hierdie situasie.
DFP-veranderinge om korrek toegang tot NVMCTRL (XC8-2848) te verkry Die aanlooptydopstartkode wat deur AVR64EA-toestelle gebruik is, het nie in ag geneem dat die NVMCTRL-register onder Configuration Change Protection (CCP) was nie en nie die I0 SFR kon stel op die bladsy wat deur die const-data-in-configmapped-progmem gebruik word nie. samesteller kenmerk. Veranderinge wat in AVR-Ex_DFP weergawe 2.2.55 gemaak is, sal toelaat dat die aanlooptydopstartkode korrek na hierdie register skryf.
DFP-veranderinge om te vermy flitskartering (XC8-2847) 'n Oplossing vir 'n probleem met die flitskarteringtoestelkenmerk wat in die AVR128DA28/32/48/64 Silicon Errata (D580000882) gerapporteer word, is geïmplementeer. Die const-data-in-config-mapped-progmem samestellerkenmerk sal nie by verstek toegepas word vir geaffekteerde toestelle nie, en hierdie verandering sal in AVR-Dx_DFP weergawe 2.2.160 verskyn.
Bou fout met sinhf of coshf (XC8-2834) Pogings om die sinhf () of coshf () biblioteek funksies te gebruik het gelei tot 'n skakelfout, wat 'n ongedefinieerde verwysing beskryf. Die ontbrekende funksie waarna verwys word, is nou by die samestellerverspreiding ingesluit.
Bou foute met nopa (XC,8-2833) Die gebruik van die nopa-kenmerk met 'n funksie waarvan die samestellernaam gespesifiseer is deur asm ( ) te gebruik, het foutboodskappe van die samesteller geaktiveer. Hierdie kombinasie is nie moontlik nie.
Variadiese funksie mislukking met wyser argumente (XC8-2755, XC8-2731) Funksies met 'n veranderlike aantal argumente verwag dat 24-bis (memx-tipe) wysers in die veranderlike argumentlys deurgegee word wanneer die const-data-in-progmem-kenmerk geaktiveer is. Argumente wat verwysings na datageheue was, is deurgegee as 16-bis-voorwerpe, wat kode-fout veroorsaak het toe hulle uiteindelik gelees is. Wanneer die constdata-in-progmem-kenmerk geaktiveer is, word alle 16-bis-wysersargumente nou omgeskakel na 24-bis-wysers.
strtoxxx biblioteek funksies misluk (XC8-2620) Toe const-data-in-progmem-kenmerk geaktiveer is, is die endptr-parameter in die strtoxxx-biblioteekfunksies nie behoorlik opgedateer vir bronstring-argumente wat nie in programgeheue is nie.
Waarskuwings vir ongeldige uitsendings (XC8-2612) Die samesteller sal nou 'n fout uitreik as const-in-progmem-kenmerk geaktiveer is en die adres van 'n string-literaal word eksplisiet na data-adresspasie uitgesaai (los die const-kwalifiseerder), bv.ample, (uint 8_t *) "Hallo Wêreld!". 'n Waarskuwing is kwessie as die adres ongeldig kan wees wanneer 'n konstante datawyser eksplisiet na die data-adresspasie gegooi word.
Plasing van ongeïnitialiseerde konst-objekte (XC8-2408) Ongeinitialiseerde const en const vlugtige voorwerpe is nie in die programgeheue geplaas op toestelle wat die hele of 'n deel van hul programgeheue in die data-adresruimte karteer nie. Vir hierdie toestelle word sulke voorwerpe nou in programgeheue geplaas, wat hul werking in ooreenstemming met ander toestelle maak.

5.3. Weergawe 2.39 (Funksionele Veiligheidsvrystelling)
Geen.
5.4. Weergawe 2.36
Fout tydens vertraging (XC8-2774) Geringe veranderinge in die verstek Free-modus-optimalisasies het die konstante vou van operand-uitdrukkings na die ingeboude vertragingsfunksies verhoed, wat daartoe gelei het dat hulle as nie-konstante behandel is en die fout veroorsaak: ingeboude avr delay_cycles verwag 'n saamsteltyd heelgetalkonstante.
5.5. Weergawe 2.35
Aaneenlopende toekenning met behulp van _at (XC8-2653) Aaneenlopende toekenning van veelvuldige voorwerpe plekke in 'n afdeling met dieselfde naam en met behulp van _at ( ) het nie korrek gewerk nie. Byvoorbeeldample:
const char arr1[] __kenmerk__((afdeling(“.mysec”))) __at (0x500) = {0xAB, 0xCD};
const char arr2[] __kenmerk__((afdeling(“.mysec”))) = {0xEF, 0xFE};
moes arr2 onmiddellik na arr1 geplaas het.
Spesifikasie van afdeling begin adresse (XC8-2650) Die -W1, -afdeling-begin opsie het stilweg versuim om afdelings by die genomineerde beginadres te plaas. Hierdie probleem is reggestel vir enige afdelings met 'n pasgemaakte naam; dit sal egter nie vir enige standaardafdelings werk nie, soos . teks of. bss, wat geplaas moet word met 'n -W1, -T opsie.
Koppeler val ineen wanneer ontspan (XC8-2647) Toe die -mrelax-optimering geaktiveer is en daar kode- of dataafdelings was wat nie in die beskikbare geheue gepas het nie, het die skakelaar omgeval. Nou, in so 'n omstandighede, word foutboodskappe eerder uitgereik.

Geen terugval nie (XC8-2646) Die –nofallback-opsie is nie korrek geïmplementeer nie, en ook nie gedokumenteer nie. Dit kan nou gekies word om te verseker dat die samesteller nie terugval na 'n laer optimaliseringsinstelling as die samesteller ongelisensieer is nie, en eerder 'n fout sal uitreik.

Onvanpaste spoedoptimalisasies (X03-2637) Prosedure-abstraksie-optimalisasies is geaktiveer wanneer vlak 3-optimalisasies (-03) gekies is. Hierdie optimaliserings verminder kodegrootte ten koste van kodespoed, dus moes nie uitgevoer gewees het nie.
Slegte EEPROM toegang (XC8-2629) Die eeprom_read_block roetine het nie korrek op Xmega-toestelle gewerk toe die -mconst-data-in-progmem opsie geaktiveer is nie (wat die verstektoestand is), wat daartoe gelei het dat EEPROM-geheue nie korrek gelees is nie.
Ongeldige geheue toekenning (XC8-2593, XC8-2651) Wanneer die -Ttext of -Tdata koppel opsie (bvample deurgegee met 'n -vl bestuurder opsie) gespesifiseer is, is die ooreenstemmende teks/datastreek oorsprong opgedateer; die eindadres is egter nie dienooreenkomstig aangepas nie, wat daartoe kon gelei het dat die streek die teikentoestel se geheuereeks oorskry het.
Ongeluk met oortoegeskryfde funksie (XC8-2580) Die samesteller het neergestort as 'n funksie verklaar is deur meer as een van die onderbreking-, sein- of nmi-kenmerke te gebruik, bv. kenmerk ( ( sein , onderbreking ) ).
Ongeldige ATtiny-onderbrekingskode (XC8-2465) Wanneer daar vir ATtiny-toestelle gebou is en die optimaliserings gedeaktiveer is (-00), het onderbrekingsfunksies moontlik operand-buitereeks-samestellerboodskappe geaktiveer.
Opsies word nie deurgegee nie (XC8-2452) Wanneer die opsie met veelvuldige, komma-geskeide skakelopsies gebruik word, is nie al die skakelopsies na die skakelaar oorgedra nie.
Fout indirek lees van programgeheue (X03-2450) In sommige gevalle het die samesteller 'n interne fout (onherkenbare insn) opgelewer wanneer 'n waarde van twee grepe van 'n wyser na programgeheue gelees is
5.6. Weergawe 2.32
Tweede toegang van biblioteek misluk (XC8-2381) Roep die Windows-weergawe van die xc8-ar aan. .exe biblioteek argief 'n tweede keer om toegang te verkry tot 'n bestaande biblioteek argief het moontlik misluk met 'n foutboodskap wat nie kon hernoem nie.
5.7. Weergawe 2.31
Onverklaarbare samesteller mislukkings (XC8-2367) Wanneer dit op Windows-platforms gebruik word, het die stelsel se tydelike gids op 'n pad gestel wat 'n kolletjie '.' ingesluit het. karakter, kon die samesteller moontlik nie uitgevoer word nie.
5.8. Weergawe 2.30
Globale etikette misplaas na omskrywing (XC8-2299) Handgeskrewe samestellingkode wat globale etikette binne samestellingreekse plaas wat deur prosedurele abstraksie uitgewerk word, is dalk nie korrek herposisioneer nie.
'n Ontspannende ongeluk (XC8-2287) Die gebruik van die -mrelax-opsie kon dalk veroorsaak het dat die skakelaar ineenstort wanneer stertspring-ontspanningsoptimalisasies probeer het om ret-instruksie te verwyder wat nie aan die einde van 'n afdeling was nie.
Omval wanneer etikette as waardes geoptimeer word (XC8-2282) Kode wat die "Etikette as waardes" GNU C-taaluitbreiding gebruik, kon veroorsaak het dat die prosedurele abstraksie-optimalisasies ineenstort, met 'n uiteensetting van die VMA-reeksspan-fixupfout.
Nie so konst nie (XC8-2271) Die prototipes vir st rstr ( ) en ander funksies van spesifiseer nie meer die nie-standaard const-kwalifiseerder op teruggekeerde stringwysers wanneer die -mconst-data-inprogmem-kenmerk gedeaktiveer is nie. Let daarop dat hierdie kenmerk permanent geaktiveer is met avrxmega3- en avrtiny-toestelle.
Verlore initialiseerders (XC8-2269) Wanneer meer as een veranderlike in 'n vertaaleenheid is in 'n afdeling geplaas (deur gebruik te maak van _section of _attribute_ ( (section) )), en die eerste sodanige veranderlike is nul geïnisialiseer of het nie 'n initialiseerder gehad nie, inisialiseerders vir ander veranderlikes in dieselfde vertaaleenheid wat geplaas is in dieselfde afdeling verlore gegaan het.
5.1. Weergawe 2.29 (Funksionele Veiligheidsvrystelling)
Geen.
5.2. Weergawe 2.20
Fout met lang opdragte (XC8-1983) Wanneer 'n AVR-teiken gebruik word, kan die samesteller gestop het met 'n file nie gevind fout nie, as die opdragreël uiters groot was en spesiale karakters bevat het soos aanhalingstekens, agterste skuinsstreepies, ens.
Ontoegekende rodata-afdeling (XC8-1920) Die AVR-skakelaar kon nie geheue toewys vir persoonlike rodata-afdelings tydens die bou van avrxmega3- en avrtiny-argitekture nie, wat moontlik geheue-oorvleuelingsfoute veroorsaak
5.3. Weergawe 2.19 (Funksionele Veiligheidsvrystelling)
Geen.
5.4. Weergawe 2.10
Hervestigingsmislukkings (XC8-1891) Die beste gepaste toewyser was om geheue 'gate' tussen seksies te laat na skakelaar-verslapping. Afgesien van die fragmentering van geheue, het dit die moontlikheid verhoog dat daar foute in verbandverskuiwing is wat verband hou met rekenaarverwante spronge of oproepe wat buite bereik raak.
Instruksies wat nie deur ontspanning getransformeer is nie (XC8-1889) Koppelverslapping het nie plaasgevind vir spring- of oproepinstruksies waarvan die teikens bereikbaar word as dit ontspan word nie.
Vermis funksionaliteit (XC8E-388) Verskeie definisies uit , soos clock_div_t en clock_prescale set () , is nie gedefinieer vir toestelle nie, insluitend die ATmega324PB, ATmega328PB, ATtiny441 en ATtiny841.
Ontbrekende makro's Die voorverwerker-makro's _XC8_MODE_, _XC8_VERS ION, _XC en _XC8 is nie outomaties deur die samesteller gedefinieer nie. Hierdie is nou beskikbaar.
5.5. Weergawe 2.05
Interne samesteller fout (XC8-1822) Wanneer onder Windows gebou word, kan 'n interne samestellerfout geproduseer word tydens die optimalisering van kode.
RAM-oorloop nie bespeur nie (XC8-1800, XC8-1796) Programme wat daardie beskikbare RAM oorskry het, is in sommige situasies nie deur die samesteller bespeur nie, wat gelei het tot 'n runtime-kodefout.
Weggelaat flitsgeheue (XC8-1792) Vir avrxmega3- en avrtiny-toestelle is dele van die flitsgeheue moontlik ongeprogrammeer deur die MPLAB X IDE.
Versuim om hoof uit te voer (XC8-1788) In sommige situasies waar die program geen globale veranderlikes gedefinieer het nie, het die aanlooptydopstartkode nie verlaat nie en is die hooffunksie ( ) nooit bereik nie.
Verkeerde geheue-inligting (XC8-1787) Vir avrxmega3- en avrtiny-toestelle het die avr-grootte program gerapporteer dat leesalleen-data RAM in plaas van programgeheue verbruik.
Verkeerde programgeheue gelees (XC8-1783) Projekte wat saamgestel is vir toestelle met programgeheue wat in die data-adresruimte gekarteer is en wat voorwerpe definieer deur die PROGMEM-makro/kenmerk te gebruik, het dalk hierdie voorwerpe vanaf die verkeerde adres gelees.
Interne fout met kenmerke (XC8-1773) 'n Interne fout het voorgekom as jy wyserobjekte met die
_at () of kenmerk () tekens tussen die naam van die wyser en die afgewysde tipe, bv.ample, char *
_by (0x800150) cp; 'n Waarskuwing word nou uitgereik as so 'n kode teëgekom word.
Versuim om hoof uit te voer (XC8-1780, XC8-1767, XC8-1754) Die gebruik van EEPROM-veranderlikes of die definisie van versmeltings deur die konfigurasie-pragma te gebruik, kon moontlik verkeerde data-inisialisering en/of programuitvoering in die runtime-opstartkode veroorsaak het, voordat hoof ( ) bereik is.
Versmeltfout met klein toestelle (XC8-1778, XC8-1742) Die attiny4/5/9/ 10/20/40-toestelle het 'n verkeerde lontlengte gehad wat in hul kopskrif gespesifiseer is files wat lei tot koppelfoute wanneer probeer om kode te bou wat versmeltings gedefinieer het.
Segmentering fout (XC8-1777) 'n Intermitterende segmenteringsfout is reggestel.
Samesteller-ongeluk (XC8-1761) Die avr-as assembler het dalk neergestort toe die samesteller onder Ubuntu 18 uitgevoer is.
Voorwerpe nie skoongemaak nie (XC8-1752) Ongeinitialiseerde statiese stoortydsduurvoorwerpe is dalk nie deur die aanlooptydbeginkode uitgevee nie.
Botsende toestelspesifikasie geïgnoreer (XC8-1749) Die samesteller het nie 'n fout gegenereer toe veelvuldige toestelspesifikasie-opsies gebruik is nie en verskillende toestelle aangedui het.
Geheue korrupsie per hoop (XC8-1748) Die _heap_start-simbool is verkeerd gestel, wat lei tot die moontlikheid dat gewone veranderlikes deur die hoop beskadig word.
Skakelaar hervestiging fout (XC8-1739) 'n Koppelverskuiwingsfout is dalk vrygestel wanneer kode 'n rjmp of rcall bevat het met 'n teiken presies 4k grepe weg.
5.6. Weergawe 2.00
Geen.

Bekende kwessies

Die volgende is beperkings in die samesteller se werking. Dit kan algemene koderingsbeperkings wees, of afwykings van inligting vervat in die gebruikershandleiding. Die etiket(te) tussen hakies in die titel is daardie kwessie se identifikasie in die opsporingsdatabasis. Dit kan tot voordeel wees as jy ondersteuning moet kontak. Daardie items wat nie etikette het nie, is beperkings wat modi operandi beskryf en wat waarskynlik permanent van krag sal bly.
6.1. MPLAB X IDE Integrasie
MPLAB IDE integrasie As Compiler vanaf MPLAB IDE gebruik moet word, moet jy MPLAB IDE installeer voordat jy Compiler installeer.
6.2. Kode Generasie
Segfault met afdeling-ankers-opsie (XC8-3045) Program wat funksies met veranderlike argumentlyste gedefinieer het en wat die -fsection-anchors-opsie gebruik, kon dalk 'n interne samestellerfout veroorsaak: Segmentasiefout.
Ontfout inligting nie gesinchroniseer nie (XC8-2948) Wanneer skakelaar-ontspanningsoptimalisasies instruksies krimp (bvample call to rcall-instruksies), sal bronlyn-na-adres-kartering dalk nie gesinkroniseer bly wanneer daar meer as een krimpbewerking in 'n afdeling plaasvind nie.
In die onderstaande eksample, daar is twee oproepe na foo wat uiteindelik ontspanne is na relatiewe oproepe.
PA geheue toewysing mislukking (XC8-2881) Wanneer die prosedurele abstraksie-optimeerders gebruik word, kan die koppelaar geheuetoewysingsfoute rapporteer wanneer die kodegrootte naby die hoeveelheid beskikbare programgeheue op die toestel is, alhoewel die program in die beskikbare spasie behoort te pas.
Nie so slim Smart-I0 (XC8-2872) Die samesteller se slim-io-kenmerk sal geldige maar sub-optimale kode vir die snprint f-funksie genereer as die const-data-in-progmem-funksie gedeaktiveer is of as die toestel al sy flits in datageheue gekarteer het.
Selfs minder slim Smart-I0 (XC8-2869) Die samesteller se smart-io funksie sal geldige maar suboptimale kode genereer wanneer die -flto en -fno-ingeboude opsies albei gebruik word.
Suboptimale leesalleen-dataplasing (XC8-2849) Die skakelaar is tans nie bewus van die APPCODE- en APPDATA-geheueafdelings nie, ook nie die [No-Read-While-Write-afdelings in die geheuekaart nie. As gevolg hiervan is daar 'n klein kans dat die skakelaar leesalleen-data in 'n ongeskikte geheue-area kan toeken. Die kans op misplaaste data verhoog as die const-data-in-progmem-kenmerk geaktiveer is, veral as die const-data-in-config-mapped-progmem-kenmerk ook geaktiveer is. Hierdie kenmerke kan gedeaktiveer word indien nodig.
Voorwerp file verwerking van bestelling (XC8-2863) Die volgorde waarin voorwerpe files sal verwerk word deur die skakelaar kan verskil op grond van die gebruik van prosedurele abstraksie optimaliserings (-mpa opsie). Dit sal slegs kode beïnvloed wat swak funksies oor verskeie modules definieer.
Koppelerfout met absolute (XC8-2777) Wanneer 'n voorwerp absoluut gemaak is by 'n adres aan die begin van RAM en ongeïnitialiseerde voorwerpe is ook gedefinieer, kan 'n koppelfout veroorsaak word.
Kort wakker-ID's (XC8-2775) Vir ATA5700/2-toestelle word die PHIDO/1-registers slegs gedefinieer as 16 bisse wyd, eerder as 32 bisse wyd.
Skakelaar crash wanneer roepsimbool (XC8-2758) Die skakelaar kan ineenstort as die -mrelax-bestuurder-opsie gebruik word wanneer die bronkode 'n simbool oproep wat gedefinieer is met die -cc., -de f sym linker-opsie.
Verkeerde inisialisering (XC8-2679) Daar is 'n verskil tussen waar die aanvanklike waardes vir sommige globale/statiese greepgrootte voorwerpe in datageheue geplaas word en waar toegang tot die veranderlikes tydens looptyd verkry sal word.
Slegte indirekte funksie-oproepe (XC8-2628) In sommige gevalle kan funksie-oproepe wat gemaak word via 'n funksiewyser wat as deel van 'n struktuur gestoor is, misluk.
strtof gee nul vir heksadesimale dryf (XC8-2626) Die biblioteekfunksies strtof et al en scanf ( ) et al, sal altyd 'n heksadesimale swewende-puntgetal wat nie 'n eksponent spesifiseer na nul omskakel nie. Byvoorbeeldample:
strtof ("Oxl", &endptr);
sal die waarde 0 terugstuur, nie I nie.
Onakkurate stapel adviseur boodskappe (XC8-2542, XC8-2541) In sommige gevalle word die stapeladviseur-waarskuwing rakende herhaling of onbepaalde stapel wat gebruik word (moontlik deur die gebruik van alloca()) nie uitgestuur nie.
Mislukking met duplikaat onderbrekingskode (XC8-2421) Waar meer as een onderbrekingsfunksie dieselfde liggaam het, kan die samesteller die uitvoer vir een onderbrekingsfunksie die ander hê. Dit sal daartoe lei dat alle oproep-geklobberde registers onnodig gestoor word, en die onderbrekings sal geaktiveer word selfs voordat die epiloog van die huidige onderbreking-hanteerder geloop het, wat kan lei tot kodefout.
Slegte uitvoer met ongeldige DFP-pad (XC8-2376) As die samesteller met 'n ongeldige DFP-pad en 'n 'spesifikasie' aangeroep word file bestaan ​​vir die geselekteerde toestel, rapporteer die samesteller nie die vermiste toestelfamiliepakket nie en kies eerder die 'spesifikasie' file, wat dan tot 'n ongeldige uitset kan lei. Die 'spesifikasie' files is dalk nie op datum met die verspreide DFP's nie en was slegs bedoel vir gebruik met interne samestellertoetsing.
Geheue-oorvleueling onopgemerk (XC8-1966) Die samesteller bespeur nie die geheue-oorvleueling van voorwerpe wat absoluut gemaak is by 'n adres (via _at ( )) en ander voorwerpe wat die afdeling ( )-spesifiseerder gebruik en wat aan dieselfde adres gekoppel is nie.
Mislukking met biblioteekfunksies en _memx (XC8-1763) Genoemde libgcc float-funksies met 'n argument in die memx-adresspasie kan dalk misluk. Let daarop dat biblioteekroetines van sommige C-operateurs geroep word, dus bvample, word die volgende kode geraak:
terug regFloatVar > memxFloatVar;
Beperkte libgcc implementering (AVRTC-731) Vir die ATTiny4/5/9/10/20/40 produkte is die standaard C / Math biblioteek implementering in libgcc baie beperk of nie teenwoordig nie.
Programgeheuebeperkings (AVRTC-732) Programgeheuebeelde groter as 128 kb word deur die gereedskapketting ondersteun; daar is egter bekende gevalle van skakelaar aborteer sonder ontspanning en sonder 'n nuttige foutboodskap eerder as om die vereiste funksie stompe te genereer wanneer die -mre lax opsie gebruik word.
Naamspasiebeperkings (AVRTC-733) Benoemde adresruimtes word deur die gereedskapketting ondersteun, onderhewig aan die beperkings wat in die gebruikersgidsafdeling Spesiale tipe kwalifiseerders genoem word.
Tydsones Die biblioteekfunksies neem GMT aan en ondersteun nie plaaslike tydsones nie, dus sal plaaslike tyd ( ) dieselfde tyd as gmtime ( ) terugkeer, bv.ample.

file:///Applications/microchip/xc8/v2.41/docs/Readme_XC8_for_AVR.htm

Dokumente / Hulpbronne

MICROCHIP MPLAB XC8 C samesteller-ontwikkelingsagteware [pdf] Eienaar se Handleiding
MPLAB XC8 C, MPLAB XC8 C samesteller-ontwikkelingsagteware, samesteller-ontwikkelingsagteware, ontwikkelingsagteware, sagteware

Verwysings

Los 'n opmerking

Jou e-posadres sal nie gepubliseer word nie. Vereiste velde is gemerk *