MIKROCHIP - logotipoaMPLAB XC8 C Compiler 2.39 bertsioa AVR MCUrako oharra
Erabiltzailearen Gida

DOKUMENTU HONEK MPLAB XC8 C BILATZAILEARI BURUZKO INFORMAZIO GARRANTZITSUA DAUKA MIKROCHIP AVR GAILUAK JOKATZEKO. MESEDEZ, IRAKURRI SOFTWARE HAU ERABILTZEN AURRETIK.
IKUSI MPLAB XC8 C KONMILTZAILEA PIC DOKUMENTUAREN OHARRAK 8 BITEKO ARGAZKI GAILUTAN ERABILTZEN ARI BADIZUN.

Amaituview

1.1. Sarrera
Microchip MPLAB® XC8 C konpilatzailearen bertsio hau segurtasun funtzionalaren konpilatzaile bat da, konpilatzaile honen v2.36 bertsioan oinarritutakoa eta orain Sareko Zerbitzariaren Lizentzia onartzen duena.
1.2. Argitaratze data
Konpiladorearen bertsio honen kaleratze data ofiziala 27ko urtarrilaren 2022a da.
1.3. Aurreko bertsioa
Aurreko MPLAB XC8 C konpiladorearen bertsioa 2.36 zen, 25ko urtarrilaren 2022ean kaleratua.
1.4. Segurtasun Funtzionaleko Eskuliburua
MPLAB XC konpiladoreentzako segurtasun funtzionalaren eskuliburua dokumentazio paketean eskuragarri dago segurtasun funtzionalaren lizentzia erosten duzunean.
1.5. Osagaien Lizentzia eta Bertsioak® he MPLAB
XC8 C Compiler AVR MCU tresnak GNU Lizentzia Publiko Orokorraren (GPL) pean idatzi eta banatzen dira eta horrek esan nahi du bere iturburu-kodea libreki banatu eta publikoarentzat eskuragarri dagoela.
GNU GPL pean dauden tresnen iturburu kodea Microchip-en bereizita deskarga daiteke webgunea. GNU GPL irakur dezakezu zure install license.txt avr/doc direktorioaren azpidirektorioan dagoen fitxategian. GPLren azpian dauden printzipioei buruzko eztabaida orokorra aurki daiteke hemen.
Goiburu-fitxategietarako, estekatzailerako scriptetarako eta exekuzio-denborako liburutegietarako emandako laguntza-kodea jabetza-kodeak dira eta ez daude GPL-ren arabera.
Konpiladore hau GCC 5.4.0 bertsioaren, binutils 2.26 bertsioaren inplementazioa da eta avr-libc 2.0.0 bertsioa erabiltzen du.
1.6. Sistemaren eskakizunak
MPLAB XC8 C konpilatzailea eta erabiltzen duen lizentzia-softwarea hainbat sistema eragiletarako eskuragarri daude, besteak beste, honako hauen 64 biteko bertsioetarako: Microsoft Windows 10-ren edizio profesionalak; Ubuntu 18.04; eta macOS 10.15.5. Windows-erako bitarrak kodea-sinatu dira. MacOS-erako bitarrak kodez sinatu eta notarioak izan dira.
Sareko lizentzia zerbitzari bat exekutatzen ari bazara, konpilatzaileek onartzen duten sistema eragileak dituzten ordenagailuak soilik erabil daitezke lizentzia zerbitzaria ostatatzeko. Xclm 2.0 bertsiotik aurrera, sareko lizentzia zerbitzaria Microsoft Windows Server plataforma batean instala daiteke, baina lizentzia zerbitzariak ez du zertan sistema eragilearen zerbitzariaren bertsio batean exekutatu.
1.7. Onartutako gailuak
Konpiladore honek kaleratze unean ezagutzen ziren 8 biteko AVR MCU gailu guztiak onartzen ditu. Ikusi (konpiladoreen avr_chipinfo.html direktorioa) onartzen diren gailu guztien zerrenda ikusteko. Fitxategi hauek gailu bakoitzaren konfigurazio-bit dok-en ezarpenak ere zerrendatzen dituzte.
1.8. Edizioak eta Lizentzien Berrikuntzak
MPLAB XC8 konpilatzailea lizentziadun (PRO) edo lizentziarik gabeko (Doakoa) produktu gisa aktibatu daiteke. Aktibazio-gako bat erosi behar duzu zure konpiladorearen lizentzia lortzeko. Lizentzia batek Doako produktuarekin alderatuta optimizazio-maila handiagoa ahalbidetzen du. Lizentziarik gabeko konpilatzaile bat lizentziarik gabe funtzionatu daiteke behin betiko.
MPLAB XC8 Functional Safety konpilatzailea Microchip-i erositako segurtasun funtzionalaren lizentzia batekin aktibatu behar da. Konpilatzaileak ez du funtzionatuko lizentzia hau gabe. Behin aktibatuta, edozein optimizazio-maila hauta dezakezu eta konpiladorearen funtzio guztiak erabil ditzakezu. MPLAB XC Segurtasun Funtzionalaren bertsio hau
Konpilatzaileak Sareko zerbitzariaren lizentzia onartzen du.
Ikus MPLAB XC C konpiladoreak instalatzea eta ematea (DS50002059) dokumentua lizentzia-motei eta lizentzia batekin konpilatzailea instalatzeari buruzko informazioa lortzeko.
1.9. Instalazioa eta aktibazioa
Ikus, halaber, Migrazio-arazoak eta mugak atalak, konpilatzaile honekin sartutako azken lizentzia-kudeatzaileari buruzko informazio garrantzitsua lortzeko.
MPLAB IDE erabiltzen baduzu, ziurtatu azken MPLAB X IDE 5.0 bertsioa edo berriagoa instalatu duzula tresna hau instalatu aurretik. Irten IDEtik konpilatzailea instalatu aurretik. Exekutatu (Windows), (Linux) edo (macOS) .exe .exekutatu .app konpiladorearen instalatzaile aplikazioa, adibidez, eta jarraitu pantailako jarraibideak.
XC8-1.00.11403-windows.exe
Instalazio-direktorio lehenetsia gomendatzen da. Linux erabiltzen ari bazara, konpilatzailea instalatu behar duzu terminal baten bidez eta root kontu batetik. Instalatu administratzaile-pribilegioak dituen macOS kontu bat erabiliz.
Aktibazioa instalatzeko bereizita egiten da orain. Informazio gehiago lortzeko, ikusi MPLAB® XC C konpilatzaileentzako License Manager (DS52059) dokumentua.
Konpilatzailea ebaluazio-lizentziapean exekutatzeko aukeratzen baduzu, orain abisu bat jasoko duzu konpilazioan zure ebaluazio-aldia amaitu eta 14 eguneko epean zaudenean. Abisu bera emango da HPA harpidetza amaitu eta 14 eguneko epean bazaude.
XC Network License Server instalatzaile bereizia da eta ez dago erabiltzaile bakarreko konpiladorearen instalatzailean sartzen.
XC License Manager-ek sare mugikorreko lizentzien ibiltaritza onartzen du orain. Mugikorrentzako erabiltzaileei zuzenduta, funtzio honek lizentzia flotagarri bati saretik kanpo uzteko aukera ematen du denbora laburrean. Ezaugarri hau erabiliz, saretik deskonekta zaitezke eta oraindik ere zure MPLAB XC konpilatzailea erabil dezakezu. Ikusi XCLM instalazioaren doc karpeta eginbide honi buruzko informazio gehiago lortzeko.
MPLAB X IDE-k Lizentzien leiho bat (Tresnak > Lizentzia) barne hartzen du ibiltaritza bisualki kudeatzeko.

1.9.1. Instalazio-arazoak konpontzea
Windows sistema eragileren batean konpilatzailea instalatzeko zailtasunak badituzu, saiatu iradokizun hauekin.

  • Exekutatu instalazioa administratzaile gisa.
  • Ezarri instalatzailearen aplikazioaren baimenak 'Kontrol osoa' moduan. (Egin klik eskuineko botoiarekin fitxategian, hautatu Propietateak, Segurtasuna fitxa, hautatu erabiltzailea, editatu.)
  • Ezarri denbora-karpetaren baimenak "Kontrol osoa!.
  • Karpeta tenporalaren kokapena zehazteko, idatzi Exekutatu komandoan (Windows logoaren tekla + R). %temp% Honek fitxategi-arakatzailearen elkarrizketa-koadroa irekiko du, direktorio hori erakusten duena eta karpeta horren bidea zehazteko aukera emango dizu.

1.10. Konpilatzailearen dokumentazioa

MICROCHIP MPLAB XC8 C konpilatzailea AVR MCUrako 2.39 bertsioaren bertsio-oharrak - dokumentuaKonpilatzailearen erabiltzailearen gidak zure arakatzailean irekitzen den HTML orrialdetik ireki daitezke MPLAB X IDE paneleko laguntza botoi urdina sakatzean, pantaila-argazkian adierazten den moduan.
8 biteko AVR helburuetarako eraikitzen ari bazara, MPLAB® XC8 C Compiler User's® Guide for AVR
MCU-k arkitektura honetara aplikagarriak diren konpiladore-aukera eta ezaugarriei buruzko informazioa dauka.

1.11. Bezeroarentzako arreta
Microchip-ek akatsen txostenak, iradokizunak edo iruzkinak onartzen ditu konpiladorearen bertsio honi buruz. Mesedez, zuzendu edozein akatsen txostena edo eginbide eskaerak Laguntza Sistemaren bidez.

Dokumentazio eguneraketak

MPLAB XC8 dokumentazioaren lineako bertsio eguneratuak eta eguneratuak lortzeko, bisitatu Microchip-en linean
Dokumentazio Teknikoa webgunea.
Argitalpen honetako AVR dokumentazio berria edo eguneratua:
MPLAB® XC C konpiladoreak instalatzea eta lizentzia ematea (DS50002059) L berrikuspena
Microchip Unified Standard Library Reference Guide-k Microchip Unified Standard Library-k definitutako funtzioen portaera eta interfazea deskribatzen ditu, baita liburutegi moten eta makroen nahi den erabilera ere. Informazio hauetako batzuk AVRrako MPLA® XC8 C Compiler User!s Guide®-n zeuden.
MCU. Gailuaren espezifikoa den liburutegiaren informazioa oraindik ere biltzen da konpiladorearen gida honetan.
Hexmate erabiltzailearen gidaliburua bertsio honetako direktorioa sartu da. Gida hau Hexmate aplikazio autonomo gisa exekutatzen duten dokumentuentzat da.
Hurrengo atalek konpiladorearekin batera bidalitako erabiltzailearen gidaliburuetan aurkitutako zuzenketak eta informazio gehigarria eskaintzen dute.

2.1. smart-io-format Aukera
-msmart-io-format=fmt fmt aukerak, non formateatutako IO bihurketa zehaztapenak dituen kate bat den, konpilatzaileari jakinarazten dio zerrendatutako zehaztapenak IO funtzio adimendunek erabiltzen dituztela.
Kodearen tamaina murrizteko, konpilatzaileak IO funtzio adimendunen inprimatze- eta eskaneatu familiekin lotutako liburutegi-kodea pertsonalizatzen du, funtzio horietarako dei guztietan bildutako formatu-kateetan dauden bihurketa-zehaztapenetan oinarrituta. Eginbide hau guztiz automatikoa da eta ezin da desgaitu.
Zenbait egoeratan, konpilatzaileak ezin du formateatutako IO funtzio-deiaren erabilera-informazioa zehaztu. Aukera erabili bada, katetik lortzen dira funtzio hauetarako behar diren bihurtze-espezifikazioak; bestela, konpilatzaileak ez du -msmart-io-format=fmt fmt funtzioak nola erabiltzen diren eta formateatutako IO funtzioak azken programaren irudira lotzen direla ziurtatzen du.
Adibidezample, kontuan hartu hurrengo deiak IO funtzio adimendunetarako.

vscanf ("%d:%li", va_list1);
vprintf(“%-s%d”, va_list2);
vprintf (fmt1, va_list3);// erabilera anbiguoa
vscanf(fmt2, va_list4);// erabilera anbiguoa

Azken bi deiak prozesatzen dituenean, konpilatzaileak ezin du erabilera-informaziorik ondorioztatu ez formatu-kateetatik, ez argumentuetatik. Kasu hauetan, -msmart-io-format aukera erabil daiteke eta formateatutako I0 funtzio optimoagoak sortzea ahalbidetuko du, horrela programaren kodearen tamaina murriztuz. Adibidezample, fmtl-ek eta fmt2-k adierazitako formatu-kateek "%d", "%i" eta "% s" bihurketa-zehaztaileak soilik erabiltzen badituzte, -msmart-io-format=fmt="%d%i%s ” aukera eman behar da.

Tinta-kateak baliozko edozein bihurketa-zehaztapen izan dezake, banderak eta aldatzaileak barne (adibidezample “%-13. 91s”), eta erabilera anbiguoa duten funtzioek erabiltzen dituztenak islatu beharko lituzke. Zehaztapenik ez sartzea pixka bat formateatutako I0 funtzioek erabili duten argumentua kodea hutsegitea izan daiteke.
fmt kate huts bat bada edo bihurketa-zehaztapen antzemangarririk ez badu, abisu bat emango da eta formateatutako I0 funtzio guztiz funtzionalak programaren azken irudira lotuko dira.
Aukera hau hainbat aldiz erabil daiteke komando lerroan. Aukera bakoitzarekin erabilitako bihurketa-zehaztapenak metatzen dira.

2.2. omit-frame-pointer Aukera
– f omit- frame-pointer aukerak agintzen dio konpilatzaileari pila-erakuslea zuzenean erabiltzeko pilako objektuetara sartzeko eta, ahal bada, marko-erregistroa gorde, hasieratzen eta leheneratzen duen kodea baztertu. Automatikoki gaitzen da zero ez diren optimizazio-maila guztietan.
Aukera ezeztatzeak, -fno-omit- frame-pointer erabiliz, optimizatutako kodea arazketan lagun dezake; hala ere, aukera honek ez du bermatzen marko-erakuslea beti erabiliko denik.

2.3. unroll-loops Aukerak
– funrol I-loops eta -(unroll-all-loops aukerek abiadurara zuzendutako optimizazioak kontrolatzen dituzte, begiztetan adarkatze-atzerapenak kentzen saiatzen direnak. Desegindako begiztak normalean sortutako kodearen exekuzio-abiadura handitzen dute, kode-tamaina handiagoaren kontura.
– funrol I-loops aukerak begiztak zabaltzen ditu, non iterazio kopurua konpilazio garaian edo kodea begizta sartzen denean zehaztu daitekeen. -funroll-all-loops aukera oldarkorragoa da, begizta guztiak zabaltzen ditu, nahiz eta iterazio kopurua ezezaguna izan. Normalean ez da hain eraginkorra exekuzio abiadura hobetzeko – funrol 1-loops aukera baino.

2.4. gantz-Ito-objektuak Aukera
– f fat-1 to-obj ects aukerak konpilatzaileak objektu gantza sortzea eskatzen du files, biak dituztenak
objektu-kodea eta GIMPLE (GCCren barneko irudikapenetako bat), ELF atal berezietan idatzita. Horrelako objektuak files erabilgarriak dira lotura-denbora optimizatzaile estandarra erabiltzen duten eta ez duten proiektuekin lotu daitezkeen liburutegi-kodeetarako, -flto aukerak kontrolatuta.
Aukera honen – fno-fat-lto-objects formak, aukerarik zehazten ez bada lehenetsia dena, objektuaren kodea objektuan sartzea kentzen du. files, eraikuntza azkarragoak eraginez. Hala ere, halako objektua files beti lotu behar dira lotura-denboraren optimizatzaile estandarra erabiliz.

2.5. Ito-partizio aukera
The – flto-partiti on=a Igo ri thm aukerak objektua partitzeko erabiltzen den algoritmoa kontrolatzen du files esteka-denbora optimizatzailea exekutatzen denean. None argumentuak partizioa erabat desgaitzen du eta lotura-denbora optimizatzeko urratsa zuzenean programaren analisiaren (WPA) fasetik exekutatzen du. Eragiketa-modu honek emaitzarik hoberenak emango ditu, konpiladoreen memoria-eskakizun handiagoak eta eraikitze-denbora luzeagoen kontura, nahiz eta hori programa txikiekin arazoa izango ez den. Objektua zatitzea fileEraikuntzaren errendimendua hobetu dezake. One argumentuak partizio bat erabili behar dela zehazten du, eta lto1 argumentuak jatorrizko iturriak agindutakoa islatzen duen partizioa zehazten du. files. Lehenetsitako argumentua orekatua da, eta horrek tamaina berdineko zatitan zatitzea zehazten du, ahal denean.

2.6. 3.6.11 Atalaren gehigarria Lokatzaile mapatutako aukerak
-wl, –atala-hasiera =seg zioa=addr normalean erabiltzen diren estekatzaileen aukeren taulan falta da, -wl konpiladorearen kontrolatzailearen aukera erabiliz eskuragarri. Aukera honek aukera ematen du pertsonalizatutako izenen atalak zehaztutako helbidean kokatzeko. Ezin da erabili atal estandarrak jartzeko, adibidez ( . datuak, . bss, . testua), -wl, -'r aukera erabiliz jarri behar dena.

2.7. 4.14.2 Atalaren Aldaketa Esleitutako Atala Aldatzea eta Lotzea
Kontuan izan Erabiltzailearen gidaren atal honetan jasotako informazioaren aurka, bertsio honetan konpilatzailean egindako aldaketek orain atal pertsonalizatuak -w1 erabiliz lotu daitezkeela esan nahi dutela. – sekta ioi- hasiera=atala=acir aukera eta estekatzailearen scripta aldatu beharrik gabe.

Zer berri

Honako hauek dira orain konpilatzaileak onartzen dituen AVR-target ezaugarri berriak. Azpitituluetako bertsio-zenbakiak hurrengo ezaugarriak onartzen dituen lehen konpilatzailearen bertsioa adierazten du.

3.1. 2.39 bertsioa (Segurtasun funtzionalaren bertsioa)
Sareko zerbitzariaren lizentzia MPLAB XC8 Functional Safety Compiler-en bertsio honek Sareko zerbitzariaren lizentzia onartzen du.

3.2. 2.36 bertsioa 
Bat ere ez.
3.3. 2.35 bertsioa 
Gailuen laguntza berria AVR pieza hauetarako laguntza eskuragarri dago: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 eta AVR64DD32.
Testuinguru-aldaketa hobetua -mcall-isr-prologues aukera berriak eten funtzioek sarreran erregistroak nola gordetzen dituzten eta erregistro horiek nola leheneratzen diren eten errutina amaitzen denean aldatzen du. -mcall-prologues aukeraren antzera funtzionatzen du, baina eten funtzioei (ISR) bakarrik eragiten die.
Are gehiago, testuinguru-aldaketa hobetu Berria -mgas-isr-prologos aukerak etenaldi zerbitzuen errutina txikietarako sortutako testuinguru-aldaketaren kodea kontrolatzen du. Gaituta dagoenean, funtzio honek mihiztatzaileak ISR eskaneatu egingo du erregistroaren erabileraren bila eta erabilitako erregistro hauek soilik gordeko ditu beharrezkoa bada.
Flash-mapa konfiguragarria AVR DA eta AVR DB familiako gailu batzuek SFR bat dute (adibidez, FLMAP) programaren memoriaren zein 32k-ko atal mapatuko den datuen memorian zehazten duena. – mconst-data-in-config-mapped-progmem aukera berria erabil daiteke estekatzaileak cons t-kalifikatutako datu guztiak 32k atal batean jartzeko eta dagokion SFR erregistroa automatikoki hasieratzeko, datu hauek datuetan mapatzen direla ziurtatzeko. memoria espazioa, non modu eraginkorragoan sartuko den.

Microchip Unified Standard Libraries MPLAB guztiak XC konpilatzaileek Microchip Unified Standard Library partekatuko dute, orain eskuragarri dagoen MPLAB XC8 bertsio honekin. The MPLAB® XC8 C konpilatzailea
AVRrako erabiltzailearen gida® MCU jada ez du funtzio estandar hauetarako dokumentazioa sartzen. Informazio hori orain helbidean aurki daiteke Microchip Unified Standard Library erreferentzia-gida. Kontuan izan avr-libc-ek aurrez definitutako funtzionalitate batzuk jada ez daudela erabilgarri. (Ikus Liburutegiaren funtzionaltasuna.)
Smart I0 Liburutegi bateratu berrien zati gisa, printf eta scanf familietako JO funtzioak pertsonalizatuta sortzen dira orain eraikuntza bakoitzean, funtzio hauek programan nola erabiltzen diren oinarrituta. Honek programa batek erabiltzen dituen baliabideak nabarmen murriztu ditzake.
I0 adimendunaren laguntza-aukera I0 funtzio adimendunetarako deiak aztertzean (adibidez, printf () edo scanf ()), konpilatzaileak ezin du beti formatu-katearen arabera zehaztu edo argumentuetatik ondorioztatu deiak eskatzen dituen bihurketa-zehatzaile horiek. Aurretik, konpilatzaileak beti ez zuen hipotesirik egingo eta 10 funtzio guztiz funtzionalak programaren azken irudian lotzen zirela ziurtatzen zuen. – msma rt-io- format=fmt aukera berri bat gehitu da, konpilatzaileari erabiltzaileak bere erabilera anbiguoa den I0 funtzio adimendunek erabiltzen dituzten bihurketa-zehaztatzaileen berri izan dezan, 10 errutina luzeegiak lotzea ekiditeko. (Ikus smart-io-formatua Xehetasun gehiago lortzeko aukera.)
Atal pertsonalizatuak jartzea Aurretik, -W1, –section-start aukerak eskatutako helbidean zehaztutako atala soilik jartzen zuen estekatzaileen scriptak izen bereko irteerako atal bat definitzen zuenean. Hori horrela ez zenean, atala estekatzaileak aukeratutako helbide batean jartzen zen eta aukera baztertu zen funtsean. Orain aukera errespetatuko da atal pertsonalizatu guztietan, estekatzailearen scriptak atala definitzen ez badu ere. Kontuan izan, ordea, atal estandarrentzat, hala nola. testua,. bss edo . datuak, egokien egokien esleitzaileak oraindik ere erabateko kontrola izango du bere kokapenaren gainean, eta aukerak ez du eraginik izango. Erabili -wl, -Tsection=addr aukera, erabiltzailearen gidan azaltzen den moduan.

3.4. 2.32 bertsioa
Pila-gidalerroa PRO konpiladore lizentzia batekin eskuragarri, konpilatzailearen pila-gida-eginbidea erabil daiteke programa batek erabiltzen duen edozein pilaren gehienezko sakonera kalkulatzeko. Programa baten dei grafikoa eraiki eta aztertzen du, funtzio bakoitzaren pila-erabilera zehazten du eta txosten bat egiten du, eta hortik programak erabiltzen dituen pila-saken sakontasuna ondoriozta daiteke.
Ezaugarri hau -mchp-stack- usage komando-lerroko aukeraren bidez gaitzen da. Exekutatu ondoren pilaren erabileraren laburpena inprimatzen da. Mapan eskuragarri dago pila-txosten zehatza file, ohiko moduan eska daitekeena.
Gailuaren euskarri berria AVR zati hauetarako euskarria dago eskuragarri: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTNY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX
Erretiratutako gailuen laguntza Jada ez dago erabilgarri AVR zati hauetarako: AVR 16DA28, AVR16DA32 eta AVR16DA48.

3.5. 2.31 bertsioa Bat ere ez.
3.6. 2.30 bertsioa
Datuen hasieratzea saihesteko aukera berria -mno-data-init kontrolatzaile aukera berri batek datuak hasieratzea eta bss atalak garbitzea eragozten du. Do_copy_data eta do_clear_bss sinboloen irteera ezabatuz funtzionatzen du muntaian files, eta horrek eragotziko du estekatzaileak errutina horiek sartzea.
Optimizazio hobetuak Optimizazio-hobekuntza ugari egin dira, besteak beste, itzulera-jarraibide erredundanteak kentzea, jauzi batzuk ezabatzea bit-it-is instrukzio baten ondoren, eta prozedura-abstrakzioa eta prozesu hau errepikatzeko gaitasuna hobetu dira.
Aukera gehigarriak daude orain optimizazio horietako batzuk kontrolatzeko, zehazki -fsection-anchors, zeinak objektu estatikoen sarbidea ikur batekin alderatuta egiteko aukera ematen baitu; -mpa-itertazioak =n, horrek abstrakzio prozedurazkoen iterazioen kopurua 2 lehenespenetik alda daiteke; eta, -mpa-callcost-shortcal 1, abstrakzio prozesal oldarkorragoa egiten duena, estekatzaileak dei luzeak lasaitu ditzakeen itxaropenarekin. Azken aukera honek kodearen tamaina handitu dezake azpiko hipotesiak betetzen ez badira.
Berria gailuaren laguntza AVR pieza hauetarako laguntza dago eskuragarri: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 VR128DB64.
Erretiratutako gailuaren euskarria Jada ez dago erabilgarri AVR zati hauetarako: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, ATA664251, ATAXNUMX, ATAXNUMX

3.7. 2.29 bertsioa (Segurtasun funtzionalaren bertsioa)
Goiburua file konpilatzaileen bunt-inetarako Konpilatzaileak MISRA bezalako hizkuntza-zehaztapenekin bat egin dezakeela ziurtatzeko goiburua file, automatikoki sartzen dena , eguneratu da. Goiburu honek eraikitako funtzio guztien prototipoak ditu, hala nola built in_avr_nop ( ) eta _builtin_avr_delay_cycles () . Baliteke integrazio batzuk ez izatea MISRA bat; hauek ezaba daitezke definitzen XC_STRICT MISRA konpiladorearen komando-lerroan gehituz. Eraikitakoak eta haien deklarazioak eguneratu dira zabalera finko motak erabiltzeko.

3.8. 2.20 bertsioa
Berria gailuaren laguntza AVR pieza hauetarako laguntza dago eskuragarri: ATTINY 1624, ATTINY1626 eta ATTINY 1 627.
Egokipen onenaren esleipena Konpilagailuko egokitzerik onena (BFA) hobetu da, atalak optimizazio hobea ahalbidetzen duen ordena batean eslei daitezen. BFAk orain izendun helbide-espazioak onartzen ditu eta hobeto kudeatzen du datuen hasieratzea.
Prozeduraren abstrakzioa hobetua Abstrakzio prozesalaren optimizazioak orain kode-sekuentzia gehiagotan egiten dira. Optimizazio honek kode-tamaina handitu izan zezakeen aurreko egoerei aurre egin zaie optimizazio-kodea estekatzailearen zabor-bilketa prozesuaren berri emanez.
AVR Muntatzailerik ez izatea AVR Assembler jada ez dago banaketa honekin. 3.9. 2.19 bertsioa (Segurtasun Funtzionala Askatu)
Bat ere ez.
3.10. 2.10 bertsioa
Kodearen Estaldura Argitalpen honek kode estaldura-eginbide bat dakar, proiektu baten iturburu-kodea zenbateraino exekutatu den aztertzen errazten duena. Erabili -mcodecov=ram aukera gaitzeko. Programa zure hardwarean exekutatu ondoren, kode-estalduraren informazioa bilduko da gailuan, eta hau MPLAB X IDEra transferitu eta bistaratu ahal izango du kode-estaldura-plugin baten bidez. Ikus IDE dokumentazioa plugin honi buruzko informazioa lor daiteke.
#pragma nocodecov erabil daiteke ondorengo funtzioak estaldura-analisietatik kanpo uzteko. Egokiena, pragmaren hasieran gehitu behar da file osoa hori baztertzeko file estalduraren analisitik. Bestela, _attribute_ ((nocodecov)) erabil daiteke estaldura-analisietatik funtzio zehatz bat baztertzeko.
Gailuaren deskribapena files Gailu berria file avr_chipinfo.html izeneko docs direktorioan dago

konpiladorearen banaketa. Hau file konpilatzaileak onartzen dituen gailu guztiak zerrendatzen ditu. Egin klik gailuaren izenean, eta orri bat irekiko du gailu horretarako baimendutako konfigurazio bit ezarpen/balio bikote guztiak erakusten dituena, exekin.amples.

Abstrakzio prozedurazkoa Prozedurazko abstrakzio optimizazioak, muntaketa-kodearen bloke arruntak bloke horren ateratako kopia baterako deiak ordezkatzen dituztenak, gehitu dira konpilatzaileari. Hauek aplikazio bereizi batek egiten ditu, eta konpilatzaileak automatikoki deitzen du 2, 3 edo maila hautatzen denean. s optimizazioak. Optimizazio hauek kodearen tamaina murrizten dute, baina exekuzio-abiadura eta kodea arazketa-arazgarritasuna murriztu ditzakete.
Abstrakzio prozedurala optimizazio-maila altuagoetan desgaitu daiteke -mno-pa aukera erabiliz, edo optimizazio-maila baxuagoetan gaitu daiteke (zure lizentziaren arabera) -mpa erabiliz. Objektu baterako desgaitu daiteke file -mno-pa-on-f ile= erabilizfileizena, edo funtzio baterako desgaituta -mno-pa-onfunotion=f erabiliz unkzioa.
Zure iturburu-kodearen barruan, prozedura-abstrakzioa desgaitu daiteke funtzio baterako attribute_ ( (nopa) ) funtzioaren definizioarekin erabiliz, edo nopa erabiliz, _attribute_ ( (nopa, noinline) ) ) eta, beraz, funtzio inlining gertatzea eragozten du. eta inlined kodearen abstrakzioa egotea.
Blokeatu bit euskarria pragman #pragma konfigurazioa orain AVR blokeo-bitak zein beste konfigurazio-bitak zehazteko erabil daiteke. Egiaztatu avr_chipinfo.html file (Goian aipatua) ezarpen/balio bikoteak pragma honekin erabiltzeko.
Berria gailuaren laguntza Parte hauetarako laguntza dago eskuragarri: AVR28DAl28, AVR64DAl28, AVR32DAl28 eta AVR48DAl28.

3.11. 2.05 bertsioa
Bit gehiago zure diruaren truke Konpilatzaile eta lizentzia-kudeatzaile honen macOS bertsioa 64 biteko aplikazioa da orain. Honek konpilatzailea macOS-en azken bertsioetan abisurik gabe instalatuko eta exekutatzen dela ziurtatuko du.
Const objektuak programaren memorian Konpilatzaileak orain konst-kalifikatutako objektuak jar ditzake programaren Flash memorian, hauek RAMan kokatu beharrean. Konpilatzailea aldatu egin da, kons t-kalifikatutako datu globalak programaren flash memorian gorde daitezen eta datu hori zuzenean eta zeharka programa-memoriaren instrukzio egokiak erabiliz atzitu ahal izateko. Ezaugarri berri hau lehenespenez gaituta dago baina desgaitu daiteke -mno-const-data-in-progmem aukera erabiliz. Avrxmega3 eta avrtiny arkitekturarentzat, eginbide hau ez da beharrezkoa eta beti desgaituta dago, programaren memoria gailu hauen datu-helbide-espazioan mapatzen baita.
Doan estandarra Lizentziarik gabeko (Doako) konpiladore honen bertsioek orain 2. mailara arteko optimizazioak ahalbidetzen dituzte. Honek, lehen lizentzia estandarra erabiliz posible zenaren antzeko irteera ahalbidetuko du, baina ez berdina.
Ongi etorri AVRASM2 2 biteko gailuetarako AVRASM8 muntatzailea XC8 konpiladorearen instalatzailean sartzen da orain. Muntatzaile hau ez du XC8 konpilatzaileak erabiltzen, baina eskuz idatzitako muntaia iturrian oinarritutako proiektuetarako eskuragarri dago.
Berria gailuaren laguntza Parte hauetarako laguntza dago eskuragarri: ATMEGA1608, ATMEGA 1609, ATMEGA808 eta ATMEGA809.

3.12. 2.00 bertsioa
Goi-mailako Gidaria Gidari berri bat, xc8 -cc izenekoa, aurreko avr-gcc kontrolatzailearen eta xc8 kontrolatzailearen gainean dago orain, eta xede gailuaren hautapenaren arabera konpiladore egokia dei dezake. Gidari honek GCC estiloko aukerak onartzen ditu, exekutatzen ari den konpiladorearentzat itzultzen direnak edo itzultzen direnak. Gidari honek antzeko semantika duten aukera-multzo antzeko bat AVR edo PIC helbururekin erabiltzeko aukera ematen du eta, beraz, konpilatzailea deitzeko gomendatutako modua da. Beharrezkoa izanez gero, avr-gcc kontrolatzaile zaharrari zuzenean deitu daiteke aurreko konpilatzaileen bertsioetan onartzen zituen estilo zaharreko aukerak erabiliz.
C Interfaze arrunta Konpiladore hau MPLAB Common C Interface-ra moldatu daiteke, iturburu-kodea errazago eraman daiteke MPLAB XC konpilatzaile guztietan. -mext=cci aukerak ezaugarri hau eskatzen du, hizkuntza-luzapen askotarako ordezko sintaxia gaituz.
Liburuzain gidari berria A Liburutegiko gidari berria aurreko PIC libr liburuzainaren eta AVR avr-ar liburuzainaren gainean kokatzen da. Gidari honek GCC artxibatzaile estiloko aukerak onartzen ditu, exekutatzen ari den liburuzainarentzat itzultzen direnak edo itzultzen direnak. Gidari berriak antzeko semantika duten aukera-multzo bat erabiltzeko aukera ematen du edozein PIC edo AVR liburutegia sortzeko edo manipulatzeko. file eta horrela liburuzaina deitzeko gomendatutako modua da. Oinarrizko proiektuetarako behar izanez gero, aurreko liburuzainari zuzenean deitu ahal izango zaio aurreko konpilatzaileen bertsioetan onartzen zituen estilo zaharreko aukerak erabiliz.

Migrazio Arazoak

Honako hauek dira orain konpilatzaileak modu ezberdinean kudeatzen dituen ezaugarriak. Baliteke aldaketa hauek zure iturburu-kodea aldatzea behar izatea, kodea konpiladore-bertsio honetara eramaten baduzu. Azpitituluetako bertsio-zenbakiak hurrengo aldaketak onartzen dituen lehen konpilatzailearen bertsioa adierazten du.

4.1. 2.39 bertsioa (Segurtasun funtzionalaren bertsioa)
Bat ere ez.
4.2. 2.36 bertsioa Bat ere ez.
4.3. Bertsioa 2.35
Kate-to-baseen maneiua (XC8-2420) Beste XC konpilatzaile batzuekin koherentzia bermatzeko, XC8 string-to-ra funtzioak, strtol () etab. bezalakoak, ez dira sarrerako kate bat bihurtzen saiatuko zehaztutako oinarria 36 baino handiagoa bada eta horren ordez errno ezarriko dute EINVAL. C estandarrak ez du zehazten duen portaera oinarrizko balio hori gainditzen denean funtzioak.
Abiadura-optimizazio desegokiak Prozedurazko abstrakzio-optimizazioak gaitzen ari ziren 3. mailako optimizazioak (-03) hautatzean. Optimizazio hauek kodearen tamaina murrizten dute kodearen abiaduraren kontura, beraz, ez lukete egin behar. Optimizazio-maila hau erabiltzen duten proiektuek kode-tamainan eta exekuzio-abiaduran desberdintasunak ikus ditzakete bertsio honekin eraikitzen direnean.
Liburutegiaren funtzionaltasuna C liburutegiko funtzio estandar askoren kodea orain Microchip-en Liburutegi Estandar bateratutik dator, eta egoera batzuetan portaera ezberdina izan dezake avr-libc liburutegiak emandakoarekin alderatuta. Adibidezample, jada ez da beharrezkoa 1printf flt liburutegian estekatzea (-1printf_flt aukera) float-format zehaztatzaileentzako formateatutako I0 euskarria aktibatzeko. Microchip Unified Standard Library-ren 10 funtzio adimendunek aukera hau erredundante egiten dute. Gainera, _P atzizkidun errutinak erabiltzea kate eta memoria funtzioetarako (adibidez, strcpy_P ( ) etab..) flash-en const kateetan funtzionatzen dutenak ez dira beharrezkoak. C errutina estandarrak (adibidez, strcpy 0 ) behar bezala funtzionatuko du datu horiekin const-data-in-program-memory funtzioa gaituta dagoenean.

4.4. 2.32 bertsioa
Bat ere ez.
4.5. 2.31 bertsioa
Bat ere ez.
4.6. 2.30 bertsioa
Bat ere ez.
4.1. 2.29 bertsioa (Segurtasun funtzionalaren bertsioa)
Bat ere ez.
4.2. 2.20 bertsioa
DFP-ren diseinua aldatu da konpilatzaileak DFP-ek erabiltzen duten diseinu desberdina (Device Family Packs) hartzen du. Horrek esan nahi du DFP zaharrago batek agian ez duela funtzionatuko bertsio honekin, eta konpilatzaile zaharrek ezin izango dituzte azken DFPak erabili.

4.3. 2.19 bertsioa (Segurtasun funtzionalaren bertsioa)
Bat ere ez.
4.4. 2.10 bertsioa Bat ere ez
4.5. 2.05 bertsioa
Const objektuak programaren memorian Kontuan izan, lehenespenez, konst-kualfied objektuak programaren memorian jarriko direla eta atzituko direla (bere deskribatzen den bezala). Horrek zure proiektuaren tamainan eta exekuzio abiaduran eragingo du, baina RAM erabilera murriztu beharko luke. Ezaugarri hau desgaitu daiteke, behar izanez gero, -mnocons t-data-in-pr ogmem aukera erabiliz.

4.6. 2.00 bertsioa
Konfigurazio-fusibleak Gailuaren konfigurazio-fusibleak orain konfigurazio pragma bat erabiliz programatu daitezke, eta ondoren, ezarpen-balio-pareak, fusiblearen egoera zehazteko, adibidez, #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
Objektu eta funtzio absolutuak Objektuak eta funtzioak memorian helbide zehatz batean jar daitezke orain CCI _ erabilizat (helbidea) espezifikatzailea, adibidezample:
sartzen bada
int foobar at (0)0300100);
char at(0x250) getID(int offset) ( Zehaztaile honen argumentuak lehen byte edo instrukzioa jarriko den helbidea adierazten duen konstante bat izan behar du. RAM helbideak Ox800000 desplazamendu bat erabiliz adierazten dira. Gaitu CCI erabili funtzio hau.
Eten funtzioaren sintaxi berria Konpilatzailea orain CCI _etenaldia onartzen du (zenb) zehatzailea C funtzioak eten-kudeatzaileak direla adierazteko. Espezifikatzaileak eten-zenbaki bat hartzen du, adibidezample:

Arazo finkoak

Honako hauek dira konpilatzaileari egin zaizkion zuzenketak. Hauek sortutako kodean akatsak konpondu ditzakete edo konpilatzailearen funtzionamendua erabiltzailearen gidan aurreikusitako edo zehaztutakoaren arabera alda dezakete. Azpitituluetako bertsio-zenbakiak hurrengo arazoetarako konponketak izango dituen lehen konpilatzailearen bertsioa adierazten du. Tituluan kortxeteen etiketa(k) gai horren identifikazioa da jarraipenaren datu-basean. Hauek erabilgarriak izan daitezke laguntzarekin harremanetan jarri behar baduzu.
Kontuan izan gailuaren arazo espezifiko batzuk Device Family Pack-en (DR)) gailuarekin lotuta. Ikus MPLAB paketeen kudeatzailea DFPetan egindako aldaketei buruzko informazioa lortzeko eta azken paketeak deskargatzeko.

5.1. 2.39 bertsioa (Segurtasun funtzionalaren bertsioa)
Bat ere ez.
5.2. 2.36 bertsioa
Errorea atzeratzean (XCS2774) Aske moduko optimizazio lehenetsietan egindako aldaketa txikiek eragiketa-adierazpenen atzerapen-funtzioetan etengabe tolestea eragotzi zuten, eta ondorioz, ez-konstante gisa tratatu ziren eta errorea eragin zuten. built in_avr_delay_cycles konpilazio-denbora osoko konstante bat espero du.

5.3. 2.35 bertsioa
Albokoak esleipena _at erabiliz (XCS2653) Izen bereko eta _at () erabiliz atal bateko hainbat objekturen lekuen ondoko esleipenak ez zuen behar bezala funtzionatu. Adibidezample:
const char arrl[ ] atributua (section(“.mysec”) at (0x500) = (OxAB, OxCD);
const char arr2[ ] atributua (sectionr.mysec”)= (OxEF, OxFE);
arr2 jarri beharko luke berehala arri ondoren.
Atalaren hasierako helbideak zehaztea (XCS2650) The -wl, –section-start aukerak isilean huts egiten zuen atalak jarritako hasierako helbidean. Arazo hau konpondu da pertsonalizatutako edozein ataletarako; hala ere, ez du funtzionatuko inongo atal estandarretan, adibidez. testua edo. bss, a erabiliz jarri behar dena -wl, -T aukera.
Linker-ek huts egiten du erlaxatzean (XCS2647) Noiz -mrelax optimizazioa gaituta zegoen eta memoria erabilgarrian sartzen ez ziren kode edo datu-atalak ziren, estekatzailea huts egin zuen. Orain, halako egoera batean, errore-mezuak igortzen dira ordez.
Ez ezerortzenatzera (XCS2646) The –nofallback aukera ez zen behar bezala inplementatu, ezta dokumentatu ere. Hau hauta daiteke orain konpilatzailea ez dela itzuliko optimizazio-ezarpen baxuago batera konpilatzailea lizentziarik gabe badago, eta, horren ordez, errore bat emango duela.
Abiadura-optimizazio desegokiak (XCS2637) Prozedurazko abstrakzio-optimizazioak gaitzen ari ziren 3. mailako optimizazioak (-03) hautatzean. Optimizazio hauek kodearen tamaina murrizten dute kodearen abiaduraren kontura, beraz, ez lukete egin behar.
EEPROM sarbide txarra (XCS2629) eeprom_read_block errutinak ez zuen behar bezala funtzionatu Xmega gailuetan -mconst-data-in-progmem aukera gaituta zegoenean (egoera lehenetsia da), eta ondorioz EEPROM memoria ez zen behar bezala irakurri.
Memoria esleipen baliogabea (X03-2593, XC8-2651) Noiz -Ttext edo -Tdata estekatzailea aukera (adibidezamp-wl kontrolatzaile aukera erabiliz igarotako fitxategia) zehazten da, dagokion testu/datuen eskualdearen jatorria eguneratu da; hala ere, amaierako helbidea ez zen horren arabera egokitu, eta horrek eskualdeak xede gailuaren memoria-tartea gainditzea eragin zezakeen.
Istripua gehiegi egotzitako funtzioarekin (XC8-2580) Konpilatzaileak huts egin zuen funtzio bat eten, seinale edo nmi atributuetako bat baino gehiago erabiliz deklaratzen bazen, adibidez, _attribute_ (( seinalea , etenaldia ) ).
ATtiny eten-kode baliogabea (XC8-2465) ATtiny gailuetarako eraikitzean eta optimizazioak desgaitu zirenean (-00), baliteke eten funtzioek eragiketa-sortaz kanpoko mihiztatzaile-mezuak abiarazi izana.
Pasatzen ez diren aukerak (XC8-2452) Erabiltzean -wl komaz bereizitako estekatzaile-aukera anitz dituen aukera, ez ziren estekatzaile-aukera guztiak pasatzen ari estekatzaileari.
Errore bat programaren memoria zeharka irakurtzean (X03-2450) Zenbait kasutan, konpilatzaileak sortu zuen barne-errore bat (insn ezagutezina) erakusle batetik programaren memoriara bi byte-balioa irakurtzean

5.4. 2.32 bertsioa
Liburutegiaren bigarren sarbidea huts egin du (X03-2381) xc8-ar.exe liburutegiko artxiboaren Windows bertsioa bigarren aldiz deitzeak lehendik dagoen liburutegiko artxibo batera sartzeko huts egin izana baliteke errore-mezua aldatu ezin izatearekin.

5.5. 2.31 bertsioa
Azaldu gabe konpilagailu-hutsegiteak (XC8-2367) Korrikatzean Leihoak sistemaren behin-behineko direktorioa puntu bat barne hartzen zuen bide batean ezarrita zuten plataformak. karakterea, baliteke konpilatzaileak huts egin izana exekutatu.

5.6. 2.30 bertsioa
Etiketa globalak gaizki kokatuta daude eskema ondoren (XC8-2299) eskuz idatzitako muntaia-kode globala jartzen duena. Prozedurazko abstrakzioaren arabera faktoreak diren muntaketa-sekuentzien etiketak agian ez dira behar bezala birkokatu.
Istripu lasaigarria (XC8-2287) Erabiliz -mlax aukerak baliteke estekatzailea huts egitea noiz buztan-jauziaren erlaxazio optimizazioak a-ren amaieran ez zeuden ret instrukzioa kentzen saiatu ziren atala.
Huts egin du etiketak balio gisa optimizatzean (XC8-2282) Kodeatu "Etiketak balio gisa" GNU C erabiliz Baliteke hizkuntzaren luzapenak prozedura-abstrakzio-optimizazioak huts egitea eragin izana, Outlined VMA barrutiaren konponketa-errore batekin.
Ez hain konst (XC8-2271) The prototipos for strstr () eta beste funtzio batzuk jada ez da zehaztu estandarra ez den const kalifikatzailea itzulitako kate-erakusleetan -mconst-data- inprogmem funtzioa desgaituta dagoenean. Kontuan izan avrxmega3 eta avrtiny gailuekin eginbide hau betirako gaituta dagoela.
Galdutako hasieratzaileak (XC8-2269) Itzulpen batean aldagai bat baino gehiago denean unitatea atal batean jarri zen (erabiliz atala or atributua ( (atala) )), eta horrelako lehen aldagaia zero hasieratuta zegoen edo ez zuen hasieratzailerik, atal berean jarritako itzulpen-unitate bereko beste aldagai batzuen hasieratzaileak galdu ziren.

5.1. 2.2 9 bertsioa (Segurtasun funtzionalaren bertsioa) Bat ere ez. 
5.2. 2.20 bertsioa
Komando luzeekin errorea (XC8-1983) AVR xede bat erabiltzean, konpilatzailea aurkitu ez den akats batekin gelditu izana agian, komando-lerroa oso handia bazen eta karaktere bereziak bazituen, hala nola komatxoak, barra-barrak, etab.
Esleitu gabeko rodata sekzioa (XC8-1920) AVR estekatzaileak huts egin du memoria esleitu pertsonalizatutako rodata ataletarako avrxmega3 eta avrtiny arkitekturak eraikitzerakoan, memoria gainjartze-erroreak sor ditzakeela.

5.3. 2.19 bertsioa (Segurtasun funtzionalaren bertsioa)
Bat ere ez.
5.4. 2.10 bertsioa
Lekualdatze-hutsak (XC8-1891) Egokitzen den esleitzaile onena memoriaren "zuloak" uztea izan zen atalen artean lokailua erlaxatu ondoren. Memoria zatikatzeaz gain, ordenagailuaren jauzi edo deiak barrutitik kanpo geratzen diren estekatzaileen lekualdatze akatsak izateko aukera areagotu zuen.
Erlaxazioaren bidez eraldatzen ez diren instrukzioak (XC8-1889) Linker-en erlaxazioa ez zen gertatu jauzi edo dei-argibideetarako, zeinen helburuak erlaxatuta egonez gero irisgarri bihurtzen diren.
Falta funtzionaltasuna (XC8E-3 ) Hainbat definiziotik , hala nola, clock_div_t eta clock_presc ale_s et () , ez ziren gailuetarako definitu, ATmega324PB, ATmega328PB, ATtiny441 eta ATtiny841 barne.
Falta diren makroak _XC 8_MODE_, XC 8 VERS ION, XC eta xc8 aurreprozesadore makroak ez zituen konpilatzaileak automatikoki definitu. Hauek eskuragarri daude orain.

5.5. 2.05 bertsioa
Barne-konpilatzailearen errorea (XC8-1822) Windows-en eraikitzean, baliteke barne-konpiladore-errore bat sortu izana kodea optimizatzean.
RAM gainezkatzea ez da detektatu (XC8-1800, XC8-1796) Eskuragarri dagoen RAM hori gainditzen zuten programak ez zituen konpilatzaileak hauteman egoera batzuetan, eta ondorioz exekuzio-kodearen hutsegite bat izan zen.
Utzitako flash memoria (XC8-1792) Avrxmega3 eta avrtiny gailuetarako, baliteke flash memoriaren zatiak programatu gabe utzi izana MPLAB X IDE-k.
Main exekutatu huts egin (XC8-1788) Programak aldagai global definitu ez zuen egoera batzuetan, abiarazte-kodea ez zen irten eta () funtziora ez zen inoiz iritsi.
Memoriaren informazio okerra (XC8-1787) Avrxmega3 eta avrtiny gailuetarako, avr-size programak ero-soilik datuak programaren memoriaren ordez RAM kontsumitzen ari zirela jakinarazi zuen.
Programaren memoria oker irakurrita (XC8-1783) Baliteke PROGMEM makro/atributua erabiliz objektuak zehazten dituzten programa-memoria datu-helbide-espazioan mapatutako gailuetarako konpilatutako proiektuek helbide okerretik irakurri izana.
Barne-errorea atributuekin (XC8-1773) Erakusle-objektuak _at 0 edo attribute() tokenekin definitu badituzu barne-errore bat gertatu da erakusle-izena eta deserreferentzia motaren artean, adibidez.ample, char * _at (0x800150) cp; Kode hori aurkitzen bada abisua emango da orain.

Ezin izan da exekutatu nagusia (XC8-1780, XC8-1767,XC8-1754) EEPROM aldagaiak erabiltzeak edo konfigurazio pragma erabiliz fusibleak definitzeak datuen hasieraketa okerra eragin izana eta/edo programaren exekuzioa blokeatu izana abiarazte-kodean, 0 nagusira iritsi aurretik.

Fusion-errorea gailu txikiekin (XC8-1778, XC8-1742) attiny4/5/9/10120140 gailuek goiburuan zehaztutako fusiblearen luzera okerra zuten fileestekatzaile-erroreak eragiten dituztenak, fusibleak definitzen dituen kodea eraikitzen saiatzean.

Segmentazio-matxura (XC8-1777) Etengabeko segmentazio akats bat zuzendu da.

Muntatzaileen istripua (XC8-1761) Baliteke avr -as muntatzailea huts egin izana konpilatzailea Ubuntu 18 pean exekutatu zenean.

Garbitu gabeko objektuak (XC8-1752) Baliteke hasierarik gabeko biltegiratze estatikoko iraupeneko objektuak exekuzio-denborako abiarazte-kodeak garbitu ez izatea.

Gailuaren zehaztapen gatazkatsua ez ikusi egin da (XC8-1749) The konpilatzaileak ez zuen errorerik sortzen gailuen zehaztapen-aukera anitz erabili zirenean eta gailu desberdinak adierazi zituenean.

Memoriaren ustelkeria heap bidez (XC8-1748) The _heap_start ikurra gaizki ezartzen ari zen, eta ondorioz aldagai arruntak hondatzeko aukera zegoen.

Lokatzailearen lekualdatze-errorea (XC8-1739) Baliteke estekatzailearen lekualdatze-errore bat igorri izana kodeak rjmn edo rcall bat zeudela 4k byte-ra helburu batekin.

5.6. 2.00 bertsioa Bat ere ez.

Arazo ezagunak

Honako hauek dira konpilatzailearen funtzionamenduaren mugak. Hauek kodetze-murriztapen orokorrak edo erabiltzailearen eskuliburuan jasotako informazioarekiko desbideratzeak izan daitezke. Marean tartean dauden etiketak gai horren identifikazioa dira jarraipenaren datu-basean. Hau onuragarria izan daiteke laguntzarekin harremanetan jarri behar baduzu. Etiketarik ez duten elementuak modu operandiak deskribatzen dituzten mugak dira eta litekeena da betirako indarrean egongo direnak.
6.1. MPLAB X IDE Integrazioa
MPLAB IDE integrazioa Konpilatzailea MPLAB IDEtik erabili behar bada, MPLAB IDE instalatu behar duzu Konpilatzailea instalatu aurretik.
6.2. Kodea sortzea
Okerra hasieratzea (XC8-2679) Desadostasuna dago byte-tamainako objektu global/estatiko batzuen hasierako balioak datuen memorian eta aldagaiak exekuzioan atzituko diren artean.
strtod-ek oker ezartzen du endptr (XC8-2652) strtod () bidez bihurtzeko gai-kate batek formatu esponentzialean koma mugikorreko zenbaki bat dela dirudien kasuetan eta e karaktere baten ondoren ustekabeko karaktere bat dagoenean, endptr helbideak, ematen bada, karakterearen ondoren adieraziko du. e-a eta ez e-a bera. Adibidezample: strtod ("100exy", endptr);

endptr-k x karakterea seinalatuko du.

Zeharkako funtzio-dei txarrak (X03-2628) Zenbait kasutan, egitura baten zati gisa gordetako funtzio-erakusle baten bidez egindako funtzio-deiak huts egin dezakete.

strtof-ek zero itzultzen du flotagailu hamaseimaletarako (XC8-2626) strtof () et al eta scanf () et al liburutegiko funtzioek, berretzailerik zehazten ez duten koma mugikorreko zenbaki hamaseimal bat zero bihurtuko dute beti. Adibidezample: strtof (“Oxl”, &endptr); 0 balioa itzuliko du, ez 1.
Pila-aholkulariaren mezularitza okerrak (XC8-2542, XC8-2541) Zenbait kasutan, pilaren aholkulariaren abisua ez da igortzen errekurtsioari edo erabilitako pila zehaztugabeari buruz (agian alloca() erabiliz).
Huts egin du bikoiztutako eten-kodearekin (XC8-2421) Eten-funtzio batek baino gehiagok gorputz bera dutenean, konpilatzaileak eten-funtzio baten irteera bestera deitzea izan dezake. Honen ondorioz, dei-zapatutako erregistro guztiak alferrik gordeko dira, eta etenaldiak aktibatu egingo dira uneko eten kudeatzailearen epilogoa exekutatu baino lehen ere, eta horrek kodea hutsegitea eragin dezake.
const programaren memorian ez dauden objektuak (XC8-2408) Avrxmega3 eta avrtiny proiektuetarako const objektu unializatuak datuen memorian jartzen dira, abisu batek programaren memorian jarri direla iradokitzen badu ere. Horrek ez die eragingo programa-memoria datuen memoria-espazioan mapatuta ez duten gailuei, ezta hasieratutako objektuei ere eragingo.
Irteera txarra DFP bide baliogabearekin (XCS-2376) Konpilatzailea DFP bide baliogabe batekin eta "spec" batekin deitzen bada file hautatutako gailurako badago, konpilatzaileak ez du falta den gailuen familia paketearen berri ematen ari eta, horren ordez, "zehaztapena" hautatzen du file, eta horrek irteera baliogabea sor dezake. 'zehaztapena' fileBaliteke banatutako DFPekin eguneratuta ez egotea eta barne-konpiladoreen probetan soilik erabiltzeko pentsatuta.
Memoria gainjartzea detektatu gabe (XC8-1966) Konpilatzailea ez da detektatzen helbide batean (_at 0 bidez) eta beste objektu batzuen memoria gainjartzea _ erabiliz.sektaion () zehatzailea eta helbide berari lotuta daudenak.
Liburutegiko funtzioekin eta _memx-ekin huts egin du (XC8-1763) _memx helbide-espazioan argumentu bat duten libgcc float funtzioek huts egin dezakete. Kontuan izan liburutegiko errutinak C operadore batzuetatik deitzen direla, beraz, adibidezample, honako kodea eragiten du: return regFloatVar > memxFloatVar;
Libgcc inplementazio mugatua (AVRTC-731) ATTiny4/5/9/10/20/40 produktuak, C / Math liburutegiaren inplementazio estandarra libgcc-n oso mugatua da edo ez dago.
Programaren memoria-mugak (AVRTC-732) 128 kb-tik gorako programa-memoriaren irudiak tresna-kateak onartzen ditu; hala ere, badaude lokailuak abortatzeko kasuak lasaitu gabe eta errore-mezu lagungarririk gabe -mrelax aukera erabiltzen denean beharrezkoak diren funtzioen zirriborroak sortu beharrean.
Izenen espazioaren mugak (AVRTC-733) Helbide-espazio izendatuak tresna-kateak onartzen ditu, erabiltzailearen gidaliburuaren atalean Mota Berezien Kalifikatzaileak aipatzen diren mugen arabera.
Ordu-eremuak The liburutegiko funtzioek GMT hartzen dute eta ez dute tokiko ordu-eremuak onartzen, beraz, ime 0 gmtime ( )-ren ordu bera itzuliko da, adibidez.ample.

Dokumentuak / Baliabideak

MICROCHIP MPLAB XC8 C konpilatzailea AVR MCUrako 2.39 bertsioaren bertsio-oharrak [pdfErabiltzailearen gida
MPLAB XC8 C konpilatzailearen bertsioa 2.39 AVR MCUrako, MPLAB XC8 C, AVR MCUrako 2.39 bertsioko konpilatzailearen bertsio-oharrak, AVR MCUrako bertsio-oharrak
MICROCHIP MPLAB XC8 C konpilatzailea AVR MCUrako 2.39 bertsioaren bertsio-oharrak [pdfErabiltzailearen gida
MPLAB XC8 C konpilatzailearen bertsioa 2.39 AVR MCUrako, MPLAB XC8 C, AVR MCUrako 2.39 bertsioko konpilagailuaren oharrak, AVR MCUrako oharrak
MICROCHIP MPLAB XC8 C konpilatzailea [pdfErabiltzailearen gida
MPLAB XC8 C konpilatzailea, MPLAB XC8 C, konpilatzailea

Erreferentziak

Utzi iruzkin bat

Zure helbide elektronikoa ez da argitaratuko. Beharrezko eremuak markatuta daude *