MICROCHIP MPLAB XC8 C kompajlerski softver
OVAJ DOKUMENT SADRŽI VAŽNE INFORMACIJE KOJE SE ODNOSE NA KOMPILER MPLAB XC8 C KADA CILJATE MICROCHIP AVR UREĐAJE.
PROČITAJTE GA PRIJE POKRETANJA OVAJ SOFTVER. POGLEDAJTE BILJEŠKE O IZDAVANJU MPLAB XC8 C KOMPILER ZA PIC DOKUMENT AKO KORISTITE KOMPILER ZA 8-BITNE PIC UREĐAJE.
Gotovoview
Uvod
Ovo izdanje Microchip MPLAB® XC8 C kompajlera sadrži nekoliko novih funkcija, ispravke grešaka i podršku za nove uređaje.
Datum izgradnje
Zvanični datum izrade ove verzije kompajlera je 3. jul 2022.
Prethodna verzija
Prethodna verzija MPLAB XC8 C kompajlera bila je 2.39, kompajler funkcionalne sigurnosti, izgrađen 27. januara 2022. Prethodni standardni kompajler je bila verzija 2.36, napravljena 27. januara 2022. godine.
Priručnik za funkcionalnu sigurnost
Priručnik za funkcionalnu sigurnost za kompajlere MPLAB XC dostupan je u paketu dokumentacije kada kupite licencu za funkcionalnu sigurnost.
Licence i verzije komponenti
MPLAB® XC8 C kompajler za AVR MCU alate je napisan i distribuiran pod GNU opštom javnom licencom (GPL) što znači da se njegov izvorni kod slobodno distribuira i dostupan javnosti. Izvorni kod za alate pod GNU GPL može se preuzeti odvojeno od Microchipa website. Možete pročitati GNU GPL u file named nalazi poddirektorij vašeg instalacionog direktorija. Opšta diskusija o principima na kojima se temelji GPL može se naći ovdje. Kôd podrške za zaglavlje files, linker skripte i runtime biblioteke su vlasnički kod i nisu pokriveni GPL-om.
Ovaj kompajler je implementacija GCC verzije 5.4.0, binutils verzije 2.26 i koristi avr-libc verziju 2.0.0.
Sistemski zahtjevi
MPLAB XC8 C kompajler i softver za licenciranje koji koristi dostupni su za različite operativne sisteme, uključujući 64-bitne verzije sledećeg: Profesionalna izdanja Microsoft Windows 10; Ubuntu 18.04; i macOS 10.15.5. Binarne datoteke za Windows su potpisane kodom. Binarne datoteke za mac OS su potpisane kodom i ovjerene kod notara.
Ako koristite mrežni server za licence, samo računari sa operativnim sistemima koje podržavaju kompajleri mogu se koristiti za hostovanje servera licenci. Od xclm verzije 2.0, server mrežnih licenci može se instalirati na Microsoft Windows Server platformi, ali server licenci ne mora da radi na serverskoj verziji operativnog sistema.
Podržani uređaji
Ovaj kompajler podržava sve 8-bitne AVR MCU uređaje poznate u vrijeme izdavanja. Pogledajte (u doc direktoriju kompajlera) za listu svih podržanih uređaja. Ove files također navodi postavke bitova konfiguracije za svaki uređaj.
Izdanja i nadogradnje licenci
MPLAB XC8 kompajler se može aktivirati kao licencirani (PRO) ili nelicencirani (besplatni) proizvod. Morate kupiti ključ za aktivaciju da licencirate svoj kompajler. Licenca omogućava viši nivo optimizacije u poređenju sa besplatnim proizvodom. Nelicencirani kompajler može raditi neograničeno bez licence.
Kompajler MPLAB XC8 Functional Safety mora biti aktiviran uz licencu za funkcionalnu sigurnost kupljenu od Microchipa. Kompajler neće raditi bez ove licence. Kada se aktivira, možete odabrati bilo koji nivo optimizacije i koristiti sve karakteristike kompajlera. Ovo izdanje MPLAB XC Functional Safety Compiler podržava Licencu mrežnog servera.
Pogledajte dokument Instaliranje i licenciranje MPLAB XC C kompajlera (DS50002059) za informacije o tipovima licenci i instalaciji kompajlera sa licencom.
Instalacija i aktivacija
Pogledajte i odjeljke Problemi i ograničenja migracije za važne informacije o najnovijem upravitelju licenci uključenom u ovaj kompajler.
Ako koristite MPLAB IDE, obavezno instalirajte najnoviju MPLAB X IDE verziju 5.0 ili noviju prije instaliranja ovog alata. Zatvorite IDE prije instaliranja kompajlera. Pokrenite aplikaciju za instalaciju kompajlera .exe (Windows), .run (Linux) ili app (macOS), npr. XC8-1.00.11403-windows.exe i pratite uputstva na ekranu.
Preporučuje se podrazumevani instalacijski direktorij. Ako koristite Linux, morate instalirati kompajler pomoću terminala i sa root naloga. Instalirajte koristeći macOS nalog sa administratorskim privilegijama.
Aktivacija se sada provodi odvojeno od instalacije. Pogledajte dokument License Manager za MPLAB® XC C kompajlere (DS52059) za više informacija.
Ako odlučite da pokrenete kompajler pod licencom za evaluaciju, sada ćete dobiti upozorenje tokom kompilacije kada budete u roku od 14 dana od kraja vašeg perioda evaluacije. Isto upozorenje se izdaje ako ste u roku od 14 dana od kraja vaše HPA pretplate.
XC Network License Server je zaseban instalater i nije uključen u instalacijski program kompajlera za jednog korisnika.
XC License Manager sada podržava roaming plutajućih mrežnih licenci. Namijenjena mobilnim korisnicima, ova funkcija omogućava da se plutajuća licenca na kratko vrijeme isključi iz mreže. Koristeći ovu funkciju, možete prekinuti vezu sa mrežom i dalje koristiti svoj MPLAB XC kompajler. Više o ovoj funkciji potražite u fascikli doc XCLM instalacije. MPLAB X IDE uključuje prozor Licence (Alati > Licence) za vizuelno upravljanje romingom.
Rješavanje problema sa instalacijom
Ako naiđete na poteškoće pri instalaciji kompajlera pod bilo kojim od Windows operativnih sistema, pokušajte sa sljedećim sugestijama.
- Pokrenite instalaciju kao administrator.
- Postavite dozvole aplikacije za instalaciju na 'Puna kontrola'. (Kliknite desnim tasterom miša na file, odaberite Svojstva, karticu Sigurnost, odaberite korisnika, uredite.)
- Postavite dozvole privremenog foldera na “Puna kontrola!
Da biste odredili lokaciju privremene fascikle, otkucajte %temp% u naredbu Pokreni (tipka s logotipom Windows + R). Ovo će otvoriti a file dijalog istraživača koji prikazuje taj direktorij i omogućit će vam da odredite putanju te mape.
Dokumentacija kompajlera
Korisnički vodiči za kompajler mogu se otvoriti sa HTML stranice koja se otvara u vašem pretraživaču kada kliknete na plavo dugme pomoći na MPLAB X IDE kontrolnoj tabli, kao što je prikazano na snimku ekrana.
Ako gradite za 8-bitne AVR ciljeve, Uputstvo za upotrebu kompajlera MPLAB® XC8 C za AVR® MCU sadrži informacije o onim opcijama i karakteristikama kompajlera koje su primenljive na ovu arhitekturu.
Korisnička podrška
Microchip pozdravlja izvještaje o greškama, sugestije ili komentare u vezi sa ovom verzijom kompajlera. Molimo vas da sve izvještaje o greškama ili zahtjeve za funkcije uputite putem sistema podrške.
Ažuriranja dokumentacije
Za on-line i ažurirane verzije MPLAB XC8 dokumentacije, posjetite Microchipovu internetsku tehničku dokumentaciju website.
Nova ili ažurirana AVR dokumentacija u ovom izdanju:
- Obavijest o autorskim pravima MUSL-a
- Instaliranje i licenciranje MPLAB XC C kompajlera (revizija M)
- MPLAB XC8 Korisnički vodič za ugrađene inženjere – AVR MCU (revizija A)
- Korisnički vodič za MPLAB XC8 C kompajler za AVR MCU (revizija F)
- Referentni vodič za objedinjenu standardnu biblioteku Microchipa (revizija B)
Referentni vodič za objedinjenu standardnu biblioteku Microchip opisuje ponašanje i interfejs za funkcije definisane od strane Microchip Unified Standard Library, kao i nameravanu upotrebu tipova biblioteka i makroa. Neke od ovih informacija su ranije bile sadržane u korisničkom vodiču za MPLAB® XC8 C kompajler za AVR® MCU. Informacije o biblioteci specifične za uređaj i dalje su sadržane u ovom vodiču za kompajler.
Ako tek počinjete sa 8-bitnim uređajima i MPLAB XC8 C kompajlerom, MPLAB® XC8 User!s Guide for Embedded Engineers – AVR® MCUs (DS50003108) sadrži informacije o postavljanju projekata u MPLAB X IDE i pisanju koda za vaš prvi MPLAB XC8 C projekat. Ovaj vodič je sada distribuiran sa kompajlerom.
Hamate User's Guide je uključen u direktorij dokumenata u ovom izdanju. Ovaj vodič je namijenjen onima koji koriste Hamate kao samostalnu aplikaciju.
Šta je novo
Sljedeće su nove AVR-target karakteristike koje kompajler sada podržava. Broj verzije u podnaslovima označava prvu verziju kompajlera koja podržava funkcije koje slijede.
Verzija 2.40
Podrška za nove uređaje Podrška je sada dostupna za sljedeće AVR dijelove: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32 i AVR64EA48.
Poboljšana proceduralna apstrakcija Alat za optimizaciju proceduralne apstrakcije (PA) je poboljšan tako da se kod koji sadrži instrukciju poziva funkcije ( call recall ) može ocrtati. Ovo će se dogoditi samo ako se stek ne koristi za prosljeđivanje argumenata niti za dobivanje povratne vrijednosti iz funkcije. Stek se koristi kada se poziva funkcija s promjenjivom listom argumenata ili kada se poziva funkcija koja uzima više argumenata nego što je registara određenih za ovu svrhu. Ova funkcija se može onemogućiti pomoću opcije monk-pa-outline-calls, ili se proceduralna apstrakcija može u potpunosti onemogućiti za objekat file ili funkcija pomoću -monk-pa-on-file i -mo.-pa-on-function, odnosno, ili korištenjem atributa nipa (nipa specificer) selektivno sa funkcijama
Makro pokrivanja koda Kompajler sada definira makro __CODECOV ako je specificirana važeća opcija mcodecov.
Mogućnost rezervacije memorije xc8-cc drajver će sada prihvatiti opciju -mreserve=space@start: end prilikom izgradnje za AVR ciljeve. Ova opcija rezervira specificirani memorijski raspon u memorijskom prostoru podataka ili programa, sprječavajući povezivač da popuni kod ili objekte u ovoj oblasti.
Pametniji pametni IO Nekoliko poboljšanja je napravljeno na Smart IO funkcijama, uključujući generalna podešavanja koda printf jezgre, tretiranje specifikacije konverzije %n kao nezavisne varijante, povezivanje u vararg pop rutinama na zahtjev, korištenje kraćih tipova podataka gdje je to moguće za rukovanje argumentima IO funkcije , i faktoring uobičajenog koda u širini polja i preciznom rukovanju. Ovo može rezultirati značajnim uštedama koda i podataka, kao i povećanjem brzine izvršavanja IO-a.
Verzija 2.39 (Funkcionalno sigurnosno izdanje)
Licenca mrežnog servera Ovo izdanje MPLAB XC8 Functional Safety Compiler podržava Licencu mrežnog servera.
Verzija 2.36
Nema.
Verzija 2.35
Podrška za nove uređaje Podrška je dostupna za sljedeće AVR dijelove: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 i AVR64DD32.
Poboljšano prebacivanje konteksta Nova opcija -mcall-isr-prologues mijenja način na koji funkcije prekida spremaju registre pri ulasku i kako se ti registri vraćaju kada se rutina prekida završi. Radi na sličan način kao opcija -mcall-prologues, ali utječe samo na funkcije prekida (ISR).
Još više poboljšano prebacivanje konteksta Nova opcija -mgas-isr-prologues kontrolira kontekstni itch kod generiran za male servisne rutine prekida. Kada je omogućena, ova funkcija će omogućiti asembleru da skenira ISR za korištenje registra i samo ako je potrebno pohrani ove korištene registre.
Konfigurabilno flash mapiranje Neki uređaji u AVR DA i AVR DB porodici imaju SFR (npr. FLMAP) koji specificira koji će 32k odsječak programske memorije biti mapiran u memoriju podataka. Nova opcija – mconst-data-in-config-mapped-proem može se koristiti da bi povezivač smjestio sve kvalifikovane podatke u jednu 32k sekciju i automatski inicijalizirao relevantni SFR registar kako bi osigurao da su ovi podaci mapirani u memorijski prostor podataka , gdje će mu se pristupiti efikasnije.
Microchip Unified Standard Libraries Svi MPLAB XC kompajleri će dijeliti Microchip Unified Standard Library, koja je sada dostupna uz ovo izdanje MPLAB XC8. Uputstvo za upotrebu kompajlera MPLAB® XC8 C/ili AVR® MCU više ne uključuje dokumentaciju za ove standardne funkcije. Ove informacije se sada mogu naći u Referentnom vodiču za Microchip Unified Standard Library. Imajte na umu da neke funkcionalnosti koje je prethodno definirao avr-libc više nisu dostupne. (Vidi Biblioteku):'. funkcionalnost...)
Smart IO Kao dio novih objedinjenih biblioteka, IO funkcije u porodicama za štampanje i skeniranje sada su prilagođene generisanju za svaku verziju, na osnovu načina na koji se te funkcije koriste u programu. Ovo može značajno smanjiti resurse koje koristi program.
Opcija Smart IO pomoći Kada analizira pozive pametnim IO funkcijama (kao što su printf () ili scanf () ), prevodilac ne može uvijek odrediti iz niza formata ili zaključiti iz argumenata one specifikacije konverzije koje zahtijeva poziv. Ranije je kompajler uvijek pravio nikakve pretpostavke i osiguravao da su potpuno funkcionalne IO funkcije povezane u konačnu sliku programa. Dodata je nova opcija – msmart-io-format=fmt tako da kompajler umjesto toga može biti obaviješten od strane korisnika o specifikacijama konverzije koje koriste pametne IO funkcije čija je upotreba dvosmislena, sprečavajući povezivanje predugačkih IO rutina. (Pogledajte opciju smart-io-format za više detalja.)
Postavljanje prilagođenih sekcija Ranije je opcija -Wl, –section-start samo postavljala navedenu sekciju na traženu adresu kada je skripta povezivača definisala izlaznu sekciju sa istim imenom. Kada to nije bio slučaj, sekcija je postavljena na adresu koju je odabrao linker i opcija je u suštini zanemarena. Sada će opcija biti poštovana za sve prilagođene sekcije, čak i ako linker skripta ne definira odjeljak. Međutim, imajte na umu da za standardne sekcije, kao što je . tekst,. bss ili . podataka, alokator koji najbolje odgovara i dalje će imati potpunu kontrolu nad njihovim postavljanjem, a opcija neće imati efekta. Koristite opciju -Wl, -Tsection=add, kao što je opisano u korisničkom vodiču.
Verzija 2.32
Stack Guidance Dostupna uz PRO licencu kompajlera, funkcija navođenja steka kompajlera može se koristiti za procjenu maksimalne dubine bilo kojeg steka koji koristi program. On konstruiše i analizira graf poziva programa, određuje upotrebu steka za svaku funkciju i proizvodi izveštaj iz kojeg se može zaključiti dubina stekova koje program koristi. Ova funkcija je omogućena preko opcije komandne linije -mchp-stack-usage. Sažetak upotrebe steka se štampa nakon izvršenja. Detaljan izvještaj o stogu je dostupan na mapi file, koji se može zatražiti na uobičajen način.
Podrška za nove uređaje Dostupan je za sljedeće AVR dijelove: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32 i AVR32DB48.
Podrška za uvučene uređaje više nije dostupan za sljedeće AVR dijelove: AVR16DA28, AVR16DA32 i, AVR16DA48.
Verzija 2.31
Nema.
Verzija 2.30
Nova opcija za sprečavanje inicijalizacije podataka Nova opcija drajvera -mno-data-init sprečava inicijalizaciju podataka i brisanje bss sekcija. Radi tako što potiskuje izlaz do_ copy_ data i d o_ clear_ bss simbola u asembleru files, što će zauzvrat spriječiti uključivanje tih rutina od strane povezivača.
Unaprijeđene optimizacije Napravljen je niz poboljšanja optimizacije, uključujući uklanjanje suvišnih instrukcija za vraćanje, uklanjanje nekih skokova nakon instrukcije preskoči ako-bit-je, te poboljšanu proceduralna apstrakcija i mogućnost ponavljanja ovog procesa.
Dodatne opcije su sada dostupne za kontrolu nekih od ovih optimizacija, posebno -f sidra sekcija, što omogućava pristup statičkim objektima koji se obavljaju u odnosu na jedan simbol; -mpai derations=n, što dozvoljava da se broj iteracija proceduralne apstrakcije promijeni od zadanog od 2; i -mpa- call cost- shortcall, koji izvodi agresivniju proceduralnu apstrakciju, u nadi da linker može opustiti duge pozive. Ova posljednja opcija može povećati veličinu koda ako se osnovne pretpostavke ne realizuju.
Podrška za nove uređaje Podrška je dostupna za sljedeće AVR dijelove: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 i AVR128DB
Podrška za uvučeni uređaj Podrška više nije dostupna za sljedeće AVR dijelove: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, i ATA664251CXNUMX.
Verzija 2.29 (Funkcionalno sigurnosno izdanje)
Zaglavlje file za ugrađene kompajlere Da bi se osiguralo da kompajler može biti u skladu sa jezičnim specifikacijama kao što je MISRA, header file, koji je automatski uključen , je ažuriran. Ovo zaglavlje sadrži prototipove za sve ugrađene funkcije, kao što su _buil tin _avrnop () i _buil tin_ avr delay_cycles () . Neki ugrađeni moduli možda nisu usklađeni sa MISRA; oni se mogu izostaviti dodavanjem definicije _Xe_ STRICT_ MISRA u komandnu liniju kompajlera. Ugrađeni elementi i njihove deklaracije su ažurirani da koriste tipove fiksne širine.
Verzija 2.20
Podrška za nove uređaje Podrška je dostupna za sljedeće AVR dijelove: ATTINY1624, ATTINY1626 i ATTINY1627.
Bolja najbolja alokacija Alokator najboljeg uklapanja (BFA) u kompajleru je poboljšan tako da se sekcije dodjeljuju redoslijedom koji omogućava bolju optimizaciju. BFA sada podržava imenovane adresne prostore i bolje upravlja inicijalizacijom podataka.
Poboljšana proceduralna apstrakcija Optimizacije proceduralne apstrakcije se sada izvode na više kodnih sekvenci. Prethodne situacije u kojima je ova optimizacija mogla povećati veličinu koda bile su riješene tako što je kod za optimizaciju bio svjestan procesa prikupljanja smeća povezivača.
Nedostatak AVR asemblera AVR Assembler više nije uključen u ovu distribuciju.
Verzija 2.19 (Funkcionalno sigurnosno izdanje)
Nema.
Verzija 2.10
Pokrivenost koda Ovo izdanje uključuje funkciju pokrivenosti koda koja olakšava analizu obima do koje je izvorni kod projekta izvršen. Koristite opciju -mcodecov=ram da biste je omogućili. Nakon izvršavanja programa na vašem hardveru, informacije o pokrivenosti koda će se uporediti u uređaju, a to se može prenijeti i prikazati od strane MPLAB X IDE preko dodatka za pokrivenost koda. Pogledajte IDE dokumentaciju za informacije o ovom dodatku koje možete dobiti. #pragma mcodecov se može koristiti za isključivanje naknadnih funkcija iz analize pokrivenosti. Idealno bi bilo da se pragma doda na početak file da se to u celini isključi file iz analize pokrivenosti. Alternativno, atribut ( (mcodecov)) se može koristiti za isključivanje specifične funkcije iz analize pokrivenosti.
Opis uređaja files Novi uređaj file zove se avr chipinfo. html se nalazi u direktoriju dokumenata distribucije kompajlera. Ovo file navodi sve uređaje koje podržava kompajler. Kliknite na naziv uređaja i otvorit će se stranica koja prikazuje sve dozvoljene parove konfiguracijskih bitova/vrijednosti za taj uređaj, s examples.
Proceduralna apstrakcija Proceduralne optimizacije apstrakcije, koje zamjenjuju uobičajene blokove asemblerskog koda pozivima ekstrahirane kopije tog bloka, dodane su kompajleru. One se izvode od strane zasebne aplikacije, koju kompajler automatski poziva kada bira nivo 2, 3 ili optimizacije. Ove optimizacije smanjuju veličinu koda, ali mogu smanjiti brzinu izvršavanja i otklanjanje grešaka koda.
Proceduralna apstrakcija se može onemogućiti na višim nivoima optimizacije pomoću opcije -mno-pa, ili se može omogućiti na nižim nivoima optimizacije (u zavisnosti od vaše licence) korištenjem -mpa. Može se onemogućiti za objekat file koristeći -mno-pa-on-file=fileime, ili onemogućeno za funkciju korištenjem -mno-pa on function= funkcije.
Unutar vašeg izvornog koda, proceduralna apstrakcija se može onemogućiti za funkciju korištenjem _attribute_ ( (nopa)) s definicijom funkcije, ili korištenjem _nopa, koji se proširuje na atribut ( (nopa, noinline)) i na taj način sprječava umetanje funkcije i postoji apstrakcija umetnutog koda.
Podrška za zaključavanje u pragma #pragma config se sada može koristiti za specificiranje bitova za zaključavanje AVR-a kao i drugih konfiguracijskih bitova. Provjerite informacije o avr čipu. html file (gore spomenuto) za parove postavke/vrijednosti koje se koriste sa ovom pragmom.
Podrška za nove uređaje Podrška je dostupna za sljedeće dijelove: AVR28DA128, AVR64DA128, AVR32DA128 i AVR48DA128.
Verzija 2.05
Više za vaš novac MacOS verzija ovog kompajlera i upravitelja licencama je sada 64-bitna aplikacija. Ovo će osigurati da će se kompajler instalirati i pokrenuti bez upozorenja na novijim verzijama macOS-a.
Const objekti u programskoj memoriji Prevoditelj sada može postaviti objekte kvalifikovane za konst u Flash memoriju programa, umjesto da ih ima u RAM-u. Kompajler je modifikovan tako da se globalni podaci kvalifikovani za konst pohranjuju u programsku fleš memoriju i ovim podacima se može direktno i indirektno pristupiti korišćenjem odgovarajućih instrukcija programske memorije. Ova nova funkcija je podrazumevano omogućena, ali se može onemogućiti pomoću opcije -mno-const-data-in-progmem. Za avrxmega3 i avrtiny arhitekture, ova funkcija nije potrebna i uvijek je onemogućena, budući da je programska memorija mapirana u adresni prostor podataka za ove uređaje.
Standardno besplatno Nelicencirane (besplatne) verzije ovog kompajlera sada dozvoljavaju optimizacije do i uključujući nivo 2. Ovo će omogućiti sličan, iako ne identičan, izlaz onome što je ranije bilo moguće korištenjem Standardne licence.
Dobrodošli AVRASM2 AVRASM2 asembler za 8-bitne uređaje sada je uključen u instalater kompajlera XC8. Ovaj asembler ne koristi XC8 kompajler, ali je dostupan za projekte bazirane na ručno pisanom asemblerskom izvoru.
Podrška za nove uređaje Podrška je dostupna za sljedeće dijelove: ATMEGA1608, ATMEGA1609, ATMEGA808 i ATMEGA809.
Verzija 2.00
Driver najvišeg nivoa Novi drajver, nazvan xc8-cc, sada se nalazi iznad prethodnog drajvera avr-gcc i xc8 drajvera i može pozvati odgovarajući kompajler na osnovu izbora ciljnog uređaja. Ovaj drajver prihvata opcije GCC stila, koje se ili prevode za ili prosleđuju kompajleru koji se izvršava. Ovaj drajver dozvoljava sličan skup opcija sa sličnom semantikom da se koristi sa bilo kojim AVR ili PIC ciljem i stoga je preporučeni način za pozivanje kompajlera. Ako je potrebno, stari avr-gcc drajver se može pozvati direktno koristeći opcije starog stila koje je prihvatao u ranijim verzijama kompajlera.
Zajednički C interfejs Ovaj kompajler se sada može prilagoditi MPLAB Common C Interface, omogućavajući da se izvorni kod lakše prenese na sve MPLAB XC kompajlere. Opcija -mext=cci zahtijeva ovu funkciju, omogućavajući alternativnu sintaksu za mnoge jezičke ekstenzije.
Novi vozač bibliotekara Novi upravljački program bibliotekara je pozicioniran iznad prethodnog PIC bibliotekara bibliotekara i AVR avr-ar bibliotekara. Ovaj drajver prihvata opcije u stilu GCC-arhivatora, koje se ili prevode za ili prosleđuju bibliotekaru koji se izvršava. Novi drajver omogućava sličan skup opcija sa sličnom semantikom da se koristi za kreiranje ili manipulisanje bilo kojom PIC ili AVR bibliotekom file i stoga je preporučeni način za pozivanje bibliotekara. Ako je potrebno za naslijeđene projekte, prethodni bibliotekar se može pozvati direktno koristeći opcije starog stila koje je prihvatio u ranijim verzijama kompajlera.
Migration Issues
Sljedeće su karakteristike kojima kompajler sada rukuje drugačije. Ove promjene mogu zahtijevati modifikaciju vašeg izvornog koda ako se kod prenosi na ovu verziju kompajlera. Broj verzije u podnaslovima označava prvu verziju kompajlera koja podržava promjene koje slijede.
Verzija 2.40
Nema.
Verzija 2.39 (Funkcionalno sigurnosno izdanje)
Nema.
Verzija 2.36
Nema.
Verzija 2.35
Rukovanje bazama vezanim za nizove (XCS-2420) Da bi se osigurala konzistentnost sa drugim XC kompajlerima, funkcije XC8 string-to, poput strtol () itd., više neće pokušavati da konvertuju ulazni niz ako je specificirana baza veća od 36 i umjesto toga će postaviti errno na EINVAL. C standard ne specificira ponašanje funkcija kada je ova osnovna vrijednost premašena.
Neprikladne optimizacije brzine Optimizacije proceduralne apstrakcije su bile omogućene prilikom odabira optimizacije nivoa 3 (-03). Ove optimizacije smanjuju veličinu koda na račun brzine koda, tako da ih nije trebalo izvoditi. Projekti koji koriste ovu razinu optimizacije mogu vidjeti razlike u veličini koda i brzini izvršavanja kada su napravljeni s ovim izdanjem.
Funkcionalnost biblioteke Kod za mnoge funkcije standardne C biblioteke sada dolazi iz Microchipove Unified Standard Library, koja bi mogla pokazati drugačije ponašanje u nekim okolnostima u poređenju sa onim koje je pružala bivša biblioteka avr-libc. Za nprampViše nije potrebno povezivati se u biblioteci lprintf_flt (opcija -print _flt) da biste uključili formatiranu IO podršku za specifikacije float formata. Pametne IO karakteristike Microchip Unified Standard Library čine ovu opciju suvišnom. Dodatno, upotreba rutina sa sufiksom _p za stringove i memorijske funkcije (npr. strcpy_P () itd.. ) koje rade na const stringovima u flashu više nije potrebna. Standardne C rutine (npr. strcpy ()) će ispravno raditi sa takvim podacima kada je omogućena funkcija const-data-in-program-memory.
Verzija 2.32
Nema.
Verzija 2.31
Nema.
Verzija 2.30
Nema.
Verzija 2.29 (Funkcionalno sigurnosno izdanje)
Nema.
Verzija 2.20
Promijenjen DFP izgled Kompajler sada pretpostavlja drugačiji izgled koji koriste DFP-ovi (Paketi porodice uređaja). To će značiti da stariji DFP možda neće raditi s ovim izdanjem, a stariji prevodioci neće moći koristiti najnovije DFP-ove.
Verzija 2.19 (Funkcionalno sigurnosno izdanje)
Nema.
Verzija 2.10
Nema
Verzija 2.05
Konstantni objekti u programskoj memoriji Imajte na umu da će prema zadanim postavkama objekti kvalificirani konst biti smješteni i pristupiti im u programskoj memoriji (kao što je ovdje opisano). Ovo će uticati na veličinu i brzinu izvršavanja vašeg projekta, ali bi trebalo smanjiti upotrebu RAM-a. Ova funkcija se može onemogućiti, ako je potrebno, koristeći opciju -mnoconst-da ta-in-progmem.
Verzija 2.00
Konfiguracijski osigurači Osigurači za konfiguraciju uređaja sada se mogu programirati korištenjem konfiguracijske pragme praćene parovima vrijednosti-postavke za određivanje stanja osigurača, npr.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Apsolutni objekti i funkcije Objekti i funkcije sada mogu biti smješteni na određenu adresu u memoriji koristeći CCI _at (address) specificer, npr.ample: #include int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Argument ovog specifikacija mora biti konstanta koja predstavlja adresu na kojoj će biti postavljen prvi bajt ili instrukcija. RAM adrese su naznačene korišćenjem ofseta od 0x800000. Omogućite CCI-ju da koristi ovu funkciju.
Nova sintaksa funkcije prekida Kompajler sada prihvata specifikaciju CCI prekida (num) da naznači da su C funkcije rukovaoci prekida. Specifikator uzima broj prekida, na primjerample: #include void prekid(SPI STC_ vect _num) spi Isr(void) { … }
Fiksni problemi
Sljedeće su ispravke koje su napravljene na kompajleru. Ovo bi moglo popraviti greške u generiranom kodu ili promijeniti rad kompajlera na ono što je bilo predviđeno ili specificirano u korisničkom vodiču. Broj verzije u podnaslovima označava prvu verziju kompajlera koja sadrži popravke za probleme koji slijede. Oznake u zagradama u naslovu su identifikacija tog problema u bazi podataka za praćenje. Ovo može biti korisno ako trebate kontaktirati podršku.
Imajte na umu da su neki problemi specifični za uređaj ispravljeni u paketu porodice uređaja (DFP) koji je povezan s uređajem. Pogledajte MPLAB Pack Manager za informacije o promjenama napravljenim na DFP-ovima i za preuzimanje najnovijih paketa.
Verzija 2.40
Previše opušteno (XCS-2876) Kada je koristio opciju -mrelax, kompajler nije alocirao neke sekcije zajedno, što je rezultiralo manje optimalnim veličinama koda. Ovo se moglo dogoditi s kodom koji je koristio nove MUSL biblioteke ili sa slabim simbolima.
Funkcija mapiranja nije onemogućena kao što je navedeno u upozorenju (XCS-2875) Značajka mapiranihprogmem podataka o troškovima u konfiguraciji se oslanja na omogućenu značajku podataka o troškovima u programu. Ako je funkcija cost-data-ipconfig-mapped-proem eksplicitno omogućena korištenjem opcije i funkcija cost-data-inprogmem onemogućena, korak povezivanja nije uspio, uprkos poruci upozorenja u kojoj se navodi da je config data-in-config-mapped- proem funkcija je bila automatski onemogućena, što nije bilo sasvim tačno. Funkcija const-data-in-config-mapped-proem je sada potpuno onemogućena u ovoj situaciji.
DFP se mijenja za ispravan pristup NVMCTRL (XCS-2848) Početni kod izvođenja koji koriste uređaji AVR64EA nije uzeo u obzir da je NVMCTRL registar bio pod zaštitom od promjene konfiguracije (CCP) i nije mogao postaviti IO SFR na stranicu koju koristi const-data-in configmapped-proem kompajler karakteristika. Promjene napravljene u AVR-Ex_DFP verziji 2.2.55 omogućit će kodu za pokretanje da ispravno upiše u ovaj registar.
DFP promjene kako bi se izbjeglo flash mapiranje (XCS-2847) Zaobilazno rešenje za problem sa funkcijom uređaja za fleš mapiranje prijavljen u AVR128DA28/32/48/64 Silicon Errata (DS80000882) je implementirano. Funkcija kompajlera const-data-in-config-mapped-proem neće biti primijenjena po defaultu za pogođene uređaje, a ova promjena će se pojaviti u AVR-Ex_DFP verziji 2.2.160.
Greška pri izradi sa sinhf ili coshf (XCS-2834) Pokušaji korištenja bibliotečkih funkcija sinhf () ili coshf () rezultirali su greškom veze koja opisuje nedefiniranu referencu. Referentna funkcija koja nedostaje sada je uključena u distribuciju kompajlera.
Greške u izradi sa nopa (XCS-2833) Upotreba atributa nopa s funkcijom kojoj je ime asemblera specificirano korištenjem kao () pokrenulo je poruke o grešci od asemblera. Ova kombinacija nije moguća.
Promjenljiva greška funkcije s argumentima pokazivača (XCS-2755, XCS-2731) Funkcije s promjenjivim brojem argumenata očekuju da 24-bitni (tip _memo) pokazivači budu proslijeđeni u listu varijabilnih argumenata kada je omogućena funkcija podataka o troškovima u programu. Argumenti koji su bili pokazivači na memoriju podataka bili su proslijeđeni kao 16-bitni objekti, uzrokujući neuspjeh koda kada su na kraju pročitani. Kada je omogućena funkcija cons data-in-proem, svi argumenti 16-bitnih pokazivača sada se konvertuju u 24-bitne pokazivače. Funkcije biblioteke strtoxxx ne uspijevaju (XCS-2620) Kada je omogućena funkcija const-data-in-proem, parametar enter u funkcijama biblioteke strtoxxx nije pravilno ažuriran za argumente izvornog niza koji nisu u memoriji programa.
Upozorenja za nevažeće zalihe (XCS-2612) Kompajler će sada izdati grešku ako je omogućena funkcija troška u proemu i ako je adresa stringovog literala eksplicitno prebačena u adresni prostor podataka (ispuštajući kvalifikator const), npr.ample, (uint8 t *) “Hello World!”. Upozorenje je problem ako adresa može biti nevažeća kada se pokazivač konst podataka eksplicitno dovede u adresni prostor podataka.
Postavljanje neinicijaliziranih const objekata (XCS-2408) Neinicijalizirani const i const volatile objekti nisu bili smješteni u programsku memoriju na uređajima koji mapiraju cijelu ili dio svoje programske memorije u adresni prostor podataka. Za ove uređaje, takvi objekti su sada smješteni u programsku memoriju, čineći njihov rad dosljednim s drugim uređajima.
Verzija 2.39 (Funkcionalno sigurnosno izdanje)
Nema.
Verzija 2.36
Greška pri odlaganju (XCS-2774) Manje promjene u zadanim optimizacijama slobodnog načina rada spriječile su konstantno savijanje izraza operanda u ugrađene funkcije kašnjenja, što je rezultiralo da se oni tretiraju kao nekontakti i pokreću grešku: _buil tin avr kašnjenje_ ciklusi očekuju ac ompile vremenska celobrojna konstanta.
Verzija 2.35
Kontinuirana alokacija pomoću _at (XCS-2653) Kontinualna alokacija višestrukih objekata u sekciji s istim imenom i korištenjem at () nije radila ispravno. Za nprample: constchararrl [ ] na tri butte ((sect on(.misses”))) na (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[ ] na tri butte ((section(.my s eke”))) = {Volov, Ox FE }; trebao postaviti arr2 odmah nakon aril.
Određivanje početnih adresa odjeljka (XCS-2650) Opcija -Wal, –section-start tiho nije uspjela postaviti sekcije na nominiranu početnu adresu. Ovaj problem je popravljen za sve sekcije sa prilagođenim imenom; međutim, neće raditi ni za jednu standardnu sekciju, kao što je . tekst ili . bss, koji se mora postaviti pomoću opcije -Wl, -T.
Linker se ruši pri opuštanju (XCS-2647) Kada je omogućena optimizacija -relax i postoje dijelovi koda ili podataka koji se ne uklapaju u dostupnu memoriju, linker se srušio. Sada, u takvim okolnostima, umjesto toga se izdaju poruke o grešci.
Loš EEPROM pristup (XCS-2629) Blok rutina leproma _read_ nije radila ispravno na Mega uređajima kada je bila omogućena opcija -monist-data-in-proem (što je zadano stanje), što je rezultiralo neispravnim čitanjem EEPROM memorije.
Nevažeća dodjela memorije (XCS-2593, XCS-2651) Kada je opcija -Text ili -Tata linker (nprampako je propušten pomoću opcije drajvera -Wl) je naveden, odgovarajuće porijeklo teksta/podataka je ažurirano; međutim, krajnja adresa nije prilagođena u skladu s tim, što je moglo dovesti do toga da region premašuje opseg memorije ciljnog uređaja.
Nevažeći ATtiny kod prekida (XCS-2465) Kada se gradi za Tatin uređaje i optimizacije su onemogućene (-00), funkcije prekida su možda pokrenule poruke asemblera za operand izvan opsega.
Opcije se ne prolaze kroz (XCS-2452) Kada koristite opciju -Wl sa višestrukim opcijama povezivača odvojenim zarezima, nisu sve opcije povezivača prosleđene povezivaču.
Greška indirektnog čitanja programske memorije (XCS-2450) U nekim slučajevima, kompajler je proizveo internu grešku (neprepoznatljiv insn) prilikom čitanja vrijednosti od dva bajta iz pokazivača u memoriju programa
Verzija 2.32
Drugi pristup biblioteci nije uspio (XCS-2381) Pozivanje Windows verzije xc8-ar. exe arhiver biblioteke drugi put za pristup postojećoj arhivi biblioteke možda nije uspio s porukom o grešci nemogućnosti preimenovanja.
Verzija 2.31
Neobjašnjive greške kompajlera (XCS-2367) Prilikom pokretanja na Windows platformama koje su imale sistemski privremeni direktorij postavljen na putanju koja uključuje tačku'.' karaktera, kompajler možda nije uspio da izvrši.
Verzija 2.30
Globalne naljepnice zagubljene nakon opisa (XCS-2299) Ručno pisani asemblerski kod koji postavlja globalne oznake unutar nizova sklopova koji su razdvojeni proceduralnim apstrakcijama možda nije ispravno repozicioniran.
Opuštajući sudar (XCS-2287) Korištenje -merlad opcije je moglo uzrokovati pad linkera kada su optimizacije opuštanja skoka repa pokušale ukloniti ret instrukcije koje nisu bile na kraju odjeljka.
Pad prilikom optimizacije oznaka kao vrijednosti (XCS-2282) Kôd koji koristi ekstenziju jezika GNU C „Oznake kao vrijednosti“ je možda uzrokovao pad optimizacije proceduralne apstrakcije, s greškom popravljanja ocrtanog VMA raspona raspona.
Nije tako konstantno (XCS-2271) Prototipovi za starts () i druge funkcije iz više ne specificira kvalifikator nestandardne cijene na vraćenim pokazivačima stringova kada je funkcija -monist-data inprogmem onemogućena. Imajte na umu da je kod uređaja avrxmega3 i avertin ova funkcija trajno omogućena.
Izgubljeni inicijalizatori (XCS-2269) Kada je više od jedne varijable u jedinici prijevoda stavljeno u odjeljak (koristeći odjeljak ili atribut ((section))), a prva takva varijabla je bila inicijalizirana nula ili nije imala inicijalizator, inicijalizatori za druge varijable u istoj prijevodnoj jedinici koji su bili smješteni u istom dijelu su izgubljeni.
Verzija 2.29 (Funkcionalno sigurnosno izdanje)
Nema.
Verzija 2.20
Greška sa dugim komandama (XCS-1983) Kada se koristi AVR cilj, kompajler je možda stao sa a file nije pronađena greška, ako je komandna linija bila izuzetno velika i sadržavala posebne znakove kao što su navodniki, obrnute kose crte itd.
Nedodijeljeni odjeljak rodata (XCS-1920) AVR linker nije uspio dodijeliti memoriju za prilagođene rodata sekcije prilikom izgradnje za avrxmega3 i avrtiny arhitekture, potencijalno stvarajući greške preklapanja memorije
Verzija 2.19 (Funkcionalno sigurnosno izdanje)
Nema.
Verzija 2.10
Greške pri selidbi (XCS-1891) Alokator koji najbolje odgovara bio je ostavljati memorijske 'rupe' između sekcija nakon opuštanja linkera. Osim fragmentacije memorije, ovo je povećalo mogućnost da dođe do kvarova pri premeštanju linkera koji se odnose na skokove u odnosu na računar ili da pozivi postanu izvan dometa.
Instrukcije nisu transformirane opuštanjem (XCS-1889) Opuštanje linkera nije došlo za instrukcije za skok ili pozivanje čiji ciljevi postaju dostupni ako su opušteni.
Nedostaje funkcionalnost (XCSE-388) Nekoliko definicija iz , kao što su clock_ div_ t i clock_prescale_set (), nisu definirani za uređaje, uključujući ATmega324PB, ATmega328PB, ATtiny441 i ATtiny841.
Nedostaju makroi Makroi predprocesora_ xcs _MODE_, _xcs VERSION, _xc i xcs nisu automatski definirani od strane kompajlera. Ovi su sada dostupni.
Verzija 2.05
Interna greška kompajlera (XCS-1822) Prilikom izrade pod Windows-om, možda je došlo do interne greške kompajlera prilikom optimizacije koda.
Prelivanje RAM-a nije otkriveno (XCS-1800, XCS-1796) Programe koji su premašili dostupnu RAM memoriju kompajler u nekim situacijama nije otkrio, što je rezultiralo neuspjehom koda u toku izvršavanja.
Izostavljena fleš memorija (XCS-1792) Za avrxmega3 i avrtiny uređaje, delovi fleš memorije su možda ostali neprogramirani od strane MPLAB X IDE.
Neuspješno izvršavanje glavnog (XCS-1788) U nekim situacijama u kojima program nije imao definirane globalne varijable, kod za pokretanje nije izašao i funkcija main () nikada nije bila dosegnuta.
Netačne informacije o memoriji (XCS-1787) Za avrxmega3 i avrtiny uređaje, program veličine avr je izvještavao da podaci samo za čitanje troše RAM umjesto programske memorije.
Netačno očitanje programske memorije (XCS-1783) Projekti kompajlirani za uređaje s programskom memorijom mapiranom u adresni prostor podataka i koji definiraju objekte koristeći PROGMEM makro/atribut možda su pročitali ove objekte s pogrešne adrese.
Interna greška sa atributima (XCS-1773) Došlo je do interne greške ako ste definirali objekte pokazivača sa
_at () ili attribute() tokeni između imena pokazivača i dereferenciranog tipa, na primjerample, char *
_at (0x80015 0) cp; Sada se izdaje upozorenje ako se naiđe na takav kod.
Neuspješno izvršavanje glavnog (XCS-1780, XCS-1767, XCS-1754) Korištenje EEPROM varijabli ili definiranje osigurača korištenjem konfiguracijske pragme moglo je uzrokovati neispravnu inicijalizaciju podataka i/ili zaključano izvršavanje programa u kodu pokretanja vremena izvođenja, prije nego što se dosegne main () .
Greška osigurača sa sićušnim uređajima (XCS-1778, XCS-1742) Attiny4/5/9/10/20/40 uređaji su imali netačnu dužinu osigurača navedenu u zaglavlju filekoji dovode do grešaka povezivača pri pokušaju izrade koda koji definira osigurače.
Greška segmentacije (XCS-1777) Ispravljena je povremena greška segmentacije.
Pad asemblera (XCS-1761) Avr-as asembler se možda srušio kada je kompajler pokrenut pod Ubuntu 18.
Objekti nisu očišćeni (XCS-1752) Neinicijalizirani objekti trajanja statičke memorije možda nisu bili obrisani kodom pokretanja vremena izvođenja.
Ignorirana je konfliktna specifikacija uređaja (XCS-1749) Kompajler nije generirao grešku kada je korišteno više opcija specifikacije uređaja i naznačio je različite uređaje.
Oštećenje memorije po hrpi (XCS-1748) Simbol za početak heap_ je bio pogrešno postavljen, što je rezultiralo mogućnošću da obične varijable budu oštećene hrpom.
Greška premještanja linkera (XCS-1739) Greška premještanja povezivača je možda bila emitirana kada je kod sadržavao rjmp ili rcall s ciljem udaljenom točno 4k bajta.
Verzija 2.00
Nema.
Poznati problemi
Slijede ograničenja u radu kompajlera. To mogu biti opća ograničenja kodiranja, ili
odstupanja od informacija sadržanih u korisničkom priručniku. Oznake u zagradama u naslovu su identifikacija tog problema u bazi podataka za praćenje. Ovo može biti od koristi ako trebate kontaktirati podršku. One stavke koje nemaju oznake su ograničenja koja opisuju način rada i koja će vjerovatno ostati na snazi trajno.
MPLAB X IDE integracija
MPLAB IDE integracija Ako će se kompajler koristiti iz MPLAB IDE-a, onda morate instalirati MPLAB IDE prije instaliranja Compiler-a.
Generacija koda
Greška pri dodjeli PA memorije (XCS-2881) Kada se koriste optimizatori proceduralne apstrakcije, povezivač može prijaviti greške u dodjeli memorije kada je veličina koda blizu količini dostupne programske memorije na uređaju, iako bi program trebao biti u stanju da stane u raspoloživi prostor.
Nije tako pametan Smart-IO (XCS-2872) Funkcija smart-io kompajlera će generisati važeći, ali suboptimalan kod za funkciju sprinta ako je funkcija obala podataka u proemu onemogućena ili ako uređaj ima sav svoj flash mapiran u memoriji podataka.
Još manje pametan Smart-IO (XCS-2869) Funkcija smart-io kompajlera će generisati validan, ali suboptimalan kod kada se koriste opcije -floe i -fno-buil tin.
Suboptimalno postavljanje podataka samo za čitanje (XCS-2849) Linker trenutno ne zna za memorijske sekcije APPCODE i APPDATA, niti za podjele [Ne-]Read-While-Write u memorijskoj mapi. Kao rezultat toga, postoji mala šansa da bi linker mogao dodijeliti podatke samo za čitanje u neprikladnom području memorije. Šansa za pogrešno postavljene podatke povećava se ako je omogućena funkcija obala-podaci-u-pragmi, posebno ako je također omogućena funkcija obala-podaci-u-konfiguraciji-mapirani-proem. Ove funkcije se mogu onemogućiti ako je potrebno.
Objekat file obrada naloga (XCS-2863) Redoslijed po kojem su objekti files koje će obraditi linker može se razlikovati ovisno o korištenju optimizacije proceduralne apstrakcije (-mpa opcija). Ovo bi utjecalo samo na kod koji definira slabe funkcije u više modula.
Greška povezivača sa apsolutnim (XCS-2777) Kada je objekt postao apsolutan na adresi na početku RAM-a i neinicijalizirani objekti su također definirani, može se pokrenuti greška povezivača.
Kratki ID-ovi za buđenje (XCS-2775) Za ATA5700/2 uređaje, registri PHID0/1 su definisani samo kao široki 16 bita, a ne 32 bita.
Pad linkera prilikom pozivanja simbola (XCS-2758) Linker se može srušiti ako se opcija drajvera -merlad koristi kada izvorni kod poziva simbol koji je definiran korištenjem opcije povezivača -Wl, –defsym.
Neispravna inicijalizacija (XCS-2679) Postoji neslaganje između mjesta gdje su početne vrijednosti za neke globalne/statičke objekte veličine bajta smještene u memoriju podataka i gdje će se varijablama pristupati u vrijeme izvođenja.
započeto pogrešno postavlja prazno (XCS-2652) U slučajevima kada predmetni niz za konverziju pomoću navedenog () sadrži ono što izgleda kao broj s pomičnim zarezom u eksponencijalnom formatu i postoji neočekivani znak nakon znaka e, tada će prazna adresa, ako je navedena, pokazivati na znak nakon e, a ne samo e. Za nprample: navedeno(“hooey”, prazno); će rezultirati praznim pokazivačem na znak x.
Loši indirektni pozivi funkcija (XCS-2628) U nekim slučajevima, pozivi funkcija napravljeni preko pokazivača funkcije pohranjenog kao dio strukture mogu propasti.
strtof vraća nulu za heksadecimalne float (XCS-2626) Bibliotečke funkcije strtof () et al i scanf () et al, uvijek će konvertirati heksadecimalni broj s pomičnim zarezom koji ne specificira eksponent u
nula. Za nprample: stator(“Sova”, &prazno); će vratiti vrijednost 0, a ne 1.
Netačne poruke savjetnika za stek (XCS-2542, XCS-2541) U nekim slučajevima, upozorenje savjetnika steka u vezi sa rekurzijom ili neodređenim stekom koji se koristi (moguće korištenjem alloca()) se ne emituje.
Greška sa dupliranim kodom prekida (XCS-2421) Kada više od jedne funkcije prekida ima isto tijelo, kompajler može imati izlaz za jednu funkciju prekidanja poziva drugu. Ovo će rezultirati nepotrebnim pohranjivanjem svih registra koji su blokirani pozivima, a prekidi će biti omogućeni čak i prije nego što se pokrene epilog trenutnog rukovaoca prekida, što može dovesti do neuspjeha koda.
Konstantni objekti koji nisu u programskoj memoriji (XCS-2408) Za avrxmega3 i avertins projekte neidealizirani const objekti se stavljaju u memoriju podataka, iako upozorenje sugerira da su smješteni u memoriju programa. Ovo neće utjecati na uređaje koji nemaju programsku memoriju mapiranu u prostor memorije podataka, niti će utjecati na bilo koji objekt koji je inicijaliziran.
Loš izlaz s nevažećom DFP putanjom (XCS-2376) Ako je kompajler pozvan sa nevažećom DFP putanjom i 'specifikacijom' file postoji za odabrani uređaj, kompajler ne prijavljuje familijarni paket uređaja koji nedostaje i umjesto toga odabire 'spec.' file, što onda može dovesti do neispravnog izlaza. 'specifikacija' files možda nisu ažurirani s distribuiranim DFP-ovima i bili su namijenjeni samo za upotrebu sa internim testiranjem kompajlera.
Neotkriveno preklapanje memorije (XCS-1966) Kompajler ne otkriva preklapanje memorije objekata koji su postali apsolutni na adresi (preko at ()) i drugih objekata koji koriste specifikaciju sekcije () i koji su povezani na istu adresu.
Greška s bibliotečkim funkcijama i _memeom (XCS-1763) Pozvane limbičke float funkcije s argumentom u adresnom prostoru _memo možda neće uspjeti. Imajte na umu da se bibliotečke rutine pozivaju iz nekih C operatora, tako, na primjerample, sljedeći kod je pogođen: return regFloatVar > memxFloatVar;
Ograničena limbička implementacija (AVRTC-731) Za ATTiny4/5/9/10/20/40 proizvode, implementacija standardne C/Math biblioteke u limbiku je vrlo ograničena ili nije prisutna.
Ograničenja programske memorije (AVRTC-732) Lanac alata podržava slike programske memorije veće od 128 kb; međutim, postoje poznati slučajevi prekida veze povezivača bez opuštanja i bez korisne poruke o grešci umjesto generiranja potrebnih funkcijskih stubova kada se koristi opcija -relax.
Ograničenja prostora imena (AVRTC-733) Imenovani adresni prostori su podržani od strane lanca alata, podložni ograničenjima navedenim u odeljku korisničkog vodiča Posebni kvalifikatori tipa.
Vremenske zone The funkcije biblioteke pretpostavljaju GMT i ne podržavaju lokalne vremenske zone, stoga će lokalno vrijeme () vratiti isto vrijeme kao i gummit (), npr.ample.
CUSTOMER SUPPORT
file:///Applications/microehip/xc8/v 2 .40/docs/Pročitaj me_X C 8_ za A VR. htm
Dokumenti / Resursi
![]() |
MICROCHIP MPLAB XC8 C kompajlerski softver [pdf] Uputstvo za upotrebu MPLAB XC8 C, MPLAB XC8 C kompajler softver, kompajler softver, softver |