MICROCHIP XC8 C kompilatora versijas 2.45 piezīmes par AVR MCU laidienu

Informācija par produktu
MPLAB XC8 C Compiler ir programmatūras rīks, ko izmanto Microchip AVR ierīču mērķauditorijas atlasei. Tas ir paredzēts C koda apkopošanai un izpildāmā faila ģenerēšanai files šīm ierīcēm. Šajā lietotāja rokasgrāmatā minētā kompilatora versija ir 2.45, un tās oficiālais izveides datums ir 18. gada 2023. augusts. Iepriekšējā versija bija 2.41, kas izstrādāta 8. gada 2023. februārī. Kompilatoram ir pievienota funkcionālās drošības rokasgrāmata, kurā sniegta papildu informācija. un vadlīnijas, izmantojot MPLAB XC kompilatorus ar funkcionālās drošības lietojumprogrammām. Iegādājoties funkcionālās drošības licenci, šī rokasgrāmata ir iekļauta dokumentācijas komplektā. MPLAB XC8 C kompilators atbalsta visas pieejamās 8 bitu AVR MCU ierīces izlaišanas brīdī. Varat skatīt vietni avr_chipinfo.html file kompilatora dokumentu direktorijā, lai skatītu visu atbalstīto ierīču sarakstu un to konfigurācijas bitu iestatījumus. Ir pieejami dažādi MPLAB XC8 kompilatora izdevumi. Licencētais (PRO) izdevums nodrošina augstāku optimizācijas līmeni salīdzinājumā ar bezmaksas versiju. Lai aktivizētu kompilatoru kā licencētu produktu, jums jāiegādājas aktivizācijas atslēga. Taču nelicencēto versiju bez licences var izmantot bezgalīgi. Funkcionālās drošības lietojumiem ir pieejams MPLAB XC8 Functional Safety kompilators. Lai to aktivizētu, ir nepieciešama funkcionālās drošības licence, kas iegādāta no Microchip. Pēc aktivizēšanas var izmantot visus optimizācijas līmeņus un kompilatora funkcijas. MPLAB XC funkcionālās drošības kompilators atbalsta arī tīkla servera licenci. Sīkāka informācija par instalēšanu, aktivizēšanu, licenču veidiem un migrācijas problēmām ir atrodama dokumentā MPLAB XC C kompilatoru instalēšana un licencēšana (DS50002059).
Produkta lietošanas instrukcijas
- Pirms MPLAB XC8 C Compiler programmatūras palaišanas izlasiet lietotāja rokasgrāmatu, lai iegūtu svarīgu informāciju un norādījumus, kas attiecas uz Microchip AVR ierīcēm.
- Ja izmantojat kompilatoru 8 bitu PIC ierīcēm, skatiet MPLAB XC8 C kompilatora izlaiduma piezīmes par PIC dokumentu.
- Pārliecinieties, vai jūsu operētājsistēma atbilst sistēmas prasībām kompilatora palaišanai. MacOS binārie faili ir parakstīti ar kodu un notariāli apstiprināti. MPLAB XC tīkla licences serveris ir pieejams operētājsistēmai Microsoft Windows 10 un jaunākai versijai, Ubuntu 18.04 un jaunākai versijai un macOS 10.15 un jaunākai versijai. Ņemiet vērā, ka MPLAB XC tīkla licences serveris nav pārbaudīts šajās operētājsistēmās.
- MPLAB XC tīkla licences serveri var palaist atbalstītās OS virtuālajās mašīnās, izmantojot virtuālās mašīnas licenci tīkla licencēm (SW006021-VM). Visas MPLAB XC tīkla servera 32 bitu versijas tiek pārtrauktas, sākot no versijas 3.00.
- Lai aktivizētu MPLAB XC8 C kompilatoru kā licencētu (PRO) produktu, iegādājieties aktivizācijas atslēgu. Tas nodrošinās augstāku optimizācijas līmeni salīdzinājumā ar bezmaksas versiju. Tomēr nelicencētu kompilatoru bez licences var darbināt bezgalīgi.
- Ja funkcionālās drošības lietojumprogrammām izmantojat MPLAB XC8 Functional Safety Compiler, tas ir jāaktivizē ar funkcionālās drošības licenci, kas iegādāta no Microchip. Kompilators nedarbosies bez šīs licences. Kad tas ir aktivizēts, varat izvēlēties jebkuru optimizācijas līmeni un izmantot visas kompilatora funkcijas. Šajā MPLAB XC funkcionālās drošības kompilatora laidienā tiek atbalstīta tīkla servera licence.
- Detalizētus norādījumus par MPLAB XC8 C kompilatora instalēšanu, aktivizēšanu un licencēšanu skatiet dokumentā MPLAB XC C kompilatoru instalēšana un licencēšana (DS50002059).
- Ja izmantojat kompilatoru saskaņā ar novērtēšanas licenci, apkopošanas laikā saņemsit brīdinājumu, kad būsit 14 dienu laikā pēc novērtēšanas perioda beigām. Tas pats brīdinājums tiek sniegts, ja esat 14 dienu laikā pēc HPA abonementa beigām.
Beigāsview
Ievads
Šajā Microchip MPLAB® XC8 C kompilatora laidienā ir iekļautas vairākas jaunas funkcijas, kļūdu labojumi un atbalsts jaunām ierīcēm.
Būvēšanas datums
Šīs kompilatora versijas oficiālais izveides datums ir 18. gada 2023. augusts.
Iepriekšējā versija
Iepriekšējā MPLAB XC8 C kompilatora versija bija 2.41, kas tika izveidota 8. gada 2023. februārī.
Funkcionālās drošības rokasgrāmata
Funkcionālās drošības rokasgrāmata MPLAB XC kompilatoriem ir pieejama dokumentācijas pakotnē, kad iegādājaties funkcionālās drošības licenci.
Komponentu licences un versijas
MPLAB XC8 C kompilators AVR MCU rīkiem ir rakstīts un izplatīts saskaņā ar GNU vispārējo publisko licenci (GPL), kas nozīmē, ka tā pirmkods ir brīvi izplatīts un pieejams sabiedrībai. GNU GPL rīku avota kodu var lejupielādēt atsevišķi no Microchip's webvietne. Jūs varat izlasīt GNU GPL vietnē file nosaukts atrodas jūsu instalēšanas direktorija apakšdirektorijā. Vispārēja diskusija par GPL pamatā esošajiem principiem ir atrodama šeit. Galvenes atbalsta kods files, saistīšanas skripti un izpildlaika bibliotēkas ir patentēts kods, un uz tiem neattiecas GPL. Šis kompilators ir GCC versijas 5.4.0, binutils versijas 2.26 implementācija un izmanto avr-libc versiju 2.0.0.
Sistēmas prasības
MPLAB XC8 C kompilators un tā izmantotā licencēšanas programmatūra ir pieejama dažādām operētājsistēmām, tostarp 64 bitu versijām: Microsoft® Windows® 10 profesionālie izdevumi, Ubuntu® 18.04, macOS® 13.2 (Ventura) un Fedora 34. Binārie faili operētājsistēmai Windows ir parakstīti ar kodu. MacOS binārie faili ir parakstīti ar kodu un notariāli apstiprināti. MPLAB XC tīkla licences serveris ir pieejams dažādām 64 bitu operētājsistēmām, tostarp Microsoft Windows 10 un jaunākām versijām; Ubuntu 18.04 un jaunākas versijas; vai macOS 10.15 un jaunākas versijas. Serveris var darboties arī dažādās citās operētājsistēmās, tostarp Windows Server, Linux distribūcijās, piemēram, Oracle® Enterprise Linux® un Red Hat® Enterprise Linux, kā arī vecākajās atbalstīto operētājsistēmu versijās. Tomēr MPLAB XC tīkla licences serveris nav pārbaudīts šajās operētājsistēmās. MPLAB XC tīkla licences serveri var palaist atbalstītās OS virtuālajās mašīnās, izmantojot virtuālās mašīnas licenci tīkla licencēm (SW006021-VM). Visas MPLAB XC tīkla servera 32 bitu versijas tiek pārtrauktas, sākot no versijas 3.00.
Atbalstītās ierīces
Šis kompilators atbalsta visas izlaišanas brīdī pieejamās 8 bitu AVR MCU ierīces. Visu atbalstīto ierīču sarakstu skatiet vietnē avr_chipinfo.html (kompilatora dokumentu direktorijā). Šajos failos ir arī norādīti katras ierīces konfigurācijas bitu iestatījumi.
Izdevumi un licenču jauninājumi
MPLAB XC8 kompilatoru var aktivizēt kā licencētu (PRO) vai nelicencētu (bezmaksas) produktu. Lai licencētu kompilatoru, ir jāiegādājas aktivizācijas atslēga. Licence nodrošina augstāku optimizācijas līmeni salīdzinājumā ar bezmaksas produktu. Nelicencētu kompilatoru bez licences var darbināt neierobežotu laiku. MPLAB XC8 Functional Safety kompilators ir jāaktivizē ar funkcionālās drošības licenci, kas iegādāta no Microchip. Kompilators nedarbosies bez šīs licences. Kad tas ir aktivizēts, varat izvēlēties jebkuru optimizācijas līmeni un izmantot visas kompilatora funkcijas. Šis MPLAB XC funkcionālās drošības kompilatora laidiens atbalsta tīkla servera licenci. Informāciju par licences veidiem un kompilatora ar licenci instalēšanu skatiet dokumentā MPLAB XC C kompilatoru (DS50002059) instalēšana un licencēšana.
Uzstādīšana un aktivizēšana
Skatiet arī sadaļas Migrācijas problēmas un ierobežojumi, lai iegūtu svarīgu informāciju par jaunāko licenču pārvaldnieku, kas iekļauts šajā kompilatorā. Ja izmantojat MPLAB IDE, pirms šī rīka instalēšanas noteikti instalējiet jaunāko MPLAB X IDE versiju 5.0 vai jaunāku. Pirms kompilatora instalēšanas aizveriet IDE. Palaidiet .run (Linux) vai .app (macOS) kompilatora instalēšanas lietojumprogrammu, piemēram, XC8-1.00.11403-windows.exe un izpildiet ekrānā redzamos norādījumus. Ieteicams izmantot noklusējuma instalācijas direktoriju. Ja izmantojat Linux, jums ir jāinstalē kompilators, izmantojot termināli un no root konta. Instalējiet, izmantojot macOS kontu ar administratora privilēģijām. Aktivizācija tagad tiek veikta atsevišķi no instalēšanas. Papildinformāciju skatiet dokumentā Licenču pārvaldnieks MPLAB® XC C kompilatoriem (DS52059). Ja izvēlaties palaist kompilatoru saskaņā ar novērtēšanas licenci, tagad kompilācijas laikā saņemsit brīdinājumu, kad būsiet 14 dienu laikā pēc novērtēšanas perioda beigām. Tas pats brīdinājums tiek sniegts, ja esat 14 dienu laikā pēc HPA abonementa beigām. XC tīkla licences serveris ir atsevišķs instalētājs, un tas nav iekļauts viena lietotāja kompilatora instalētājā. XC License Manager tagad atbalsta peldošā tīkla licenču viesabonēšanu. Šī funkcija ir paredzēta mobilo sakaru lietotājiem, un tā ļauj peldošai licencei uz īsu laiku izslēgt tīklu. Izmantojot šo funkciju, varat atvienoties no tīkla un joprojām izmantot savu MPLAB XC kompilatoru. Lai uzzinātu vairāk par šo funkciju, skatiet XCLM instalēšanas doc mapi. MPLAB X IDE ietver licenču logu (Rīki > Licences), lai vizuāli pārvaldītu viesabonēšanu.
Instalēšanas problēmu risināšana
Ja rodas grūtības, instalējot kompilatoru kādā no Windows operētājsistēmām, izmēģiniet tālāk norādītos ieteikumus.
- Palaidiet instalēšanu kā administrators.
- Iestatiet instalēšanas programmas atļaujas uz “Pilna kontrole”. (Ar peles labo pogu noklikšķiniet uz faila, atlasiet cilni Rekvizīti, Drošība, atlasiet lietotāju, rediģējiet.)
- Iestatiet pagaidu mapes atļaujas uz “Pilna kontrole”.
Lai noteiktu pagaidu mapes atrašanās vietu, komandā Palaist ierakstiet %temp% (Windows logotipa taustiņš + R). Tas atvērs failu pārlūka dialoglodziņu, kurā tiks parādīts šis direktorijs, un ļaus jums noteikt šīs mapes ceļu.
Kompilatora dokumentācija
Kompilatora lietotāja rokasgrāmatas var atvērt no HTML lapas, kas tiek atvērta jūsu pārlūkprogrammā, noklikšķinot uz zilās palīdzības pogas MPLAB X IDE informācijas panelī, kā norādīts ekrānuzņēmumā.
Ja veidojat 8 bitu AVR mērķiem, MPLAB® XC8 C kompilatora lietotāja rokasgrāmatā AVR® MCU ir informācija par kompilatora opcijām un līdzekļiem, kas ir piemērojami šai arhitektūrai.
Klientu atbalsts
Jūs varat uzdot jautājumus citiem šī produkta lietotājiem XC8 forumā. Microchip atzinīgi vērtē kļūdu ziņojumus, ieteikumus vai komentārus par šo kompilatora versiju. Lūdzu, novirziet visus kļūdu ziņojumus vai funkciju pieprasījumus, izmantojot atbalsta sistēmu.
Dokumentācijas atjauninājumi
Lai iegūtu tiešsaistes un jaunākās MPLAB XC8 dokumentācijas versijas, lūdzu, apmeklējiet Microchip tiešsaistes tehnisko dokumentāciju webvietne.
Jauna vai atjaunināta AVR dokumentācija šajā laidienā:
Nav
- AVR® GNU Toolchain uz MPLAB® XC8 migrācijas rokasgrāmatā ir aprakstītas izmaiņas avota kodā un izveides opcijās, kas varētu būt nepieciešamas, ja nolemjat migrēt C balstītu projektu no AVR 8 bitu GNU Toolchain uz Microchip MPLAB XC8 C kompilatoru.
- Mikročipu vienotās standarta bibliotēkas uzziņu rokasgrāmatā ir aprakstīta Microchip vienotās standarta bibliotēkas definēto funkciju darbība un saskarne ar tām, kā arī bibliotēkas veidu un makro paredzētais lietojums. Daļa šīs informācijas iepriekš bija ietverta MPLAB® XC8 C kompilatora lietotāja rokasgrāmatā AVR® MCU. Ierīcei raksturīgā bibliotēkas informācija joprojām ir ietverta šajā kompilatora rokasgrāmatā.
- Ja jūs tikko sākat darbu ar 8 bitu ierīcēm un MPLAB XC8 C kompilatoru, MPLAB® XC8 lietotāja
- Rokasgrāmata iegultajiem inženieriem — AVR® MCU (DS50003108) satur informāciju par projektu iestatīšanu MPLAB X IDE un koda rakstīšanu pirmajam MPLAB XC8 C projektam. Šī rokasgrāmata tagad tiek izplatīta kopā ar kompilatoru.
- Hexmate lietotāja rokasgrāmata ir paredzēta tiem, kas izmanto Hexmate kā atsevišķu lietojumprogrammu.
Kas jauns
Tālāk ir norādītas jaunas AVR mērķa funkcijas, kuras kompilators tagad atbalsta. Versijas numurs apakšvirsrakstā norāda pirmo kompilatora versiju, kas atbalsta turpmākos līdzekļus.
Versija 2.45
Universālais licenču pārvaldnieks (XC8-3175, XCLM-224) Kopā ar kompilatoru izmantotā licenču pārvaldnieka macOS versija tagad ir universāla, piedāvājot vietējo atbalstu gan Intel, gan M1 iekārtām. Licenču pārvaldnieka Linux versijai tagad ir nepieciešama vismaz glibc versija 2.25. Mac universālie binārie faili (XC8-3168, XC8-2951) Kompilatoru binārie faili operētājsistēmai MacOS tagad ir universāli, piedāvājot vietējo atbalstu gan Intel, gan M1 iekārtām. Samazināti peldošā komata bibliotēkas izmēri (XC8-3112, XC8-3071) Ir veikti uzlabojumi peldošā komata bibliotēkas funkcijās, tostarp sinf() pow(), sqrt(), expf(), log1fp() un nextafterf() , kurās šīm rutīnām tiek samazināts koda lielums. Jaunu ierīču atbalsts Tagad ir pieejams atbalsts šādām AVR daļām: AVR16EA28, AVR16EA32, AVR16EA48, AVR32EA28, AVR32EA32, AVR32EA48, AVR16EB14, AVR16EB20, AVR16EB28 un AVR16EB32.
Versija 2.41
- Bootrow atbalsts (XC8-3053) Kompilators ievietos visu sadaļu saturu ar prefiksu .bootrow adresē 0x860000 HEX failā. Šīs sadaļas tiek izmantotas BOOTROW atmiņai, kas paredzēta atslēgu un citas drošas informācijas glabāšanai, kurai jābūt pieejamai tikai sāknēšanas ielādētājam.
- Liekas atgriešanas likvidēšana (XC8-3048) Kompilators tagad novērsīs liekās ret instrukcijas funkcijās ar lēcienu, kad tiek izmantoti pielāgoti linkera skripti. Šī optimizācija ir līdzīga iepriekš veiktajai, taču tagad tā tiek veikta visās bāreņu sadaļās, pat ja tiek izmantots pielāgots saites skripts un netiek izmantota vispiemērotākā piešķiršanas shēma.
- Laika tipa maiņa (XC8-2982, 2932) C99 standarta bibliotēkas tips time_t ir mainīts no long long uz neparakstītu garo tipu, kas nodrošina koda lieluma uzlabojumus dažās ar laiku saistītās funkcijās, piemēram, mktime().
- Jauns nop (XC8-2946, 2945) Makro NOP() ir pievienots . Šis makro izvadā ievieto nop no-operation instrukciju.
- Atjauninājums uz XCLM (XC8-2944) Licenču pārvaldnieks, kas tiek izmantots ar kompilatoru, ir atjaunināts, un tagad tas ir atsaucīgāks, pārbaudot kompilatora licences informāciju.
- Trampolinned calls (XC8-2760) Kompilators tagad var veikt garas formas izsaukuma instrukciju aizstāšanu ar īsākiem relatīviem izsaukumiem, ja instrukciju relatīvās formas parasti atrodas ārpus to mērķa diapazona. Šādā situācijā kompilators mēģinās aizstāt ar rcall instrukcijām jmp izsaukuma instrukciju, kasampoline' izpildi uz vajadzīgo adresi, piemample:
Versija 2.40
- Jaunu ierīču atbalsts Tagad ir pieejams atbalsts šādām AVR daļām: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, A64 un AVR32EA64.
- Uzlabota procesuālā abstrakcija Procedūras abstrakcijas (PA) optimizācijas rīks ir uzlabots, lai varētu ieskicēt kodu, kas satur funkcijas izsaukšanas instrukciju (call/rccal). Tas notiks tikai tad, ja kaudze netiek izmantota argumentu nodošanai funkcijai vai atgriešanas vērtības iegūšanai no funkcijas. Stacks tiek izmantots, izsaucot funkciju ar mainīgu argumentu sarakstu vai izsaucot funkciju, kas aizņem vairāk argumentu, nekā šim nolūkam ir paredzēti reģistri. Šo līdzekli var atspējot, izmantojot opciju – mno-pa-outline-calls, vai arī procesuālo abstrakciju var pilnībā atspējot objekta failam un vai funkcijai, izmantojot -mno-pa-on-file -mno-pa-on-function, attiecīgi, vai izmantojot nopa atribūtu (__nopa specifikācija) selektīvi ar funkcijām.
- Koda pārklājuma makro Kompilators tagad definē makro __CODECOV, ja ir norādīta derīga opcija -mcodecov.
- Atmiņas rezervēšanas iespēja xc8-cc draiveris tagad pieņems opciju -mreserve=space@start:end, veidojot AVR mērķiem. Šī opcija rezervē noteikto atmiņas diapazonu datu vai programmas atmiņas telpā, neļaujot saitītājam šajā apgabalā ievietot kodu vai objektus.
- Viedāks viedā IO Smart IO funkcijās ir veikti vairāki uzlabojumi, tostarp vispārīgi uzlabojumi printf pamata kodā, %n reklāmguvumu specifikācijas apstrāde kā neatkarīgs variants, saistīšana vararg pop rutīnās pēc pieprasījuma, izmantojot īsākus datu tipus, ja iespējams apstrādei. IO funkcijas argumenti un faktoringa kopīgs kods lauka platumā un precīzā apstrādē. Tas var radīt ievērojamu koda un datu ietaupījumu, kā arī palielināt IO izpildes ātrumu.
Versija 2.39 (funkcionālās drošības izlaidums)
Tīkla servera licence Šis MPLAB XC8 funkcionālās drošības kompilatora laidiens atbalsta tīkla servera licenci.
Versija 2.36
Nav.
Versija 2.35
- Jaunu ierīču atbalsts Atbalsts ir pieejams šādām AVR daļām: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 un AVR64DD32.
- Uzlabota konteksta pārslēgšana Jaunā opcija -mcall-isr-prologues maina to, kā pārtraukuma funkcijas saglabā reģistrus ievadīšanas laikā un kā šie reģistri tiek atjaunoti, kad pārtraukuma rutīna beidzas. Tas darbojas līdzīgi kā opcija -mcall-prologues, bet ietekmē tikai pārtraukšanas funkcijas (ISR).
- Vēl labāka konteksta pārslēgšana Jaunā opcija -mgas-isr-prologues kontrolē konteksta pārslēgšanas kodu, kas ģenerēts mazām pārtraukumu pakalpojumu rutīnām. Ja šī funkcija ir iespējota, montētājs skenē ISR, lai noteiktu reģistra lietojumu, un tikai nepieciešamības gadījumā saglabās šos izmantotos reģistrus.
- Konfigurējama zibatmiņas kartēšana Dažām AVR DA un AVR DB saimes ierīcēm ir SFR (piem., FLMAP), kas nosaka, kura programmas atmiņas 32k sadaļa tiks kartēta datu atmiņā. Jauno opciju mconst-data-in-config-mapped-progmem var izmantot, lai savienotājs ievietotu visus kvalificētos datus vienā 32k sadaļā un automātiski inicializētu attiecīgo SFR reģistru, lai nodrošinātu, ka šie dati tiek kartēti datu atmiņas telpā. , kur tai varēs piekļūt efektīvāk.
- Mikročipu vienotās standarta bibliotēkas Visiem MPLAB XC kompilatoriem būs kopīga Microchip vienotā standarta bibliotēka, kas tagad ir pieejama ar šo MPLAB XC8 laidienu. MPLAB® XC8 C kompilatora lietotāja rokasgrāmatā AVR® MCU vairs nav iekļauta šo standarta funkciju dokumentācija. Šo informāciju tagad var atrast Microchip vienotās standarta bibliotēkas uzziņu rokasgrāmatā. Ņemiet vērā, ka dažas funkcijas, ko iepriekš definēja avr-libc, vairs nav pieejamas. (Skatiet Bibliotēkas funkcionalitāti.)
- Smart IO Kā daļa no jaunajām vienotajām bibliotēkām IO funkcijas printf un scanf saimēs tagad tiek pielāgotas katrā būvniecībā, pamatojoties uz to, kā šīs funkcijas tiek izmantotas programmā. Tas var ievērojami samazināt programmas izmantotos resursus.
- Viedās IO palīdzības opcija Analizējot viedo IO funkciju (piemēram, printf() vai scanf() izsaukumus, kompilators ne vienmēr var noteikt pēc formāta virknes vai izsecināt no argumentiem izsaukumam nepieciešamās pārveidošanas specifikācijas. Iepriekš kompilators vienmēr veica nav pieņēmumu un jānodrošina, lai galīgajā programmas attēlā būtu saistītas pilnībā funkcionējošas IO funkcijas. Ir pievienota jauna opcija -msmart-io-format=fmt, lai tā vietā lietotājs varētu informēt kompilatoru par viedā IO izmantotajiem konvertēšanas parametriem. funkcijas, kuru lietojums ir neskaidrs, novēršot pārmērīgi garu IO rutīnu saistīšanu. (Sīkāku informāciju skatiet sadaļā Smart-io-format Opcija.)
- Pielāgotu sadaļu izvietošana Iepriekš opcija -Wl,–section-start izvietoja norādīto sadaļu pieprasītajā adresē tikai tad, kad linkera skripts definēja izvades sadaļu ar tādu pašu nosaukumu. Ja tas tā nebija, sadaļa tika ievietota linkētāja izvēlētā adresē, un opcija būtībā tika ignorēta. Tagad šī opcija tiks izmantota visām pielāgotajām sadaļām, pat ja saites skripts nedefinē sadaļu. Tomēr ņemiet vērā, ka standarta sadaļām, piemēram, .text, .bss vai .data , vispiemērotākais sadalītājs joprojām pilnībā kontrolēs to izvietojumu, un opcijai nebūs nekādas ietekmes. Izmantojiet opciju -Wl,-Tsection=addr, kā aprakstīts lietotāja rokasgrāmatā.
Versija 2.32
- Stack Guidance Pieejams ar PRO kompilatora licenci, kompilatora steka vadības līdzekli var izmantot, lai novērtētu programmas izmantotās steka maksimālo dziļumu. Tā konstruē un analizē programmas izsaukuma grafiku, nosaka katras funkcijas steka lietojumu un sagatavo atskaiti, no kuras var secināt programmas izmantoto steku dziļumu. Šī funkcija ir iespējota, izmantojot komandrindas opciju -mchp-stack-usage. Pēc izpildes tiek izdrukāts kopsavilkums par steka lietojumu. Detalizēts kaudzes pārskats ir pieejams kartes failā, kuru var pieprasīt parastajā veidā.
- Jaunu ierīču atbalsts Atbalsts ir pieejams šādām AVR daļām: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64, AVR32.
- Ievilktas ierīces atbalsts Atbalsts vairs nav pieejams šādām AVR daļām: AVR16DA28, AVR16DA32 un AVR16DA48.
Versija 2.31
Nav.
Versija 2.30
- Jauna opcija datu inicializēšanas novēršanai Jauna -mno-data-init draivera opcija novērš datu inicializāciju un bss sadaļu notīrīšanu. Tas darbojas, nomācot do_clear_bss simbolu izvadi montāžas failos, kas savukārt neļaus saitītājam iekļaut šīs rutīnas.
- Uzlabota optimizācija Ir veikti vairāki optimizācijas uzlabojumi, tostarp lieko atgriešanas instrukciju noņemšana, dažu lēcienu noņemšana pēc izlaist, ja bits ir instrukcijas, kā arī uzlabota procesuālā abstrakcija un iespēja atkārtot šo procesu.
Tagad ir pieejamas papildu opcijas, lai kontrolētu dažas no šīm optimizācijām, īpaši -fsection-enkuri, kas ļauj piekļūt statiskiem objektiem attiecībā pret vienu simbolu; -mpa- iterations=n , kas ļauj mainīt procesuālo abstrakcijas iterāciju skaitu no noklusējuma 2; un -mpa-callcost-shortcall, kas veic agresīvāku procesuālo abstrakciju, cerot, ka saistītājs var atslābināt garus zvanus. Šī pēdējā opcija var palielināt koda lielumu, ja netiek realizēti pamatā esošie pieņēmumi. - Jaunu ierīču atbalsts Atbalsts ir pieejams šādām AVR daļām: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DA28, AVR128, AVR32DA128, AVR48DA128, AVR64DAXNUMX VRXNUMXDBXNUMX.
- Ievilktas ierīces atbalsts Atbalsts vairs nav pieejams šādām AVR daļām: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616.
Versija 2.29 (funkcionālās drošības izlaidums)
- Iebūvēto kompilatoru galvenes fails Lai nodrošinātu, ka kompilators atbilst valodas specifikācijām, piemēram, MISRA, , ir atjaunināts. Šajā galvenē ir visu iebūvēto funkciju prototipi, piemēram, __builtin_avr_nop() un __builtin_avr_delay_cycles() . Dažas iebūvētās ierīces var nebūt saderīgas ar MISRA; tos var izlaist, kompilatora komandrindai pievienojot define __XC_STRICT_MISRA. Iebūvētās ierīces un to deklarācijas ir atjauninātas, lai izmantotu fiksēta platuma tipus.
Versija 2.20
- Jaunu ierīču atbalsts Atbalsts ir pieejams šādām AVR daļām: ATTINY1624, ATTINY1626 un ATTINY1627.
- Labāka vispiemērotākā piešķiršana Kompilatorā ir uzlabots vislabākās atbilstības sadalītājs (BFA), lai sadaļas tiktu piešķirtas tādā secībā, kas ļauj labāk optimizēt. BFA tagad atbalsta nosauktās adrešu telpas un labāk apstrādā datu inicializēšanu.
- Uzlabota procesuālā abstrakcija Procesuālās abstrakcijas optimizācijas tagad tiek veiktas vairākām kodu sekvencēm. Iepriekšējās situācijas, kad šī optimizācija varēja palielināt koda lielumu, ir novērstas, optimizācijas kodam informējot par saistītāja atkritumu savākšanas procesu.
- AVR Assembler trūkums AVR Assembler vairs nav iekļauts šajā izplatīšanā.
Versija 2.19 (funkcionālās drošības izlaidums)
Nav.
Versija 2.10
- Koda pārklājums Šajā laidienā ir iekļauts koda pārklājuma līdzeklis, kas atvieglo projekta pirmkoda izpildes apmēra analīzi. Izmantojiet opciju -mcodecov=ram, lai to iespējotu. Pēc programmas izpildes jūsu aparatūrā koda pārklājuma informācija tiks apkopota ierīcē, un to var pārsūtīt uz MPLAB X IDE un parādīt tajā, izmantojot koda pārklājuma spraudni. Informāciju par šo spraudni var iegūt IDE dokumentācijā.
#pragma nocodecov var izmantot, lai izslēgtu turpmākās funkcijas no pārklājuma analīzes. Ideālā gadījumā pragma jāpievieno faila sākumā, lai izslēgtu visu failu no pārklājuma analīzes. Kā alternatīvu var izmantot atribūtu __attribute__((nocodecov)), lai izslēgtu noteiktu funkciju no pārklājuma analīzes. - Ierīces apraksta faili Jauns ierīces fails ar nosaukumu avr_chipinfo.html atrodas kompilatora izplatīšanas dokumentu direktorijā. Šajā failā ir uzskaitītas visas ierīces, kuras atbalsta kompilators. Noklikšķiniet uz ierīces nosaukuma, un tiks atvērta lapa, kurā parādīti visi šai ierīcei pieļaujamie konfigurācijas bitu iestatījumu/vērtību pāri, piemēram,amples.
- Procedūru abstrakcija Procesuālās abstrakcijas optimizācijas, kas aizvieto parastos montāžas koda blokus ar izsaukumiem uz šī bloka izvilktu kopiju, ir pievienotas kompilatoram. Tos veic atsevišķa lietojumprogramma, kuru kompilators automātiski izsauc, izvēloties 2., 3. vai s līmeņa optimizācijas. Šīs optimizācijas samazina koda lielumu, taču tās var samazināt izpildes ātrumu un koda atkļūdojamību. Procesuālo abstrakciju var atspējot augstākos optimizācijas līmeņos, izmantojot opciju -mno-pa, vai arī to var iespējot zemākos optimizācijas līmeņos (atkarībā no jūsu licences), izmantojot -mpa. Objekta failam to var atspējot, izmantojot -mno-pa-on-file=filenosaukums vai funkcijai atspējota, izmantojot -mno-pa-on- function=function. Jūsu avota kodā funkcijai var atspējot procesuālo abstrakciju, izmantojot __attribute__((nopa)) ar funkcijas definīciju vai __nopa, kas izvēršas līdz __attribute__((nopa,noinline)) un tādējādi novērš funkcijas inlinēšanu. un tajā ir iekļauta koda abstrakcija.
- Bloķēšanas bitu atbalsts pragmā Tagad #pragma konfigurāciju var izmantot, lai norādītu AVR bloķēšanas bitus, kā arī citus konfigurācijas bitus. Pārbaudiet failu avr_chipinfo.html (minēts iepriekš), lai uzzinātu iestatījumu/vērtību pārus, ko izmantot ar šo pragmu.
- Jaunu ierīču atbalsts Atbalsts ir pieejams šādām daļām: AVR28DA128, AVR64DA128, AVR32DA128 un AVR48DA128.
Versija 2.05
- Vairāk bitu par jūsu naudu Šī kompilatora un licenču pārvaldnieka macOS versija tagad ir 64 bitu lietojumprogramma. Tas nodrošinās, ka kompilators tiks instalēts un darbosies bez brīdinājumiem jaunākajās macOS versijās.
- Const objekti programmas atmiņā Tagad kompilators var ievietot const kvalificētus objektus programmas zibatmiņā, nevis RAM. Kompilators ir modificēts tā, lai programmas zibatmiņā tiktu glabāti standarta kvalificētie globālie dati un šiem datiem varētu tieši un netieši piekļūt, izmantojot atbilstošās programmas atmiņas instrukcijas. Šī jaunā funkcija ir iespējota pēc noklusējuma, taču to var atspējot, izmantojot opciju -mno-const-data-in-progmem. Avrxmega3 un avrtiny arhitektūrām šī funkcija nav nepieciešama un vienmēr ir atspējota, jo programmas atmiņa ir kartēta šo ierīču datu adrešu telpā.
- Standarts bezmaksas šī kompilatora nelicencētās (bezmaksas) versijās tagad ļauj veikt optimizāciju līdz 2. līmenim ieskaitot. Tas ļaus iegūt līdzīgu, kaut arī ne identisku, izvadi tam, kas iepriekš bija iespējams, izmantojot standarta licenci.
- Laipni lūdzam AVRASM2 AVRASM2 montētājs 8 bitu ierīcēm tagad ir iekļauts XC8 kompilatora instalēšanas programmā. Šo montētāju neizmanto XC8 kompilators, taču tas ir pieejams projektiem, kuru pamatā ir ar roku rakstīts montāžas avots.
- Jaunu ierīču atbalsts Atbalsts ir pieejams šādām daļām: ATMEGA1608, ATMEGA1609, ATMEGA808 un ATMEGA809.
Versija 2.00
- Augstākā līmeņa draiveris Jauns draiveris, ko sauc par xc8-cc, tagad atrodas virs iepriekšējā avr-gcc draivera un xc8 draivera, un tas var izsaukt atbilstošo kompilatoru, pamatojoties uz mērķa ierīces atlasi. Šis draiveris pieņem GCC stila opcijas, kuras tiek tulkotas vai nodotas izpildāmajam kompilatoram. Šis draiveris ļauj izmantot līdzīgu opciju kopu ar līdzīgu semantiku ar jebkuru AVR vai PIC mērķi, un tādējādi tas ir ieteicamais veids, kā izsaukt kompilatoru. Ja nepieciešams, veco avr-gcc draiveri var izsaukt tieši, izmantojot vecā stila opcijas, kuras tas pieņēma iepriekšējās kompilatoru versijās.
- Kopējais C interfeiss Šis kompilators tagad var atbilst MPLAB Common C interfeisam, ļaujot avota kodu vieglāk pārnest visos MPLAB XC kompilatoros. Opcija -mext=cci pieprasa šo līdzekli, iespējojot alternatīvu sintaksi daudziem valodu paplašinājumiem.
- Jauns bibliotekāra vadītājs Jauns bibliotekāra vadītājs ir novietots virs iepriekšējā PIC bibliotekāra un AVR avr-ar bibliotekāra. Šis draiveris pieņem GCC arhivētāja stila opcijas, kuras tiek tulkotas vai nodotas izpildāmajam bibliotekāram. Jaunais draiveris ļauj izmantot līdzīgu opciju kopu ar līdzīgu semantiku, lai izveidotu vai manipulētu ar jebkuru PIC vai AVR bibliotēkas failu, un tādējādi tas ir ieteicamais veids, kā izsaukt bibliotekāru. Ja nepieciešams mantotajiem projektiem, iepriekšējo bibliotekāru var izsaukt tieši, izmantojot vecā stila opcijas, kuras tas pieņēma iepriekšējās kompilatoru versijās.
Migrācijas problēmas
Tālāk ir norādīti līdzekļi, kurus kompilators tagad apstrādā atšķirīgi. Ja pārnēsāt kodu uz šo kompilatora versiju, šīm izmaiņām var būt nepieciešamas izmaiņas jūsu avota kodā. Versijas numurs apakšvirsrakstā norāda pirmo kompilatora versiju, kas atbalsta turpmākās izmaiņas.
Versija 2.45
Nav.
Versija 2.41
Noņemtas neprecīzas fma funkcijas (XC8-2913) C99 standarta bibliotēka ( ). Šīs funkcijas ir noņemtas no piegādātās bibliotēkas.
Versija 2.40
Nav.
Versija 2.39 (funkcionālās drošības izlaidums)
Nav.
Versija 2.36
Nav.
Versija 2.35
- String-to bāzes apstrāde (XC8-2420) Lai nodrošinātu konsekvenci ar citiem XC kompilatoriem, XC8 virknes-to funkcijas, piemēram, strtol() utt., vairs nemēģinās pārveidot ievades virkni, ja norādītā bāze ir lielāka par 36. un tā vietā iestatīs . C standarts nenorāda funkciju uzvedību, ja tiek pārsniegta šī bāzes vērtība.
- Nepiemērota ātruma optimizācija Atlasot 3. līmeņa optimizācijas (-O3), tika iespējota procesuālā abstrakcijas optimizācija. Šīs optimizācijas samazina koda lielumu uz koda ātruma rēķina, tāpēc to nevajadzētu veikt. Projektos, kuros tiek izmantots šis optimizācijas līmenis, var būt atšķirības koda lielumā un izpildes ātrumā, ja tie ir izveidoti ar šo laidienu.
- Bibliotēkas funkcionalitāte Daudzu standarta C bibliotēkas funkciju kods tagad nāk no Microchip vienotās standarta bibliotēkas, kurai dažos apstākļos var būt atšķirīga darbība salīdzinājumā ar iepriekšējo avr-libc bibliotēku. Piemēram,amplv, vairs nav nepieciešams izveidot saiti bibliotēkā lprintf_flt (opcija -lprintf_flt), lai ieslēgtu formatētu IO atbalstu peldošā formāta specifikācijām. Microchip Unified Standard Library viedās IO funkcijas padara šo opciju lieku. Turklāt _P sufiksu rutīnas izmantošana virkņu un atmiņas funkcijām (piemēram, strcpy_P() utt.), kas darbojas ar konststrindiņām zibatmiņā, vairs nav nepieciešama. Standarta C rutīnas (piemēram, strcpy() darbosies pareizi ar šādiem datiem, ja ir iespējots const-data-in-program-memory līdzeklis.
Versija 2.32
Nav.
Versija 2.31
Nav.
Versija 2.30
Nav.
Versija 2.29 (funkcionālās drošības izlaidums)
Nav.
Versija 2.2
Mainīts DFP izkārtojums Kompilators tagad pieņem citu izkārtojumu, ko izmanto DFP (ierīču ģimenes pakotnes). Tas nozīmēs, ka vecāks DFP var nedarboties ar šo laidienu un vecāki kompilatori nevarēs izmantot jaunākos DFP.
Versija 2.19 (funkcionālās drošības izlaidums)
Nav.
Versija 2.10
Nav
Versija 2.05
Const objekti programmas atmiņā Ņemiet vērā, ka pēc noklusējuma const kvalificētie objekti tiks ievietoti programmas atmiņā un tiem tiks piekļūti (kā aprakstīts šeit). Tas ietekmēs jūsu projekta lielumu un izpildes ātrumu, taču tam vajadzētu samazināt RAM izmantošanu. Šo funkciju var atspējot, ja nepieciešams, izmantojot opciju -mno-const-data-in-progmem.
Versija 2.00
- Konfigurācijas drošinātāji Ierīces konfigurācijas drošinātājus tagad var ieprogrammēt, izmantojot konfigurācijas pragma, kam seko iestatījumu-vērtību pāri, lai norādītu drošinātāja stāvokli, piemēram, #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
- Absolūti objekti un funkcijas Objektus un funkcijas tagad var ievietot noteiktā adresē atmiņā, izmantojot CCI __at(address) specifikāciju, piemēram,ample:
- #iekļauts
int foobar __at(0x800100);
char __at(0x250) getID(int offset) { … }
Šīs specifikācijas argumentam ir jābūt konstantei, kas apzīmē adresi, kurā tiks ievietots pirmais baits vai instrukcija. RAM adreses tiek norādītas, izmantojot nobīdi 0x800000. Iespējojiet CCI, lai izmantotu šo funkciju.
- #iekļauts
- Jauna pārtraukuma funkcijas sintakse Kompilators tagad pieņem CCI __interrupt(num) specifikāciju, lai norādītu, ka C funkcijas ir pārtraukumu apstrādātāji. Specifikators ņem pārtraukuma numuru, piemēramample: #iekļauts Void __interrupt(SPI_STC_vect_num) spi_Isr(void) { … }
Fiksētas problēmas
Tālāk ir norādīti labojumi, kas veikti kompilatorā. Tie var novērst kļūdas ģenerētajā kodā vai mainīt kompilatora darbību uz to, kas bija paredzēts vai norādīts lietotāja rokasgrāmatā. Versijas numurs apakšvirsrakstā norāda uz pirmo kompilatora versiju, kurā ir turpmāko problēmu labojumi. Nosaukumā ietvertā(-ās) etiķete(-es) ir šīs problēmas identifikācija izsekošanas datu bāzē. Tie var būt noderīgi, ja jums jāsazinās ar atbalsta dienestu.
Ņemiet vērā, ka dažas ar ierīci saistītas problēmas ir novērstas ar ierīci saistītajā ierīču ģimenes pakotnē (DFP). Skatiet MPLAB pakotņu pārvaldnieku, lai iegūtu informāciju par izmaiņām DFP un lejupielādētu jaunākās pakotnes.
Versija 2.45
- Viesabonēšanas licences kļūme (XCLM-235) Viesabonēšanas licences nedarbojās pareizi Linux platformās, kurās izmanto glibc versijas, kas jaunākas par 2.28.
- Iekšēja kļūda ar struktūru masīviem (XC8-3069) Kad tika apstrādāti struktūras daudzdimensiju masīva elementi, adrešu telpas kvalifikators netika pareizi izplatīts masīvā. Tas izraisīja neatbilstību adrešu telpas kvalifikatora informācijā un iekšēju kompilatora kļūdu. Šī situācija ir labota.
- Slikta rakstīšana neinicializētās straumēs (ML-353, XC8-3100) Ja standarta izvades/kļūdu straumes nebija tieši iestatītas, izmantojot FDEV_SETUP_STREAM vai _init_stdout/_init_stderr, mēģinājums rakstīt uz tām izraisīja nenoteiktu darbību. Tas ietekmēja arī rakstīšanu no stdlib funkcijām, piemēram, perror (). Jebkuri ieraksti šajās straumēs pirms to inicializācijas tagad tiks ignorēti.
- Neatbalstīts modifikators (XC8-2505) Avr-libc bibliotēka neatbalstīja * modifikatoru printf stila konvertēšanas specifikācijās, piemēram,ample “%.*f”. Tagad tas tiek atbalstīts, ieviešot Microchip vienoto standarta bibliotēku.
- Vairāki neinicializēti brīdinājumi (XC8-2409) Kompilators izdeva vairākus identiskus brīdinājuma ziņojumus, kad saskārās ar const masīvu, kas nebija inicializēts. Ziņojumu vajadzēja izdot tikai vienu reizi, kas tagad notiek, kad notiek šī situācija.
Versija 2.41
- Problēmas ar sargspraudni operētājsistēmā Ventura (XC8-3088) Sargspraudņi, kas izmantoti kompilatora licencēšanai, iespējams, nav pareizi nolasīti macOS Ventura saimniekdatoros, kā rezultātā radās licencēšanas kļūmes. Izmaiņas XCLM licenču pārvaldniekā novērš šo problēmu.
- Nepareiza atmiņas piešķiršanas norāde (XC8-2925) Mēģinājums piešķirt SIZE_MAX baitus (vai vērtību, kas tai tuvu), izmantojot standarta bibliotēkas atmiņas pārvaldības funkcijas (malloc() et al), kas pieprasītas, izmantojot vienkāršu dinamiskās atmiņas piešķiršanas ieviešanu. Tagad šādās situācijās tiks atgriezts NULL rādītājs, un kļūda tiek iestatīta uz ENOMEM.
- Noņemtas neprecīzās fma funkcijas (XC8-2913) C99 standarta bibliotēkas fma() saimes funkcijas ( ). Šīs funkcijas ir noņemtas no piegādātās bibliotēkas.
- Nepareiza virkņu konvertēšanas apstrāde (XC8-2921, XC8-2652) Ja strtod() konvertēšanas subjekta secībā bija redzams peldošā komata skaitlis eksponenciālā formātā un aiz e/E bija neparedzēta rakstzīme. rakstzīmi, tad, ja bija norādīts endptr, tai tika piešķirta adrese, kas norāda uz rakstzīmi aiz , turpretim tai vajadzēja norādīt uz pašu rakstzīmi e//E, jo tā nebija pārveidota. Piemēram,ample, strtod(“100exx”, &ep) ir jāatgriež 100.00 un jāiestata ep, lai norādītu uz virknes “exx” daļu, savukārt funkcija atgrieza pareizo vērtību, bet iestatīja virknes daļu “xx”.
Versija 2.40
- Pārāk atslābināts (XC8-2876) Izmantojot opciju -mrelax, kompilators dažas sadaļas nesadalīja kopā, kā rezultātā koda izmēri bija mazāk optimāli. Tas varētu būt noticis ar kodu, kurā tika izmantotas jaunās MUSL bibliotēkas, vai ar vājiem simboliem.
- Kartēšanas līdzeklis nav atspējots, kā norādīts brīdinājumā (XC8-2875) Const-data-in-config-mapped-progmem līdzeklis ir atkarīgs no tā, vai ir iespējots const-data-in-progmem līdzeklis. Ja const-data-in-config-mapped-progmem līdzeklis tika īpaši iespējots, izmantojot opciju, un const-data-in-progmem līdzeklis tika atspējots, saites darbība neizdevās, neskatoties uz brīdinājuma ziņojumu, kurā norādīts, ka const-data-in -config-mapped-progmem funkcija tika automātiski atspējota, kas nebija pilnīgi pareizi. Šajā situācijā funkcija const-data-in-config-mapped-progmem tagad ir pilnībā atspējota.
- DFP izmaiņas, lai pareizi piekļūtu NVMCTRL (XC8-2848) AVR64EA ierīču izmantotajā izpildlaika startēšanas kodā netika ņemts vērā tas, ka NVMCTRL reģistram ir konfigurācijas izmaiņu aizsardzība (CCP), un nevarēja iestatīt IO SFR uz izmantoto lapu. izmantojot const-data-in-config-mapped-progmem kompilatora līdzekli. Izmaiņas, kas veiktas AVR-Ex_DFP versijā 2.2.55, ļaus izpildlaika startēšanas kodam pareizi rakstīt šajā reģistrā.
- DFP izmaiņas, lai izvairītos no zibatmiņas kartēšanas (XC8-2847) Ir ieviests risinājums problēmai ar zibatmiņas kartēšanas ierīces funkciju, par kuru ziņots AVR128DA28/32/48/64 Silicon Errata (DS80000882). Kompilatora const-data-in-config-mapped-progmem funkcija ietekmētajām ierīcēm pēc noklusējuma netiks lietota, un šīs izmaiņas būs redzamas AVR-Dx_DFP versijā 2.2.160.
- Būvējuma kļūda ar sinhf vai coshf (XC8-2834) Mēģinot izmantot sinhf() vai coshf() bibliotēkas funkcijas, radās saites kļūda, kas apraksta nedefinētu atsauci. Trūkstošā funkcija, uz kuru ir atsauce, tagad ir iekļauta kompilatora izplatīšanā.
- Veidošanas kļūdas ar nopa (XC8-2833) Izmantojot nopa atribūtu ar funkciju, kuras montētāja nosaukums ir norādīts, izmantojot __asm__(), aktivizēja kļūdu ziņojumus no montētāja. Šī kombinācija nav iespējama.
- Variadiskās funkcijas kļūme ar rādītāja argumentiem (XC8-2755, XC8-2731) Funkcijas ar mainīgu argumentu skaitu paredz, ka mainīgo argumentu sarakstā tiks nodotas 24 bitu (__memx tipa) norādes, kad ir konst-data-in-progmem līdzeklis. iespējots. Argumenti, kas bija norādes uz datu atmiņu, tika nodoti kā 16 bitu objekti, izraisot koda kļūmi, kad tie tika nolasīti. Kad ir iespējots const-data-in-progmem līdzeklis, visi 16 bitu rādītāju argumenti tagad tiek pārveidoti par 24 bitu rādītājiem.
- strtoxxx bibliotēkas funkciju kļūme (XC8-2620) Kad tika iespējots const-data-in-progmem līdzeklis, endptr parametrs strtoxxx bibliotēkas funkcijās netika pareizi atjaunināts avota virknes argumentiem, kas nav programmas atmiņā.
- Brīdinājumi par nederīgiem apraidiem (XC8-2612) Kompilators tagad izdos kļūdu, ja ir iespējota funkcija const-in-progmem un virknes literāļa adrese ir tieši nodota datu adrešu telpā (atmetot const kvalifikatoru), piemēram,ample, (uint8_t *) "Sveika pasaule!" . Brīdinājums tiek parādīts, ja adrese var būt nederīga, kad datu adrešu telpā ir skaidri apraidīts datu rādītājs.
- Neinicializētu const objektu izvietošana (XC8-2408) Uninicializētu un nemainīgu gaistošu objektu const
netika ievietoti programmu atmiņā ierīcēs, kas visu programmu atmiņu vai tās daļu kartē datu adrešu telpā. Šīm ierīcēm šādi objekti tagad tiek ievietoti programmas atmiņā, padarot to darbību saskanīgu ar citām ierīcēm.
Versija 2.39 (funkcionālās drošības izlaidums)
Nav.
Versija 2.36
Kļūda aizkaves laikā (XC8-2774) Nelielas izmaiņas noklusējuma brīvā režīma optimizācijā neļāva pastāvīgu operanda izteiksmju locīšanu līdz iebūvētajām aizkaves funkcijām, kā rezultātā tās tika uzskatītas par nekonstantēm un aktivizēja kļūdu: __builtin_avr_delay_cycles sagaida veselu kompilēšanas laiku. nemainīgs.
Versija 2.35
- Blakus esoša piešķiršana, izmantojot __at (XC8-2653) Vairāku objektu vietu blakusesošā piešķiršana sadaļā ar tādu pašu nosaukumu un izmantojot __at() nedarbojās pareizi. Piemēram,ample:
const char arr1[] __attribute__((section(.mysec”)))) __at (0x500) = {0xAB, 0xCD}; const char arr2[] __attribute__((section(.mysec”)))) = {0xEF, 0xFE}; vajadzēja ievietot arr2 uzreiz pēc arr1 - Sadaļas sākuma adrešu norādīšana (XC8-2650) Opcija -Wl,–section-start klusi nespēja ievietot sadaļas norādītajā sākuma adresē. Šī problēma ir novērsta visām pielāgoto nosaukumu sadaļām; tomēr tas nedarbosies nevienā standarta sadaļā, piemēram, .text vai .bss, kas jāievieto, izmantojot opciju -Wl,-T. Atslābināšanās laikā saistītājs avarē (XC8-2647) Kad tika iespējota -mrelax optimizācija un bija koda vai datu sadaļas, kas neietilpa pieejamajā atmiņā, saistītājs avarēja. Tagad šādos apstākļos tiek parādīti kļūdu ziņojumi.
- Bez atkrišanas (XC8-2646) Opcija –nofallback netika pareizi ieviesta vai dokumentēta. Tagad to var atlasīt, lai nodrošinātu, ka kompilators neatgriezīsies uz zemāku optimizācijas iestatījumu, ja kompilators nav licencēts, un tā vietā izdos kļūdu.
- Neatbilstoša ātruma optimizācija (XC8-2637) Atlasot 3. līmeņa optimizācijas (-O3), tika iespējota procesuālās abstrakcijas optimizācija. Šīs optimizācijas samazina koda lielumu uz koda ātruma rēķina, tāpēc to nevajadzētu veikt.
- Slikta EEPROM piekļuve (XC8-2629) Rutīna eeprom_read_block nedarbojās pareizi Xmega ierīcēs, kad bija iespējota opcija – mconst-data-in-progmem (kas ir noklusējuma stāvoklis), kā rezultātā EEPROM atmiņa netika pareizi nolasīta.
- Nederīgs atmiņas iedalījums (XC8-2593, XC8-2651) Ja opcija -Ttext vai -Tdata linker (piemēram,ampir norādīta le caurlaide, izmantojot -Wl draivera opciju), tika atjaunināta atbilstošā teksta/datu reģiona izcelsme; tomēr gala adrese netika attiecīgi pielāgota, kā rezultātā reģions varēja pārsniegt mērķa ierīces atmiņas diapazonu.
- Avārija ar pārmērīgu atribūtu funkciju (XC8-2580) Kompilators avarēja, ja funkcija tika deklarēta, izmantojot vairāk nekā vienu pārtraukuma, signāla vai nmi atribūtu, piemēram, __attribute__((__signal__, __interrupt__)).
- Nederīgs ATtiny pārtraukuma kods (XC8-2465) Veidojot ATtiny ierīcēm un optimizācijas tika atspējotas (-O0), pārtraukuma funkcijas, iespējams, ir aktivizējušas operandu ārpus diapazona.
- Opcijas netiek nodotas cauri (XC8-2452) Izmantojot opciju -Wl ar vairākām, ar komatu atdalītām saistīšanas opcijām, ne visas saites opcijas tika nodotas saitītājam.
- Kļūda netieši lasot programmas atmiņu (XC8-2450) Dažos gadījumos kompilators radīja iekšēju kļūdu (neatpazīstams insn ), nolasot divu baitu vērtību no rādītāja programmas atmiņā.
Versija 2.32
Otrā piekļuve bibliotēkai neizdodas (XC8-2381) Otro reizi izsaucot xc8-ar.exe bibliotēkas arhīva Windows versiju, lai piekļūtu esošam bibliotēkas arhīvam, iespējams, neizdevās, jo tika parādīts kļūdas ziņojums, ka nevar pārdēvēt.
Versija 2.31
Neizskaidrojamas kompilatora kļūmes (XC8-2367) Darbojoties Windows platformās, kurās sistēmas pagaidu direktorijā bija iestatīts ceļš, kurā ir ietverts punkts “. rakstzīmi, iespējams, ka kompilators neizdevās izpildīt.
Versija 2.30
- Globālās etiķetes, kas ir nepareizi novietotas pēc kontūras (XC8-2299) Ar roku rakstīts montāžas kods, kas izvieto globālās etiķetes montāžas secībās, kuras tiek ņemtas vērā, izmantojot procesuālo abstrakciju, iespējams, nav pareizi pārvietots.
- Relaksējoša avārija (XC8-2287) Opcijas -mrelax izmantošana, iespējams, izraisīja saistītāja avāriju, kad astes lēciena relaksācijas optimizācija mēģināja noņemt ret instrukciju, kas nebija sadaļas beigās.
- Avārija, optimizējot iezīmes kā vērtības (XC8-2282) Kods, kurā tiek izmantots GNU C valodas paplašinājums “Iezīmes kā vērtības”, iespējams, izraisīja procesuālās abstrakcijas optimizācijas avāriju ar diapazona diapazona labošanas kļūdu.
- Not so const (XC8-2271) Strstr() un citu funkciju prototipi no vairs nenorādīt nestandarta kvalifikatoru atgrieztajos virknes rādītājos, kad const -mconst-data-in-progmem līdzeklis ir atspējots. Ņemiet vērā, ka ar avrxmega3 un avrtiny ierīcēm šī funkcija ir iespējota pastāvīgi.
- Pazaudētie inicializatori (XC8-2269) Ja sadaļā tika ievietots vairāk nekā viens mainīgais tulkošanas vienībā (izmantojot __section vai __attribute__((section)) ), un pirmais šāds mainīgais bija nulles inicializēts vai tam nebija inicializatora, inicializatori tika zaudēti citi mainīgie tajā pašā tulkošanas vienībā, kas tika ievietoti tajā pašā sadaļā.
Versija 2.29 (funkcionālās drošības izlaidums)
Nav.
Versija 2.20
- Kļūda ar garām komandām (XC8-1983) Izmantojot AVR mērķi, iespējams, ka kompilators ir apstājies ar kļūdu fails nav atrasts, ja komandrinda bija ārkārtīgi liela un saturēja īpašas rakstzīmes, piemēram, pēdiņas, slīpsvītras utt.
- Nepiešķirta rodata sadaļa (XC8-1920) AVR savienotājam neizdevās piešķirt atmiņu pielāgotajām rodata sekcijām, veidojot avrxmega3 un avrtiny arhitektūru, tādējādi, iespējams, radās atmiņas pārklāšanās kļūdas.
Versija 2.19 (funkcionālās drošības izlaidums)
Nav.
Versija 2.10
- Pārvietošanas kļūmes (XC8-1891) Vislabāk piemērotais sadalītājs atstāja atmiņas “caurumus” starp sekcijām pēc savienotāja atslābināšanas. Papildus atmiņas sadrumstalotībai tas palielināja iespēju, ka saistītāju pārvietošanas kļūmes ir saistītas ar datora relatīvo lēcienu vai zvanu nonākšanu ārpus diapazona.
- Norādījumi, kas nav pārveidoti ar relaksāciju (XC8-1889) Saistītāja atslābināšana nenotika lēciena vai izsaukuma norādījumiem, kuru mērķi kļūst sasniedzami, ja tie ir atslābināti.
- Trūkst funkcionalitāte (XC8E-388) Vairākas definīcijas no , piemēram, clock_div_t un clock_prescale_set() , nebija definēti ierīcēm, tostarp ATmega324PB, ATmega328PB, ATtiny441 un ATtiny841.
- Trūkst makro Kompilatora automātiski definēti priekšprocesora makro _XC8_MODE_, __XC8_VERSION, __XC un __XC8. Tie tagad ir pieejami.
Versija 2.05
- Iekšējā kompilatora kļūda (XC8-1822) Veidojot operētājsistēmā Windows, optimizējot kodu, iespējams, radās iekšēja kompilatora kļūda.
- RAM pārpilde nav noteikta (XC8-1800, XC8-1796) Programmas, kas pārsniedza pieejamo RAM, dažās situācijās kompilators neatklāja, kā rezultātā radās izpildlaika koda kļūme.
- Izlaistā zibatmiņa (XC8-1792) Avrxmega3 un avrtiny ierīcēm MPLAB X IDE, iespējams, ir atstājusi neieprogrammētas zibatmiņas daļas.
- Nespēja izpildīt galveno (XC8-1788) Dažās situācijās, kad programmai nebija definēti globālie mainīgie, izpildlaika startēšanas kods netika aizvērts un funkcija main() nekad netika sasniegta.
- Nepareiza atmiņas informācija (XC8-1787) Avrxmega3 un avrtiny ierīcēm programma avr-size ziņoja, ka tikai lasāmie dati patērē RAM, nevis programmas atmiņu.
- Nepareiza programmas atmiņas nolasīšana (XC8-1783) Projekti, kas kompilēti ierīcēm ar programmu atmiņu, kas kartēta datu adrešu telpā un kas definē objektus, izmantojot makro/atribūtu PROGMEM, iespējams, nolasīja šos objektus no nepareizās adreses.
- Iekšēja kļūda ar atribūtiem (XC8-1773) Radās iekšēja kļūda, ja definējāt rādītāja objektus ar marķieriem __at() vai atribūti() starp rādītāja nosaukumu un atsauču tipu, piemēram,ample, char * __at(0x800150) cp; Ja šāds kods tiek pamanīts, tagad tiek parādīts brīdinājums.
- Nespēja izpildīt galveno (XC8-1780, XC8-1767, XC8-1754) EEPROM mainīgo izmantošana vai drošinātāju definēšana, izmantojot konfigurācijas pragmu, iespējams, izraisīja nepareizu datu inicializāciju un/vai programmas izpildes bloķēšanu izpildlaika startēšanas kodā, pirms tika sasniegts galvenais ( ).
- Drošinātāja kļūda ar mazām ierīcēm (XC8-1778, XC8-1742) Attiny4/5/9/10/20/40 ierīču galvenes failos bija norādīts nepareizs drošinātāja garums, kas izraisīja saites kļūdas, mēģinot izveidot kodu, kas nosaka drošinātājus. .
- Segmentācijas kļūda (XC8-1777) Intermitējoša segmentācijas kļūda ir novērsta.
- Assembler avārija (XC8-1761) Avr-as montētājs, iespējams, avarēja, kad kompilators tika palaists Ubuntu 18.
- Objekti nav notīrīti (XC8-1752) Neinicializēti statiskās krātuves ilguma objekti, iespējams, nav notīrīti ar izpildlaika startēšanas kodu.
- Konfliktējošās ierīces specifikācijas ignorētas (XC8-1749) Kompilators neģenerēja kļūdu, kad tika izmantotas vairākas ierīces specifikācijas opcijas un tika norādītas dažādas ierīces.
- Atmiņas bojājumi kaudzes dēļ (XC8-1748) Simbols __heap_start tika nepareizi iestatīts, kā rezultātā kaudze var sabojāt parastos mainīgos.
- Saistītāja pārvietošanas kļūda (XC8-1739) Saistītāja pārvietošanas kļūda, iespējams, tika parādīta, ja kods saturēja rjmp vai rcall ar mērķi tieši 4 XNUMX baitu attālumā.
Versija 2.00
Nav.
Zināmās problēmas
Tālāk ir norādīti kompilatora darbības ierobežojumi. Tie var būt vispārīgi kodēšanas ierobežojumi vai novirzes no lietotāja rokasgrāmatā ietvertās informācijas. Nosaukumā ietvertā(-ās) etiķete(-es) ir šīs problēmas identifikācija izsekošanas datu bāzē. Tas var būt noderīgi, ja jums jāsazinās ar atbalsta dienestu. Vienumiem, kuriem nav etiķešu, ir ierobežojumi, kas apraksta darbības veidus un kuri, visticamāk, paliks spēkā pastāvīgi.
MPLAB X IDE integrācija
- MPLAB IDE integrācija Ja Compiler ir jāizmanto no MPLAB IDE, tad pirms Compiler instalēšanas ir jāinstalē MPLAB IDE.
- Masīva atkļūdošanas informācija (XC8-3157) Kompilatora radītā atkļūdošanas informācija precīzi nenorāda objekta tipu masīviem __memx adrešu telpā. Tas novērsīs objekta novērošanu IDE.
Kodu ģenerēšana
- Segfault ar opciju section-enchors (XC8-3045) Programma, kas definēja funkcijas ar mainīgu argumentu sarakstiem un izmanto opciju -fsection-anchors, iespējams, ir izraisījusi iekšēju kompilatora kļūdu: Segmentācijas kļūda.
- Atkļūdošanas informācija nav sinhronizēta (XC8-2948) Ja saistītāja atslābināšanas optimizācija samazina norādījumus (piemēram,ampizsaukšanas instrukcijas), avota līnijas un adreses kartējumi var nepalikt sinhronizēti, ja sadaļā notiek vairāk nekā viena samazināšanas darbība. Zemāk esošajā eksample, ir divi zvani uz foo, kas beidzas mierīgi līdz radinieku zvaniem.
- PA atmiņas piešķiršanas kļūme (XC8-2881) Izmantojot procesuālos abstrakcijas optimizētājus, saistītājs var ziņot par atmiņas piešķiršanas kļūdām, ja koda lielums ir tuvu ierīcē pieejamās programmas atmiņas apjomam, lai gan programmai ir jāspēj ietilpt pieejamajā. telpa.
- Ne tik viedais Smart-IO (XC8-2872) Kompilatora smart-io funkcija ģenerēs derīgu, bet neoptimālu kodu snprintf funkcijai, ja const-data-in-progmem funkcija ir atspējota vai ja ierīcei ir visas tās funkcijas. zibatmiņas kartēšana datu atmiņā.
- Vēl mazāk vieda Smart-IO (XC8-2869) Kompilatora smart-io funkcija ģenerēs derīgu, bet neoptimālu kodu, ja tiks izmantotas gan opcijas -flto, gan -fno-builtin.
- Neoptimāls tikai lasāmu datu izvietojums (XC8-2849) Saistītāja pašlaik nezina ne APPCODE un APPDATA atmiņas sadaļas, ne [No-]Read-While-Write dalījumus atmiņas kartē. Tā rezultātā pastāv neliela iespēja, ka saistītājs var piešķirt tikai lasāmus datus nepiemērotā atmiņas apgabalā. Nepareizu datu iespējamība palielinās, ja ir iespējots const-data-in-progmem līdzeklis, īpaši, ja ir iespējots arī const-data-in-config-mapped-progmem līdzeklis. Ja nepieciešams, šīs funkcijas var atspējot.
- Objektu failu apstrādes secība (XC8-2863) Secība, kādā saistītājs apstrādās objektu failus, var atšķirties atkarībā no procesuālās abstrakcijas optimizācijas (opcija -mpa). Tas ietekmētu tikai kodu, kas definē vājas funkcijas vairākos moduļos.
- Saistītāja kļūda ar absolūtu (XC8-2777) Ja objekts ir padarīts absolūts adresē RAM sākumā un ir definēti arī neinicializēti objekti, var tikt aktivizēta linkera kļūda.
- Īsie modināšanas ID (XC8-2775) ATA5700/2 ierīcēm PHID0/1 reģistri ir definēti tikai kā 16 bitu plati, nevis 32 biti plati.
- Saistītāja avārija, izsaucot simbolu (XC8-2758) Saistītājs var avarēt, ja tiek izmantota opcija -mrelax draiveris, kad avota kods izsauc simbolu, kas definēts, izmantojot opciju – Wl,–defsym linker.
- Nepareiza inicializācija (XC8-2679) Pastāv neatbilstība starp to, kur datu atmiņā tiek ievietotas dažu globālo/statisko baitu lieluma objektu sākotnējās vērtības un kur mainīgajiem tiks piekļūts izpildlaikā.
- Slikti netiešie funkciju izsaukumi (XC8-2628) Dažos gadījumos funkciju izsaukumi, kas veikti, izmantojot funkcijas rādītāju, kas saglabāti kā daļa no struktūras, var neizdoties.
- strtof atgriež nulli heksadecimālajiem pludiņiem (XC8-2626) Bibliotēkas funkcijas strtof() et al un scanf() et al vienmēr pārveidos par nulli heksadecimālo peldošā komata skaitli, kas nenorāda eksponentu. Piemēram,ample: strtof("0x1", &endptr); atgriezīs vērtību 0, nevis 1.
- Neprecīza steka padomnieka ziņojumapmaiņa (XC8-2542, XC8-2541) Dažos gadījumos steka padomdevēja brīdinājums par izmantoto rekursiju vai nenoteiktu steku (iespējams, izmantojot alloca()) netiek raidīts.
- Kļūme ar pārtraukuma koda dublikātu (XC8-2421) Ja vairāk nekā vienai pārtraukuma funkcijai ir vienāds pamatteksts, kompilators var izsaukt vienas pārtraukuma funkcijas izvadi otru. Tā rezultātā visi izsaukumu bloķētie reģistri tiks nevajadzīgi saglabāti, un pārtraukumi tiks iespējoti pat pirms pašreizējā pārtraukumu apstrādātāja epiloga palaišanas, kas var izraisīt koda kļūmi.
- Slikta izvade ar nederīgu DFP ceļu (XC8-2376) Ja kompilators tiek izsaukts ar nederīgu DFP ceļu un atlasītajai ierīcei eksistē specifikācijas fails, kompilators neziņo par trūkstošo ierīču saimes pakotni un tā vietā atlasa specifikāciju. failu, kas pēc tam var izraisīt nederīgu izvadi. “Speciālie” faili, iespējams, nav atjaunināti ar izplatītajiem DFP, un tie bija paredzēti lietošanai tikai iekšējai kompilatora pārbaudei.
- Atmiņas pārklāšanās nav atklāta (XC8-1966) Kompilators neatklāj objektu atmiņas pārklāšanos, kas ir absolūta adresē (izmantojot __at()) un citus objektus, kas izmanto __section() specifikāciju un ir saistīti ar to pašu adresi.
- Kļūme ar bibliotēkas funkcijām un __memx (XC8-1763) Izsauktās libgcc float funkcijas ar argumentu __memx adrešu telpā var neizdoties. Ņemiet vērā, ka bibliotēkas rutīnas tiek izsauktas no dažiem C operatoriem, piemēram, piemēramample, tiek ietekmēts šāds kods: return regFloatVar > memxFloatVar;
- Ierobežota libgcc ieviešana (AVRTC-731) Produktiem ATTiny4/5/9/10/20/40 standarta C/Math bibliotēkas ieviešana libgcc ir ļoti ierobežota vai vispār nav pieejama.
- Programmas atmiņas ierobežojumi (AVRTC-732) Rīkķēde atbalsta programmu atmiņas attēlus, kas pārsniedz 128 kb; tomēr ir zināmi gadījumi, kad saistītājs tiek pārtraukts bez atslābināšanās un noderīga kļūdas ziņojuma, nevis ģenerējot nepieciešamos funkciju stubs, kad tiek izmantota opcija -mrelax.
- Nosaukumu telpas ierobežojumi (AVRTC-733) Rīkķēde atbalsta nosauktās adrešu telpas, ievērojot ierobežojumus, kas minēti lietotāja rokasgrāmatas sadaļā Īpašo tipu kvalifikācijas.
- Laika joslas The bibliotēkas funkcijas uzņemas GMT un neatbalsta vietējās laika joslas, tāpēc localtime() atgriezīs to pašu laiku kā gmtime(), piemēram,ample.
Dokumenti / Resursi
![]() |
MICROCHIP XC8 C kompilatora versijas 2.45 piezīmes par AVR MCU laidienu [pdfNorādījumi AVR MCU, XC8 C, XC8 C kompilatora versijas 2.45 piezīmes par AVR MCU izlaidumu, kompilatora versijas 2.45 piezīmes par AVR MCU izlaidumu, versijas 2.45 piezīmes par izlaidumu AVR MCU, piezīmes par AVR MCU izlaidumu, piezīmes par AVR MCU, AVR |

