MPLAB XC8 C-samesteller weergawe 2.39 vrystellingsnotas vir AVR MCU
Gebruikersgids
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 is 'n funksionele veiligheidssamesteller, gebaseer op die v2.36 vrystelling van hierdie samesteller en wat nou die Network Server License ondersteun.
1.2. Vrystellingsdatum
Die amptelike vrystellingsdatum van hierdie samestellerweergawe is 27 Januarie 2022.
1.3. Vorige weergawe
Die vorige MPLAB XC8 C-samestellerweergawe was 2.36, vrygestel op 25 Januarie 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. Komponentlisensies en weergawes® he 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 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.
As jy 'n netwerklisensiebediener gebruik, mag slegs rekenaars met bedryfstelsels wat deur die samestellers ondersteun word, gebruik word om die lisensiebediener te huisves. Vanaf xclm weergawe 2.0 kan die netwerklisensiebediener op 'n Microsoft Windows Server-platform geïnstalleer word, maar die lisensiebediener hoef nie op 'n bedienerweergawe van die bedryfstelsel te loop nie.
1.7. Toestelle ondersteun
Hierdie samesteller ondersteun alle 8-bis AVR MCU toestelle wat bekend is ten tyde van vrystelling. Sien (in die samesteller se avr_chipinfo.html gids) vir 'n lys van alle ondersteunde toestelle. Hierdie lêers lys ook konfigurasie bis doc instellings vir elke toestel.
1.8. 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
Samesteller 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.9. 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.9.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 in die Run-opdrag (Windows-logosleutel + R). %temp% Dit sal 'n lêerverkenner-dialoog oopmaak wat daardie gids wys en sal jou toelaat om die pad van daardie gids te bepaal.
1.10. 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 bou vir 8-bis AVR teikens, die MPLAB® XC8 C Compiler User's® Guide for AVR
MCU bevat inligting oor daardie samestelleropsies en kenmerke wat op hierdie argitektuur van toepassing is.
1.11. Kliëntediens
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's Online
Tegniese Dokumentasie webwebwerf.
Nuwe of opgedateerde AVR-dokumentasie in hierdie vrystelling:
Installering en lisensiëring van MPLAB® XC C-samestellers (DS50002059) hersiening L
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 makros. Sommige van hierdie inligting was voorheen vervat in die MPLA® XC8 C Compiler User!s Guide® vir AVR
MCU. Toestelspesifieke biblioteekinligting is steeds in hierdie samestellergids vervat.
Die Hexmate Gebruikersgids is ingesluit in die gids in hierdie vrystelling. Hierdie gids is bedoel vir dokumente wat Hexmate as 'n alleenstaande toepassing gebruik.
Die volgende afdelings verskaf regstellings en bykomende inligting tot dié wat gevind word in die gebruikersgidse wat saam met die samesteller gestuur is.
2.1. slim-io-formaat Opsie
Die-msmart-io-format=fmt fmt-opsie, waar 'n string is wat geformateerde IO-omskakelingsspesifikasies bevat, stel die samesteller in kennis dat die gelyste spesifikasies deur slim IO-funksies gebruik word.
Om kodegrootte te verminder, pas die samesteller biblioteekkode aan wat verband hou met die druk- en skanderingsfamilies van slim IO-funksies, gebaseer op die omskakelingspesifikasies wat teenwoordig is in die formaatstringe wat oor alle oproepe na hierdie funksies versamel is. Hierdie kenmerk is ten volle outomaties en kan nie gedeaktiveer word nie.
In sommige situasies is die samesteller nie in staat om gebruiksinligting van die geformateerde IO-funksie-oproep te bepaal nie. As die opsie gebruik is, word die vereiste omskakelingspesifikasies vir hierdie funksies van die string verkry; anders maak die samesteller geen aannames oor hoe die -msmart-io-format=fmt fmt-funksies gebruik word nie en verseker dat ten volle funksionele geformateerde IO-funksies in die finale programbeeld gekoppel word.
Byvoorbeeldample, oorweeg die volgende oproepe na slim IO-funksies.
vscanf(“%d:%li”, va_list1);
vprintf(“%-s%d”, va_list2);
vprintf(fmt1, va_list3);// dubbelsinnige gebruik
vscanf(fmt2, va_list4);// dubbelsinnige gebruik
Wanneer die laaste twee oproepe verwerk word, kan die samesteller geen gebruiksinligting van óf die formaatstringe óf die argumente aflei nie. In hierdie gevalle kan die -msmart-io-formaat opsie gebruik word en dit sal moontlik toelaat dat meer optimaal geformateerde I0-funksies gegenereer word, en sodoende die program se kodegrootte verminder. Byvoorbeeldample, as die formaatstringe waarna fmtl en fmt2 verwys word, gebruik slegs die "%d", "%i" en " % s" omskakelingspesifiseerders, die -msmart-io-format=fmt=”%d%i%s ”-opsie uitgereik moet word.
Die tintstring kan enige geldige omskakelingspesifikasie bevat, insluitend vlae en wysigers (bvample “%-13. 91s"), en moet presies dié weerspieël wat gebruik word deur die funksies waarvan die gebruik dubbelsinnig is. Versuim om 'n spesifikasie in die bietjie argument waar dit gebruik is deur die geformateerde I0 funksies kan lei tot kode mislukking.
As fmt 'n leë string is of geen waarneembare omskakelingsspesifikasies bevat nie, sal 'n waarskuwing uitgereik word en ten volle funksionele geformateerde I0-funksies word in die finale programbeeld gekoppel.
Hierdie opsie kan verskeie kere op die opdragreël gebruik word. Die omskakelingspesifikasies wat met elke opsie gebruik word, word opgehoop.
2.2. weglaat-raam-wyser Opsie
Die – f omit- frame-pointer opsie gee die samesteller opdrag om die stapelwyser direk te gebruik om toegang tot voorwerpe op die stapel te verkry en, indien moontlik, kode wat die raamregister stoor, inisialiseer en herstel, weg te laat. Dit word outomaties geaktiveer op alle nie-nul optimaliseringsvlakke.
Om die opsie te ontken deur -fno-omit- frame-pointer te gebruik, kan help om geoptimaliseerde kode te ontfout; hierdie opsie waarborg egter nie dat die raamwyser altyd gebruik sal word nie.
2.3. ontrol-lusse Opsies
Die – funrol I-lusse en -(ontrol-alle-lusse opsies beheer spoedgeoriënteerde optimaliserings wat poog om vertakkingsvertragings in lusse te verwyder. Ontrolde lusse verhoog tipies die uitvoeringspoed van die gegenereerde kode, ten koste van groter kodegrootte.
Die – funrol I-loops opsie ontrol lusse waar die aantal iterasies bepaal kan word tydens samestelling tyd of wanneer kode die lus binnegaan. Die -funroll-all-loops-opsie is meer aggressief en ontrol alle lusse, selfs wanneer die aantal iterasies onbekend is. Dit is tipies minder effektief om uitvoeringspoed te verbeter as die – funrol 1-lusse opsie.
2.4. vet-Ito-voorwerpe Opsie
Die - f fat-1 to-obj ects opsie versoek dat die samesteller vet voorwerp genereer files, wat beide bevat
objekkode en GIMPLE (een van GCC se interne voorstellings), geskryf na unieke ELF-afdelings. Sulke voorwerpe files is nuttig vir biblioteekkode wat gekoppel kan word met projekte wat die standaard skakeltydoptimaliseerder wel en nie gebruik nie, beheer deur die -flto opsie.
Die – fno-fat-lto-objects-vorm van hierdie opsie, wat die verstek is as geen opsie gespesifiseer is nie, onderdruk die insluiting van die objekkode in objek files, wat lei tot vinniger bou. Maar so 'n voorwerp files moet altyd gekoppel word met behulp van die standaard skakel-tyd optimizer.
2.5. Ito-partisie-opsie
Die – flto-partiti op = a Igo ri thm opsie beheer die algoritme wat gebruik word om voorwerp te partisieer files wanneer die skakel-tyd optimizer hardloop. Die argument none deaktiveer partisionering heeltemal en voer die skakeltyd-optimaliseringstap direk vanaf die hele programanalise (WPA) fase uit. Hierdie werkswyse sal die mees optimale resultate lewer, ten koste van groter samestellergeheuevereistes en langer boutye, hoewel dit waarskynlik nie 'n probleem met klein programme sal wees nie. Die verdeling van die voorwerp files kan bouwerkverrigting verbeter. Die argument een spesifiseer dat presies een partisie gebruik moet word, en die argument lto1 spesifiseer partisionering wat dit weerspieël wat deur die oorspronklike bron gedikteer is files. Die verstek argument is gebalanseerd, wat partisionering in ewe groot stukke spesifiseer, wanneer moontlik.
2.6. Byvoeging tot afdeling 3.6.11 Mapped Linker Options
Die -wl, –afdeling-begin = sek tion=addr ontbreek in die tabel van algemeen gebruikte skakelopsies, toeganklik met die -wl-samestellerbestuurder-opsie. Hierdie opsie laat plasing van afdelings met 'n pasgemaakte naam by die gespesifiseerde adres toe. Dit kan nie gebruik word om standaardafdelings te plaas nie, soos (. data, . bss, . teks), wat geplaas moet word met 'n -wl, -'r opsie.
2.7. Wysiging aan Afdeling 4.14.2 Verandering en koppeling van die toegekende afdeling
Let daarop dat in teenstelling met inligting vervat in hierdie afdeling van die gebruikersgids, veranderinge wat aan die samesteller in hierdie vrystelling gemaak is nou beteken dat pasgemaakte afdelings gekoppel kan word met die -w1, -sekte ioon- begin=afdeling=acicir opsie en sonder om die koppelskrip te verander.
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.39 (Funksionele Veiligheidsvrystelling)
Netwerkbedienerlisensie Hierdie vrystelling van die MPLAB XC8 Functional Safety Compiler ondersteun die netwerkbedienerlisensie.
3.2. Weergawe 2.36
Geen.
3.3. 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-proloë 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 nadele gekwalifiseerde data in een 32k afdeling te plaas en outomaties die relevante SFR register te inisialiseer om te verseker dat hierdie data in die data gekarteer word geheuespasie, waar dit meer effektief verkry sal word.
Mikroskyfie verenigde standaardbiblioteke Alle MPLAB XC-samestellers sal 'n Microchip Unified Standard Library deel, wat nou beskikbaar is met hierdie vrystelling van MPLAB XC8. Die MPLAB® XC8 C samesteller
Gebruikersgids vir AVR® MCU sluit nie meer die dokumentasie vir hierdie standaardfunksies in nie. Hierdie inligting kan nou gevind word in die Microchip Unified Standard Library Verwysingsgids. Let daarop dat sommige funksies wat voorheen deur avr-libc gedefinieer is, nie meer beskikbaar is nie. (Sien Biblioteekfunksionaliteit.)
Slim I0 As deel van die nuwe verenigde biblioteke, word JO-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 I0-bystandsopsie Wanneer oproepe na slim I0-funksies (soos printf () 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 – msma rt-io- format=fmt-opsie is bygevoeg sodat die samesteller eerder deur die gebruiker ingelig kan word oor die omskakelingspesifiseerders wat gebruik word deur slim I0-funksies waarvan die gebruik dubbelsinnig is, wat verhoed dat buitensporige lang 10 roetines gekoppel word. (Sien slim-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, die beste geskikte toewyser sal steeds volledige beheer oor hul plasing hê, en die opsie sal geen effek hê nie. Gebruik die -wl, -Teksie=addr opsie, soos beskryf in die gebruikersgids.
3.4. 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- gebruik opdragreël 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, ATTNY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVRXNUMXDBXNUMX en AVRXNUMXDBXNUMX en AVRXNUMXDBXNUMX.
Ondersteuning vir teruggetrekte toestelle is nie meer beskikbaar vir die volgende AVR-onderdele nie: AVR 16DA28, AVR16DA32 en AVR16DA48.
3.5. Weergawe 2.31 Geen.
3.6. 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 afvoer van die do_copy_data en do_clear_bss simbole in samestelling te onderdruk 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 -fseksie-ankers, wat toegang tot statiese voorwerpe toelaat om relatief tot een simbool uitgevoer te word; -mpa-iterasies =n, wat toelaat dat die aantal prosedurele abstraksie-iterasies verander word vanaf die verstek van 2; en, -mpa-callcost-shortcal 1, 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.
Nuut toestel ondersteuning Ondersteuning is beskikbaar vir die volgende AVR-onderdele: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48, AVR128DB64, XNUMX VRXNUMXDBXNUMX.
Ingetrek toestel Ondersteuning Ondersteuning is nie meer beskikbaar vir die volgende AVR-onderdele nie: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, ATA664251 en ATAXNUMXC, ATAXNUMX en ATAXNUMX.
3.7. Weergawe 2.29 (Funksionele Veiligheidsvrystelling)
Opskrif file vir samesteller-bunt-ins 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 ingeboude in_avr_nop ( ) en _builtin_avr_delay_cycles () . Sommige ingeboude is dalk nie aan MISRA voldoen nie; dit kan weggelaat word deur die define XC_STRICT MISRA by die samesteller-opdragreël by te voeg. Die ingeboude insetsels en hul verklarings is opgedateer om vaste-breedtetipes te gebruik.
3.8. Weergawe 2.20
Nuut toestel ondersteuning Ondersteuning is beskikbaar vir die volgende AVR-onderdele: ATTINY 1624, ATTINY1626 en ATTINY 1 627.
Beter beste pas toekenning Die beste pastoewyser (BFA) in die samesteller is verbeter sodat afdelings in 'n volgorde toegewys word wat beter optimalisering 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 Assembler Die AVR Assembler is nie meer by hierdie verspreiding ingesluit nie. 3.9. Weergawe 2.19 (Funksionele veiligheid Vrylating)
Geen.
3.10. 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 Opnuut toestel file genoem avr_chipinfo.html is geleë in die dokumente gids van
die samesteller verspreiding. 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/waardepare 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 optimaliserings. 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 met behulp van -mno-pa-on-f ile=filenaam, of gedeaktiveer vir 'n funksie deur -mno-pa-onfunotion=f te gebruik unction.
Binne jou bronkode kan prosedurele abstraksie vir 'n funksie gedeaktiveer word deur attribuut_ ( (nopa) ) met die funksie se definisie te gebruik, of deur nopa te gebruik, wat uitbrei na _attribute_ ( (nopa, noinline) ) en dus verhoed dat funksie inlining plaasvind en daar is abstraksie van inlinede kode.
Sluit bietjie ondersteuning in pragma Die #pragma-konfigurasie kan nou gebruik word om die AVR-slotbissies sowel as die ander konfigurasiebisse te spesifiseer. Gaan die avr_chipinfo.html na file (hierbo genoem) vir die instelling/waarde-pare om met hierdie pragma te gebruik.
Nuut toestel ondersteuning Ondersteuning is beskikbaar vir die volgende dele: AVR28DAl28, AVR64DAl28, AVR32DAl28 en AVR48DAl28.
3.11. 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 const-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 gratis Ongelisensieerde (gratis) weergawes van hierdie samesteller laat nou optimaliserings tot en met vlak 2 toe. Dit sal 'n soortgelyke, alhoewel nie identiese, uitvoer moontlik maak as wat voorheen moontlik was met 'n Standaardlisensie.
Welkom AVRASM2 Die AVRASM2-samesteller vir 8-bis-toestelle is nou by die XC8-samesteller-installeerder ingesluit. Hierdie samesteller word nie deur die XC8-samesteller gebruik nie, maar is beskikbaar vir projekte gebaseer op handgeskrewe samestellingsbron.
Nuut toestel ondersteuning Ondersteuning is beskikbaar vir die volgende dele: ATMEGA1608, ATMEGA 1609, ATMEGA808 en ATMEGA809.
3.12. Weergawe 2.00
Top-vlak bestuurder '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.
Algemene C-koppelvlak 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 A 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 kenmerke wat nou anders deur die samesteller hanteer word. Hierdie veranderinge kan verandering 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.39 (Funksionele Veiligheidsvrystelling)
Geen.
4.2. Weergawe 2.36 Geen.
4.3. Weergawe 2.35
Hantering van string-tot-basisse (XC8-2420) Om konsekwentheid met ander XC-samestellers te verseker, die XC8 string-to funksies, soos strtol () ens., sal nie meer probeer om 'n invoerstring om te skakel as die basis wat gespesifiseer is groter as 36 is nie en sal eerder errno na EINVAL stel. Die C-standaard spesifiseer nie die gedrag van die funksies wanneer hierdie basiswaarde oorskry word.
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 geformatteerde I0-ondersteuning vir float-formaat-spesifiseerders aan te skakel nie. Die slim 10 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 0 ) sal korrek met sulke data werk wanneer die const-data-in-program-memory funksie geaktiveer is.
4.4. Weergawe 2.32
Geen.
4.5. Weergawe 2.31
Geen.
4.6. Weergawe 2.30
Geen.
4.1. Weergawe 2.29 (Funksionele Veiligheidsvrystelling)
Geen.
4.2. Weergawe 2.20
Veranderde DFP-uitleg 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-objekte in programgeheue Let daarop dat die by verstek, konst-gekwalifiseerde voorwerpe in die programgeheue geplaas en verkry sal word (soos hare beskryf). 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 -mnocons t-data-in-pr ogmem 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 instelling-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 _at (adres) spesifiseerder, bvample:
insluit
int foobar by (0)0300100;
char at(0x250) getID(int offset) ( Die argument vir hierdie spesifiseerder moet 'n konstante wees wat die adres verteenwoordig waarop die eerste greep of instruksie geplaas sal word. RAM-adresse word aangedui deur 'n offset van Ox800000 te gebruik. Aktiveer die CCI om gebruik hierdie kenmerk.
Nuwe onderbreking funksie sintaksis Die samesteller aanvaar nou die CCI _interrupt (nommer) spesifiseerder om aan te dui dat C-funksies onderbrekingshanteerders is. Die spesifiseerder neem 'n onderbrekingsnommer, bvample:
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 in die Device Family Pack (DR)) 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.39 (Funksionele Veiligheidsvrystelling)
Geen.
5.2. Weergawe 2.36
Fout tydens vertraging (XCS–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 het. gebou in_avr_delay_cycles verwag 'n samestelling tyd heelgetal konstante.
5.3. Weergawe 2.35
Aaneenlopend toekenning met behulp van _at (XCS–2653) Aaneenlopende toekenning van veelvuldige voorwerpe plekke in 'n afdeling met dieselfde naam en die gebruik van _at () het nie korrek gewerk nie. Byvoorbeeldample:
const char arrl[ ] kenmerk (afdeling(“.mysec”) by (0x500) = (OxAB, OxCD);
const char arr2[ ] kenmerk (sectionr.mysec”)= (OxEF, OxFE);
moes arr2 onmiddellik na arri geplaas het.
Spesifikasie van afdeling-beginadresse (XCS–2650) Die -wl, -afdeling-begin opsie kon stilweg nie afdelings by die genomineerde beginadres plaas nie. 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 behulp van a -wl, -T opsie.
Linker val ineen wanneer ontspan (XCS–2647) Wanneer die -mrelax-optimering is geaktiveer en dit was kode- of data-afdelings wat nie in die beskikbare geheue gepas het nie, die skakelaar het neergestort. Nou, in so 'n omstandighede, word foutboodskappe eerder uitgereik.
Nee nee–val–terug (XCS–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 spoedoptimalisering (XCS–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 (XCS–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 (X03-2593, XC8-2651) Wanneer die -Ttext of -Tdata koppel opsie (bvample deurgegee met 'n -wl 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 met meer as een van die onderbreking, sein of nmi eienskappe, bv. _attribute_ ( ( 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 wat nie deurgegee word nie (XC8-2452) Wanneer die gebruik van die -wl opsie met veelvuldige, kommageskeide skakelopsies, is nie al die skakelopsies na die skakelaar oorgedra nie.
Fout indirek lees van programgeheue (X03-2450) In sommige gevalle het die samesteller vervaardig 'n interne fout (onherkenbare insn) wanneer 'n waarde van twee grepe van 'n wyser na programgeheue gelees word
5.4. Weergawe 2.32
Tweede toegang tot biblioteek misluk (X03-2381) Om die Windows-weergawe van die xc8-ar.exe-biblioteekargiveerder 'n tweede keer aan te roep om toegang tot 'n bestaande biblioteekargief te verkry, kon misluk het met 'n foutboodskap wat nie kon hernoem nie.
5.5. Weergawe 2.31
Onverklaarbaar samesteller mislukkings (XC8-2367) Wanneer jy aanhardloop Vensters platforms wat die stelsel se tydelike gids op 'n pad gestel het wat 'n kolletjie '.' ingesluit het. karakter, kon die samesteller moontlik nie uitgevoer word nie.
5.6. Weergawe 2.30
Globale etikette misplaas na omskrywing (XC8-2299) Handgeskrewe samestellingkode wat globale plaas etikette binne samestellingreekse wat deur prosedurele abstraksie uitgewerk word, is dalk nie korrek herposisioneer nie.
'n Ontspannende ongeluk (XC8-2287) Met behulp van die -montspan opsie kon veroorsaak het dat die skakelaar ineenstort wanneer stertspring ontspanning optimaliserings gepoog om ret instruksie wat nie aan die einde van 'n verwyder afdeling.
Crash wanneer etikette as waardes geoptimeer word (XC8-2282) Kode met behulp van die "Labels as values" GNU C taaluitbreiding kon veroorsaak het dat die prosedurele abstraksie-optimalisasies ineenstort, met 'n uiteensetting van die VMA-reeksspan-opmaakfout.
Nie so konst (XC8-2271) Die prototipes vir strstr () en ander funksies van spesifiseer nie meer die nie-standaard const-kwalifiseerder op teruggestuurde 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 vertaling eenheid is in 'n afdeling geplaas (met afdeling or kenmerk ( (afdeling) )), en die eerste sodanige veranderlike is nul geïnisialiseer of het nie 'n initialiseerder gehad nie, inisialiseerders vir ander veranderlikes in dieselfde vertaaleenheid wat in dieselfde afdeling geplaas is, het verlore gegaan.
5.1. Weergawe 2.2 9 (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 lilt not found fout, 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 gepasmaakte 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 skakelaarverslapping. 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-3 ) Verskeie definisies van , soos clock_div_t en clock_presc ale_s et () , is nie gedefinieer vir toestelle nie, insluitend die ATmega324PB, ATmega328PB, ATtiny441 en ATtiny841.
Ontbrekende makro's Die voorverwerker-makro's _XC 8_MODE_, XC 8 VERS ION, XC en xc8 is nie outomaties deur die samesteller gedefinieer nie. Hierdie is nou beskikbaar.
5.5. Weergawe 2.05
Interne samestellerfout (XC8-1822) Wanneer onder Windows gebou word, kan 'n interne samestellerfout veroorsaak 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 dalk 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 uitgegaan nie en is die hoof () funksie nooit bereik nie.
Verkeerde geheue-inligting (XC8-1787) Vir avrxmega3- en avrtiny-toestelle het die avr-grootte-program gerapporteer dat data wat slegs mal is, 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 moontlik hierdie voorwerpe vanaf die verkeerde adres gelees.
Interne fout met kenmerke (XC8-1773) 'n Interne fout het voorgekom as jy wyservoorwerpe met die _at 0 of kenmerk()-tekens tussen die wysernaam en afverwysde tipe gedefinieer het, bv.ample, char * _at (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 aanlooptydopstartkode veroorsaak het, voordat hoof 0 bereik is.
Versmeltfout met klein toestelle (XC8-1778, XC8-1742) Die attiny4/5/9/10120140-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.
Segmentasiefout (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 rjmn of roproep bevat 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 gety 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
Verkeerd 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.
strtod stel endptr verkeerd (XC8-2652) In gevalle waar 'n onderwerpstring vir omskakeling deur strtod () bevat wat blykbaar 'n drywende-puntgetal in eksponensiële formaat is en daar is 'n onverwagte karakter na 'n e-karakter, dan sal die endptr-adres, indien verskaf, na die karakter na die die e en nie die e self nie. Byvoorbeeldample: strtod ("100exy", endptr);
sal lei tot eindptr wat na die x-karakter wys.
Slegte indirekte funksie-oproepe (X03-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 swaaipuntgetal wat nie 'n eksponent spesifiseer na nul omskakel nie. Byvoorbeeldample: strtof ("Oxl", &endptr); sal die waarde 0 terugstuur, nie 1 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.
konst voorwerpe nie in programgeheue nie (XC8-2408) Vir avrxmega3- en avrtiny-projekte word unitialized const-objekte in datageheue geplaas, alhoewel 'n waarskuwing daarop dui dat hulle in programgeheue geplaas is. Dit sal nie toestelle beïnvloed wat nie programgeheue in die datageheuespasie gekarteer het nie, en ook nie enige voorwerp wat geïnisialiseer is, beïnvloed nie.
Slegte uitvoer met ongeldige DFP-pad (XCS-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 0 ) en ander voorwerpe met behulp van die _sekteioon () spesifiseerder en wat aan dieselfde adres gekoppel is.
Mislukking met biblioteekfunksies en _memx (XC8-1763) Genoemde libgcc float funksies met 'n argument in die _memx adres spasie kan misluk. Let daarop dat biblioteekroetines van sommige C-operateurs geroep word, dus bvample, die volgende kode word geraak: return regFloatVar > memxFloatVar;
Beperkte libgcc implementering (AVRTC-731) Vir die ATTiny4/5/9/10/20/40 produkte, die standaard C / Math biblioteek implementering in libgcc is 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 -mrelax 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 loca It ime 0 dieselfde tyd as gmtime ( ) terugkeer, bv.ample.
Dokumente / Hulpbronne
![]() |
MICROCHIP MPLAB XC8 C-samesteller weergawe 2.39 vrystellingsnotas vir AVR MCU [pdf] Gebruikersgids MPLAB XC8 C-samestellerweergawe 2.39-vrystellingsnotas vir AVR MCU, MPLAB XC8 C, samestellerweergawe 2.39-vrystellingsnotas vir AVR MCU, vrystellingsnotas vir AVR MCU |
![]() |
MICROCHIP MPLAB XC8 C-samesteller weergawe 2.39 vrystellingsnotas vir AVR MCU [pdf] Gebruikersgids MPLAB XC8 C-samestellerweergawe 2.39 vrystellingsnotas vir AVR MCU, MPLAB XC8 C, samestellerweergawe 2.39 vrystellingsaantekeninge vir AVR MCU, notas vir AVR MCU |
![]() |
MICROCHIP MPLAB XC8 C samesteller [pdf] Gebruikersgids MPLAB XC8 C samesteller, MPLAB XC8 C, samesteller |






