MPLAB® XC8 C përpiluesi Versioni 2.41 Shënime Publike për AVR® MCU
Manuali i pronarit
Softueri i zhvillimit të përpiluesit MPLAB XC8 C
KY DOKUMENT PËRMBAN INFORMACION TË RËNDËSISHËM NË LIDHJE ME PËRMBLEDHËSIN MPLAB XC8 C KUR VENDOSEN PAJISJET AVR të MIKROÇIPIT.
JU LUTEM LEXOJENI PARA SE TË EKZEKRONI KËTË SOFTWARE. SHIKONI SHËNIMET E LIDHJES SË KOMPJALERIT MPLAB XC8 C PËR DOKUMENTIN PIC NËSE PO PËRDORNI KOMPJALERIN PËR PAJISJET PIC 8-BIT.
Mbiview
1.1. Hyrje
Ky version i përpiluesit Microchip MPLAB® XC8 C përmban disa veçori të reja dhe rregullime të gabimeve.
1.2. Data e ndërtimit
Data zyrtare e ndërtimit të këtij versioni përpilues është 8 shkurt 2023.
1.3. Versioni i mëparshëm
Versioni i mëparshëm i përpiluesit MPLAB XC8 C ishte 2.40 i ndërtuar më 3 korrik 2022.
1.4. Manuali i Sigurisë Funksionale
Një manual sigurie funksionale për përpiluesit MPLAB XC disponohet në paketën e dokumentacionit kur blini një licencë sigurie funksionale.
1.5. Licencat dhe versionet e komponentëve
Përpiluesi MPLAB XC8 C për mjetet AVR MCU janë shkruar dhe shpërndarë nën Licencën e Përgjithshme Publike GNU (GPL) që do të thotë se kodi i tij burim shpërndahet lirisht dhe i disponueshëm për publikun.
Kodi burimor për mjetet nën GNU GPL mund të shkarkohet veçmas nga Microchip webfaqe. Ju mund të lexoni GNU GPL në skedarin me emrin që ndodhet në nëndrejtorinë e direktorisë suaj të instalimit license.txt avr/doc. Një diskutim i përgjithshëm i parimeve në themel të GPL-së mund të gjendet këtu.
Kodi mbështetës i dhënë për skedarët e kokës, skriptet lidhëse dhe bibliotekat e kohës së ekzekutimit janë kode të pronarit dhe nuk mbulohen nga GPL.
Ky përpilues është një implementim i versionit 5.4.0 të GCC, versionit 2.26 të binutils dhe përdor versionin 2.0.0 të avr-libc.
1.6. Kërkesat e Sistemit
Përpiluesi MPLAB XC8 C dhe softueri i licencimit që ai përdor janë të disponueshëm për një sërë sistemesh operative, duke përfshirë versionet 64-bit të sa vijon: Botime profesionale të Microsoft® Windows® 10; Ubuntu® 18.04; dhe macOS® 10.15.5. Binarët për Windows janë koduar. Binarët për macOS janë koduar dhe noterizuar. Serveri i licencës së rrjetit MPLAB XC është i disponueshëm për një shumëllojshmëri sistemesh operative 64-bit, duke përfshirë Microsoft Windows 10 dhe më lart; Ubuntu 18.04 dhe më lart; ose macOS 10.15 dhe më lart. Serveri mund të funksionojë gjithashtu në sisteme të tjera operative të ndryshme duke përfshirë Windows Server, shpërndarje Linux, si Oracle® Enterprise Linux® dhe Red Hate Enterprise Linux, si dhe versione më të vjetra të sistemeve operative të mbështetur. Megjithatë, serveri i licencës së rrjetit MPLAB XC nuk është testuar në këto sisteme operative. Serveri i licencës së rrjetit MPLAB XC mund të ekzekutohet në makinat virtuale të sistemit operativ të mbështetur duke përdorur një licencë të makinës virtuale për licencat e rrjetit (SW006021-VM). Të gjitha versionet 32-bit të serverit të rrjetit MPLAB XC ndërpriten duke filluar nga versioni 3.00.
Pajisjet e Mbështetur
Ky përpilues mbështet të gjitha pajisjet e disponueshme AVR MCU 8-bit në momentin e lëshimit. Shihni (në drejtorinë e përpiluesit) për një listë të të gjitha pajisjeve të mbështetura. Këto skedarë gjithashtu renditen
avr_chipinfo.html cilësimet e bitit të konfigurimit të dokumentit për secilën pajisje.
1.7. Botime dhe përmirësime të licencave
Përpiluesi MPLAB XC8 mund të aktivizohet si produkt i licencuar (PRO) ose i palicencuar (Pa pagesë). Ju duhet të blini një çelës aktivizimi për të licencuar përpiluesin tuaj. Një licencë lejon një nivel më të lartë optimizimi në krahasim me produktin Falas. Një përpilues i palicencuar mund të funksionojë për një kohë të pacaktuar pa licencë. Një përpilues i Sigurisë Funksionale MPLAB XC8 duhet të aktivizohet me një licencë sigurie funksionale të blerë nga Microchip. Përpiluesi nuk do të funksionojë pa këtë licencë. Pasi të aktivizohet, mund të zgjidhni çdo nivel optimizimi dhe të përdorni të gjitha veçoritë e përpiluesit. Ky version i Përpiluesit të Sigurisë Funksionale MPLAB XC mbështet Licencën e Serverit të Rrjetit.
Shihni dokumentin Instalimi dhe Licencimi i Kompiluesve MPLAB XC C (DS50002059) për informacion mbi llojet e licencave dhe instalimin e përpiluesit me licencë.
1.8. Instalimi dhe Aktivizimi
Shihni gjithashtu seksionet Çështjet e Migrimit dhe Kufizimet për informacion të rëndësishëm në lidhje me menaxherin më të fundit të licencës të përfshirë me këtë përpilues.
Nëse përdorni MPLAB IDE, sigurohuni që të instaloni versionin më të fundit MPLAB X IDE 5.0 ose më të ri përpara se të instaloni këtë mjet. Dilni nga IDE përpara se të instaloni përpiluesin. Ekzekutoni aplikacionin e instaluesit të përpiluesit (Windows), (Linux) ose (macOS) .exe .run .app, p.sh. dhe ndiqni udhëzimet në ekran. XC8-1.00.11403-windows.exe Rekomandohet drejtoria e instalimit të paracaktuar. Nëse jeni duke përdorur Linux, duhet të instaloni përpiluesin duke përdorur një terminal dhe nga një llogari rrënjësore. Instaloni duke përdorur një llogari macOS me privilegje administratori.
Aktivizimi tani kryhet veçmas nga instalimi. Shihni dokumentin Menaxheri i Licencave për Kompiluesit MPLAB® XC C (DS52059) për më shumë informacion.
Nëse zgjidhni të përdorni përpiluesin nën licencën e vlerësimit, tani do të merrni një paralajmërim gjatë përpilimit kur të jeni brenda 14 ditëve nga përfundimi i periudhës suaj të vlerësimit. I njëjti paralajmërim lëshohet nëse jeni brenda 14 ditëve nga përfundimi i abonimit tuaj në HPA.
Serveri i licencës së rrjetit XC është një instalues i veçantë dhe nuk përfshihet në instaluesin e përpiluesit me një përdorues.
Menaxheri i Licencave XC tani mbështet roaming të licencave të rrjetit lundrues. I drejtuar për përdoruesit e celularëve, kjo veçori lejon që një licencë lundruese të dalë jashtë rrjetit për një periudhë të shkurtër kohe. Duke përdorur këtë veçori, mund të shkëputeni nga rrjeti dhe të përdorni ende përpiluesin tuaj MPLAB XC. Shikoni dosjen e dokumentit të instalimit XCLM për më shumë mbi këtë veçori.
MPLAB X IDE përfshin një dritare Licencash (Vegla > Licenca) për të menaxhuar vizualisht roaming.
1.8.1. Zgjidhja e çështjeve të instalimit
Nëse hasni vështirësi në instalimin e përpiluesit në cilindo prej sistemeve operative Windows, provoni sugjerimet e mëposhtme.
Ekzekutoni instalimin si administrator.
Vendosni lejet e aplikacionit të instaluesit në "Kontroll i plotë". (Klikoni me të djathtën mbi skedarin, zgjidhni Properties, skedën Siguria, zgjidhni përdoruesin, modifikoni.)
Cakto lejet e dosjes temp në "Kontroll i plotë".
Për të përcaktuar vendndodhjen e dosjes temp, shkruani %temp% në komandën Run (tasti i logos së Windows + R).
Kjo do të hapë një dialog të eksploruesit të skedarëve që tregon atë drejtori dhe do t'ju lejojë të përcaktoni shtegun e asaj dosjeje.
1.9. Dokumentacioni i përpiluesit
Udhëzuesit e përdoruesit të përpiluesit mund të hapen nga faqja HTML që hapet në shfletuesin tuaj kur klikoni butonin blu të ndihmës në pultin e MPLAB X IDE, siç tregohet në pamjen e ekranit.
Nëse po ndërtoni për objektiva AVR 8-bitësh, Udhëzuesi i Përdoruesit për përpiluesin MPLAB® XC8 C për AVR® MCU përmban informacion mbi ato opsione dhe veçori të përpiluesit që janë të zbatueshme për këtë arkitekturë.

1.10. Mbështetja e klientit
Microchip mirëpret raportet, sugjerimet ose komentet e gabimeve në lidhje me këtë version të përpiluesit. Ju lutemi drejtoni çdo raport të defektit ose kërkesë për veçori nëpërmjet Sistemit të Mbështetjes.
Përditësimet e dokumentacionit
Për versionet on-line dhe të përditësuara të dokumentacionit MPLAB XC8, ju lutemi vizitoni Dokumentacionin Teknik Online të Microchip webfaqe. Dokumentacioni i ri ose i përditësuar AVR në këtë version:
- Udhëzuesi i përdoruesit për përpiluesin MPLAB® XC8 C për AVR® MCU (rishikimi G)
- Udhëzuesi i migrimit AVR® GNU Toolchain në MPLAB® XC8 (rishikimi A)
- Udhëzuesi i përdoruesit Hexmate (rishikimi B)
Udhëzuesi i Migrimit të zinxhirit të mjeteve AVR® GNU në MPLAB® XC8 përshkruan ndryshimet në kodin burimor dhe opsionet e ndërtimit që mund të kërkohen nëse vendosni të migroni një projekt të bazuar në C nga zinxhiri i veglave AVR 8-bit GNU në Përpiluesin Microchip MPLAB XC8 C. Udhëzuesi i referencës së bibliotekës standarde të unifikuar të mikroçipit përshkruan sjelljen dhe ndërfaqen me funksionet e përcaktuara nga Biblioteka standarde e unifikuar e mikroçipit, si dhe përdorimin e synuar të llojeve dhe makrove të bibliotekës. Disa nga këto informacione përmbaheshin më parë në Udhëzuesin e Përdoruesit të Përpiluesit MPLAB® XC8 C për AVR® MCU. Informacioni i bibliotekës specifike për pajisjen gjendet ende në këtë udhëzues përpiluesi.
Nëse sapo po filloni me pajisjet 8-bit dhe përpiluesin MPLAB XC8 C, Udhëzuesi i Përdoruesit MPLAB® XC8 për Inxhinierët e Embedded – AVR® MCU (DS50003108) ka informacion mbi konfigurimin e projekteve në MPLAB X IDE dhe shkrimin e kodit për projekti i parë MPLAB XC8 C. Ky udhëzues tani shpërndahet me përpiluesin.
Udhëzuesi i Përdoruesit Hexmate është menduar për ata që përdorin Hexmate si një aplikacion më vete.
Çfarë ka të re
Më poshtë janë veçoritë e reja të objektivit AVR që përpiluesi tani mbështet. Numri i versionit në nëntitujt tregon versionin e parë të përpiluesit që mbështet veçoritë që vijojnë.
3.1. Versioni 2.41
Mbështetja e bootrow (XC8-3053) Përpiluesi do të vendosë përmbajtjen e çdo seksioni me një prefiks at.bootrow adresa 0x860000 në skedarin HEX. Këto seksione përdoren për memorien BOOTROW, e cila është krijuar për ruajtjen e çelësave dhe informacioneve të tjera të sigurta që duhet të jenë të aksesueshme vetëm nga një ngarkues.
Eliminimi i kthimit të tepërt (XC8-3048) Përpiluesi tani do të eliminojë instruksionet e tepërta në funksionet ret me një kërcim në fund kur përdoren skriptet lidhëse të personalizuara. Ky është një optimizim i ngjashëm me atë të kryer më parë, por tani kryhet në të gjitha seksionet jetimë, edhe nëse përdoret një skript lidhës i personalizuar dhe skema e ndarjes së përshtatjes më të mirë nuk është në lojë. Ndryshimi i llojit të kohës (XC8-2982, 2932) Lloji standard i bibliotekës C99, është ndryshuar nga një time_t në një tip, i cili jep përmirësime të madhësisë së kodit në disa funksione të gjata të lidhura me kohën, si p.sh. mktime e gjatë e panënshkruar ()
Nop i ri (XC8-2946, 2945) Makroja është shtuar në. Kjo makro fut një no-NOP() udhëzimet e funksionimit nop në dalje.
Përditësimi në XCLM (XC8-2944) Menaxheri i licencës i përdorur me përpiluesin është përditësuar dhe tani është më i përgjegjshëm kur kontrollon detajet e licencës së përpiluesit.
Trampthirrjet olined (XC8-2760) Përpiluesi tani mund të kryejë zëvendësimin e udhëzimeve të thirrjeve në formë të gjatë me thirrje relative më të shkurtra kur format relative të udhëzimeve normalisht do të ishin jashtë rrezes së destinacionit të tyre. Në këtë situatë, përpiluesi do të përpiqet të zëvendësojë me instruksione për të thirrur rcall një instruksion që do të 'trampekzekutimi oline' në adresën e kërkuar, p.shample: jmp
rcall tramp_foo ;u quajt foo
…
rcall tramp_foo
…
tramp_foo:
jmp foo
Ky optimizim, së bashku me optimizimet e ngjashme të rrjedhës së programit, kontrollohet nga opsioni -mrelax.
3.2. Versioni 2.40
Mbështetja e mbështetjes së pajisjes së re është tani e disponueshme për pjesët e mëposhtme AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64DD28, AVR64DD32, AVR64DD48, AVRXNUMXDDXNUMX, AVRXNUMXDDXNUMX, AVRXNUMXDDXNUMX, AVRXNUMXDXNUMX, AVRXNUMXDDXNUMX, AVRXNUMXDDXNUMX.
Abstraksioni i përmirësuar procedural Mjeti i optimizimit të abstraksionit procedural (PA) është përmirësuar në mënyrë që kodi që përmban një udhëzim për thirrjen e funksionit (/ ) të mund të përshkruhet. Kjo do të ndodhë vetëm thirrja rcall nëse stek nuk përdoret për të kaluar argumente dhe as për të marrë vlerën e kthimit nga funksioni. Stack-i përdoret kur thirret një funksion me një listë argumentesh të ndryshueshme ose kur thirret një funksion që merr më shumë argumente sesa ka regjistra të caktuar për këtë qëllim. Kjo veçori mund të çaktivizohet duke përdorur opsionin, ose abstraksioni procedural mund të çaktivizohet tërësisht për një skedar ose funksion objekti duke përdorur përkatësisht the- dhe, ose duke përdorur atributin (specifikuesin) në mënyrë selektive me funksionet.
mno-pa-outline-thirret -mno-pa-on-file -mno-pa-on-function nopa makro mbulimi i kodit Përpiluesi tani përcakton makron nëse një opsion i vlefshëm është __nopa __CODECOV -mcodecov specifikuar.
Opsioni i rezervimit të memories Shoferi tani do të pranojë opsionin xc8-cc -mreserve=space@start:end kur ndërton për objektivat AVR. Ky opsion rezervon gamën e specifikuar të memories ose në hapësirën e memories së të dhënave ose të programit, duke parandaluar që lidhësi të plotësojë kodin ose objektet në këtë zonë. IO inteligjente më inteligjente Disa përmirësime janë bërë në funksionet Smart IO, duke përfshirë rregullime të përgjithshme në kodin bazë printf, duke e trajtuar specifikuesin %n të konvertimit si një variant të pavarur, duke u lidhur në rutinat vararg pop sipas kërkesës, duke përdorur lloje më të shkurtra të dhënash aty ku është e mundur për trajtim Argumentet e funksionit IO dhe faktorizimi i kodit të zakonshëm në gjerësinë e fushës dhe trajtimin e saktë. Kjo mund të rezultojë në kursime të konsiderueshme të kodit dhe të dhënave, si dhe të rrisë shpejtësinë e ekzekutimit të IO.
3.3. Versioni 2.39 (Lëshimi i sigurisë funksionale)
Licenca e serverit të rrjetit Ky version i përpiluesit të sigurisë funksionale MPLAB XC8 mbështet licencën e serverit të rrjetit.
3.4. Versioni 2.36
Asnjë.
3.5. Versioni 2.35
Mbështetja e pajisjes së re është e disponueshme për pjesët e mëposhtme AVR: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 dhe AVR64DD32.
Ndërrimi i përmirësuar i kontekstit Opsioni i ri -mcall-isr-prologues ndryshon mënyrën se si funksionet e ndërprerjes i ruajnë regjistrat në hyrje dhe se si ato regjistra rikthehen kur përfundon rutina e ndërprerjes. Ai funksionon në mënyrë të ngjashme me opsionin -mcall-prologues, por ndikon vetëm në funksionet e ndërprerjes (ISR).
Ndërrimi i kontekstit edhe më i përmirësuar Opsioni i ri -mgas-isr-prologues kontrollon kodin e ndërrimit të kontekstit të krijuar për rutinat e shërbimit të ndërprerjeve të vogla. Kur aktivizohet, kjo veçori do të bëjë që asembleri të skanojë ISR-në për përdorim të regjistrit dhe t'i ruajë këto regjistra të përdorur vetëm nëse kërkohet.
Hartëzimi i blicit i konfigurueshëm Disa pajisje në familjen AVR DA dhe AVR DB kanë një SFR (p.sh. FLMAP) që specifikon se cili seksion 32k i memories së programit do të vendoset në memorien e të dhënave. Opsioni i ri – mconst-data-in-config-mapped-progmem mund të përdoret që lidhësi të vendosë të gjitha të dhënat e kualifikuara për konst në një seksion 32k dhe të inicializojë automatikisht regjistrin përkatës SFR për të siguruar që këto të dhëna të jenë të vendosura në memorien e të dhënave. hapësirë, ku do të aksesohet në mënyrë më efektive.
Bibliotekat standarde të unifikuara të mikroçipit Të gjithë përpiluesit MPLAB XC do të ndajnë një Bibliotekë Standarde të Unifikuar të Mikroçipit, e cila tani është e disponueshme me këtë version të MPLAB XC8. Udhëzuesi i përdorimit të përpiluesit MPLA# XC8 C për AVO MCU nuk përfshin më dokumentacionin për këto funksione standarde. Ky informacion tani mund të gjendet në Udhëzuesin e Referencës së Bibliotekës Standarde të Unifikuar të Microchip. Vini re se disa funksione të përcaktuara më parë nga avr-libc nuk janë më të disponueshme. (Shih funksionalitetin Lila.)
Smart I0 Si pjesë e bibliotekave të reja të unifikuara, funksionet I0 në familjet printf dhe scanf tani janë krijuar me porosi në çdo ndërtim, bazuar në mënyrën se si këto funksione përdoren në program. Kjo mund të reduktojë ndjeshëm burimet e përdorura nga një program.
Opsioni i ndihmës inteligjente ICI Kur analizon thirrjet për funksionet inteligjente I0 (si printimi f () ose scanf ()), përpiluesi nuk mund të përcaktojë gjithmonë nga vargu i formatit ose të nxjerrë nga argumentet specifikuesit e konvertimit të kërkuar nga thirrja. Më parë, përpiluesi gjithmonë nuk bënte supozime dhe siguronte që 10 funksione plotësisht funksionale të ishin të lidhura në imazhin përfundimtar të programit. Është shtuar një opsion i ri – msmart-io-format=fmt, në mënyrë që përpiluesi të mund të informohet nga përdoruesi për specifikuesit e konvertimit të përdorur nga funksionet inteligjente I0, përdorimi i të cilëve është i paqartë, duke parandaluar lidhjen e tepërt të 10 rutinave. (Shih opsionin e formatit smart-io për më shumë detaje.)
Vendosja e seksioneve të personalizuara Më parë, opsioni -W1, -section-start vendosi seksionin e specifikuar në adresën e kërkuar vetëm kur skripti lidhës përcaktoi një seksion dalës me të njëjtin emër. Kur nuk ishte kështu, seksioni u vendos në një adresë të zgjedhur nga lidhësi dhe opsioni u injorua në thelb. Tani opsioni do të respektohet për të gjitha seksionet e personalizuara, edhe nëse skripti lidhës nuk e përcakton seksionin. Vini re, megjithatë, se për seksionet standarde, të tilla . teksti,. bss ose . të dhënat, alokuesi më i përshtatshëm do të ketë ende kontroll të plotë mbi vendosjen e tyre dhe opsioni nuk do të ketë efekt. Përdorni opsionin -ton, -Tsection=addr, siç përshkruhet në udhëzuesin e përdoruesit.
3.6. Versioni 2.32
Udhëzimi i stivës I disponueshëm me një licencë përpiluesi PRO, veçoria e udhëzimit të stivit të përpiluesit mund të përdoret për të vlerësuar thellësinë maksimale të çdo pirg të përdorur nga një program. Ai ndërton dhe analizon grafikun e thirrjeve të një programi, përcakton përdorimin e stivit të secilit funksion dhe prodhon një raport, nga i cili mund të konkludohet thellësia e stivave të përdorura nga programi. Ky funksion aktivizohet përmes opsionit të linjës së komandës -mchp-stack-usage. Pas ekzekutimit shtypet një përmbledhje e përdorimit të stivës. Një raport i detajuar i stivës është i disponueshëm në hartë file, e cila mund të kërkohet në mënyrën e zakonshme.
Mbështetja mbështetëse e pajisjes së re është e disponueshme për pjesët e mëposhtme AVR: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32BDAVD, AVR48DB16, AVR28DB16 Mbështetja e pajisjes së tërhequr Mbështetja nuk ofrohet më për pjesët e mëposhtme AVR: AVR32DA16, AVR48DAXNUMX dhe, AVRXNUMXDAXNUMX.
3.7. Versioni 2.31
Asnjë.
3.8. Versioni 2.30
Opsion i ri për të parandaluar inicializimin e të dhënave Një opsion i ri i drejtuesit -mno-data-init parandalon inicializimin e të dhënave dhe pastrimin e seksioneve bss. Ai funksionon duke shtypur daljen e të dhënave të kopjimit dhe pastrimin e simboleve bss në montim files, e cila nga ana tjetër do të parandalojë përfshirjen e atyre rutinave nga lidhësi.
Optimizimet e zgjeruara Janë bërë një sërë përmirësimesh optimizimi, duke përfshirë heqjen e udhëzimeve të tepërta të kthimit, heqjen e disa kërcimeve pas një udhëzimi skip-if-bit-is, dhe përmirësimin e abstraksionit procedural dhe aftësinë për të përsëritur këtë proces. Tani janë të disponueshme opsione shtesë për të kontrolluar disa nga këto optimizime, veçanërisht -f seksion-anchors, e cila lejon aksesin e objekteve statike të kryhet në lidhje me një simbol; -mpa-iterations=n, e cila lejon që numri i përsëritjeve të abstraksionit procedural të ndryshohet nga parazgjedhja prej 2; dhe, -mpa-callcost-shortcall, e cila kryen abstraksion procedural më agresiv, me shpresën se lidhësi mund të relaksojë thirrjet e gjata. Ky opsion i fundit mund të rrisë madhësinë e kodit nëse supozimet themelore nuk realizohen.
Mbështetja e mbështetjes së pajisjes së re është në dispozicion për pjesët e mëposhtme të AVR: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DA28, AVR128DA32, AVR128DA48, AVR128DB64, AVR5272DA5790, AVR5790DA5791DB5795, AVR6285DB6286, AVR6612DB6613. Mbështetja e mbështetjes së pajisjes së tërhequr nuk është më e disponueshme për pjesët e mëposhtme AVR: ATA6614, ATA6616, ATA6617N, ATA664251, ATAXNUMX, ATAXNUMX, ATAXNUMX, ATAXNUMXC, ATAXNUMXC, ATAXNUMXQ, ATAXNUMX, ATAXNUMX dhe
3.9. Versioni 2.29 (Lëshimi i sigurisë funksionale)
Kreu file për kompajlerin e integruar Për të siguruar që përpiluesi mund të përputhet me specifikimet e gjuhës si MISRA, kokë file, e cila përfshihet automatikisht nga , eshte perditesuar. Ky titull përmban prototipet për të gjitha funksionet e integruara, si p.sh. ndërtuar_avr_nop ( ) dhe ciklet e vonuara avr të integruara () . Disa pajisje të integruara mund të mos jenë në përputhje me MISRA; këto mund të hiqen duke shtuar defineXCSTRICT_MISRA në linjën komanduese të përpiluesit. Instalimet e integruara dhe deklaratat e tyre janë përditësuar për të përdorur lloje me gjerësi fikse.
3.10. Versioni 2.20
Mbështetja e pajisjes së re është e disponueshme për pjesët e mëposhtme AVR: ATTINY1624, ATTINY1626 dhe ATTINY1627.
Shpërndarje më e mirë e përshtatjes më të mirë Përcaktuesi më i mirë i përshtatjes (BFA) në përpilues është përmirësuar në mënyrë që seksionet të ndahen në një renditje që lejon optimizim më të mirë. BFA tani mbështet hapësirat e emërtuara të adresave dhe trajton më mirë inicializimin e të dhënave.
Abstraksion i përmirësuar procedural Optimizimi i abstraksionit procedural tani kryhet në më shumë sekuenca kodi. Situatat e mëparshme ku ky optimizim mund të kishte rritur madhësinë e kodit janë adresuar duke e vënë në dijeni kodin e optimizimit për procesin e mbledhjes së mbeturinave të lidhësit.
Mungesa e Assembler AVR Assembler AVR nuk përfshihet më në këtë shpërndarje.
3.11. Versioni 2.19 (Lëshimi i sigurisë funksionale)
Asnjë.
3.12. Versioni 2.10
Mbulimi i kodit Ky publikim përfshin një veçori të mbulimit të kodit që lehtëson analizën e masës në të cilën është ekzekutuar kodi burimor i një projekti. Përdorni opsionin -mcodecov=ram për ta aktivizuar. Pas ekzekutimit të programit në pajisjen tuaj, informacioni i mbulimit të kodit do të grumbullohet në pajisje dhe kjo mund të transferohet dhe shfaqet nga MPLAB X IDE nëpërmjet një shtojce të mbulimit të kodit. Shikoni dokumentacionin IDE për informacion mbi këtë shtojcë që mund të merret. #pragma nocodecov mund të përdoret për të përjashtuar funksionet pasuese nga analizat e mbulimit. Në mënyrë ideale pragma duhet të shtohet në fillim të file për të përjashtuar të gjithë atë file nga analizat e mbulimit. Përndryshe, _atributi_ ( (nocodecov) ) mund të përdoret për të përjashtuar një funksion specifik nga analizat e mbulimit.
Përshkrimi i pajisjes files Një pajisje e re file i quajtur avr_chipinfo. html ndodhet në direktorinë e dokumenteve të shpërndarjes së përpiluesit. Kjo file liston të gjitha pajisjet e mbështetura nga përpiluesi. Klikoni në emrin e një pajisjeje dhe ajo do të hapë një faqe që tregon të gjithë dhimbjen e konfigurimit të lejuar të cilësimeve/vlerës së bitit për atë pajisje, me p.sh.amples. Abstraksioni procedural
Optimizimet e abstraksionit procedural, të cilat zëvendësojnë blloqet e zakonshme të kodit të montimit me thirrjet në një kopje të nxjerrë të atij blloku, janë shtuar në përpilues. Këto kryhen nga një aplikacion i veçantë, i cili thirret automatikisht nga përpiluesi kur zgjedh optimizimet e nivelit 2, 3 ose s. Këto optimizime reduktojnë madhësinë e kodit, por ato mund të zvogëlojnë shpejtësinë e ekzekutimit dhe korrigjimin e kodit. Abstraksioni procedural mund të çaktivizohet në nivele më të larta optimizimi duke përdorur opsionin -mno-pa, ose mund të aktivizohet në nivele më të ulëta të optimizimit (sipas licencës suaj) duke përdorur -mpa. Mund të çaktivizohet për një objekt file duke përdorur -mno-pa-on-file=fileemër, ose çaktivizohet për një funksion duke përdorur -mno-pa-on-function=function. Brenda kodit tuaj burimor, abstraksioni procedural mund të çaktivizohet për një funksion duke përdorur atributin ( (nopa) ) me përkufizimin e funksionit, ose duke përdorur nopa, i cili zgjerohet në atribut ( (nopa, noinline) ) dhe kështu parandalon kryerjen e inlinimit të funksionit dhe ka abstragim të kodit të inlinuar.
Mbështetja e bitit të kyçjes në pragma Konfigurimi #pragma tani mund të përdoret për të specifikuar bitet e kyçjes AVR si dhe pjesët e tjera të konfigurimit. Kontrolloni avr_chipinfo. html file (përmendur më lart) për çiftet e cilësimeve/vlerave për t'u përdorur me këtë pragmë. Mbështetja e pajisjes së re është e disponueshme për pjesët e mëposhtme: AVR28DAl28, AVR64DAl28, AVR32DA 128 dhe AVR48DA 128.
3.13. Versioni 2.05
Më shumë bit për paratë tuaja Versioni macOS i këtij përpiluesi dhe menaxheri i licencave është tani një aplikacion 64-bitësh. Kjo do të sigurojë që përpiluesi të instalojë dhe të funksionojë pa paralajmërime në versionet e fundit të macOS.
Objektet Const në memorien e programit Përpiluesi tani mund të vendosë objekte të kualifikuara për const në memorien Flash të programit, në vend që t'i ketë të vendosura në RAM. Përpiluesi është modifikuar në mënyrë që të dhënat globale të kualifikuara kundër t ruhen në memorien flash të programit dhe këto të dhëna mund të aksesohen drejtpërdrejt dhe tërthorazi duke përdorur udhëzimet e duhura të kujtesës së programit. Ky funksion i ri është aktivizuar si parazgjedhje, por mund të çaktivizohet duke përdorur opsionin -mno-const-data-in-progmem. Për arkitekturat avrxmega3 dhe avrtiny, kjo veçori nuk kërkohet dhe është gjithmonë e çaktivizuar, pasi memoria e programit vendoset në hapësirën e adresave të të dhënave për këto pajisje.
Standard falas Versionet e palicencuara (falas) të këtij përpiluesi tani lejojnë optimizime deri dhe duke përfshirë nivelin 2. Kjo do të lejojë një dalje të ngjashme, edhe pse jo identike, me atë që ishte e mundur më parë duke përdorur një licencë standarde.
Mirë se vini AVRASM2 Asambleri AVRASM2 për pajisjet 8-bit tani përfshihet në instaluesin e përpiluesit XC8. Ky montues nuk përdoret nga përpiluesi XC8, por është i disponueshëm për projekte të bazuara në burimin e montimit të shkruar me dorë.
Mbështetja e pajisjes së re është e disponueshme për pjesët e mëposhtme: ATMEGA1608, ATMEGA1609, ATMEGA808 dhe ATMEGA809.
3.14. Versioni 2.00
Drejtues i nivelit të lartë Një drejtues i ri, i quajtur xc8-cc, tani ndodhet mbi drejtuesin e mëparshëm avr-gcc dhe drejtuesin xc8, dhe mund të thërrasë kompajlerin e duhur bazuar në zgjedhjen e pajisjes së synuar. Ky drejtues pranon opsione të stilit GCC, të cilat ose përkthehen ose kalohen te përpiluesi që po ekzekutohet. Ky drejtues lejon që një grup i ngjashëm opsionesh me semantikë të ngjashme të përdoret me çdo objektiv AVR ose PIC dhe është kështu mënyra e rekomanduar për të thirrur përpiluesin. Nëse kërkohet, drejtuesi i vjetër avr-gcc mund të thirret drejtpërdrejt duke përdorur opsionet e stilit të vjetër që pranoi në versionet e mëparshme të përpiluesit.
Ndërfaqja e zakonshme C Ky përpilues tani mund të përputhet me Ndërfaqen e Përbashkët C MPLAB, duke lejuar që kodi burimor të transferohet më lehtë në të gjithë përpiluesit MPLAB XC. Opsioni -mext=cci kërkon këtë veçori, duke mundësuar sintaksë alternative për shumë shtesa gjuhësore.
Drejtues i ri bibliotekar Një drejtues i ri bibliotekar është pozicionuar mbi bibliotekarin e mëparshëm të bibliotekës PIC dhe bibliotekarin avr-ar AVR. Ky drejtues pranon opsione të stilit të arkivuesit të GCC, të cilat ose përkthehen ose i kalohen bibliotekarit që po ekzekutohet. Drejtuesi i ri lejon që një grup i ngjashëm opsionesh me semantikë të ngjashme të përdoret për të krijuar ose manipuluar çdo bibliotekë PIC ose AVR file dhe kështu është mënyra e rekomanduar për të thirrur bibliotekarin. Nëse kërkohet për projektet e vjetra, bibliotekari i mëparshëm mund të thirret drejtpërdrejt duke përdorur opsionet e stilit të vjetër që pranonte në versionet e mëparshme të përpiluesit.
Çështjet e Migracionit
Më poshtë janë veçoritë që tani trajtohen ndryshe nga përpiluesi. Këto ndryshime mund të kërkojnë modifikim të kodit tuaj burimor nëse kodi transferohet në këtë version përpiluesi. Numri i versionit në nëntitujt tregon versionin e parë të përpiluesit që mbështet ndryshimet që pasojnë.
4.1. Versioni 2.41
U hoqën funksione të pasakta fma (XC8-2913) Biblioteka standarde C99 Fma 0 -funksionet e familjes ( ) nuk llogariti një shtim shumëzues me saktësi të pafundme në një rrumbullakim të vetëm, por përkundrazi akumuloi gabime rrumbullakimi me çdo veprim. Këto funksione janë hequr nga biblioteka e ofruar.
4.2. Versioni 2.40
Asnjë.
4.3. Versioni 2.39 (Lëshimi i sigurisë funksionale)
Asnjë.
4.4. Versioni 2.36 Asnjë.
4.5. Versioni 2.35
Trajtimi i bazave string-to (XC8-2420) Për të siguruar konsistencë me përpiluesit e tjerë XC, funksionet XC8 string-to, si strtol () etj., nuk do të përpiqen më të konvertojnë një varg hyrës nëse baza e specifikuar është më e madhe se 36 dhe në vend të kësaj do të vendosë errno në EINVAL. Standardi C nuk specifikon sjelljen e funksioneve kur tejkalohet kjo vlerë bazë.
Optimizime të papërshtatshme të shpejtësisë Optimizimi i abstraksionit procedural po aktivizohej kur zgjidheshin optimizimet e nivelit 3 (-03). Këto optimizime zvogëlojnë madhësinë e kodit në kurriz të shpejtësisë së kodit, kështu që nuk duhej të ishin kryer. Projektet që përdorin këtë nivel optimizimi mund të shohin ndryshime në madhësinë e kodit dhe shpejtësinë e ekzekutimit kur ndërtohen me këtë version.
Funksionaliteti i bibliotekës Kodi për shumë nga funksionet standarde të bibliotekës C tani vjen nga Biblioteka Standarde e Unifikuar e Microchip, e cila mund të shfaqë sjellje të ndryshme në disa rrethana në krahasim me atë të ofruar nga biblioteka e mëparshme avr-libc. Për shembullample, nuk është më e nevojshme të lidhni në bibliotekën 1printf flt (opsioni -1printf_flt) për të aktivizuar formatimin I0 mbështetje për specifikuesit e formatit float. I zgjuari I0 veçoritë e Microchip Unified Standard Library e bëjnë këtë opsion të tepërt. Për më tepër, përdorimi i rutinave me prapashtesë _P për funksionet e vargut dhe të memories (p.sh. strcpy_P ( ) etj..) që funksionojnë në vargjet konst në flash nuk janë më të nevojshme. Rutinat standarde C (p.sh. strcpy ) do të funksionojnë saktë me këto të dhëna kur aktivizohet veçoria const-data-in-program-memory.
4.6. Versioni 2.32
Asnjë.
4.7. Versioni 2.31
Asnjë.
4.8. Versioni 2.30
Asnjë.
4.1. Versioni 2.29 (Lëshimi i sigurisë funksionale)
Asnjë.
4.2. Versioni 2.20
Ndryshuar paraqitjen e DFP Përpiluesi tani supozon një plan urbanistik të ndryshëm të përdorur nga DFP-të (Paketat e Familjes së Pajisjes). Kjo do të thotë që një DFP i vjetër mund të mos funksionojë me këtë version dhe përpiluesit më të vjetër nuk do të jenë në gjendje të përdorin DFP-të më të fundit.
4.3. Versioni 2.19 (Lëshimi i sigurisë funksionale)
Asnjë.
4.4. Versioni 2.10
Asnjë
4.5. Versioni 2.05
Objektet Const në memorien e programit Vini re se si parazgjedhje, objektet e kualifikuara për konst do të vendosen dhe aksesohen në memorien e programit (siç përshkruhet nuanca). Kjo do të ndikojë në madhësinë dhe shpejtësinë e ekzekutimit të projektit tuaj, por duhet të zvogëlojë përdorimin e RAM-it. Ky funksion mund të çaktivizohet, nëse kërkohet, duke përdorur opsionin -mnoconst-data-in-progmem.
4.6. Versioni 2.00
Siguresat e konfigurimit Siguresat e konfigurimit të pajisjes tani mund të programohen duke përdorur një pragmë konfigurimi të ndjekur nga çiftet e vlerës së cilësimit për të specifikuar gjendjen e siguresave, p.sh.
#pragma config WDTON = SET
#pragma config BODLEVEL = BODLEVEL_4V3
Objektet dhe funksionet absolute Objektet dhe funksionet tani mund të vendosen në adresë specifike në memorie duke përdorur specifikuesin CCI (adresa), p.sh.ampe:
#përfshi
int foobar_at(0x800100);
char __at (0x250) getID (int offset) { … }
Argumenti për këtë specifikues duhet të jetë një konstante që përfaqëson adresën në të cilën do të vendoset bajt ose instruksioni i parë. Adresat e RAM-it tregohen duke përdorur një zhvendosje prej 0x800000. Aktivizo CCI të përdorë këtë veçori.
Sintaksë e re e funksionit të ndërprerjes Përpiluesi tani pranon specifikuesin CCI _interrupt (num) për të treguar se funksionet C janë mbajtës të ndërprerjeve. Specifikuesi merr një numër ndërprerjeje, për shembullampe:
#përfshi
i pavlefshëm __ndërprerje(SPI_STC_vect_num) spi_Isr(void) {… }
Çështje të Rregulluara
Më poshtë janë korrigjimet që i janë bërë përpiluesit. Këto mund të rregullojnë gabimet në kodin e gjeneruar ose të ndryshojnë funksionimin e përpiluesit në atë që ishte menduar ose specifikuar nga udhëzuesi i përdoruesit. Numri i versionit në nëntitujt tregon versionin e parë të përpiluesit që përmban rregullime për problemet që pasojnë. Etiketat me kllapa në titull janë identifikimi i atij problemi në bazën e të dhënave gjurmuese. Këto mund të jenë të dobishme nëse keni nevojë të kontaktoni mbështetjen.
Vini re se disa probleme specifike për pajisjen korrigjohen në Paketën e Familjes së Pajisjes (DFP) të lidhur me pajisjen. Shikoni Menaxherin e Paketave MPLAB për informacion mbi ndryshimet e bëra në DFP dhe për të shkarkuar paketat më të fundit.
5.1. Versioni 2.41
Çështje dongle në Ventura (XC8-3088) Dongles përdorur për të licencuar përpiluesin mund të mos jetë lexuar siç duhet në hostet e macOS Ventura, duke rezultuar në dështime të licencimit. Ndryshimet në menaxherin e licencës XCLM e korrigjojnë këtë çështje.
Tregim i gabuar i alokimit të memories (XC8-2925) Përpjekja për të ndarë SIZE_MAX bajt (ose një vlerë afër kësaj) të memories duke përdorur funksionet standarde të menaxhimit të kujtesës së bibliotekës (malloc () et al) pati sukses gabimisht. Ai nuk mori parasysh se nevojiteshin bajt shtesë përveç bllokut të kërkuar kur përdorni zbatimin e thjeshtë të ndarjes dinamike të memories. Një tregues NULL tani do të kthehet dhe nuk do të vendoset në ENOMEM në situata të tilla.
U hoqën funksione të pasakta fma (XC8-2913) Biblioteka standarde C99 fma ( ) -funksionet e familjes ( ) nuk llogariti një shtim shumëzues me saktësi të pafundme në një rrumbullakim të vetëm, por përkundrazi akumuloi gabime rrumbullakimi me çdo veprim. Këto funksione janë hequr nga biblioteka e ofruar.
Trajtim i keq i konvertimit të vargut (XC8-2921, XC8-2652) Kur një 'sekuencë subjekti' për konvertim nga strtod Cr përmbante atë që dukej të ishte një numër me pikë lundruese në formatin eksponencial dhe kishte një karakter të papritur pas karakterit e/E, atëherë aty ku ishte dhënë endptr, atij iu caktua një adresë që nëse do të tregonte karakterin pas e/E, ndërsa duhej të tregonte vetë karakterin e/E, pasi ai nuk ishte konvertuar. Për shembullample, strtod ("100exx", &ep) duhet të kthejë 100.00 dhe të vendosë ep që të tregojë në pjesën "exx" të vargut, ndërsa funksioni po kthente vlerën e saktë, por duke vendosur ep për të treguar në pjesën "xx" të vargut .
5.2. Versioni 2.40
Shumë i qetë (XCS-2876) Kur përdorni opsionin -mrelax, përpiluesi nuk po ndante disa seksione së bashku, duke rezultuar në madhësi më pak optimale të kodit. Kjo mund të ketë ndodhur me kodin që përdorte bibliotekat e reja MUSL ose me simbole të dobëta.
Tipari i hartës nuk është i çaktivizuar siç thuhet në paralajmërim (XC8-2875) Veçoria const-data-in-config-mappedprogmem varet nga funksioni const-data-in-progmem që po aktivizohet. Nëse veçoria const-data-inconfig-mapped-progmem u aktivizua në mënyrë eksplicite duke përdorur opsionin dhe veçoria const-data-inprogmem ishte çaktivizuar, hapi i lidhjes dështoi, pavarësisht një mesazhi paralajmërues që thoshte se const-data-in-con fig- funksioni i programit të hartuar ishte çaktivizuar automatikisht, gjë që nuk ishte plotësisht e saktë. Tipari const-data-in-config-mapped-progmem tani është plotësisht i çaktivizuar në këtë situatë.
DFP ndryshon për të hyrë në mënyrë korrekte në NVMCTRL (XC8-2848) Kodi i nisjes së kohës së ekzekutimit i përdorur nga pajisjet AVR64EA nuk mori parasysh që regjistri NVMCTRL ishte nën Mbrojtjen e Ndryshimit të Konfigurimit (CCP) dhe nuk ishte në gjendje të caktonte I0 SFR në faqen e përdorur nga programi const-data-in-configmapped-progmem veçoria e përpiluesit. Ndryshimet e bëra në versionin 2.2.55 AVR-Ex_DFP do të lejojnë që kodi i fillimit të kohës së ekzekutimit të shkruajë saktë në këtë regjistër.
Ndryshimet e DFP për të shmangur hartëzimi i blicit (XC8-2847) Është zbatuar një zgjidhje për një problem me veçorinë e pajisjes së hartës së flashit të raportuar në AVR128DA28/32/48/64 Silicon Errata (D580000882). Veçoria e përpiluesit const-data-in-config-mapped-progmem nuk do të zbatohet si parazgjedhje për pajisjet e prekura dhe ky ndryshim do të shfaqet në versionin 2.2.160 AVR-Dx_DFP.
Gabim ndërtimi me sinhf ose coshf (XC8-2834) Përpjekjet për të përdorur funksionet e bibliotekës sinhf () ose coshf () rezultuan në një gabim lidhjeje, duke përshkruar një referencë të papërcaktuar. Funksioni i referuar që mungon tani është përfshirë në shpërndarjen e përpiluesit.
Ndërtimi i gabimeve me nopa (XC,8-2833) Përdorimi i atributit nopa me një funksion që e ka specifikuar emrin e asamblerit duke përdorur asm ( ) ka shkaktuar mesazhe gabimi nga asembleri. Ky kombinim nuk është i mundur.
Dështimi i funksionit variadik me argumente tregues (XC8-2755, XC8-2731) Funksionet me një numër të ndryshueshëm argumentesh presin që treguesit 24-bit (lloji memx) të kalohen në listën e argumenteve të variablave kur funksioni const-data-in-progmem është i aktivizuar. Argumentet që ishin tregues për memorien e të dhënave po kalonin si objekte 16-bitësh, duke shkaktuar dështimin e kodit kur ato lexoheshin përfundimisht. Kur aktivizohet veçoria constdata-in-progmem, të gjitha argumentet e treguesve 16-bit tani konvertohen në tregues 24-bitësh.
Funksionet e bibliotekës strtoxxx dështojnë (XC8-2620) Kur funksioni const-data-in-progmem u aktivizua, parametri endptr në funksionet e bibliotekës strtoxxx nuk u përditësua siç duhet për argumentet e vargut burimor që nuk janë në kujtesën e programit.
Sinjalizime për transmetime të pavlefshme (XC8-2612) Përpiluesi tani do të lëshojë një gabim nëse funksioni const-in-progmem është aktivizuar dhe adresa e një vargu literal është hedhur në mënyrë eksplicite në hapësirën e adresës së të dhënave (duke hequr kualifikuesin const), p.sh.ample, (uint 8_t *) "Hello World!". Një paralajmërim jepet nëse adresa mund të jetë e pavlefshme kur një tregues i të dhënave konst është hedhur në mënyrë eksplicite në hapësirën e adresës së të dhënave.
Vendosja e objekteve konst të pa inicializuar (XC8-2408) Objektet e pa inicializuara me konst dhe konst të paqëndrueshme nuk po vendoseshin në kujtesën e programit në pajisjet që hartojnë të gjithë ose një pjesë të kujtesës së tyre të programit në hapësirën e adresave të të dhënave. Për këto pajisje, objekte të tilla vendosen tani në memorien e programit, duke e bërë funksionimin e tyre në përputhje me pajisjet e tjera.
5.3. Versioni 2.39 (Lëshimi i sigurisë funksionale)
Asnjë.
5.4. Versioni 2.36
Gabim gjatë vonesës (XC8-2774) Ndryshime të vogla në optimizimet e parazgjedhura të modalitetit të lirë parandaluan palosjen e vazhdueshme të shprehjeve të operandit në funksionet e integruara të vonesës, duke rezultuar në trajtimin e tyre si jokonstante dhe duke shkaktuar gabimin: inkorporuar avr delay_cycles pret një konstante të numrit të plotë të kohës së kompilimit.
5.5. Versioni 2.35
Alokimi i vazhdueshëm duke përdorur _at (XC8-2653) Shpërndarja e vazhdueshme e vendeve të shumta të objekteve në një seksion me të njëjtin emër dhe përdorimi i _at ( ) nuk funksionoi si duhet. Për shembullampe:
const char arr1[] __atributi__((seksioni(.mysec”))) __at (0x500) = {0xAB, 0xCD};
const char arr2[] __atributi__((seksioni(.mysec”))) = {0xEF, 0xFE};
duhet të kishte vendosur arr2 menjëherë pas arr1.
Specifikimi i adresave të fillimit të seksionit (XC8-2650) The Opsioni -W1, -seksioni-fillimi në heshtje po dështonte në vendosjen e seksioneve në adresën e nominuar të fillimit. Ky problem është rregulluar për çdo seksion të emërtuar me porosi; megjithatë, nuk do të funksionojë për asnjë seksion standard, si p.sh. tekst ose . bss, i cili duhet të vendoset duke përdorur një opsion -W1, -T.
Lidhësi prishet kur pushon (XC8-2647) Kur optimizimi -mrelax u aktivizua dhe kishte seksione kodi ose të dhënash që nuk përshtateshin në memorien e disponueshme, lidhësi u rrëzua. Tani, në një rrethanë të tillë, në vend të kësaj lëshohen mesazhe gabimi.
Nuk ka kthim prapa (XC8-2646) The – Opsioni nofallback nuk u implementua saktë, as nuk u dokumentua. Kjo tani mund të zgjidhet për të siguruar që përpiluesi nuk do të kthehet në një cilësim më të ulët optimizimi nëse përpiluesi është i palicensuar dhe në vend të kësaj do të lëshojë një gabim.
Optimizime të papërshtatshme të shpejtësisë (X03-2637) Optimizimi i abstraksionit procedural po aktivizohej kur zgjidheshin optimizimet e nivelit 3 (-03). Këto optimizime zvogëlojnë madhësinë e kodit në kurriz të shpejtësisë së kodit, kështu që nuk duhej të ishin kryer.
EEPROM i keq akses (XC8-2629) The Rutina eeprom_read_block nuk funksionoi siç duhet në pajisjet Xmega kur u aktivizua opsioni -mconst-data-in-progmem (që është gjendja e parazgjedhur), duke rezultuar që memoria EEPROM të mos lexohej saktë.
Shpërndarja e pavlefshme e memories (XC8-2593, XC8-2651) Kur -Opsioni i lidhjes tekst ose -Tdata (për shembullampPërcaktohet duke përdorur opsionin e drejtuesit -vl), origjina përkatëse e tekstit/rajonit të të dhënave u përditësua; megjithatë, adresa e fundit nuk u rregullua në përputhje me rrethanat, gjë që mund të kishte çuar në tejkalimin e zonës së hapësirës së kujtesës së pajisjes së synuar.
Ndërprerja me funksion të mbi-atribuar (XC8-2580) Përpiluesi u rrëzua nëse një funksion deklarohej duke përdorur më shumë se një nga atributet e ndërprerjes, sinjalit ose nmi, p.sh., atributi ( ( sinjal , ndërprerje ) ).
Kodi i pavlefshëm i ndërprerjes ATtiny (XC8-2465) Kur ndërtohej për pajisjet ATtiny dhe optimizimet u çaktivizuan (-00), funksionet e ndërprerjes mund të kenë shkaktuar mesazhe të montimit të operandit jashtë rrezes.
Opsionet që nuk kalohen (XC8-2452) Kur përdorni opsionin me opsione të shumta lidhëse, të ndara me presje, jo të gjitha opsionet e lidhjes i kalonin lidhësit.
Gabim gjatë leximit indirekt të kujtesës së programit (X03-2450) Në disa raste, përpiluesi prodhoi një gabim të brendshëm (insn i panjohur) kur lexonte një vlerë dy bajt nga një tregues në kujtesën e programit
5.6. Versioni 2.32
Qasja e dytë e biblioteka dështon (XC8-2381) Duke thirrur versionin Windows të xc8-ar. Arkivi i bibliotekës .exe për herë të dytë për të hyrë në një arkiv ekzistues të bibliotekës mund të ketë dështuar me një mesazh gabimi që nuk mund të riemërtohet.
5.7. Versioni 2.31
Përpilues i pashpjeguar dështimet (XC8-2367) Kur punoni në platformat Windows që kishin direktorinë e përkohshme të sistemit të vendosur në një shteg që përfshinte një pikë '.' karakter, përpiluesi mund të ketë dështuar në ekzekutimin.
5.8. Versioni 2.30
Etiketat globale të vendosura gabim pas skicimit (XC8-2299) Kodi i asamblesë i shkruar me dorë që vendos etiketat globale brenda sekuencave të montimit që janë faktorizuar nga abstraksioni procedural mund të mos jetë ripozicionuar saktë.
Një përplasje relaksuese (XC8-2287) Përdorimi i opsionit -mrelax mund të ketë shkaktuar prishjen e lidhjes kur optimizimet e relaksimit të kërcimit të bishtit u përpoqën të hiqnin udhëzimet e ret që nuk ishin në fund të një seksioni.
Ndërprerje kur optimizohen etiketat si vlera (XC8-2282) Kodi që përdor zgjerimin e gjuhës GNU C "Etiketat si vlera" mund të ketë shkaktuar dështimin e optimizimeve procedurale të abstraksionit, me një gabim të rregullimit të shtrirjes së gamës së përshkruar të VMA.
Jo aq konstante (XC8-2271) Prototipet për st rstr ( ) dhe funksione të tjera nga mos specifikoni më kualifikuesin konst jo standard në treguesit e vargut të kthyer kur veçoria -mconst-data-inprogmem është e çaktivizuar. Vini re se me pajisjet avrxmega3 dhe avrtiny, kjo veçori është e aktivizuar përgjithmonë.
Inicializuesit e humbur (XC8-2269) Kur më shumë se një variabël në një njësi përkthimi u vendos në një seksion (duke përdorur _section ose _atribute_ ( (seksion) )), dhe ndryshorja e parë e tillë ishte zero e inicializuar ose nuk kishte një inicializues, inicializues për variablat e tjerë në të njëjtën njësi përkthimi që u vendosën në të njëjtin seksion humbën.
5.1. Versioni 2.29 (Lëshimi i sigurisë funksionale)
Asnjë.
5.2. Versioni 2.20
Gabim me komandat e gjata (XC8-1983) Kur përdorni një objektiv AVR, përpiluesi mund të ketë ndaluar me a file nuk u gjet gabim, nëse linja e komandës ishte jashtëzakonisht e madhe dhe përmbante karaktere të veçanta, të tilla si thonjëza, kthesa të kundërta, etj.
Seksioni i të dhënave të pacaktuar (XC8-1920) Lidhësi AVR dështoi në caktimin e memories për seksionet e personalizuara të të dhënave kur ndërton për arkitekturat avrxmega3 dhe avrtiny, duke prodhuar potencialisht gabime të mbivendosjes së kujtesës
5.3. Versioni 2.19 (Lëshim funksional i sigurisë)
Asnjë.
5.4. Versioni 2.10
Dështimet e zhvendosjes (XC8-1891) Përcaktuesi më i përshtatshëm ishte lënia e 'vrimave' të kujtesës ndërmjet seksioneve pas relaksimit të lidhësit. Përveç fragmentimit të memories, kjo rriti mundësinë që të kishte dështime të zhvendosjes së lidhësit në lidhje me kërcimet e lidhura me kompjuterin ose thirrjet që dilnin jashtë rrezes.
Udhëzimet që nuk janë transformuar nga relaksimi (XC8-1889) Relaksimi i lidhësit nuk ndodhi për udhëzimet e kërcimit ose thirrjes, objektivat e të cilave bëhen të arritshme nëse relaksohen.
Mungon funksionalitetin (XC8E-388) Disa përkufizime nga , të tilla si clock_div_t dhe clock_prescale set () , nuk u përcaktuan për pajisjet, duke përfshirë ATmega324PB, ATmega328PB, ATtiny441 dhe ATtiny841.
Mungojnë makro Makrot e paraprocesorit _XC8_MODE_, _XC8_VERS ION, _XC dhe _XC8 nuk u përcaktuan automatikisht nga përpiluesi. Këto janë tani në dispozicion.
5.5. Versioni 2.05
Gabim i brendshëm i përpiluesit (XC8-1822) Kur ndërtohet nën Windows, mund të jetë krijuar një gabim i brendshëm i përpiluesit gjatë optimizimit të kodit.
Nuk u zbulua tejmbushja e RAM-it (XC8-1800, XC8-1796) Programet që tejkaluan RAM-in e disponueshëm nuk u zbuluan nga përpiluesi në disa situata, duke rezultuar në një dështim të kodit të ekzekutimit.
Memorie flash e hequr (XC8-1792) Për pajisjet avrxmega3 dhe avrtiny, pjesë të memories flash mund të jenë lënë të paprogramuara nga MPLAB X IDE.
Dështimi për të ekzekutuar main (XC8-1788) Në disa situata ku programi nuk kishte variabla globale të përcaktuara, kodi i fillimit të kohës së ekzekutimit nuk doli dhe funksioni kryesor ( ) nuk u arrit kurrë.
Informacion i pasaktë i kujtesës (XC8-1787) Për pajisjet avrxmega3 dhe avrtiny, programi i madhësisë avr po raportonte se të dhënat vetëm për lexim po konsumonin RAM në vend të memories së programit.
Leximi i gabuar i kujtesës së programit (XC8-1783) Projektet e përpiluara për pajisjet me memorie programore të përcaktuara në hapësirën e adresave të të dhënave dhe që përcaktojnë objekte duke përdorur makro/atributin PROGMEM mund t'i kenë lexuar këto objekte nga adresa e gabuar.
Gabim i brendshëm me atributet (XC8-1773) Ndodhi një gabim i brendshëm nëse keni përcaktuar objektet e treguesit me
shenjat _at () ose atributi() ndërmjet emrit të treguesit dhe tipit të çreferencuar, për shembullample, char *
_at (0x800150) cp; Tani lëshohet një paralajmërim nëse haset një kod i tillë.
Dështimi për të ekzekutuar kryesore (XC8-1780, XC8-1767, XC8-1754) Përdorimi i variablave EEPROM ose përcaktimi i siguresave duke përdorur pragmën e konfigurimit mund të ketë shkaktuar inicializimin e gabuar të të dhënave dhe/ose bllokimin e ekzekutimit të programit në kodin e nisjes së kohës së ekzekutimit, përpara se të arrini në main ( ).
Gabim i siguresave me pajisje të vogla (XC8-1778, XC8-1742) Pajisjet attiny4/5/9/ 10/20/40 kishin një gjatësi të gabuar të siguresave të specifikuar në kokën e tyre files që çojnë në gabime lidhëse kur përpiqeni të ndërtoni kodin që përcakton siguresat.
Segmentimi gabimi (XC8-1777) Një gabim segmentimi me ndërprerje është korrigjuar.
Përplasja e montimit (XC8-1761) Asambleri avr-as mund të ketë dështuar kur përpiluesi është ekzekutuar nën Ubuntu 18.
Objektet e papastruara (XC8-1752) Objektet e panicializuara të kohëzgjatjes së ruajtjes statike mund të mos jenë pastruar nga kodi i nisjes së kohës së ekzekutimit.
Specifikimi i pajisjes në konflikt u shpërfill (XC8-1749) Përpiluesi nuk po krijonte një gabim kur u përdorën opsione të shumta të specifikimeve të pajisjes dhe treguan pajisje të ndryshme.
Korrupsioni i kujtesës nga grumbulli (XC8-1748) The Simboli _heap_start ishte vendosur gabimisht, duke rezultuar në mundësinë që variablat e zakonshëm të korruptohen nga grumbulli.
Gabim i zhvendosjes së lidhësit (XC8-1739) Një gabim i zhvendosjes së lidhësit mund të jetë lëshuar kur kodi përmbante një rjmp ose rcall me një objektiv saktësisht 4k byte larg.
5.6. Versioni 2.00
Asnjë.
Çështje të njohura
Më poshtë janë kufizimet në funksionimin e përpiluesit. Këto mund të jenë kufizime të përgjithshme të kodimit ose devijime nga informacioni i përfshirë në manualin e përdoruesit. Etiketat me kllapa në titull janë identifikimi i atij problemi në bazën e të dhënave të gjurmimit. Kjo mund të jetë e dobishme nëse keni nevojë të kontaktoni mbështetjen. Ato artikuj që nuk kanë etiketa janë kufizime që përshkruajnë modi operandi dhe që ka të ngjarë të mbeten në fuqi përgjithmonë.
6.1. MPLAB X IDE Integrimi
IDE MPLAB integrimi Nëse Compiler do të përdoret nga MPLAB IDE, atëherë duhet të instaloni MPLAB IDE përpara se të instaloni Compiler.
6.2. Gjenerimi i kodit
Segfault with section-anchors opsion (XC8-3045) Programi që përcaktoi funksione me lista argumentesh të ndryshueshme dhe që përdor opsionin -fsection-anchors mund të ketë shkaktuar një gabim të brendshëm të përpiluesit: Gabim segmentimi.
Informacioni i korrigjimit është jashtë sinkronizimit (XC8-2948) Kur optimizimet e relaksimit të lidhësit zvogëlojnë udhëzimet (për shembullampudhëzimet e thirrjes për të thirrur), linja e burimit për hartëzimin e adresës mund të mos mbetet në sinkron kur ka më shumë se një operacion tkurrjeje që ndodh në një seksion.
Në shembullin e mëposhtëmampLe, ka dy telefonata drejt foo që përfundojnë të relaksuara ndaj telefonatave të afërm.
Dështimi i alokimit të memories PA (XC8-2881) Kur përdorni optimizuesit procedural të abstraksionit, lidhësi mund të raportojë gabime në alokimin e memories kur madhësia e kodit është afër sasisë së memories së disponueshme të programit në pajisje, edhe pse programi duhet të jetë në gjendje të përshtatet me hapësirën e disponueshme.
Jo aq i zgjuar Smart-I0 (XC8-2872) Veçoria smart-io e përpiluesit do të gjenerojë kod të vlefshëm, por jo optimal për funksionin snprint f nëse veçoria const-data-in-progmem është çaktivizuar ose nëse pajisja ka të gjithë blicin e saj të vendosur në memorien e të dhënave.
Edhe më pak i zgjuar Smart-I0 (XC8-2869) Veçoria smart-io e përpiluesit do të gjenerojë kod të vlefshëm, por jo optimal kur përdoren të dyja opsionet -flto dhe -fno-builtin.
Vendosja jooptimale e të dhënave vetëm për lexim (XC8-2849) Lidhësi aktualisht nuk është në dijeni të seksioneve të kujtesës APPCODE dhe APPDATA, as ndarjet [No-Read-While-Write në hartën e kujtesës. Si rezultat, ekziston një shans i vogël që lidhësi të shpërndajë të dhëna vetëm për lexim në një zonë të papërshtatshme të memories. Mundësia e vendosjes së gabuar të të dhënave rritet nëse aktivizohet veçoria const-data-in-progmem, veçanërisht nëse funksioni const-data-in-config-mapped-progmem është gjithashtu i aktivizuar. Këto veçori mund të çaktivizohen nëse kërkohet.
Objekti file porosia e përpunimit (XC8-2863) Rendi në të cilin objektet files do të përpunohen nga lidhësi mund të ndryshojnë në bazë të përdorimit të optimizimeve të abstraksionit procedural (opsioni -mpa). Kjo do të ndikojë vetëm në kodin që përcakton funksione të dobëta nëpër module të shumta.
Gabim lidhës me absolut (XC8-2777) Kur një objekt është bërë absolut në një adresë në fillim të RAM-it dhe janë përcaktuar gjithashtu objekte të painitializuara, mund të shkaktohet një gabim lidhës.
ID-të e zgjimit të shkurtër (XC8-2775) Për pajisjet ATA5700/2, regjistrat PHIDO/1 përkufizohen vetëm si gjerësi 16 bit dhe jo 32 bit.
Ndërprerja e lidhjes gjatë thirrjes së simbolit (XC8-2758) Lidhësi mund të prishet nëse opsioni i drejtuesit -mrelax përdoret kur kodi burim thërret një simbol që është përcaktuar duke përdorur opsionin e lidhjes -cc., –de f sym.
Inicializimi i pasaktë (XC8-2679) Atje është një mospërputhje midis vendit ku vlerat fillestare për disa objekte globale/statike të madhësisë së bajtit vendosen në memorien e të dhënave dhe ku do të aksesohen variablat në kohën e ekzekutimit.
Thirrje të këqija të funksioneve indirekte (XC8-2628) Në disa raste, thirrjet e funksioneve të bëra nëpërmjet një treguesi funksioni të ruajtur si pjesë e një strukture mund të dështojnë.
strtof kthen zero për notat heksadecimal (XC8-2626) Funksionet e bibliotekës strtof et al dhe scanf ( ) et al, gjithmonë do të konvertojnë një numër heksadecimal me pikë lundruese që nuk specifikon një eksponent në zero. Për shembullampe:
strtof (“Oxl”, &endptr) ;
do të kthejë vlerën 0, jo I.
Mesazhe të pasakta të këshilltarëve të stivës (XC8-2542, XC8-2541) Në disa raste, paralajmërimi i këshilltarit të stivës në lidhje me rekursionin ose pirgun e papërcaktuar të përdorur (ndoshta përmes përdorimit të alloca()) nuk lëshohet.
Dështim me kodin e dyfishtë të ndërprerjes (XC8-2421) Aty ku më shumë se një funksion i ndërprerjes ka të njëjtin trup, kompajleri mund të ketë daljen për një funksion të ndërprerjes që thërret tjetrin. Kjo do të rezultojë që të gjithë regjistrat e bllokuar nga thirrjet të ruhen në mënyrë të panevojshme dhe ndërprerjet do të aktivizohen edhe përpara se të ekzekutohet epilogu i mbajtësit aktual të ndërprerjeve, gjë që mund të çojë në dështimin e kodit.
Dalje e gabuar me shteg të pavlefshëm DFP (XC8-2376) Nëse përpiluesi thirret me një shteg të pavlefshëm DFP dhe një 'specifik' file ekziston për pajisjen e zgjedhur, përpiluesi nuk po raporton paketën e familjes së pajisjes që mungon dhe në vend të kësaj zgjedh 'specifikimin' file, e cila më pas mund të çojë në një dalje të pavlefshme. 'Specifikimi' files mund të mos jenë të përditësuar me DFP-të e shpërndara dhe ishin të destinuara për përdorim vetëm me testimin e përpiluesit të brendshëm.
Mbivendosja e kujtesës e pazbuluar (XC8-1966) Përpiluesi nuk po zbulon mbivendosjen e memories së objekteve të bërë absolute në një adresë (nëpërmjet _at ( )) dhe objekteve të tjera duke përdorur specifikuesin e seksionit ( ) dhe që janë të lidhur me të njëjtën adresë.
Dështim me funksionet e bibliotekës dhe _memx (XC8-1763) Funksionet e quajtura libgcc float me një argument në hapësirën e adresave memx mund të dështojnë. Vini re se rutinat e bibliotekës thirren nga disa operatorë C, kështu, për shembullample, kodi i mëposhtëm është prekur:
kthe regFloatVar > memxFloatVar;
Zbatim i kufizuar libgcc (AVRTC-731) Për produktet ATTiny4/5/9/10/20/40, zbatimi standard i bibliotekës C / Math në libgcc është shumë i kufizuar ose nuk është i pranishëm.
Kufizimet e kujtesës së programit (AVRTC-732) Imazhet e memories së programit përtej 128 kb mbështeten nga zinxhiri i veglave; megjithatë, ka raste të njohura të ndërprerjeve të lidhjes pa relaksim dhe pa një mesazh gabimi të dobishëm në vend që të gjenerohen cungët e funksionit të kërkuar kur përdoret opsioni -mre lax.
Kufizimet e hapësirës së emrit (AVRTC-733) Hapësirat e emërtuara të adresave mbështeten nga zinxhiri i veglave, duke iu nënshtruar kufizimeve të përmendura në seksionin e udhëzuesit të përdoruesit Kualifikuesit e tipit të veçantë.
Zonat kohore The funksionet e bibliotekës supozojnë GMT dhe nuk mbështesin zonat lokale kohore, kështu që ora lokale ( ) do të kthehet në të njëjtën kohë si gmtime ( ), për shembullample.
file:///Applications/microchip/xc8/v2.41/docs/Readme_XC8_for_AVR.htm
Dokumentet / Burimet
![]() |
Softueri i zhvillimit të përpiluesit MICROCHIP MPLAB XC8 C [pdfManuali i Përdoruesit MPLAB XC8 C, MPLAB XC8 C Softuer për zhvillimin e përpiluesit, Softuer për zhvillimin e përpiluesit, Softuer zhvillimi, softuer |




