MICROCHIP MPLAB XC8 C kompilatora programmatūra 

MICROCHIP MPLAB XC8 C kompilatora programmatūra

ŠAJĀ DOKUMENTĀ IR SVARĪGA INFORMĀCIJA ATTIECĪBĀ UZ MPLAB XC8 C KOMPILĀTORU, MĒRĶA MĒRĶI UZ MICROCHIP AVR IERĪCĒM.
LŪDZU, IZLASIET TO PIRMS ŠĪS PROGRAMMATŪRAS DARBĪBAS. ATTIECĪBĀ UZ DOKUMENTU SKATĪT MPLAB XC8 C KOMPILERA IZLAIDI, JA IZMANTOJAT KOMPILĀTORU 8-BIT PIC IERĪCĒM.

Saturs paslēpties

Beigāsview

Ievads

Šajā Microchip MPLAB® XC8 C kompilatora laidienā ir iekļautas vairākas jaunas funkcijas, kļūdu labojumi un jaunu ierīču atbalsts.

Būvēšanas datums

Šīs kompilatora versijas oficiālais izveides datums ir 3. gada 2022. jūlijs.

Iepriekšējā versija

Iepriekšējā MPLAB XC8 C kompilatora versija bija 2.39, funkcionālās drošības kompilators, kas tika izveidots 27. gada 2022. janvārī. Iepriekšējais standarta kompilators bija versija 2.36, kas tika izstrādāta 27. gada 2022. janvā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 šādām sistēmām: Microsoft Windows 10 profesionālie izdevumi; Ubuntu 18.04; un macOS 10.15.5. Windows binārie faili ir parakstīti ar kodu. Binārie faili operētājsistēmai Mac OS ir parakstīti ar kodu un apstiprināti notariāli.

Ja izmantojat tīkla licences serveri, licences servera mitināšanai var izmantot tikai datorus ar kompilatoru atbalstītām operētājsistēmām. Sākot ar xclm versiju 2.0, tīkla licences serveri var instalēt Microsoft Windows Server platformā, taču licences serverim nav jādarbojas operētājsistēmas servera versijā.

Atbalstītās ierīces

Šis kompilators atbalsta visas izlaišanas brīdī zināmās 8 bitu AVR MCU ierīces. Skatiet (kompilatora dokumentu direktorijā) visu atbalstīto ierīču sarakstu. Šie files arī uzskaita konfigurācijas bitu iestatījumus katrai ierīcei.

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ēts kompilators bez licences var darboties 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 .exe (Windows), .run (Linux) vai lietotnes (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 ar kompilatora instalēšanu 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 file, atlasiet Rekvizīti, cilni 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 a file Explorer dialoglodziņš, kas parāda šo direktoriju, 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ā.

Kompilatora dokumentācija
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

Microchip atzinīgi vērtē kļūdu ziņojumus, ieteikumus vai komentārus par šo kompilatora versiju. Lūdzu, nosūtiet 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ā:

  • MUSL autortiesību paziņojums
  • MPLAB XC C kompilatoru instalēšana un licencēšana (M versija)
  • MPLAB XC8 lietotāja rokasgrāmata iegultajiem inženieriem — AVR MCU (A versija)
  • MPLAB XC8 C kompilatora lietotāja rokasgrāmata AVR MCU (F versija)
  • Microchip vienotās standarta bibliotēkas uzziņu rokasgrāmata (B versija)

Microchip 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. Šajā kompilatora rokasgrāmatā joprojām ir ietverta informācija par bibliotēku, kas attiecas uz ierīci.

Ja jūs tikko sākat darbu ar 8 bitu ierīcēm un MPLAB XC8 C kompilatoru, MPLAB® XC8 lietotāja rokasgrāmatā iegultajiem inženieriem — AVR® MCU (DS50003108) ir informācija par projektu iestatīšanu MPLAB X IDE un koda rakstīšanu. savam pirmajam MPLAB XC8 C projektam. Šī rokasgrāmata tagad tiek izplatīta kopā ar kompilatoru.

Hamate lietotāja rokasgrāmata ir iekļauta šī laidiena dokumentu direktorijā. Šī rokasgrāmata ir paredzēta tiem, kas izmanto Hamate 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.40

Jaunas ierīces atbalsts Tagad ir pieejams atbalsts šādām AVR daļām: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32, AVR64.
Uzlabota procesuālā abstrakcija Procesuālās abstrakcijas (PA) optimizācijas rīks ir uzlabots, lai varētu ieskicēt kodu, kas satur funkcijas izsaukšanas instrukciju (zvana atsaukšana). 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 funkciju var atspējot, izmantojot opciju monk-pa-outline-calls, vai arī objektam var pilnībā atspējot procesuālo abstrakciju file vai funkcionējiet, izmantojot -monk-pa-on-file un -mo.-pa-on-function, vai arī izmantojot nipa atribūtu (nipa specifier) ​​selektīvi ar funkcijām

Koda pārklājuma makro Kompilators tagad definē makro __CODECOV, ja ir norādīta derīga mcodecov opcija.

Atmiņas rezervēšanas iespēja Veidojot AVR mērķus, xc8-cc draiveris tagad pieņems opciju -mreserve=space@start: end. Šī opcija rezervē norādīto atmiņas diapazonu datu vai programmas atmiņas telpā, neļaujot savienotājam šajā apgabalā ievietot kodu vai objektus.

Gudrāks vieds IO Smart IO funkcijās ir veikti vairāki uzlabojumi, tostarp vispārīgi uzlabojumi printf pamata kodā, %n konversijas specifikātora 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, lai apstrādātu IO funkcijas argumentus. , un faktoringa kopējs kods lauka platumā un precīzā apstrādē. Tas var radīt ievērojamus koda un datu ietaupījumus, 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

Jaunas ierīces 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 vairāk uzlabota konteksta pārslēgšana Jaunā opcija -mgas-isr-prologues kontrolē konteksta niezes 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ēram, FLMAP), kas norāda, kura programmas atmiņas 32k sadaļa tiks kartēta datu atmiņā. Jauno opciju mconst-data-in-config-mapped-proem var izmantot, lai savienotājs ievietotu visus mīnusus 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 mikroshēmu vienotā standarta bibliotēka, kas tagad ir pieejama ar šo MPLAB XC8 laidienu. MPLAB® XC8 C kompilatora lietotāja rokasgrāmatā/vai 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, kuras iepriekš definēja avr-libc, vairs nav pieejamas. (Skatīt Bibliotēku):'. funkcionalitāte...)

Gudrais IO Kā daļa no jaunajām vienotajām bibliotēkām IO funkcijas drukas un skenēšanas 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.
Smart IO palīdzības iespēja Analizējot viedo IO funkciju izsaukumus (piemēram, printf () vai scanf () ), kompilators ne vienmēr var noteikt pēc formāta virknes vai izsecināt no argumentiem izsaukumam nepieciešamos reklāmguvumu specifikācijas. Iepriekš kompilators vienmēr neizdarīja nekādus pieņēmumus un nodrošināja, ka pilnībā funkcionējošas IO funkcijas ir saistītas ar galīgo programmas attēlu. Ir pievienota jauna – msmart-io-format=fmt opcija, lai kompilatoru tā vietā lietotājs varētu informēt par reklāmguvumu specifikācijām, ko izmanto viedās IO 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 ievietošana Iepriekš opcija -Wl, -section-start norādīto sadaļu ievietoja 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, . teksts,. bss vai . datiem, 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=add, 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 kartē file, ko var pieprasīt parastajā veidā.

Jaunu ierīču atbalsta atbalsts ir pieejams šādām AVR daļām: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32, AVR28DB64, AVR32 un 32.

Ievilktas ierīces atbalsta atbalsts vairs nav pieejams šādām AVR daļām: AVR16DA28, AVR16DA32 un, AVR16DA48.

Versija 2.31

Nav.

Versija 2.30

Jauna opcija datu inicializācijas novēršanai Jauna -mno-data-ini t draivera opcija novērš datu inicializāciju un bss sadaļu notīrīšanu. Tas darbojas, nomācot do_ copy_ datu un d o_ clear_ bss simbolu izvadi montāžā files, 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 -f sadaļas enkuri, kas ļauj piekļūt statiskiem objektiem attiecībā pret vienu simbolu; -mpai derations=n, kas ļauj mainīt procesuālo abstrakcijas iterāciju skaitu no noklusējuma 2; un -mpa- call cost- 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.

Jaunas ierīces atbalsts Atbalsts ir pieejams šādām AVR daļām: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 un AVR128DB64 un AVRXNUMXDBXNUMX.

Ievilktas ierīces atbalsts Atbalsts vairs nav pieejams šādām AVR daļām: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C un 664251ATA.

Versija 2.29 (funkcionālās drošības izlaidums)

Virsraksts file iebūvētiem kompilatoriem Lai nodrošinātu, ka kompilators atbilst valodas specifikācijām, piemēram, MISRA, galvene file, ko automātiski iekļauj , ir atjaunināts. Šajā galvenē ir visu iebūvēto funkciju prototipi, piemēram, _buil tin _avrnop () un _buil tin_ 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 _Xe_ STRICT_ MISRA. Iebūvētās ierīces un to deklarācijas ir atjauninātas, lai izmantotu fiksēta platuma tipus.

Versija 2.20

Jaunas ierīces atbalsts Atbalsts ir pieejams šādām AVR daļām: ATTINY1624, ATTINY1626 un ATTINY1627.

Labāk piemērots sadalījums Kompilatora vislabāk piemērotais sadalītājs (BFA) ir uzlabots, 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ījumā.

Versija 2.19 (funkcionālās drošības izlaidums)

Nav.

Versija 2.10

Kodu 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 mcodecov var izmantot, lai izslēgtu turpmākās funkcijas no pārklājuma analīzes. Ideālā gadījumā pragma jāpievieno sākumā file lai izslēgtu to visu file no pārklājuma analīzes. Alternatīvi atribūtu ( (mcodecov) ) var izmantot, lai izslēgtu konkrētu funkciju no pārklājuma analīzes.

Ierīces apraksts files Jauna ierīce file sauc avr chipinfo. html atrodas kompilatora izplatīšanas direktorijā docs. Šis file uzskaita visas kompilatora atbalstītās ierīces. 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 ar piem.amples.

Procesuālā abstrakcija Kompilatoram ir pievienotas procesuālās abstrakcijas optimizācijas, kas aizvieto parastos montāžas koda blokus ar izsaukumiem uz šī bloka izvilktu kopiju. Tos veic atsevišķa lietojumprogramma, kuru kompilators automātiski izsauc, izvēloties 2., 3. vai XNUMX. 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. Objektam to var atspējot file izmantojot -mno-pa-on-file=filenosaukums vai atspējots funkcijai, izmantojot funkciju -mno-pa uz function=.
Avota kodā funkcijai procesuālo abstrakciju var atspējot, izmantojot _attribute_ ((nopa)) ar funkcijas definīciju vai _nopa, kas izvēršas līdz atribūtam ( (nopa, noinline)) un tādējādi novērš funkcijas iekļaušanu. un tajā ir iekļauta koda abstrakcija.
Slēdzenes uzgaļu atbalsts pragmā Tagad #pragma konfigurāciju var izmantot, lai norādītu AVR bloķēšanas bitus, kā arī citus konfigurācijas bitus. Pārbaudiet AVR mikroshēmas informāciju. html file (minēts iepriekš), lai iestatītu/vērtību pārus, ko izmantot ar šo pragmu.
Jaunas ierīces 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 saglabāti const kvalificēti globālie dati un šiem datiem var 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 bez maksas Šī kompilatora nelicencētās (bezmaksas) versijas 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ētājā. Šo montētāju neizmanto XC8 kompilators, taču tas ir pieejams projektiem, kuru pamatā ir ar roku rakstīts montāžas avots.
Jaunas ierīces atbalsts Atbalsts ir pieejams šādām daļām: ATMEGA1608, ATMEGA1609, ATMEGA808 un ATMEGA809.

Versija 2.00

Augstākā līmeņa vadītājs Jauns draiveris ar nosaukumu 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 izvēli. Š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ējā C saskarne Š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ēku. file un tādējādi tas ir ieteicamais veids, kā piezvanīt bibliotekāram. 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 kods tiek pārnests 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.40

Nav.

Versija 2.39 (funkcionālās drošības izlaidums)

Nav.

Versija 2.36

Nav.

Versija 2.35

Virknes-bāzes apstrāde (XCS-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 errno uz EINVAL. C standarts nenorāda funkciju uzvedību, kad šī bāzes vērtība tiek pārsniegta.

Neatbilstoša ātruma optimizācija Atlasot 3. līmeņa optimizācijas (-03), 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,ample, vairs nav nepieciešams izveidot saiti bibliotēkā lprintf_flt (opcija -print _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 uz konst virknē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.20

Mainīts DFP izkārtojums Kompilators tagad izmanto 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 noteiktie 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 -mnoconst-da ta-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 pragmu, kam seko iestatījumu-vērtību pāri, lai norādītu drošinātāja stāvokli, piemēram,
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Absolūti objekti un funkcijas Objektus un funkcijas tagad var ievietot noteiktā adresē atmiņā, izmantojot CCI _at (adreses) specifikāciju, piemēram,ample: #iekļauts int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Šī norādītāja 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.
Jauna pārtraukuma funkcijas sintakse Kompilators tagad pieņem CCI pārtraukuma (skaita) 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 nevar pārtraukt(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 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.40

Pārāk atslābināts (XCS-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 funkcija nav atspējota, kā norādīts brīdinājumā (XCS-2875) Mappedprogmem līdzeklis izmaksu datu konfigurācijā ir atkarīgs no tā, vai ir iespējots izmaksu datu projektā funkcija. Ja izmaksu-datu-ipconfig-mapped-proem līdzeklis tika īpaši iespējots, izmantojot opciju, un izmaksu datu inprogmem līdzeklis tika atspējots, saites darbība neizdevās, neskatoties uz brīdinājuma ziņojumu, kurā teikts, ka cons data-in-config-mapped- proem funkcija tika automātiski atspējota, kas nebija pilnīgi pareizi. Šajā situācijā funkcija const-data-in-config-mapped-proem tagad ir pilnībā atspējota.
DFP izmaiņas, lai pareizi piekļūtu NVMCTRL (XCS-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 tas nevarēja iestatīt IO SFR uz lapu, ko izmanto const-data-in configmapped-proem kompilators. funkciju. 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 Flash kartēšanas (XCS-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-proem funkcija ietekmētajām ierīcēm pēc noklusējuma netiks lietota, un šīs izmaiņas būs redzamas AVR-Ex_DFP versijā 2.2.160.
Būvējuma kļūda, izmantojot sinhf vai coshf (XCS-2834) Mēģinot izmantot sinhf () vai coshf () bibliotēkas funkcijas, radās saites kļūda, aprakstot nedefinētu atsauci. Trūkstošā funkcija, uz kuru ir atsauce, tagad ir iekļauta kompilatora izplatīšanā.
Veidošanas kļūdas, izmantojot nopa (XCS-2833) Atribūta nopa izmantošana ar funkciju, kuras montētāja nosaukums ir norādīts, izmantojot kā () aktivizētos kļūdu ziņojumus no montētāja. Šī kombinācija nav iespējama.
Variadiskās funkcijas kļūme ar rādītāja argumentiem (XCS-2755, XCS-2731) Funkcijas ar mainīgu argumentu skaitu paredz, ka mainīgo argumentu sarakstā tiks nodotas 24 bitu (_memo tipa) norādes, kad ir iespējots izmaksu-datu proem līdzeklis. 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ējota funkcija Cons data-in-proem, 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 (XCS-2620) Kad tika iespējots const-data-in-proem līdzeklis, ievadīšanas parametrs strtoxxx bibliotēkas funkcijās netika pareizi atjaunināts avota virknes argumentiem, kas nav programmas atmiņā.
Brīdinājumi par nederīgiem apmetumiem (XCS-2612) Kompilators tagad izdos kļūdu, ja ir iespējota izmaksu in-proem funkcija 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 (XCS-2408) Neinicializēti const un const v nepastāvīgi objekti netika ievietoti programmas atmiņā ierīcēs, kas visu vai daļu programmas atmiņas 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ā (XCS-2774) Nelielas izmaiņas noklusējuma brīvā režīma optimizācijā neļāva pastāvīgu operandu izteiksmju locīšanu līdz iebūvētajām aiztures funkcijām, kā rezultātā tās tika uzskatītas par bezkontaktiem un izraisīja kļūdu: _buil tin avr delay_ cycles sagaida ac ompile. laika vesels skaitlis konstante.

Versija 2.35

Nepārtrauktā piešķiršana, izmantojot _at (XCS-2653) Vienlaicīga vairāku objektu vietu piešķiršana sadaļā ar tādu pašu nosaukumu un izmantojot at () nedarbojās pareizi. Piemēram,ample: constchararrl [ ] at tri butte ((sect on(.miss”)))) at (Ox50 0 ) = {Oxo , Ox CD} ; izmaksas char arr2[ ] pie tri butte ((sadaļa(.my s eke”)))) = {Vērši, Vērši FE }; vajadzēja ievietot arr2 uzreiz pēc aril.
Sadaļas sākuma adrešu norādīšana (XCS-2650) Opcija -Wal, -section-start klusi nespēja novietot sadaļas norādītajā sākuma adresē. Šī problēma ir novērsta visām sadaļām ar pielāgotu nosaukumu; tomēr tas nedarbosies nevienai standarta sadaļai, piemēram, . tekstu vai . bss, kas jāievieto, izmantojot opciju -Wl, -T.
Linker avarē atpūšoties (XCS-2647) Kad tika iespējota optimizācija -relax 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.
Slikta EEPROM piekļuve (XCS-2629) Leproma _read_ bloka rutīna nedarbojās pareizi Mega ierīcēs, kad bija iespējota opcija -monist-data-in-proem (kas ir noklusējuma stāvoklis), kā rezultātā EEPROM atmiņa netika nolasīta pareizi.
Nederīgs atmiņas sadalījums (XCS-2593, XCS-2651) Kad opcija -Teksts vai -Tata saite (piemēram,ampir norādīta le caurlaide, izmantojot opciju -Wl draiveris), 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.
Nederīgs ATtiny pārtraukuma kods (XCS-2465) Veidojot Tatin ierīcēm un optimizācijas tika atspējotas (-00), pārtraukuma funkcijas, iespējams, ir izraisījušas operandu ārpus diapazona montētāja ziņojumus.
Opcijas netiek nodotas (XCS-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 nolasot programmas atmiņu (XCS-2450) Dažos gadījumos kompilators radīja iekšēju kļūdu (neatpazīstamu insn), nolasot divu baitu vērtību no rādītāja programmas atmiņā.

Versija 2.32

Otrā piekļuve bibliotēkai neizdodas (XCS-2381) xc8-ar Windows versijas izsaukšana. exe bibliotēkas arhivētājs otro reizi, 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 (XCS-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 pēc kontūras ir nevietā (XCS-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 (XCS-2287) Izmantojot opciju -merlad, saite varēja avarēt, kad astes lēciena relaksācijas optimizācija mēģināja noņemt ret instrukcijas, kas nebija sadaļas beigās.
Avārija, optimizējot etiķetes kā vērtības (XCS-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, kā rezultātā radās ieskicētā VMA diapazona diapazona labošanas kļūda.
Ne tik nemainīgs (XCS-2271) Prototipi startiem () un citām funkcijām no vairs nenorāda nestandarta izmaksu kvalifikatoru atgrieztajās virknes norādes, kad ir atspējots līdzeklis -monist-data inprogmem. Ņemiet vērā, ka ar avrxmega3 un avertin ierīcēm šī funkcija ir iespējota pastāvīgi.
Pazaudēti inicializatori (XCS-2269) Ja sadaļā tika ievietots vairāk nekā viens mainīgais tulkošanas vienībā (izmantojot sadaļu vai atribūtu ((sadaļa))), un pirmais šāds mainīgais bija nulles inicializēts vai tam nebija inicializētāja, inicializatori citiem mainīgajiem tajā pašā tulkošanas vienībā kas tika ievietoti tajā pašā sadaļā, tika zaudēti.

Versija 2.29 (funkcionālās drošības izlaidums)

Nav.

Versija 2.20

Kļūda ar garām komandām (XCS-1983) Izmantojot AVR mērķi, iespējams, ka kompilators ir apstājies ar a file kļūda nav atrasta, 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 (XCS-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 (XCS-1891) Vispiemērotākais sadalītājs bija atmiņas “caurumu” atstāšana starp sekcijām pēc linkera 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, ko nepārveido relaksācija (XCS-1889) Saistītāja atslābināšana nenotika lēciena vai zvana norādījumiem, kuru mērķi kļūst sasniedzami, ja tie ir atslābināti.
Trūkst funkcionalitāte (XCSE-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 Kompilators nav automātiski definējis priekšprocesora makro_ xcs _MODE_, _xcs VERSION, _xc un xcs. Tie tagad ir pieejami.

Versija 2.05

Iekšējā kompilatora kļūda (XCS-1822) Veidojot operētājsistēmā Windows, optimizējot kodu, iespējams, radās iekšēja kompilatora kļūda.
RAM pārpilde nav noteikta (XCS-1800, XCS-1796) Dažās situācijās kompilators neatklāja programmas, kas pārsniedza pieejamo operatīvo atmiņu, kā rezultātā radās izpildlaika koda kļūme.
Izlaista zibatmiņa (XCS-1792) Ierīcēm avrxmega3 un avrtiny, iespējams, MPLAB X IDE nav ieprogrammējis zibatmiņas daļas.
Neizdevās izpildīt galveno (XCS-1788) Dažās situācijās, kad programmai nebija definēti globālie mainīgie, izpildlaika startēšanas kods netika iziets un galvenā () funkcija netika sasniegta.
Nepareiza atmiņas informācija (XCS-1787) Avrxmega3 un avrtiny ierīcēm avr izmēra programma ziņoja, ka tikai lasāmie dati patērē RAM, nevis programmas atmiņu.
Nepareiza programmas atmiņas nolasīšana (XCS-1783) Projekti, kas kompilēti ierīcēm ar programmu atmiņu, kas kartēta datu adrešu telpā un definē objektus, izmantojot PROGMEM makro/atribūtu, iespējams, nolasīja šos objektus no nepareizās adreses.
Iekšēja kļūda ar atribūtiem (XCS-1773) Radās iekšēja kļūda, ja definējāt rādītāja objektus ar
_at () vai atribūti() marķieri starp rādītāja nosaukumu un atsauces tipu, piemēramample, čār*
_at ( 0x80015 0) cp; Ja šāds kods tiek pamanīts, tagad tiek parādīts brīdinājums.
Nespēja izpildīt galveno (XCS-1780, XCS-1767, XCS-1754) EEPROM mainīgo izmantošana vai drošinātāju definēšana, izmantojot konfigurācijas pragma, iespējams, izraisīja nepareizu datu inicializāciju un/vai bloķēja programmas izpildi izpildlaika starta kodā, pirms tika sasniegts galvenais () .
Drošinātāja kļūda ar mazām ierīcēm (XCS-1778, XCS-1742) Attiny4/5/9/10/20/40 ierīču galvenē bija norādīts nepareizs drošinātāja garums. files, kas izraisa linkera kļūdas, mēģinot izveidot kodu, kas definēja drošinātājus.
Segmentācijas kļūda (XCS-1777) Intermitējoša segmentācijas kļūda ir novērsta.
Assembler avārija (XCS-1761) Avr-as montētājs, iespējams, avarēja, kad kompilators tika palaists Ubuntu 18.
Objekti nav notīrīti (XCS-1752) Neinitializēti statiskās krātuves ilguma objekti, iespējams, nav notīrīti ar izpildlaika startēšanas kodu.
Konfliktējošā ierīces specifikācija ignorēta (XCS-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ājums kaudzes dēļ (XCS-1748) Simbols heap_ start tika iestatīts nepareizi, kā rezultātā kaudze var sabojāt parastos mainīgos.
Saistītāja pārvietošanas kļūda (XCS-1739) Saistītāja pārvietošanas kļūda varētu būt radusies, ja kods saturēja rjmp vai rcall ar mērķi tieši 4 k 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. Vienumi, kuriem nav etiķešu, ir ierobežojumi, kas apraksta darbības veidu un, visticamāk, paliks spēkā pastāvīgi.

MPLAB X IDE integrācija

MPLAB IDE integrācija Ja kompilators ir jāizmanto no MPLAB IDE, tad pirms kompilatora instalēšanas ir jāinstalē MPLAB IDE.

Kodu ģenerēšana

PA atmiņas piešķiršanas kļūme (XCS-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ā vietā.
Ne tik gudrs Smart-IO (XCS-2872) Kompilatora smart-io funkcija ģenerēs derīgu, bet neoptimālu kodu sprinta funkcijai, ja ir atspējota krasta datu pārraides funkcija vai ja visa ierīces zibatmiņa ir kartēta datu atmiņā.
Vēl mazāk viedais Smart-IO (XCS-2869) Kompilatora smart-io funkcija ģenerēs derīgu, bet neoptimālu kodu, ja tiks izmantotas gan opcijas -floe, gan -fno-buil tin.
Neoptimāls tikai lasāmu datu izvietojums (XCS-2849) Saistītājam pašlaik nav zināmas atmiņas sadaļas APPCODE un APPDATA, kā arī atmiņas kartes sadaļas [No-] Read-While-Write. 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 piekrastes datu pragma funkcija, īpaši, ja ir iespējota arī piekrastes datu konfigurācijā-mapped-proem funkcija. Ja nepieciešams, šīs funkcijas var atspējot.
Objekts file pasūtījuma apstrāde (XCS-2863) Objektu secība files, ko apstrādās saistītājs, 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 (XCS-2777) Ja objekts ir absolūts adresē RAM sākumā un ir definēti arī neinicializēti objekti, var tikt aktivizēta linkera kļūda.
Īsa modināšanas ID (XCS-2775) ATA5700/2 ierīcēm PHID0/1 reģistri ir definēti tikai kā 16 bitu plati, nevis 32 biti.
Saistītāja avārija, zvanot simbolam (XCS-2758) Saites var avarēt, ja tiek izmantota opcija -merlad draiveris, kad avota kods izsauc simbolu, kas definēts, izmantojot opciju -Wl, –defsym linker.
Nepareiza inicializācija (XCS-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ā.
palaists nepareizi, ir tukšs (XCS-2652) Gadījumos, kad tēmas virkne konvertēšanai ar norādīto () satur peldošā komata skaitli eksponenciālā formātā un pēc rakstzīmes e ir neparedzēta rakstzīme, tad tukšā adrese, ja tā ir norādīta, norādīs uz rakstzīmi pēc e, nevis pats e. Piemēram,ample: norādīts (“hoey”, tukšs); rezultēsies tukša, norādot uz x rakstzīmi.
Slikti netiešie funkciju izsaukumi (XCS-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 (XCS-2626) Bibliotēkas funkcijas strtof () et al un scanf () et al vienmēr pārveidos heksadecimālo peldošā komata skaitli, kas nenorāda eksponentu
nulle. Piemēram,ample: stators (“Pūce”, &tukšs); atgriezīs vērtību 0, nevis 1.
Neprecīza steka padomdevēja ziņojumapmaiņa (XCS-2542, XCS-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 (XCS-2421) Ja vairāk nekā vienai pārtraukuma funkcijai ir viens un tas pats pamatteksts, kompilatoram var būt vienas pārtraukuma funkcijas izvade, kas izsauc 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.
Const objekti, kas nav programmas atmiņā (XCS-2408) Avrxmega3 un avertins projektiem unidealized const objekti tiek ievietoti datu atmiņā, lai gan brīdinājums liecina, ka tie ir ievietoti programmas atmiņā. Tas neietekmēs ierīces, kurām datu atmiņas vietā nav piesaistīta programmu atmiņa, kā arī neietekmēs nevienu inicializētu objektu.
Slikta izvade ar nederīgu DFP ceļu (XCS-2376) Ja kompilators tiek izsaukts ar nederīgu DFP ceļu un specifikāciju file atlasītajai ierīcei pastāv, kompilators neziņo par trūkstošo ierīču saimes pakotni un tā vietā atlasa specifikāciju file, kas pēc tam var izraisīt nederīgu izvadi. "Spec" fileIespējams, ka tie nav atjaunināti ar izplatītajiem DFP un bija paredzēti tikai iekšējai kompilatora pārbaudei.
Atmiņas pārklāšanās nav atklāta (XCS-1966) Kompilators nekonstatē objektu atmiņas pārklāšanos, kas ir absolūta adresē (izmantojot at ()) un citus objektus, izmantojot sadaļas () specifikāciju un kuri ir saistīti ar to pašu adresi.
Kļūme ar bibliotēkas funkcijām un _meme (XCS-1763) Izsauktās limbiskās peldošās funkcijas ar argumentu _memo adreses 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 limbiskā ieviešana (AVRTC-731) Produktiem ATTiny4/5/9/10/20/40 standarta C/Math bibliotēkas ieviešana limbiskajā versijā ir ļoti ierobežota vai vispār nav pieejama.
Programmas atmiņas ierobežojumi (AVRTC-732) Programmu atmiņas attēlus, kas pārsniedz 128 kb, atbalsta rīku ķēde; tomēr ir zināmi gadījumi, kad saistītājs tiek pārtraukts bez atslābināšanas un noderīga kļūdas ziņojuma, nevis ģenerējot nepieciešamos funkciju stubs, kad tiek izmantota opcija -relax.
Vārda vietas ierobežojumi (AVRTC-733) Nosauktās adrešu telpas atbalsta rīkķēde, ievērojot ierobežojumus, kas minēti lietotāja rokasgrāmatas sadaļā Īpašo tipu kvalifikatori.
Laika joslas The bibliotēkas funkcijas pieņem GMT un neatbalsta vietējās laika joslas, tāpēc vietējais laiks () atgriezīs to pašu laiku kā gummite (), piemēram,ample.

KLIENTU ATBALSTS

file:///Applications/microhip/xc8/v 2 .40/docs/Read me_X C 8_ for A VR. htm

Dokumenti / Resursi

MICROCHIP MPLAB XC8 C kompilatora programmatūra [pdfLietotāja rokasgrāmata
MPLAB XC8 C, MPLAB XC8 C kompilatoru programmatūra, kompilatoru programmatūra, programmatūra

Atsauces

Atstājiet komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti *