MIKROCHIP-LOGO

Shënime të lëshimit të MICROCHIP XC8 C për përpiluesin Versioni 2.45 për AVR MCU

MICROCHIP-XC8-C-Compiler-Version-2-45-Release-Notes-for-AVR-MCU-PRO

Informacioni i produktit

Përpiluesi MPLAB XC8 C është një mjet softuerësh që përdoret për shënjestrimin e pajisjeve Microchip AVR. Ai është krijuar për të përpiluar kodin C dhe për të gjeneruar të ekzekutueshëm files për këto pajisje. Versioni i përpiluesit që përmendet në këtë manual përdorimi është 2.45, me një datë zyrtare ndërtimi më 18 gusht 2023. Versioni i mëparshëm ishte 2.41, i ndërtuar më 8 shkurt 2023. Përpiluesi vjen me një Manual të Sigurisë Funksionale, i cili ofron informacion shtesë dhe udhëzime kur përdorni përpiluesit MPLAB XC me aplikacione funksionale të sigurisë. Ky manual përfshihet në paketën e dokumentacionit kur blini një licencë sigurie funksionale. Përpiluesi MPLAB XC8 C mbështet të gjitha pajisjet e disponueshme AVR MCU 8-bit në momentin e lëshimit. Ju mund t'i referoheni avr_chipinfo.html file në direktorinë e dokumenteve të përpiluesit për një listë të të gjitha pajisjeve të mbështetura dhe cilësimet e bitit të tyre të konfigurimit. Ekzistojnë botime të ndryshme të përpiluesit MPLAB XC8 në dispozicion. Edicioni i licencuar (PRO) ofron një nivel më të lartë optimizimi në krahasim me edicionin falas. Për të aktivizuar përpiluesin si një produkt të licencuar, duhet të blini një çelës aktivizimi. Megjithatë, versioni i palicencuar mund të përdoret për një kohë të pacaktuar pa licencë. Për aplikimet funksionale të sigurisë, disponohet një përpilues i sigurisë funksionale MPLAB XC8. Kërkon një licencë sigurie funksionale të blerë nga Microchip për aktivizim. Pasi të aktivizohet, të gjitha nivelet e optimizimit dhe veçoritë e përpiluesit mund të përdoren. Përpiluesi i Sigurisë Funksionale MPLAB XC gjithashtu mbështet Licencën e Serverit të Rrjetit. Informacione të hollësishme rreth instalimit, aktivizimit, llojeve të licencave dhe çështjeve të migrimit mund të gjenden në dokumentin Instalimi dhe Licencimi i MPLAB XC C C Compilers (DS50002059).

Udhëzimet e përdorimit të produktit

  1. Përpara se të përdorni softuerin MPLAB XC8 C Compiler, lexoni manualin e përdorimit për informacione të rëndësishme dhe udhëzime specifike për shënjestrimin e pajisjeve Microchip AVR.
  2. Nëse jeni duke përdorur përpiluesin për pajisjet PIC 8-bit, referojuni shënimeve të lëshimit të përpiluesit MPLAB XC8 C për dokumentin PIC.
  3. Sigurohuni që sistemi juaj operativ plotëson kërkesat e sistemit për ekzekutimin e përpiluesit. Binarët për macOS janë koduar dhe noterizuar. Serveri i licencës së rrjetit MPLAB XC është i disponueshëm për Microsoft Windows 10 dhe më lart, Ubuntu 18.04 e lart, dhe macOS 10.15 e lart. Vini re se serveri i licencës së rrjetit MPLAB XC nuk është testuar në këto sisteme operative.
  4. 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.
  5. Për të aktivizuar përpiluesin MPLAB XC8 C si një produkt të licencuar (PRO), blini një çelës aktivizimi. Kjo do të sigurojë një nivel më të lartë optimizimi në krahasim me versionin falas. Sidoqoftë, përpiluesi i palicencuar mund të operohet për një kohë të pacaktuar pa licencë.
  6. Nëse jeni duke përdorur përpiluesin e sigurisë funksionale MPLAB XC8 për aplikime funksionale të sigurisë, ai 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. Licenca e serverit të rrjetit mbështetet nga ky version i Përpiluesit të Sigurisë Funksionale MPLAB XC.
  7. Për udhëzime të hollësishme mbi instalimin, aktivizimin dhe licencimin e përpiluesit MPLAB XC8 C, referojuni dokumentit Instalimi dhe Licencimi i Kompiluesve MPLAB XC C (DS50002059).
  8. Nëse e përdorni përpiluesin sipas licencës së vlerësimit, 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.

Mbiview

Hyrje
Ky version i përpiluesit Microchip MPLAB® XC8 C përmban disa veçori të reja, rregullime të gabimeve dhe mbështetje për pajisje të reja.

Data e ndërtimit
Data zyrtare e ndërtimit të këtij versioni përpilues është 18 gusht 2023.

Versioni i mëparshëm
Versioni i mëparshëm i përpiluesit MPLAB XC8 C ishte 2.41, i ndërtuar më 8 shkurt 2023.

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ë mëposhtme: Botime profesionale të Microsoft® Windows® 10, Ubuntu® 18.04, macOS® 13.2 (Ventura) dhe Fedora 34. 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, duke përfshirë Windows Server, shpërndarje Linux, si Oracle® Enterprise Linux® dhe Red Hat® 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. Shih avr_chipinfo.html (në direktorinë e dokumenteve të përpiluesit) për një listë të të gjitha pajisjeve të mbështetura. Këta skedarë listojnë gjithashtu 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 .run (Linux) ose .app (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 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.

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.MICROCHIP-XC8-C-Compiler-Version-2-45-Release-Notes-for-AVR-MCU-1

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
Ju mund t'u bëni pyetje përdoruesve të tjerë të këtij produkti në Forumin XC8. 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:

Asnjë

  • 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, përdoruesit e MPLAB® XC8
  • Udhëzues për Inxhinierët e Embedded – AVR® MCU (DS50003108) ka informacione 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 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ë.

Versioni 2.45
Menaxheri i licencës universale (XC8-3175, XCLM-224) Versioni macOS i menaxherit të licencës i përdorur me përpiluesin tani është universal, duke ofruar mbështetje origjinale si për makinat me bazë Intel ashtu edhe për M1. Versioni Linux i menaxherit të licencës tani kërkon të paktën versionin 2.25 të glibc. Binarët universalë të Mac (XC8-3168, XC8-2951) Skedarët binare të përpiluesit për macOS tani janë universale, duke ofruar mbështetje vendase për makineritë me bazë Intel dhe M1. Përmasa të reduktuara të bibliotekës me pikë lundruese (XC8-3112, XC8-3071) Janë bërë përmirësime në funksionet e bibliotekës me pikë lëvizëse, duke përfshirë sinf() pow(), sqrt(), expf(), log1fp() dhe nextafterf() , të cilat shohin një reduktim në madhësinë e kodit për këto rutina. Mbështetja e mbështetjes së pajisjes së re është tani e disponueshme për pjesët e mëposhtme AVR: AVR16EA28, AVR16EA32, AVR16EA48, AVR32EA28, AVR32EA32, AVR32EA48, AVR16EB14, AVR16EB20, AVR16, dhe 28EBAVRA.

Versioni 2.41

  • Mbështetja e bootrow (XC8-3053) Përpiluesi do të vendosë përmbajtjen e çdo seksioni me një prefiks .bootrow në adresën 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ë udhëzimet e tepërta të kthimit në funksione 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, time_t është ndryshuar nga një tip i gjatë i gjatë në një tip të gjatë të panënshkruar, i cili jep përmirësime të madhësisë së kodit në disa funksione të lidhura me kohën, si p.sh. mktime().
  • Nop i ri (XC8-2946, 2945) Makroja NOP() është shtuar në . Kjo makro fut një instruksion nop-no-operation 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 instruksionet rcall një instruksion thirrjeje jmp që do të 'trampekzekutimi oline' në adresën e kërkuar, p.shampe:

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 (thirrje/thirrje) 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 – mno-pa-outline-calls, ose abstraksioni procedural mund të çaktivizohet tërësisht për një skedar objekti dhe ose funksion duke përdorur -mno-pa-on-file -mno-pa-on-funksion, përkatësisht, ose duke përdorur atributin nopa (specifier __nopa) në mënyrë selektive me funksione.
  • 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 Shoferi xc8-cc tani do të pranojë opsionin -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.

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ë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.
  • Harta e konfigurueshme e flashit 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 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 me mikroçip Të gjithë përpiluesit MPLAB XC do të ndajnë një Bibliotekë standarde të unifikuar me mikroçip, e cila tani është e disponueshme me këtë version të MPLAB XC8. Udhëzuesi i përdorimit të përpiluesit MPLAB® XC8 C për 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ë Unifiduar të Microchip. Vini re se disa funksione të përcaktuara më parë nga avr-libc nuk janë më të disponueshme. (Shih funksionalitetin e bibliotekës.)
  • Smart IO Si pjesë e bibliotekave të reja të unifikuara, funksionet IO në familjet printf dhe scanf tani janë të personalizuara në çdo ndërtim, bazuar në mënyrën se si këto funksione përdoren në program. Kjo mund të zvogëlojë 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 ata specifikues konvertimi të kërkuar nga thirrja. Më parë, përpiluesi do të bënte gjithmonë nuk ka supozime dhe sigurohuni që funksionet plotësisht funksionale të IO janë lidhur 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 smart IO funksione përdorimi i të cilave ë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 të personalizuara Më parë, opsioni -Wl,–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. Megjithatë, vini re se për seksione standarde, të tilla si .text, .bss ose .data, alokuesi më i mirë i përshtatjes do të ketë ende kontroll të plotë mbi vendosjen e tyre dhe opsioni nuk do të ketë efekt. Përdorni opsionin -Wl,-Tsection=addr, siç përshkruhet në udhëzuesin e përdoruesit.

Versioni 2.32

  • Udhëzimi i Stackit 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ë skedarin e hartës, i cili mund të kërkohet në mënyrën e zakonshme.
  • Mbështetja 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, AVR32DB48, AVRXNUMXDBXNUMX, AVRXNUMXBXNUMXBDD dhe AVRXNUMXDBXNUMX.
  • Mbështetja e pajisjes së tërhequr Mbështetja nuk ofrohet 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-init parandalon inicializimin e të dhënave dhe pastrimin e seksioneve bss. Ai funksionon duke shtypur daljen e simboleve do_clear_bss në skedarët e montimit, gjë që 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 spiranca -fsection-, 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 pajisjes së re është e disponueshme për pjesët e mëposhtme AVR: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DA28, AVR128DA32, AVR128DA48, AVR128DA64, AVRXNUMXDAXNUMX, AVRXNUMXDAXNUMX, AVRXNUMXDAXNUMX, AVRXNUMXDAXNUMX. BXNUMX, AVRXNUMXDBXNUMX dhe AVRXNUMXDBXNUMX.
  • Mbështetja e mbështetjes së pajisjes së tërhequr nuk është më e disponueshme për pjesët e mëposhtme AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616, ATA6617 dhe

Versioni 2.29 (Lëshimi i sigurisë funksionale)

  • Skedari i kokës për kompiluesit e integruar Për të siguruar që përpiluesi mund të përputhet me specifikimet e gjuhës si MISRA, , eshte perditesuar. Ky titull përmban prototipet për të gjitha funksionet e integruara, të tilla si __builtin_avr_nop() dhe __builtin_avr_delay_cycles() . Disa pajisje të integruara mund të mos jenë në përputhje me MISRA; këto mund të hiqen duke shtuar define __XC_STRICT_MISRA në linjën e komandës së përpiluesit. 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ë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.

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 nocodecov mund të përdoret për të përjashtuar funksionet pasuese nga analizat e mbulimit. Idealisht, pragma duhet të shtohet në fillim të skedarit për të përjashtuar të gjithë atë skedar nga analizat e mbulimit. Përndryshe, __atributi__((nocodecov)) mund të përdoret për të përjashtuar një funksion specifik nga analizat e mbulimit.
  • Skedarët e përshkrimit të pajisjes Një skedar i ri i pajisjes i quajtur avr_chipinfo.html ndodhet në direktorinë e dokumenteve të shpërndarjes së përpiluesit. Ky skedar 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/vlerës së biteve të konfigurimit për atë pajisje, me p.sh.amples.
  • Abstraksioni procedural Optimizimi i 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ë skedar objekti duke përdorur -mno-pa-on-file=fileemri , ose çaktivizohet për një funksion duke përdorur -mno-pa-on- funksion=funksion. Brenda kodit tuaj burimor, abstraksioni procedural mund të çaktivizohet për një funksion duke përdorur __attribute__((nopa)) me përkufizimin e funksionit, ose duke përdorur __nopa, i cili zgjerohet në __attribute__((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 skedarin avr_chipinfo.html (i përmendur më sipër) 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: AVR28DA128, AVR64DA128, AVR32DA128 dhe AVR48DA128.

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 konst 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 me konstancë 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.

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 skedar të bibliotekës PIC ose AVR dhe është kështu 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ë pranoi 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ë.

Versioni 2.45
Asnjë.

Versioni 2.41
U hoqën funksione të pasakta fma (XC8-2913) Biblioteka standarde C99 ( ) nuk llogariti një shtim shumëzues me saktësi të pafundme në një rrumbullakim të vetëm, por përkundrazi akumuloi gabime rrumbullakimi me secilin operacion. Këto funksione janë hequr nga biblioteka e ofruar.

Versioni 2.40
Asnjë.

Versioni 2.39 (Lëshimi i sigurisë funksionale)
Asnjë.

Versioni 2.36
Asnjë.

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ë vendoset. Standardi C nuk specifikon sjelljen e funksioneve kur tejkalohet kjo vlerë bazë.
  • Optimizimet e papërshtatshme të shpejtësisë Optimizimet procedurale të abstraksionit po aktivizoheshin kur zgjidheshin optimizimet e nivelit 3 (-O3). 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 -lprintf_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ë Unifiduar 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 të dhëna të tilla kur funksioni const-data-in-program-memory është i aktivizuar.

Versioni 2.32
Asnjë.

Versioni 2.31
Asnjë.

Versioni 2.30
Asnjë.

Versioni 2.29 (Lëshimi i sigurisë funksionale)
Asnjë.

Versioni 2.2
Ndryshuar paraqitjen e DFP-së Përpiluesi tani supozon një strukturë tjetër 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 Const në memorien e programit Vini re se objektet e kualifikuara sipas parazgjedhjes do të vendosen dhe 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 -mno-const-data-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 WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
  • Objektet dhe funksionet absolute Objektet dhe funksionet tani mund të vendosen në një adresë specifike në memorie duke përdorur specifikuesin CCI __at(adresa), p.sh.ampe:
    • #përfshi
      int foobar __at(0x800100);
      char __at (0x250) getID (int offset) { … }
      Argumenti i këtij specifikuesi 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.
  • Sintaksa 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. Specifikimi merr një numër ndërprerjeje, për shembullample: #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 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.45

  • Dështimi i licencës së roaming (XCLM-235) Licencat në roaming nuk funksionuan siç duhet në platformat Linux që përdorin versione glibc më vonë se 2.28.
  • Gabim i brendshëm me vargje strukturash (XC8-3069) Kur anëtarët e grupit shumëdimensional të një strukture përpunoheshin, kualifikuesi i hapësirës së adresave nuk u përhap saktë në grup. Kjo çoi në një mospërputhje në informacionin e kualifikimit të hapësirës së adresave dhe një gabim të brendshëm të përpiluesit. Kjo situatë është korrigjuar.
  • Shkrime të gabuara në transmetime të pa inicializuara (ML-353, XC8-3100) Nëse transmetimet standarde të daljes/gabimit nuk ishin konfiguruar në mënyrë eksplicite duke përdorur FDEV_SETUP_STREAM ose _init_stdout/_init_stderr, përpjekja për t'u shkruar atyre rezultonte në sjellje të papërcaktuar. Kjo ndikoi gjithashtu në shkrimet nga funksionet stdlib, të tilla si perror(). Çdo shkrim në këto transmetime përpara se ato të inicializohen tani do të shpërfillet.
  • Modifikues i pambështetur (XC8-2505) Biblioteka avr-libc nuk e mbështeti modifikuesin * në specifikuesit e konvertimit të stilit printf, për shembull.ample “%.*f”. Kjo tani mbështetet me prezantimin e Bibliotekës Standarde të Unifiduar të Mikroçipit.
  • Paralajmërime të shumëfishta të painitializuara (XC8-2409) Përpiluesi po lëshonte mesazhe paralajmëruese të shumta identike kur ndeshej me një grup konst që nuk ishte inicializuar. Mesazhi duhet të ishte lëshuar vetëm një herë, gjë që ndodh tani kur ndodh kjo situatë.

Versioni 2.41

  • Problemet e Dongle në Ventura (XC8-3088) Donglet e përdorur për të licencuar përpiluesin mund të mos ishin 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) të kërkuara kur përdoret zbatimi i thjeshtë i shpërndarjes dinamike të memories. Një tregues NULL tani do të kthehet dhe nuk do të vendoset në ENOMEM në situata të tilla.
  • U hoqën funksionet e pasakta të 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 secilin operacion. Këto funksione janë hequr nga biblioteka e ofruar.
  • Trajtimi i keq i konvertimit të vargut (XC8-2921, XC8-2652) Kur një 'sekuencë subjekti' për konvertim nga strtod() përmbante atë që dukej të ishte një numër me pikë lundruese në formatin eksponencial dhe kishte një karakter të papritur pas e/E karakteri, atëherë aty ku ishte dhënë endptr, iu caktua një adresë që e kishte atë të tregonte karakterin pas karakterit , 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 pjesën "xx" të vargut.

Versioni 2.40

  • Shumë i qetë (XC8-2876) Kur përdorte 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.
  • Funksioni i hartës nuk është i çaktivizuar siç thuhet në paralajmërim (XC8-2875) Tipari i programit të hartës së të dhënave konst-in-confg-mapped varet nga aktivizimi i veçorisë konst-data-në-progmem. Nëse veçoria const-data-in-cong-mapped-progmem u aktivizua në mënyrë eksplicite duke përdorur opsionin dhe veçoria const-data-in-progmem ishte çaktivizuar, hapi i lidhjes dështoi, pavarësisht një mesazhi paralajmërues që thoshte se konst-data-in -Konfig-mapped-progmem funksioni ishte çaktivizuar automatikisht, gjë që nuk ishte plotësisht e saktë. Funksioni i programit konst-të dhëna-në-konfig-mapped-mapped tani është plotësisht i çaktivizuar në këtë situatë.
  • Ndryshimet e DFP-së për të pasur qasje të saktë 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 IO SFR në faqen e përdorur nga veçoria e përpiluesit const-data-in-cong-mapped-progmem. 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-së për të shmangur hartën e flashit (XC8-2847) Është zbatuar një zgjidhje për një problem me veçorinë e pajisjes së hartës së blicit të raportuar në AVR128DA28/32/48/64 Silicon Errata (DS80000882). Funksioni i përpiluesit të programit const-data-in-cong-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 (XC8-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ë ndryshueshme kur veçoria konst-data-në-progmem është 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 const-data-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 veçoria const-in-progmem është aktivizuar dhe adresa e një vargu literal është transmetuar në mënyrë eksplicite në hapësirën e adresave të 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 pa inicializuar (XC8-2408) Objektet e pa inicializuara dhe të paqëndrueshme konst
    nuk po vendoseshin në memorien e programit në pajisjet që hartojnë të gjithë ose një pjesë të kujtesës së tyre programore 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.

Versioni 2.39 (Lëshimi i sigurisë funksionale)
Asnjë.

Versioni 2.36
Gabim gjatë vonesës (XC8-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 jokonstante dhe duke shkaktuar gabimin: __builtin_avr_delay_cycles pret një numër të plotë të kohës së përpilimit konstante.

Versioni 2.35

  • Shpërndarja e vazhdueshme duke përdorur __at (XC8-2653) Alokimi i vazhdueshëm i vendeve të shumëfishta të objekteve në një seksion me të njëjtin emër dhe duke përdorur __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) Opsioni -Wl,–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 me emër; megjithatë, nuk do të funksionojë për asnjë seksion standard, si p.sh. .text ose .bss, të cilat duhet të vendosen duke përdorur një opsion -Wl,-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.
  • No-falling-back (XC8-2646) Opsioni –nofallback nuk ishte zbatuar saktë dhe as i dokumentuar. 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.
  • Optimizimet e papërshtatshme të shpejtësisë (XC8-2637) Optimizimi i abstraksionit procedural po aktivizohej kur zgjidheshin optimizimet e nivelit 3 (-O3). Këto optimizime zvogëlojnë madhësinë e kodit në kurriz të shpejtësisë së kodit, kështu që nuk duhej të ishin kryer.
  • Qasje e keqe EEPROM (XC8-2629) Rutina eeprom_read_block nuk funksionoi siç duhet në pajisjet Xmega kur opsioni – mconst-data-in-progmem ishte aktivizuar (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 -Ttext ose -Tdata (për shembullampËshtë specifikuar kalimi duke përdorur opsionin e drejtuesit -Wl, origjina përkatëse e tekstit/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.
  • 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__((__signal__, __interrupt__)).
  • Kodi i pavlefshëm i ndërprerjes ATtiny (XC8-2465) Kur ndërtimi për pajisjet ATtiny dhe optimizimet u çaktivizuan (-O0), funksionet e ndërprerjes mund të kenë shkaktuar operand jashtë rrezes
  • Opsionet që nuk kalohen (XC8-2452) Kur përdorni opsionin -Wl me opsione të shumta lidhëse të ndara me presje, jo të gjitha opsionet e lidhjes po kalonin te lidhësi.
  • Gabim indirekt gjatë leximit të memories së programit (XC8-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
Dështon qasja e dytë e bibliotekës (XC8-2381) Thirrja e versionit Windows të arkivuesit të bibliotekës xc8-ar.exe për herë të dytë për të hyrë në një arkivë ekzistuese 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 (XC8-2367) Kur funksionojnë 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 (XC8-2299) Kodi i montimit 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ë bërë që lidhësi të prishet 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ërprerja kur optimizohen etiketat si vlera (XC8-2282) Kodi që përdor zgjerimin e gjuhës GNU C "Etiketat si vlera" mund të ketë shkaktuar prishjen e optimizimeve procedurale të abstraksionit, me një gabim të rregullimit të shtrirjes së diapazonit.
  • Jo aq konst (XC8-2271) Prototipet për strstr() dhe funksione të tjera nga mos specifikoni më kualifikuesin jo standard në treguesit e vargut të kthyer kur veçoria const -mconst-data-in-progmem ë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ë ndryshore 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ë u vendosën në të njëjtin seksion humbën.

Versioni 2.29 (Lëshimi i sigurisë funksionale)
Asnjë.

Versioni 2.20

  • Gabim me komandat e gjata (XC8-1983) Kur përdorni një objektiv AVR, përpiluesi mund të ketë ndalur me një gabim skedari që nuk u gjet, nëse linja e komandës ishte jashtëzakonisht e madhe dhe përmbante karaktere të veçanta si thonjëza, kthesa të kundërta, etj.
  • Seksioni i rodatave të pacaktuara (XC8-1920) Lidhësi AVR dështoi të caktojë memorie për seksionet e personalizuara të rodave kur ndërton për arkitekturat avrxmega3 dhe avrtiny, duke prodhuar potencialisht gabime të mbivendosjes së kujtesës

Versioni 2.19 (Lëshimi i sigurisë funksionale)
Asnjë.

Versioni 2.10

  • Dështimet e zhvendosjes (XC8-1891) Alokuesi më i mirë i përshtatjes ishte lënia e 'vrimave' të memories 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 funksionaliteti (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.
  • Makrot që mungojnë Makrot e paraprocesorit _XC8_MODE_, __XC8_VERSION, __XC dhe __XC8 të përcaktuara automatikisht nga përpiluesi. Këto janë tani në dispozicion.

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.
  • Memoria 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 main() nuk u arrit kurrë.
  • Informacion i pasaktë i kujtesës (XC8-1787) Për pajisjet avrxmega3 dhe avrtiny, programi me madhësi 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 memories së programit (XC8-1783) Projektet e përpiluara për pajisjet me memorie programore të vendosur 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 atribut() ndërmjet emrit të treguesit dhe llojit të çreferencuar, p.sh.ample, char * __at(0x800150) cp; Tani lëshohet një paralajmërim nëse haset një kod i tillë.
  • Dështimi për të ekzekutuar main (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 kryesor të fillimit të kohës së ekzekutimit, përpara se të arrihet ).
  • Gabim siguresash me pajisje të vogla (XC8-1778, XC8-1742) Pajisjet attiny4/5/9/10/20/40 kishin një gjatësi të gabuar të siguresave të specifikuara në skedarët e tyre të kokës që çojnë në gabime lidhëse kur përpiqeshin të ndërtonin kodin që përcakton siguresat .
  • Gabimi i segmentimit (XC8-1777) Është korrigjuar një gabim segmentimi me ndërprerje.
  • Dëmtimi i Assemblerit (XC8-1761) Asambleri avr-as mund të ketë dështuar kur përpiluesi është ekzekutuar nën Ubuntu 18.
  • Objektet e pa pastruara (XC8-1752) Objektet e kohëzgjatjes së ruajtjes statike të panicializuara mund të mos jenë pastruar nga kodi i nisjes së kohës së ekzekutimit.
  • Specifikimi kundërshtues i pajisjes u shpërfill (XC8-1749) Përpiluesi nuk po krijonte një gabim kur u përdorën opsione të shumta të specifikimit të pajisjes dhe treguan pajisje të ndryshme.
  • Korrupsioni i kujtesës nga grumbulli (XC8-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 (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.

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ë.

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.
  • Informacioni i korrigjimit të vargjeve (XC8-3157) Informacioni i korrigjimit të prodhuar nga përpiluesi nuk përcjell me saktësi llojin e objektit për vargjet në hapësirën e adresave __memx. Kjo do të parandalojë vëzhgimin e objektit në një IDE.

Gjenerimi i kodit

  • Segfault with seksion-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
  • Informacionet e korrigjimit janë jashtë sinkronizimit (XC8-2948) Kur optimizimet e relaksimit të lidhësit zvogëlojnë udhëzimet (për p.sh.ampudhëzimet e thirrjes për të thirrur), linja burimore për hartëzimin e adresës mund të mos qëndrojë 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 të shpërndarjes së 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ërshtatë hapësirë.
  • Smart-IO jo aq i zgjuar (XC8-2872) Veçoria smart-io e përpiluesit do të gjenerojë kod të vlefshëm, por jo optimal për funksionin snprintf nëse veçoria const-data-in-progmem është çaktivizuar ose nëse pajisja i ka të gjitha  flash i fiksuar në memorien e të dhënave.
  • Edhe më pak inteligjente Smart-IO (XC8-2869) Veçoria smart-io e përpiluesit do të gjenerojë kod të vlefshëm, por nën-optimal kur përdoren të dyja opsionet -flto dhe -fno-builtin.
  • Vendosja nënoptimale 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 të dhënave të gabuara rritet nëse aktivizohet veçoria const-data-in-progmem, veçanërisht nëse aktivizohet edhe veçoria const-data-in-confg-mapped-progmem. Këto veçori mund të çaktivizohen nëse kërkohet.
  • Rendi i përpunimit të skedarëve të objekteve (XC8-2863) Rendi në të cilin skedarët e objekteve do të përpunohen nga lidhësi mund të ndryshojë në bazë të përdorimit të optimizimeve të abstraksionit procedural (opsioni -mpa). Kjo do të ndikonte vetëm në kodin i cili përcakton funksione të dobëta nëpër module të shumta.
  • Gabim lidhës me absolute (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ësi.
  • ID-të e zgjimit të shkurtër (XC8-2775) Për pajisjet ATA5700/2, regjistrat PHID0/1 përcaktohen vetëm si gjerësi 16 bit dhe jo 32 bit.
  • Ndërprerja e lidhjes kur thirret simboli (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 – Wl,–defsym.
  • Inicializimi i pasaktë (XC8-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 variablat do të aksesohen në kohën e ekzekutimit.
  • Thirrjet e këqija të funksioneve indirekte (XC8-2628) Në disa raste, thirrjet e funksionit 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 float hexadecimal (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 shembullample: strtof(“0x1”, &endptr); do të kthejë vlerën 0, jo 1.
  • Mesazhimi i pasaktë i këshilltarit 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 nëpërmjet 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 ekziston një skedar 'specifikues' 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' skedar, i cili më pas mund të çojë në një dalje të pavlefshme. Skedarët 'speci' mund të mos jenë të përditësuar me DFP-të e shpërndara dhe ishin menduar për t'u përdorur 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 __section() dhe që janë të lidhur me të njëjtën adresë.
  • Dështimi me funksionet e bibliotekës dhe funksionet __memx (XC8-1763) të quajtura libgcc oat me një argument në hapësirën e adresës __memx mund të dështojë. 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;
  • Zbatimi i kufizuar i 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 kujtesës 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 -mrelax.
  • Kufizimet e hapësirës së emrave (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 special.
  • Zonat kohore The funksionet e bibliotekës supozojnë GMT dhe nuk mbështesin zonat lokale kohore, kështu që localtime() do të kthehet në të njëjtën kohë si gmtime(), për shembullample.

Dokumentet / Burimet

Shënime të lëshimit të MICROCHIP XC8 C për përpiluesin Versioni 2.45 për AVR MCU [pdfUdhëzime
AVR MCU, XC8 C, XC8 C përpilues Versioni 2.45 Shënime Publikimi për AVR MCU, Versioni përpilues 2.45 Shënime Publikimi për AVR MCU, Version 2.45 Shënime Publikimi për AVR MCU, Shënime Publikimi për AVR MCU, Shënime për MCU, AVRCU

Referencat

Lini një koment

Adresa juaj e emailit nuk do të publikohet. Fushat e kërkuara janë shënuar *