Softuer përpilues MICROCHIP 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
Hyrje
Ky version i përpiluesit Microchip MPLAB® XC8 C përmban disa veçori të reja, rregullime të gabimeve dhe mbështetje të pajisjes së re.
Data e ndërtimit
Data zyrtare e ndërtimit të këtij versioni përpilues është 3 korrik 2022.
Versioni i mëparshëm
Versioni i mëparshëm i përpiluesit MPLAB XC8 C ishte 2.39, një përpilues funksional sigurie, i ndërtuar më 27 janar 2022. Përpiluesi i mëparshëm standard ishte versioni 2.36, i ndërtuar më 27 janar 2022.
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.
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ë file me emrin ndodhet nëndrejtoria e direktorisë suaj të instalimit. 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 kokën files, 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.
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 mac OShave janë koduar dhe noterizuar.
Nëse jeni duke ekzekutuar një server licence rrjeti, vetëm kompjuterët me sisteme operative të mbështetur nga përpiluesit mund të përdoren për të pritur serverin e licencës. Që nga versioni xclm 2.0, serveri i licencës së rrjetit mund të instalohet në një platformë Microsoft Windows Server, por serveri i licencës nuk ka nevojë të funksionojë në një version server të sistemit operativ.
Pajisjet e Mbështetur
Ky përpilues mbështet të gjitha pajisjet AVR MCU 8-bit të njohura në kohën e lëshimit. Shihni (në drejtorinë e dokumenteve të përpiluesit) për një listë të të gjitha pajisjeve të mbështetura. Këto files gjithashtu liston cilësimet e bitit të konfigurimit për secilën pajisje.
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ë.
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 .exe (Windows), .run (Linux) ose aplikacioni (macOS), p.sh. XC8-1.00.11403-windows.exe dhe ndiqni udhëzimet në ekran.
Rekomandohet drejtoria e parazgjedhur e instalimit. 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.
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 file, zgjidhni "Properties", skedën "Siguria", zgjidhni përdoruesin, modifikoni.)
- Vendosni 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ë file dialogu i eksploruesit që tregon atë direktori dhe do t'ju lejojë të përcaktoni rrugën e asaj dosjeje.
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ë.
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:
- Njoftim për të drejtën e autorit MUSL
- Instalimi dhe licencimi i përpiluesve MPLAB XC C (rishikimi M)
- Udhëzuesi i përdoruesit për MPLAB XC8 për inxhinierët e integruar – AVR MCU (rishikimi A)
- Udhëzuesi i përdoruesit për përpiluesin MPLAB XC8 C për AVR MCU (rishikimi F)
- Microchip Unified Standard Library Reference Guide (rishikimi B)
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 projektin tuaj të parë MPLAB XC8 C. Ky udhëzues tani shpërndahet me përpiluesin.
Udhëzuesi i përdoruesit Hamate është përfshirë në direktorinë e dokumenteve në këtë version. Ky udhëzues është menduar për ata që përdorin Hamate 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ë.
Versioni 2.40
Mbështetje e pajisjes së re Mbështetja tani është e disponueshme për pjesët e mëposhtme AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64DD28, AVR64DD32.
Përmirësimi i abstraksionit 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 ( rikujtim i thirrjes ) ) të mund të përvijohet. Kjo do të ndodhë vetëm nëse pirgu 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. Ky funksion mund të çaktivizohet duke përdorur opsionin monk-pa-outline-calls, ose abstraksioni procedural mund të çaktivizohet plotësisht për një objekt file ose funksiononi duke përdorur -monk-pa-on-file dhe -mo.-pa-on-funksion përkatësisht, ose duke përdorur atributin nipa (specifikuesi nipa) në mënyrë selektive me funksionet
Makroja e mbulimit të kodit Përpiluesi tani përcakton makro __CODECOV nëse specifikohet një opsion i vlefshëm mcodecov.
Opsioni i rezervimit të memories Drejtuesi xc8-cc tani do të pranojë opsionin -mreserve=space@start: fund kur ndërton për objektivat AVR. Ky opsion rezervon diapazonin e specifikuar të memories ose në hapësirën e memories së të dhënave ose të programit, duke parandaluar që lidhësi të mbushë kodin ose objektet në këtë zonë.
IO inteligjente më e zgjuar Janë bërë disa përmirësime në funksionet Smart IO, duke përfshirë rregullime të përgjithshme në kodin bazë printf, duke e trajtuar specifikuesin e konvertimit %n 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 trajtimin e argumenteve të 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.
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.
Versioni 2.36
Asnjë.
Versioni 2.35
Mbështetje e pajisjes së re Mbështetja ë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 rutina e ndërprerjes përfundon. 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 kruajtjes së 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ë e konfigurueshme flash 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-proem mund të përdoret që lidhësi të vendosë të gjitha të dhënat e kualifikuara kundër në një seksion 32k dhe të inicializojë automatikisht regjistrin përkatës SFR për t'u siguruar që këto të dhëna të vendosen në hapësirën e memories së të dhënave. , ku do të aksesohet në mënyrë më efektive.
Bibliotekat standarde të unifikuara të mikroçipit Të gjithë përpiluesit e MPLAB XC do të ndajnë një Bibliotekë Standarde të Unifikuar me Microchip, e cila tani është e disponueshme me këtë version të MPLAB XC8. Udhëzuesi i përdorimit të MPLAB® XC8 C përpilues/ose AVR® 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 Bibliotekën):'. funksionaliteti…)
IO e zgjuar Si pjesë e bibliotekave të reja të unifikuara, funksionet IO në familjet e printimit dhe skanimit tani gjenerohen 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 IO Kur analizon thirrjet për funksionet inteligjente IO (të tilla si printf () 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 nuk do të bënte gjithmonë supozime dhe do të siguronte që funksionet plotësisht funksionale të IO ishin të lidhura në imazhin përfundimtar të programit. Një opsion i ri – msmart-io-format=fmt është shtuar në mënyrë që përpiluesi të mund të informohet nga përdoruesi për specifikuesit e konvertimit të përdorur nga funksionet inteligjente IO, përdorimi i të cilëve është i paqartë, duke parandaluar lidhjen e rutinave tepër të gjata të IO. (Shih opsionin e formatit smart-io për më shumë detaje.)
Vendosja e seksioneve me porosi Më parë, opsioni -Wl, -section-start vendosi vetëm seksionin e specifikuar në adresën e kërkuar 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 -Wl, -Tsection=add, siç përshkruhet në udhëzuesin e përdoruesit.
Versioni 2.32
Udhëzimet e Stackit E disponueshme me një licencë përpiluesi PRO, veçoria e udhëzimit të grumbullit 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ështetje për pajisjen e re është i disponueshëm për pjesët e mëposhtme AVR: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64BVDR
Mbështetje për pajisjen e tërhequr nuk disponohet më për pjesët e mëposhtme AVR: AVR16DA28, AVR16DA32 dhe, AVR16DA48.
Versioni 2.31
Asnjë.
Versioni 2.30
Opsion i ri për të parandaluar inicializimin e të dhënave Një opsion i ri i drejtuesit -mno-data-ini t parandalon inicializimin e të dhënave dhe pastrimin e seksioneve bss. Ai funksionon duke shtypur daljen e të dhënave do_ copy_ dhe d o_ clear_ bss simbolet 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 ankorat e seksionit -f, e cila lejon hyrjen e objekteve statike të kryhet në lidhje me një simbol; -mpai derations=n, e cila lejon që numri i përsëritjeve të abstraksionit procedural të ndryshohet nga parazgjedhja prej 2; dhe, -mpa- call cost- 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ështetje e pajisjes së re Mbështetja është e disponueshme për pjesët e mëposhtme AVR: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48, 128BAVR
Mbështetja e pajisjes së tërhequr Mbështetja nuk është më e disponueshme për pjesët e mëposhtme AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616TAC, ATA6617, ATA, dhe
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, të tilla si ciklet _buil tin _avrnop () dhe _buil tin_ avr delay_ () . Disa pajisje të integruara mund të mos jenë në përputhje me MISRA; këto mund të hiqen duke shtuar define _Xe_ STRICT_ MISRA në linjën komanduese të kompajlerit. Instalimet e integruara dhe deklaratat e tyre janë përditësuar për të përdorur lloje me gjerësi fikse.
Versioni 2.20
Mbështetje e pajisjes së re Mbështetja është e disponueshme për pjesët e mëposhtme AVR: ATTINY1624, ATTINY1626 dhe ATTINY1627.
Shpërndarja më e mirë e përshtatshme Përcaktuesi i përshtatjes më të mirë (BFA) në përpilues është përmirësuar në mënyrë që seksionet të ndahen në një mënyrë 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.
Përmirësimi i abstraksionit procedural Optimizimi i abstraksionit procedural tani kryhet në më shumë sekuenca kodesh. 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 montimit AVR Asembler AVR nuk përfshihet më në këtë shpërndarje.
Versioni 2.19 (Lëshimi i sigurisë funksionale)
Asnjë.
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 mcodecov mund të përdoret për të përjashtuar funksionet pasuese nga analiza e mbulimit. Në mënyrë ideale pragma duhet të shtohet në fillim të file për të përjashtuar të gjithë atë file nga analiza e mbulimit. Përndryshe, atributi ( (mcodecov) ) mund të përdoret për të përjashtuar një funksion specifik nga analiza e mbulimit.
Përshkrimi i pajisjes files Një pajisje e re file quhet 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ë gjitha çiftet e lejuara të cilësimeve/vlerave të biteve të konfigurimit 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 nivelet 2, 3 ose optimizimet. Këto optimizime zvogëlojnë 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 funksionin -mno-pa në funksion=.
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ë atributin ( (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 informacionin e çipit avr. html file (përmendur më lart) për çiftet e cilësimeve/vlerave për t'u përdorur me këtë pragmë.
Mbështetje e pajisjes së re Mbështetja është e disponueshme për pjesët e mëposhtme: AVR28DA128, AVR64DA128, AVR32DA128 dhe AVR48DA128.
Versioni 2.05
Më shumë pjesë për paratë tuaja Versioni macOS i këtij përpiluesi dhe menaxheri i licencës është tani një aplikacion 64-bit. 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 për konst 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 në 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ështetje e pajisjes së re Mbështetja është e disponueshme për pjesët e mëposhtme: ATMEGA1608, ATMEGA1609, ATMEGA808 dhe ATMEGA809.
Versioni 2.00
Shofer i nivelit të lartë Një drejtues i ri, i quajtur xc8-cc, tani qëndron 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 burim 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.
Shofer 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 të përpiluesit. Numri i versionit në nëntitujt tregon versionin e parë të përpiluesit që mbështet ndryshimet që pasojnë.
Versioni 2.40
Asnjë.
Versioni 2.39 (Lëshimi i sigurisë funksionale)
Asnjë.
Versioni 2.36
Asnjë.
Versioni 2.35
Trajtimi i bazave me varg (XCS-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 shembullampKështu, nuk është më e nevojshme të lidheni në bibliotekën lprintf_flt (opsioni -print _flt) për të aktivizuar mbështetjen e IO të formatuar për specifikuesit e formatit float. Veçoritë inteligjente IO të Bibliotekës Standarde të Unifikuar të Microchip 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.
Versioni 2.32
Asnjë.
Versioni 2.31
Asnjë.
Versioni 2.30
Asnjë.
Versioni 2.29 (Lëshimi i sigurisë funksionale)
Asnjë.
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.
Versioni 2.19 (Lëshimi i sigurisë funksionale)
Asnjë.
Versioni 2.10
Asnjë
Versioni 2.05
Objektet konst në memorien e programit Vini re se si parazgjedhje, objektet e kualifikuara me konst do të vendosen dhe do të aksesohen në memorien e programit (siç përshkruhet këtu). 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- da ta-in-progmem.
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 WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Objektet dhe funksionet absolute Objektet dhe funksionet tani mund të vendosen në adresë specifike në memorie duke përdorur specifikuesin CCI _at (adresa), p.sh.ample: #përfshi int foobar at(Ox800100); char at(Ox250) get ID(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 e ndërprerjes CCI (num) për të treguar se funksionet C janë mbajtës të ndërprerjeve. Specifikuesi merr një numër ndërprerjeje, për shembullample: #përfshi ndërprerje e pavlefshme (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 të gjurmimit. 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.
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 (XCS-2875) Tipari i të dhënave të kostos në konfigurim të hartuar progmem varet nga funksioni i të dhënave të kostos në proem që po aktivizohet. Nëse veçoria cost-data-ipconfig-mapped-proem u aktivizua në mënyrë eksplicite duke përdorur opsionin dhe veçoria cost-data-inprogmem ishte çaktivizuar, hapi i lidhjes dështoi, pavarësisht nga një mesazh paralajmërues që thoshte se të dhënat kundër-in-config-mapped- funksioni proem ishte çaktivizuar automatikisht, gjë që nuk ishte plotësisht e saktë. Tipari const-data-in-config-mapped-proem tani është plotësisht i çaktivizuar në këtë situatë.
DFP ndryshon për të pasur qasje të saktë në NVMCTRL (XCS-2848) Kodi i fillimit të 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 IO SFR në faqen e përdorur nga përpiluesi const-data-in configmapped-proem veçori. 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ëzimin e flashit (XCS-2847) Është zbatuar një zgjidhje për një problem me veçorinë e pajisjes së hartës flash të raportuar në AVR128DA28/32/48/64 Silicon Errata (DS80000882). Veçoria e përpiluesit const-data-in-config-mapped-proem nuk do të zbatohet si parazgjedhje për pajisjet e prekura dhe ky ndryshim do të shfaqet në versionin 2.2.160 AVR-Ex_DFP.
Gabim ndërtimi me sinhf ose coshf (XCS-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 (XCS-2833) Përdorimi i atributit nopa me një funksion që e ka specifikuar emrin e asamblerit duke përdorur si () mesazhet e gabimit të shkaktuar nga asambleri. Ky kombinim nuk është i mundur.
Dështimi i funksionit variadik me argumente tregues (XCS-2755, XCS-2731) Funksionet me një numër të ndryshueshëm argumentesh presin që treguesit 24-bit (lloji _memo) të kalohen në listën e argumenteve të ndryshueshme kur funksioni kosto-data-në-proem ë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 kundër të dhënave në proem, të gjitha argumentet e treguesve 16-bit tani konvertohen në tregues 24-bitësh. Funksionet e bibliotekës strtoxxx dështojnë (XCS-2620) Kur funksioni const-data-in-proem u aktivizua, parametri i hyrjes 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 (XCS-2612) Përpiluesi tani do të lëshojë një gabim nëse funksioni kosto-in-proem është aktivizuar dhe adresa e një vargu literal është transmetuar në mënyrë eksplicite në hapësirën e adresës së të dhënave (duke hequr kualifikuesin const), p.sh.ample, (uint8 t *) “Përshëndetje Botë!”. 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 (XCS-2408) Objektet e pa inicializuara konst dhe konst v olatile nuk po vendoseshin në memorien e programit në pajisjet që hartojnë të gjithë ose një pjesë të kujtesës së programit të tyre në hapësirën e adresave të të dhënave. Për këto pajisje, objekte të tilla vendosen tani në kujtesën e programit, duke e bërë funksionimin e tyre në përputhje me pajisjet e tjera.
Versioni 2.39 (Lëshimi i sigurisë funksionale)
Asnjë.
Versioni 2.36
Gabim gjatë vonesës (XCS-2774) Ndryshimet e vogla në optimizimet e parazgjedhura të modalitetit të lirë penguan palosjen e vazhdueshme të shprehjeve të operandit në funksionet e integruara të vonesës, duke rezultuar në trajtimin e tyre si jokontakt dhe duke shkaktuar gabimin: ciklet _buil tin avr delay_ presin ac ompile konstante e numrit të plotë të kohës.
Versioni 2.35
Alokimi i vazhdueshëm duke përdorur _at (XCS-2653) Shpërndarja e vazhdueshme e vendeve të shumta të objekteve në një seksion me të njëjtin emër dhe përdorimi në () nuk funksionoi si duhet. Për shembullample: constchararrl [ ] at tri butte ((sect on(“misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; kosto char arr2[ ] at tri butte ((seksioni(.my s eke”))) = {Oxen, Ox FE }; duhet të kishte vendosur arr2 menjëherë pas aril.
Përcaktimi i adresave të fillimit të seksionit (XCS-2650) Opsioni -Wal, -section-start nuk po arrinte në heshtje të vendoste seksione 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 -Wl, -T.
Lidhësi prishet kur pushon (XCS-2647) Kur u aktivizua optimizimi -relaks 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.
Qasje e keqe EEPROM (XCS-2629) Rutina e bllokut leproma _read_ nuk funksionoi siç duhet në pajisjet Mega kur u aktivizua opsioni -monist-data-in-proem (që është gjendja e paracaktuar), duke rezultuar që memoria EEPROM të mos lexohej saktë.
Shpërndarje e pavlefshme memorie (XCS-2593, XCS-2651) Kur opsioni i lidhjes -Text ose -Tata (për shembullampështë specifikuar kalimi duke përdorur një opsion -Wl driver, teksti përkatës/origjina e rajonit të të dhënave është përditësuar; 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.
Kodi i pavlefshëm i ndërprerjes ATtiny (XCS-2465) Kur ndërtimi për pajisjet Tatin dhe optimizimet u çaktivizuan (-00), funksionet e ndërprerjes mund të kenë shkaktuar mesazhe të montimit të operandit jashtë rrezes.
Opsionet që nuk kalohen (XCS-2452) Kur përdorni opsionin -Wl me opsione të shumta lidhëse të ndara me presje, jo të gjitha opsionet e lidhjes po i kalonin lidhësit.
Gabim gjatë leximit indirekt të kujtesës së programit (XCS-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
Versioni 2.32
Qasja e dytë e bibliotekës dështon (XCS-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.
Versioni 2.31
Dështime të pashpjegueshme të përpiluesit (XCS-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.
Versioni 2.30
Etiketat globale të vendosura gabim pas skicimit (XCS-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 (XCS-2287) Përdorimi i opsionit -merlad 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 (XCS-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 i kushtueshëm (XCS-2271) Prototipet për startet () dhe funksionet e tjera nga mos specifikoni më kualifikuesin e kostos jo standarde në treguesit e vargut të kthyer kur funksioni -monist-data inprogmem është i çaktivizuar. Vini re se me pajisjet avrxmega3 dhe avertin, kjo veçori është e aktivizuar përgjithmonë.
Inicializuesit e humbur (XCS-2269) Kur më shumë se një variabël në një njësi përkthimi vendoset në një seksion (duke përdorur seksion ose atribut ((seksion))), dhe ndryshorja e parë e tillë ishte zero e inicializuar ose nuk kishte një inicializues, inicializuesit për variabla të tjerë në të njëjtën njësi përkthimi që ishin vendosur në të njëjtin seksion humbën.
Versioni 2.29 (Lëshimi i sigurisë funksionale)
Asnjë.
Versioni 2.20
Gabim me komandat e gjata (XCS-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ë pacaktuara (XCS-1920) Lidhësi AVR dështoi në caktimin e memories për seksionet e personalizuara të rodave kur ndërton për arkitekturat avrxmega3 dhe avrtiny, duke prodhuar potencialisht gabime të mbivendosjes së memories
Versioni 2.19 (Lëshimi i sigurisë funksionale)
Asnjë.
Versioni 2.10
Dështimet e zhvendosjes (XCS-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 (XCS-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 funksionaliteti (XCSE-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_ xcs _MODE_, _xcs VERSION, _xc dhe xcs nuk u përcaktuan automatikisht nga përpiluesi. Këto janë tani në dispozicion.
Versioni 2.05
Gabim i brendshëm i përpiluesit (XCS-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 (XCS-1800, XCS-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 (XCS-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 (XCS-1788) Në disa situata kur 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 (XCS-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 (XCS-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 (XCS-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 (0x80015 0) cp; Tani lëshohet një paralajmërim nëse haset një kod i tillë.
Dështimi në ekzekutimin kryesor (XCS-1780, XCS-1767, XCS-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 (XCS-1778, XCS-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.
Gabimi i segmentimit (XCS-1777) Një gabim segmentimi me ndërprerje është korrigjuar.
Rrëzimi i montimit (XCS-1761) Asambleri avr-as mund të ketë dështuar kur përpiluesi është ekzekutuar nën Ubuntu 18.
Objektet e pa pastruara (XCS-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 (XCS-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.
Korruptimi i kujtesës nga grumbulli (XCS-1748) Simboli heap_ start po vendosej gabimisht, duke rezultuar në mundësinë që variablat e zakonshëm të korruptohen nga grumbulli.
Gabim i zhvendosjes së lidhësit (XCS-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.
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
devijimet 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ë modalitetin operandi dhe që ka të ngjarë të mbeten në fuqi përgjithmonë.
Integrimi MPLAB X IDE
Integrimi MPLAB IDE Nëse Compiler do të përdoret nga MPLAB IDE, atëherë duhet të instaloni MPLAB IDE përpara se të instaloni Compiler.
Gjenerimi i kodit
Dështimi i alokimit të memories PA (XCS-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-IO (XCS-2872) Veçoria smart-io e përpiluesit do të gjenerojë kod të vlefshëm, por nën optimale për funksionin sprint nëse veçoria coast-data-in-proem është çaktivizuar ose nëse pajisja ka të gjithë blicin e saj të vendosur në memorien e të dhënave.
Edhe më pak inteligjente Smart-IO (XCS-2869) Veçoria smart-io e përpiluesit do të gjenerojë kod të vlefshëm, por jo optimal kur të përdoren opsionet -floe dhe -fno-buil tin.
Vendosja nënoptimale e të dhënave vetëm për lexim (XCS-2849) Lidhësi aktualisht nuk është në dijeni të seksioneve të memories APPCODE dhe APPDATA, as ndarjet [Jo-]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 të dhënave të gabuara rritet nëse aktivizohet veçoria coast-data-in-pragma, veçanërisht nëse aktivizohet edhe funksioni coast-data-in-config-mapped-proem. Këto veçori mund të çaktivizohen nëse kërkohet.
Objekti file porosia e përpunimit (XCS-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 (XCS-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 (XCS-2775) Për pajisjet ATA5700/2, regjistrat PHID0/1 përkufizohen vetëm si gjerësi 16 bit dhe jo 32 bit.
Ndërprerja e lidhjes gjatë thirrjes së simbolit (XCS-2758) Lidhësi mund të prishet nëse opsioni i drejtuesit -merlad përdoret kur kodi burim thërret një simbol që është përcaktuar duke përdorur opsionin e lidhjes -Wl, -defsym.
Inicializimi i gabuar (XCS-2679) Ekziston 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.
nisi gabimisht vendos bosh (XCS-2652) Në rastet kur një varg subjekti për konvertim sipas deklarimit () përmban atë që duket të jetë një numër me pikë lundruese në formatin eksponencial dhe ka një karakter të papritur pas një karakteri e, atëherë adresa boshe, nëse ofrohet, do të tregojë karakterin pas e-ja dhe jo vetë e-ja. Për shembullample: deklaruar (“hooey”, bosh); do të rezultojë në një tregues bosh drejt karakterit x.
Thirrje të këqija të funksioneve indirekte (XCS-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 (XCS-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 shembullample: stator ("Buf", &bosh); do të kthejë vlerën 0, jo 1.
Mesazhe të pasakta të këshilltarëve të stivës (XCS-2542, XCS-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 (XCS-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.
Objektet konst që nuk janë në memorien e programit (XCS-2408) Për projektet avrxmega3 dhe avertins, objektet konst të paidealizuar vendosen në memorien e të dhënave, edhe pse një paralajmërim sugjeron se ato janë vendosur në memorien e programit. Kjo nuk do të ndikojë në pajisjet që nuk kanë memorie programore të vendosur në hapësirën e memories së të dhënave, as nuk do të ndikojë në ndonjë objekt që është inicializuar.
Dalje e gabuar me shteg të pavlefshëm DFP (XCS-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 nuk u zbulua (XCS-1966) Përpiluesi nuk po zbulon mbivendosjen e memories së objekteve të bërë absolute në një adresë (nëpërmjet në ()) 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 _meme (XCS-1763) Funksionet e quajtura limbic float me një argument në hapësirën e adresës _memo 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: ktheni regFloatVar > memxFloatVar;
Implementimi limbik i kufizuar (AVRTC-731) Për produktet ATTiny4/5/9/10/20/40, zbatimi standard i bibliotekës C / Math në limbic është shumë i kufizuar ose jo 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 -relaks.
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 Të 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 gummite (), për shembullample.
MBËSHTETJA E KLIENTIT
file:///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ për një VR. htm
Dokumentet / Burimet
![]() |
Softuer përpilues MICROCHIP MPLAB XC8 C [pdfManuali i Përdoruesit MPLAB XC8 C, MPLAB XC8 C Softuer përpilues, Softuer përpilues, Softuer |