MIKROCHIP logoaMPLAB® XC8 C Compiler 2.41 bertsioaren bertsio-oharrak AVR® MCUrako
Jabearen eskuliburua

MPLAB XC8 C konpiladoreak garatzeko softwarea

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 honek hainbat funtzio berri eta akatsen konponketa ditu.
1.2. Eraikitze-data
Konpiladorearen bertsio honen eraikuntza-data ofiziala 8ko otsailaren 2023a da.
1.3. Aurreko bertsioa
Aurreko MPLAB XC8 C konpiladorearen bertsioa 2.40 3ko uztailaren 2022an eraiki zen.
1.4. Segurtasun Funtzionaleko Eskuliburua
MPLAB XC konpiladoreentzako segurtasun funtzionalaren eskuliburua dokumentazio paketean eskuragarri dago segurtasun funtzionalaren lizentzia erosten duzunean.
1.5. Osagaien lizentziak eta bertsioak
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 banatuta 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, 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. MPLAB XC Sareko Lizentzia Zerbitzaria 64 biteko sistema eragile ezberdinetarako eskuragarri dago, Microsoft Windows 10 eta bertsio berriagoa barne; Ubuntu 18.04 eta gehiago; edo macOS 10.15 eta berriagoa. Zerbitzaria beste hainbat sistema eragiletan ere exekutatu daiteke Windows Server, Linux banaketa, hala nola Oracle® Enterprise Linux® eta Red Hate Enterprise Linux, baita onartzen diren sistema eragileen bertsio zaharretan ere. Hala ere, MPLAB XC Network License Server ez da probatzen sistema eragile hauetan. MPLAB XC sareko lizentzien zerbitzaria onartzen den sistema eragilearen makina birtualetan exekutatu daiteke sareko lizentzietarako makina birtualeko lizentzia erabiliz (SW006021-VM). MPLAB XC Network Server-en 32 biteko bertsio guztiak eten egiten dira 3.00 bertsiotik aurrera.
Gailuak onartzen dira
Konpiladore honek 8 biteko AVR MCU gailu eskuragarri guztiak onartzen ditu kaleratzeko unean. Ikus (konpiladorearen direktorioan) onartzen diren gailu guztien zerrenda ikusteko. Fitxategi hauek ere zerrendatzen dira
avr_chipinfo.html dokumentuen konfigurazio-bit ezarpenak gailu bakoitzeko.

1.7. 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 Functional Safety Compiler-en bertsio honek 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.8. 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.8.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 "Kontrol osoa" karpetaren baimenak.
Tenperatura karpetaren kokapena zehazteko, idatzi %temp% Exekutatu komandoan (Windowsen logotipoaren tekla + R).
Honek direktorio hori erakusten duen fitxategi-arakatzailearen elkarrizketa-koadroa irekiko du eta karpeta horren bidea zehazteko aukera emango dizu.
1.9. Konpilatzailearen dokumentazioa
Konpilatzailearen 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, AVR® MCUrako MPLAB® XC8 C Konpiladorearen Erabiltzailearen Gidak arkitektura honetara aplikagarriak diren konpiladoreen aukera eta ezaugarriei buruzko informazioa dauka.

MICROCHIP MPLAB XC8 C konpilatzailea garatzeko softwarea -

1.10. Bezeroaren laguntza
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 lineako dokumentazio teknikoa. webgunea. Argitalpen honetako AVR dokumentazio berria edo eguneratua:

  • MPLAB® XC8 C konpilatzailearen erabiltzailearen gida AVR® MCUrako (G berrikuspena)
  • AVR® GNU Toolchain-era MPLAB® XC8 Migrazio Gida (A berrikuspena)
  • Hexmate erabiltzailearen gida (B berrikuspena)

AVR® GNU Toolchain-era MPLAB® XC8 Migrazio Gidak iturburu-kodearen aldaketak eta eraikitzeko aukerak deskribatzen ditu C-oinarritutako proiektu bat AVR 8 biteko GNU Toolchain-etik Microchip MPLAB XC8 C konpilatzailera migratzea erabakiz gero. Microchip Unified Standard Library Reference Guide-k Microchip Unified Standard Library-k definitutako funtzioen portaera eta interfazea deskribatzen ditu, baita liburutegi moten eta makroen aurreikusitako erabilera ere. Informazio horietako batzuk AVR® MCUrako MPLAB® XC8 C Konpiladorearen Erabiltzailearen Gidan zegoen. Gailuaren liburutegiko informazio espezifikoa konpiladorearen gida honetan dago oraindik.
8 biteko gailuekin eta MPLAB XC8 C konpilatzailearekin hasten bazara, MPLAB® XC8 Ingeniari Txertatuentzako Erabiltzaileen Gida - AVR® MCUak (DS50003108) MPLAB X IDEan proiektuak konfiguratzeko eta zure kodea idazteko informazioa du. lehen MPLAB XC8 C proiektua. Gida hau orain konpiladorearekin banatzen da.
Hexmate erabiltzailearen gida Hexmate aplikazio autonomo gisa erabiltzen dutenentzat da.

Zer berri

Honako hauek dira orain konpilatzaileak onartzen dituen AVR-helburuko eginbide berriak. Azpitituluetako bertsio-zenbakiak hurrengo ezaugarriak onartzen dituen lehen konpiladorearen bertsioa adierazten du.
3.1. 2.41 bertsioa
Bootrow-en euskarria (XC8-3053) Konpilatzaileak at.bootrow helbidea 0x860000 aurrizkia duten edozein atalen edukia jarriko du HEX fitxategian. Atal hauek BOOTOW memoriarako erabiltzen dira, giltzak eta beste informazio segurua gordetzeko diseinatuta dagoena, abio-kargatzaile batek bakarrik eskura izan behar duena.

Itzuli erredundanteak ezabatzea (XC8-3048) Konpilatzaileak orain erredundanteak ezabatuko ditu ret funtzioetan buztan-jauzi batekin estekatzaileen script pertsonalizatuak erabiltzen direnean. Lehen egindakoaren antzeko optimizazioa da, baina orain atal umezurtz guztietan egiten da, nahiz eta estekatzaile pertsonalizatuko script bat erabiltzen den eta hobekien esleipen-eskema jokoan ez egon. Denbora-mota aldaketa (XC8-2982, 2932) C99 liburutegi-mota estandarra, time_t-tik mota batera aldatu da, eta horrek kode-tamaina hobekuntzak ematen ditu denborarekin erlazionatutako funtzio luze luze batzuetan, adibidez. sinatu gabeko mktime luzea()
Nop berria (XC8-2946, 2945) Makroa gehitu da. Makro honek ez-NOP() bat txertatzen du nop eragiketa instrukzioa irteeran.
Eguneratu XCLM-ra (XC8-2944) Konpiladorearekin erabilitako lizentzia-kudeatzailea eguneratu da eta orain erantzun handiagoa du konpilatzailearen lizentziaren xehetasunak egiaztatzean.
Trampolined deiak (XC8-2760) Orain konpilatzaileak dei luzeko instrukzioak ordezkatu ditzake dei erlatibo laburragoak erabiliz, instrukzioen forma erlatiboak normalean beren helmugatik kanpo egongo direnean. Egoera honetan, konpilatzailea 'tr' egingo duen instrukzioa rcall deitzeko instrukzioekin ordezkatzen saiatuko daampoline' exekuzioa eskatutako helbidera, adibidezample: jmp
rcall tramp_foo ;foo deitzen zen

rcall tramp_foo

tramp_foo:
jmp foo

Optimizazio hau, antzeko programaren fluxuaren optimizazioekin batera, -mrelax aukerak kontrolatzen du.

3.2. 2.40 bertsioa
Gailuen laguntza berria AVR zati hauetarako laguntza eskuragarri dago orain: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32, AVR64, eta AVREA48.
Prozedura-abstrakzioa hobetua Prozedura-abstrakzioa (PA) optimizatzeko tresna hobetu da, funtzio-deiaren instrukzioa (/ ) duen kodea erabili ahal izateko. Hau rcall deia bakarrik gauzatuko da pila ez bada erabiltzen argumentuak pasatzeko edo funtzioaren itzulera-balioa lortzeko. Pila argumentu-zerrenda aldakorra duen funtzio bati deitzean edo horretarako izendatutako erregistroak baino argumentu gehiago hartzen dituen funtzio bati deitzean erabiltzen da. Ezaugarri hau desgaitu daiteke aukera erabiliz, edo prozedurazko abstrakzioa guztiz desgaitu daiteke objektu-fitxategi edo funtzio baterako - eta, hurrenez hurren, edo atributua (zehazlea) funtzioekin selektiboki erabiliz.
mno-pa-eskema-deiak -mno-pa-on-file -mno-pa-on-function nopa Kode estaldura makroa Konpilatzaileak makroa definitzen du orain baliozko aukera bat __nopa __CODECOV -mcodecov zehazten bada.
Memoria erreserbatzeko aukera Gidariak xc8-cc -mreserve=space@start:end aukera onartuko du orain AVR helburuak eraikitzean. Aukera honek zehaztutako memoria-barrutia datuen edo programaren memoria-espazioan gordetzen du, estekatzaileak eremu honetako kodea edo objektuak betetzea eragotziz. Smarter IO Smarter IO funtzioetan hainbat hobekuntza egin dira, printf core kodearen doikuntza orokorrak barne, %n bihurketa espezifikatzailea aldaera independente gisa tratatuz, eskaeraren arabera vararg pop errutinak lotuz, datu-mota laburragoak erabiliz ahal den neurrian kudeatzeko. IO funtzioaren argumentuak eta kode arrunta factoring eremuaren zabaleran eta doitasun-kudeatzean. Honek kode eta datuen aurreztea nabarmena izan dezake, baita IOaren exekuzio-abiadura handitu ere.

3.3. 2.39 bertsioa (Segurtasun funtzionalaren bertsioa)
Sareko zerbitzariaren lizentzia MPLAB XC8 Functional Safety Compiler-en bertsio honek Sareko zerbitzariaren lizentzia onartzen du.
3.4. 2.36 bertsioa
Bat ere ez.

3.5. 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 eta hobetuagoa testuinguru-aldaketa -mgas-isr-prologues aukera berriak eten-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 const-kalifikatutako datu guztiak 32k atal batean jartzeko eta dagokion SFR erregistroa automatikoki hasieratzeko datu horiek datuen memorian mapatzen direla ziurtatzeko. espazioa, non modu eraginkorragoan sartuko den.
Microchip Unified Standard Libraries MPLAB XC konpilatzaile guztiek Microchip Unified Standard Library partekatuko dute, orain eskuragarri dagoen MPLAB XC8 bertsio honekin. AVO MCUrako MPLA# XC8 C Konpiladorearen Erabiltzailearen Gidak jada ez du funtzio estandar hauen dokumentazioa sartzen. Informazio hau Microchip Unified Standard Library erreferentzia-gidan aurki daiteke. Kontuan izan avr-libc-ek aurrez definitutako funtzionalitate batzuk jada ez daudela erabilgarri. (Ikusi Lila funtzionaltasuna.)
Smart I0 Liburutegi bateratu berrien zati gisa, printf eta scanf familietako I0 funtzioak pertsonalizatuta sortzen dira orain eraikuntza bakoitzean, funtzio horiek programan nola erabiltzen diren oinarrituta. Honek programa batek erabiltzen dituen baliabideak nabarmen murriztu ditzake.
ICI adimendunaren laguntza-aukera I0 funtzio adimendunetarako deiak aztertzean (adibidez, print f () 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. – msmart-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 eragotziz. (Ikusi smart-io-format Aukera xehetasun gehiago lortzeko.)
Atal pertsonalizatuak jartzea Aurretik, -W1, –section-start aukerak eskatutako helbidean zehaztutako sekzioa soilik jartzen zuen estekatzailearen 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 haien kokapenaren gainean, eta aukerak ez du eraginik izango. Erabili -ton, -Tsection=addr aukera, erabiltzailearen gidan azaltzen den moduan.
3.6. 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 laguntza eskuragarri dago: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVR16DB28, AVR16DB32, AVR16DB48 Erretiratutako gailuen laguntza Jada ez dago erabilgarri AVR zati hauetarako: AVRXNUMXDAXNUMX, AVRXNUMXDAXNUMX eta AVRXNUMXDAXNUMX.
3.7. 2.31 bertsioa
Bat ere ez.
3.8. 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 datuen irteera kenduz funtzionatzen du eta muntaian bss ikur garbiak egin 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 -f sekzio-aingurak, zeinak objektu estatikoen sarbidea ikur batekin alderatuta egiteko aukera ematen baitu; -mpa-iterations=n, prozedurazko abstrakzio-iterazioen kopurua 2 lehenespenetik aldatzeko aukera ematen duena; eta, -mpa-callcost-shortcall, abstrakzio prozesal oldarkorragoa egiten duena, estekatzaileak dei luzeak lasaitu ditzakeen itxaropenarekin. Azken aukera honek kodearen tamaina handitu dezake azpiko hipotesiak betetzen ez badira.
Gailuaren euskarri berria AVR zati hauetarako laguntza eskuragarri dago: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB, AVR28DA128, AVR32DA128, AVR48DA128, AVR64DA5272 VR5790DB5790. Erretiratutako gailuen laguntza-laguntza jada ez dago erabilgarri AVR pieza hauetarako: ATA5791, ATA5795, ATA6285N, ATA6286, ATA6612, ATA6613, ATA6614, ATA6616C, ATA6617C, ATA664251Q, ATAXNUMXQ, ATAXNUMXCATAXNUMX, ATAXNUMXCXNUMX, ATAXNUMXCXNUMX.
3.9. 2.29 bertsioa (Segurtasun funtzionalaren bertsioa)
Goiburua file konpiladore integratuetarako 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 builtin_avr_nop ( ) eta builtin avr delay_cycles () . Baliteke integrazio batzuk ez izatea MISRA bat; hauek ezaba daitezke konpiladorearen komando-lerroan defineXCSTRICT_MISRA gehituz. Eraikitakoak eta haien deklarazioak eguneratu dira zabalera finko motak erabiltzeko.
3.10. 2.20 bertsioa
Gailuen laguntza berria AVR zati hauetarako laguntza eskuragarri dago: ATTINY1624, ATTINY1626 eta ATTINY1627.
Egokipen hoberen esleipena hobetu da konpilagailuko egokitzerik onena (BFA) hobetu da, atalak optimizazio hobea ahalbidetzen duen ordena batean esleitzeko. BFAk orain izendun helbide-espazioak onartzen ditu eta hobeto kudeatzen du datuen hasieratzea.
Prozedurazko abstrakzio hobetua Prozedurazko abstrakzio-optimizazioak kode-sekuentzia gehiagotan egiten dira orain. Optimizazio honek kode-tamaina handitu izan zezakeen aurreko egoerei aurre egin zaie optimizazio-kodea estekatzailearen zabor-bilketa prozesuaren berri emanez.
AVR Assembler eza AVR Assembler ez dago jada banaketa honekin.
3.11. 2.19 bertsioa (Segurtasun funtzionalaren bertsioa)
Bat ere ez.
3.12. 2.10 bertsioa
Kode-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, _atributua_ ( (nocodecov) ) erabil daiteke estalduraren analisietatik funtzio zehatz bat baztertzeko.
Gailuaren deskribapena files Gailu berri bat file avr_chipinfo izenekoa. html konpiladorearen banaketaren docs direktorioan dago. Hau file konpilatzaileak onartzen dituen gailu guztiak zerrendatzen ditu. Egin klik gailuaren izenean, eta orri bat irekiko du gailu horretarako baimendutako konfigurazio bit ezarpen/balioaren mina erakusten duena, ex-ekin.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 s optimizazioak aukeratzerakoan. 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- erabilizfile=fileizena, edo funtzio baterako desgaituta -mno-pa-on-function=function erabiliz. Zure iturburu-kodearen barruan, prozedura-abstrakzioa desgaitu daiteke funtzio baterako atributua ( (nopa) ) funtzioaren definizioarekin erabiliz, edo nopa erabiliz, atributua ( (nopa, noinline) ) erabilita eta, beraz, funtzio inlinea gertatzea eragozten du. eta inlined kodearen abstrakzioa egotea.
Blokeatu bit-en euskarria pragma-n #pragma konfigurazioa AVR blokeo-bitak zein beste konfigurazio-bitak zehazteko erabil daiteke orain. Egiaztatu avr_chipinfo . html file (Goian aipatua) ezarpen/balio bikoteak pragma honekin erabiltzeko. Gailu berrien laguntza-zerbitzua pieza hauetarako eskuragarri dago: AVR28DAl28, AVR64DAl28, AVR32DA 128 eta AVR48DA 128.
3.13. 2.05 bertsioa
Bit gehiago zure diruaren truke Konpiladore 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-kualifikatutako objektuak jar ditzake programaren Flash memorian, hauek RAMan egon 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.
Lizentziarik gabeko (Doako) konpiladore honen bertsio estandarrak orain 2. mailara arteko optimizazioak ahalbidetzen ditu. Horrek lehen lizentzia estandarra erabiliz posible zenaren antzeko irteera ahalbidetuko du, nahiz eta ez berdina.
Ongi etorri AVRASM2 2 biteko gailuetarako AVRASM8 muntatzailea XC8 konpiladorearen instalatzailean sartuta dago orain. Muntatzaile hau ez du XC8 konpilatzaileak erabiltzen, baina eskuz idatzitako muntaia iturrian oinarritutako proiektuetarako eskuragarri dago.
Gailu berrien euskarria Laguntza eskuragarri dago zati hauetarako: ATMEGA1608, ATMEGA1609, ATMEGA808 eta ATMEGA809.

3.14. 2.00 bertsioa
Goi-mailako kontrolatzailea Gidari berri bat, xc8-cc izenekoa, aurreko avr-gcc kontrolatzailearen eta xc8 kontrolatzailearen gainetik 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.
Common C Interfazea Konpiladore honek MPLAB Common C Interfazearekin bat egin dezake, 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 Liburuzain-gidari berri bat aurreko PIC liburuzainaren eta AVR avr-ar liburuzariaren 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.41 bertsioa
fma funtzio okerrak kendu dira (XC8-2913) C99 liburutegi estandarra fma 0 -familia funtzioak ( ) ez zuen biderketa-gehiketa bat zehaztasun infinituarekin kalkulatu biribilketa bakarrean, baizik eta biribilketa-erroreak metatu zituen eragiketa bakoitzean. Funtzio hauek hornitutako liburutegitik kendu dira.
4.2. 2.40 bertsioa
Bat ere ez.
4.3. 2.39 bertsioa (Segurtasun funtzionalaren bertsioa)
Bat ere ez.
4.4. 2.36 bertsioa Bat ere ez.
4.5. 2.35 bertsioa
Kate-to-baseen maneiua (XC8-2420) Beste XC konpilatzaile batzuekin koherentzia bermatzeko, XC8-ko kate-funtzioak, strtol () etab., adibidez, ez dira sarrerako kate bat bihurtzen saiatuko zehaztutako oinarria 36 baino handiagoa bada. eta horren ordez errno ezarriko du EINVAL. C estandarrak ez du zehazten funtzioen portaera oinarrizko balio hori gainditzen denean.
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) formatua aktibatzeko I0 float-formatu espezifikatzaileentzako laguntza. Adimentsuak I0 Microchip Unified Standard Library-ren ezaugarriek 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 ) behar bezala funtzionatuko du datu horiekin const-data-in-program-memory funtzioa gaituta dagoenean.

4.6. 2.32 bertsioa
Bat ere ez.
4.7. 2.31 bertsioa
Bat ere ez.
4.8. 2.30 bertsioa
Bat ere ez.
4.1. 2.29 bertsioa (Segurtasun funtzionalaren bertsioa)
Bat ere ez.
4.2. 2.20 bertsioa
DFP diseinua aldatu da Konpilatzaileak DFPek (Gailu-Familien Paketeak) erabiltzen duen beste diseinu bat hartzen du orain. 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 (deskribatutako tonu gisa). Horrek zure proiektuaren tamainan eta exekuzio abiaduran eragingo du, baina RAM erabilera murriztu beharko luke. Ezaugarri hau desgaitu daiteke, behar izanez gero, -mnoconst-data-in-progmem 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 konfigurazioa WDTON = EZAR
#pragma config BODLEVEL = BODLEVEL_4V3
Objektu eta funtzio absolutuak Objektuak eta funtzioak memorian helbide zehatz batean jar daitezke orain CCI (helbidea) espezifikatzailea erabiliz, adibidezample:
#sartu
int foobar_at(0x800100);
char __at(0x250) getID(int offset) {… }
Zehatzaile honen argumentua izan behar da lehen byte edo instrukzioa zein helbidean kokatuko den adierazten duen konstantea. RAM helbideak 0x800000 desplazamendua erabiliz adierazten dira. Gaitu CCI funtzio hau erabiltzeko.
Eten funtzioaren sintaxi berria Konpilatzaileak orain CCI _interrupt (num) zehatzailea onartzen du C funtzioak eten-kudeatzaileak direla adierazteko. Espezifikatzaileak eten-zenbaki bat hartzen du, adibidezample:
#sartu
void __interrupt(SPI_STC_vect_num) spi_Isr(void) { … }

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 berariazko arazo batzuk gailuarekin lotutako Device Family Pack (DFP) konpontzen direla. Ikus MPLAB paketeen kudeatzailea DFPetan egindako aldaketei buruzko informazioa lortzeko eta azken paketeak deskargatzeko.

5.1. 2.41 bertsioa
Dongle-ak Ventura-n (XC8-3088) Dongle-n konpilatzailea lizentziatzeko erabiltzen den baliteke macOS Ventura ostalarietan behar bezala irakurri ez izatea, eta ondorioz, lizentzien hutsegiteen ondorioz. XCLM lizentzia-kudeatzaileari egindako aldaketek arazo hau zuzentzen dute.
Memoria-esleipenaren adierazpen okerra (XC8-2925) Liburutegiko memoria kudeatzeko funtzio estandarrak erabiliz (malloc () et al) memoriaren SIZE_MAX byte (edo honen inguruko balio bat) oker esleitzen saiatzeak arrakasta izan du. Ez zen kontuan hartu memoria dinamikoaren esleipen sinplearen ezarpena erabiltzean eskatutako blokeaz gain byte gehigarriak behar zirela. NULL erakuslea itzuliko da orain eta errno ENOMEM ezarriko da horrelako egoeretan.
Kendu egin dira fma funtzio okerrak (XC8-2913) C99 liburutegi estandarra fma ( ) -familia funtzioak ( ) ez zuen biderketa-gehiketa bat zehaztasun infinituarekin kalkulatu biribilketa bakar batean, baizik eta biribilketa-erroreak metatu zituen eragiketa bakoitzean. Funtzio hauek hornitutako liburutegitik kendu dira.
Kateen bihurketaren kudeaketa txarra (XC8-2921, XC8-2652) strtod Cr-ren bidez bihurtzeko "subjektu-sekuentzia" formatu esponentzialean koma mugikorreko zenbaki bat zela zirudien eta e/E karakterearen ondoren ustekabeko karaktere bat zegoenean, endptr eman zenean, helbide bat esleitu zitzaion. e/E-ren ondorengo karakterea seinalatzen zuen, berriz, e/E karakterea bera seinalatuko zuen, hori ez baitzen bihurtu. Adibidezample, strtod ("100exx", &ep) 100.00 itzuli beharko luke eta ep ezarri behar du katearen "exx" zatira seinalatzeko, funtzioak balio zuzena itzultzen zuen, baina ep katearen "xx" zatira seinalatzeko ezarri zuen. .

5.2. 2.40 bertsioa
Lasaiegi (XCS-2876) -mrelax aukera erabiltzean, konpilatzaileak ez zituen atal batzuk batera esleitzen, eta ondorioz, kode-tamaina ezin hobea izan zen. Baliteke hau MUSL liburutegi berriak erabiltzen zituen kodearekin edo ikur ahulekin gertatu izana.
Kartografia-eginbidea ez dago desgaituta abisuan adierazi bezala (XC8-2875) const-data-in-config-mappedprogmem funtzioa gaitzen ari den const-data-in-progmem funtzioaren mende dago. const-data-inconfig-mapped-progmem funtzioa aukera erabiliz esplizituki gaituta bazegoen eta const-data-inprogmem funtzioa desgaituta bazegoen, estekaren urratsak huts egin zuen, abisu-mezu bat izan arren, const-data-in-con fig- mapped-progmem funtzioa automatikoki desgaituta zegoen, eta hori ez zen guztiz zuzena. const-data-in-config-mapped-progmem funtzioa guztiz desgaituta dago egoera honetan.
DFP aldaketak NVMCTRL zuzen atzitzeko (XC8-2848) AVR64EA gailuek erabiltzen duten exekuzio-denbora abiarazteko kodeak ez zuen kontuan hartu NVMCTRL erregistroa Konfigurazio-aldaketaren babespean (CCP) pean zegoela eta ezin izan zuen I0 SFR ezarri const-data-in-configmapped-progmem-ek erabiltzen duen orrian. konpilatzaile funtzioa. AVR-Ex_DFP 2.2.55 bertsioan egindako aldaketek exekuzio-denbora abiarazteko kodea erregistro honetan zuzen idazteko aukera emango dute.
DFP aldaketak saihesteko flash-mapping (XC8-2847) AVR128DA28/32/48/64 Silicon Erratan (D580000882) txostenean jakinarazitako flash-mapping gailuaren eginbidearen arazo bati irtenbidea inplementatu da. const-data-in-config-mapped-progmem konpiladorearen funtzioa ez da lehenespenez aplikatuko kaltetutako gailuetan, eta aldaketa hori AVR-Dx_DFP 2.2.160 bertsioan agertuko da.
Eraikitze-errorea sinhf edo coshf-rekin (XC8-2834) Sinhf () edo coshf () liburutegiko funtzioak erabiltzen saiatzeak esteka-errore bat eragin du, definitu gabeko erreferentzia bat deskribatuz. Erreferentzia falta den funtzioa konpiladorearen banaketan sartu da.
Eraiki erroreak nopa-rekin (XC,8-2833) Nopa atributua asm ( ) erabiliz bere mihiztatzaile-izena zehaztuta duen funtzio batekin erabiltzeak errore-mezuak abiarazi zituen mihiztatzailetik. Konbinazio hau ez da posible.
Erakusleen argumentuekin funtzio bariadako hutsegitea (XC8-2755, XC8-2731) Argumentu kopuru aldakorra duten funtzioek 24 biteko (memx mota) erakusleak pasatzea espero dute argumentu aldagaien zerrendan const-data-in-progmem funtzioa gaituta dagoenean. Datu-memoriaren erakusleak ziren argudioak 16 biteko objektu gisa pasatzen ari ziren, eta, azkenean, irakurtzen zirenean kodea hutsegitea eragiten zuten. Constdata-in-progmem funtzioa gaituta dagoenean, 16 biteko erakusleen argumentu guztiak 24 biteko erakusle bihurtzen dira.
strtoxxx liburutegiko funtzioek huts egiten dute (XC8-2620) Const-data-in-progmem funtzioa gaitu zenean, strtoxxx liburutegiko funtzioetako endptr parametroa ez zen behar bezala eguneratu programaren memorian ez dauden iturburu-kateen argumentuetarako.
Igorpen baliogabeen alertak (XC8-2612) Konpilatzaileak errore bat emango du orain const-in-progmem funtzioa gaituta badago eta kate literal baten helbidea datu-helbide-espaziora esplizituki botatzen bada (const kalifikatzailea kenduz), adibidez.ample, (uint 8_t *) "Kaixo mundua!". Abisua sortzen da helbidea baliogabea izan badaiteke datu-erakusle bat datu helbide-espaziora esplizituki igortzen denean.
Hasieratu gabeko konst objektuak kokatzea (XC8-2408) Hasieratu gabeko konst eta const objektu lurrunkorrak ez ziren programaren memorian jartzen programaren memoria osoa edo zati bat datu helbide-espazioan mapatzen duten gailuetan. Gailu hauetarako, horrelako objektuak programaren memorian jartzen dira orain, haien funtzionamendua beste gailuekin koherente eginez.

5.3. 2.39 bertsioa (Segurtasun funtzionalaren bertsioa)
Bat ere ez.
5.4. 2.36 bertsioa
Errorea atzeratzean (XC8-2774) Aske moduko optimizazio lehenetsietan egindako aldaketa txikiek eragiketa-espresioak atzerapen-funtzioetan etengabe tolestzea eragotzi zuten, eta ondorioz, ez-konstante gisa tratatu ziren eta errorea eragin zuten: avr delay_cycles-ek konpilazio-denbora osoko konstante bat espero du.
5.5. 2.35 bertsioa
Alboko esleipena _at erabiliz (XC8-2653) Izen bereko eta _at ( ) erabiliz atal bateko hainbat objekturen lekuen ondoko esleipenak ez zuen behar bezala funtzionatu. Adibidezample:
const char arr1[] __attribute__((section(“.mysec”))) __at (0x500) = {0xAB, 0xCD};
const char arr2[] __attribute__((section(“.mysec”))) = {0xEF, 0xFE};
arr2 jarri beharko luke berehala arr1 ondoren.
Atalaren hasierako helbideak zehaztea (XC8-2650) The -W1, –section-start aukera isilean huts egin zuen atalak jarritako hasierako helbidean. Arazo hau konpondu da pertsonalizatutako edozein ataletarako; hala ere, ez du funtzionatuko inongo atal estandarretan, adibidez. testua edo. bss, -W1, -T aukera erabiliz jarri behar dena.
Lokatzaileak huts egiten du erlaxatzean (XC8-2647) -mrelax optimizazioa gaituta zegoenean eta memoria erabilgarrian sartzen ez ziren kode edo datu-atalak zeudenean, estekatzailea huts egin zen. Orain, halako egoera batean, errore-mezuak igortzen dira ordez.

Ez-erutsirik ez (XC8-2646) 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 (X03-2637) 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 txarra sarbidea (XC8-2629) The 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 (XC8-2593, XC8-2651) Noiz -Ttext edo -Tdata estekatzailearen aukera (adibidezamp-vl 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, atributua (( 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.
Aukerak ez dira pasatzen (XC8-2452) Lokatzaile-aukera anitzekin, komaz bereizitako aukerarekin erabiltzean, estekatzaile-aukera guztiak ez ziren estekatzaileari pasatzen.
Errore bat gertatu da programaren memoria zeharka irakurtzean (X03-2450) Zenbait kasutan, konpilatzaileak barne-errore bat sortu zuen (insn ezagutezina) erakusle batetik programaren memoriara bi byte-balioa irakurtzean.
5.6. 2.32 bertsioa
-ren bigarren sarbidea liburutegiak huts egin du (XC8-2381) xc8-ar-en Windows bertsioa deitzea. .exe liburutegiko artxibatzaileak lehendik dagoen liburutegiko artxibo batera sartzeko bigarren aldiz huts egin izana baliteke errore-mezua aldatu ezin izatearekin.
5.7. 2.31 bertsioa
Azaldu gabeko konpilatzailea akatsak (XC8-2367) Sistemaren behin-behineko direktorioa puntu bat barne hartzen zuen bide batean ezarrita zuten Windows plataformetan exekutatzen ari zarenean. karakterea, baliteke konpilatzaileak huts egin izana exekutatu.
5.8. 2.30 bertsioa
Etiketa globalak gaizki kokatu dira eskema egin ondoren (XC8-2299) Baliteke prozedurazko abstrakzioaren arabera bereizten diren muntaketa-sekuentzietan etiketa globalak jartzen dituen eskuz idatzitako muntaketa-kodea behar bezala ez kokatuta egon.
Istripu lasaigarria (XC8-2287) -mrelax aukera erabiltzeak estekatzailea huts egitea eragin izan du buztanen jauziaren erlaxazio optimizazioak atal baten amaieran ez zeuden ret instrukzioak kentzen saiatu zirenean.
Huts egin du etiketak balio gisa optimizatzean (XC8-2282) "Etiketak balio gisa" GNU C hizkuntzaren luzapena erabiliz kodeak prozedura-abstrakzio-optimizazioak huts egitea eragin zuen, Outlined VMA barrutiaren konponketa-errore batekin.
Ez hain konst (XC8-2271) St rstr ( ) eta beste funtzio batzuen prototipoak 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.
Hasierako galduak (XC8-2269) Noiz baino gehiago Itzulpen-unitate bateko aldagai bat atal batean jarri zen (_atala edo _atributua_ ( (atala) ) erabiliz), eta lehen aldagaia zero hasieratuta zegoen edo ez zuen hasieratzailerik, jarri ziren itzulpen-unitate bereko beste aldagai batzuen hasieratzaileak. atal berean galdu ziren.
5.1. 2.29 bertsioa (Segurtasun funtzionalaren bertsioa)
Bat ere ez.
5.2. 2.20 bertsioa
Errore bat komando luzeekin (XC8-1983) AVR xede bat erabiltzean, baliteke konpilatzailea a batekin gelditu izana file ez da aurkitu errorea, komando-lerroa oso handia bazen eta karaktere bereziak baditu, hala nola komatxoak, kontrako barrak, etab.
Esleitu gabeko rodata atala (XC8-1920) AVR estekatzaileak huts egin zuen 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 akatsak (XC8-1891) Egokitutako 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-388) Hainbat definiziotik , hala nola, clock_div_t eta clock_prescale set () , ez ziren gailuetarako definitu, ATmega324PB, ATmega328PB, ATtiny441 eta ATtiny841 barne.
Makroak falta dira _XC8_MODE_, _XC8_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-k IDE.
Ezin izan da exekutatu nagusia (XC8-1788) Programak aldagai global definitu ez zuen egoera batzuetan, abiarazte-kodea ez zen irten eta ( ) funtzio nagusira ez zen inoiz iritsi.
Memoriaren informazio okerra (XC8-1787) Avrxmega3 eta avrtiny gailuetarako, avr-size programak irakurtzeko soilik diren datuek programaren memoriaren ordez RAM kontsumitzen zutela jakinarazi zuen.
Programaren memoria oker irakurrita (XC8-1783) Baliteke datu-helbideen espazioan mapatutako programa-memoria duten eta PROGMEM makro/atributua erabiliz objektuak definitzen dituzten gailuetarako konpilatutako proiektuek objektu horiek helbide okerretik irakurri izana.
Barne-errorea atributuekin (XC8-1773) Barne-errore bat gertatu da erakusle-objektuekin definitu baduzu
_at () edo attribute() tokenak erakuslearen izenaren eta deserreferentzia motaren artean, adibidezample, 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 baliteke datuen hasieraketa okerra edo/edo programaren exekuzioa blokeatzea exekuzio-denboran abiarazteko kodean, main ( ) iritsi aurretik.
Fusion-errorea gailu txikiekin (XC8-1778, XC8-1742) Attiny4/5/9/ 10/20/40 gailuek goiburuan zehaztutako fusiblearen luzera okerra zuten fileestekatzaile-erroreak eragiten dituztenak, fusibleak definitzen dituen kodea eraikitzen saiatzean.
Segmentazioa matxura (XC8-1777) Etengabeko segmentazio akats bat zuzendu da.
Muntatzaileen istripua (XC8-1761) Baliteke avr-as mihiztatzailea 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) 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 rjmp 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. Tituluan kortxeteen etiketa(k) gai horren identifikazioa da 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
Segfault with section-anchors aukera (XC8-3045) Argumentu-zerrenda aldakorrekin funtzioak definitu dituen eta -fsection-anchors aukera erabiltzen duten programak barne-konpiladore-errore bat eragin dezake: Segmentazio akatsa.
Arazte-informazioa sinkronizatuta dago (XC8-2948) Lokatzaileen erlaxazio-optimizazioek argibideak txikitzen dituztenean (adibidezample call to rcall instrukzioak), baliteke iturburu-lerroa helbide-mapeak sinkronizatuta ez egotea atal batean txikitze-eragiketa bat baino gehiago gertatzen denean.
Beheko adibideanample, badaude bi dei foo erlatiboa dei erlaxatuta amaitzen dutenak.
PA memoria-esleipenaren hutsegitea (XC8-2881) Prozedurazko abstrakzio-optimizatzaileak erabiltzean, estekatzaileak memoria-esleipen-erroreen berri izan dezake kode-tamaina gailuan eskuragarri dagoen programa-memoria kopurutik hurbil dagoenean, nahiz eta programak erabilgarri dagoen espaziora egokitzeko gai izan.
Smart-I0 ez hain adimenduna (XC8-2872) Konpilatzailearen smart-io funtzioak snprint f funtziorako kode baliozkoa baina ez-optimoa sortuko du const-data-in-progmem funtzioa desgaitu bada edo gailuak bere flash guztia datu-memorian mapatuta badu.
Are gutxiago smart-I0 (XC8-2869) Konpilatzailearen smart-io funtzioak kode baliozkoa baina ez-optimoa sortuko du -flto eta -fno-builtin aukerak biak erabiltzen direnean.
Irakurtzeko soilik dauden datuen kokapen egokia (XC8-2849) Lokatzaileak ez ditu ezagutzen APPCODE eta APPDATA memoria-atalak, ezta [Irakurri-Idatzi bitartean-Ez dago zatiak memoria mapan. Ondorioz, aukera txikia dago lokailuak irakurtzeko soilik datuak memoria eremu desegoki batean esleitzeko. Datu okerra izateko aukera handitzen da const-data-in-progmem funtzioa gaituta badago, batez ere const-data-in-config-mapped-progmem funtzioa ere gaituta badago. Ezaugarri hauek desgaitu egin daitezke behar izanez gero.
Objektua file prozesatzeko agindua (XC8-2863) Objektuen ordena fileLokatzaileak prozesatu egingo ditu prozesualak abstrakzio optimizazioen erabileraren arabera desberdinak izan daitezke (-mpa aukera). Honek hainbat modulutan funtzio ahulak definitzen dituen kodean bakarrik eragingo luke.
Lokatzailearen errorea absolutuarekin (XC8-2777) Objektu bat RAMaren hasieran helbide batean absolutua egin denean eta hasieratu gabeko objektuak ere definitu direnean, estekatzaile-errore bat ager daiteke.
Esnatzeko ID laburrak (XC8-2775) ATA5700/2 gailuetarako, PHIDO/1 erregistroak 16 biteko zabalera baino ez dira 32 biteko.
Lokatzailearen hutsegite ikurra deitzean (XC8-2758) Lokatzaileak huts egin dezake -mrelax kontrolatzailearen aukera erabiltzen bada iturburu-kodeak -cc., –de f sym estekatzailearen aukera erabiliz definitu den ikur bati deitzen dionean.
Hasierako okerra (XC8-2679) Hor Byte-tamainako objektu global/estatiko batzuen hasierako balioak datuen memorian dauden eta aldagaiak exekuzioan atzituko diren arteko desadostasuna da.
Zeharkako funtzio-dei txarrak (XC8-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 I.
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.
Irteera txarra DFP bide baliogabearekin (XC8-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 ( ) bidez) eta atalaren ( ) zehatzailea erabiliz eta helbide berdinarekin lotuta dauden objektuen memoria gainjartzea.
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 kode hau eragiten du:
itzuli regFloatVar > memxFloatVar;
libgcc ezarpen mugatua (AVRTC-731) ATTiny4/5/9/10/20/40 produktuetarako, libgcc-n C / Math liburutegiaren ezarpen estandarra 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 abortatzen diren kasuak lasaitu gabe eta errore-mezu lagungarririk gabe -mre lax aukera erabiltzen denean beharrezko 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, tokiko orduak ( ) gmtime ( )-ren ordu bera itzuliko du, adibidezample.

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

Dokumentuak / Baliabideak

MICROCHIP MPLAB XC8 C konpiladoreak garatzeko softwarea [pdf] Erabiltzailearen eskuliburua
MPLAB XC8 C, MPLAB XC8 C Konpiladoreak garatzeko softwarea, konpiladoreak garatzeko softwarea, garapenerako softwarea, softwarea

Erreferentziak

Utzi iruzkin bat

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