MICROCHIP MPLAB XC8 C softver kompajlera
OVAJ DOKUMENT SADRŽI VAŽNE INFORMACIJE KOJE SE ODNOSE NA MPLAB XC8 C KOMPILER KADA CILJAJU MICROCHIP AVR UREĐAJE.
PROČITAJTE GA PRIJE POKRETANJA OVOG SOFTVERA. POGLEDAJTE BILJEŠKE O IZDANJU MPLAB XC8 C KOMPILERA ZA PIC DOKUMENT AKO KORISTITE KOMPILER ZA 8-BITNE PIC UREĐAJE.
Nadview
Uvod
Ovo izdanje Microchip MPLAB® XC8 C kompajlera sadrži nekoliko novih značajki, ispravke grešaka i podršku za nove uređaje.
Datum izrade
Službeni datum izgradnje ove verzije prevoditelja je 3. srpnja 2022.
Prethodna verzija
Prethodna verzija MPLAB XC8 C kompajlera bila je 2.39, funkcionalni sigurnosni prevodilac, izgrađena 27. siječnja 2022. Prethodni standardni prevodilac bila je verzija 2.36, izgrađena 27. siječnja 2022.
Priručnik o funkcionalnoj sigurnosti
Priručnik za funkcionalnu sigurnost za MPLAB XC kompajlere dostupan je u paketu dokumentacije kada kupite licencu za funkcionalnu sigurnost.
Licence i verzije komponenti
MPLAB® XC8 C kompajler za AVR MCU alate napisan je i distribuiran pod GNU Općom javnom licencom (GPL), što znači da je njegov izvorni kod slobodno distribuiran i dostupan javnosti. Izvorni kod za alate pod GNU GPL može se preuzeti odvojeno od Microchipa webmjesto. Možete pročitati GNU GPL u file named nalazi poddirektorij vašeg instalacijskog direktorija. Ovdje se može pronaći opća rasprava o načelima na kojima se temelji GPL. Kôd podrške osiguran za zaglavlje files, skripte povezivača i biblioteke vremena izvođenja vlasnički su kod i nisu obuhvaćeni GPL-om.
Ovaj prevoditelj je implementacija GCC verzije 5.4.0, binutils verzije 2.26 i koristi avr-libc verziju 2.0.0.
Zahtjevi sustava
MPLAB XC8 C kompajler i softver za licenciranje koji koristi dostupni su za različite operativne sustave, uključujući 64-bitne verzije sljedeć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 javnog bilježnika.
Ako koristite mrežni licencni poslužitelj, samo računala s operativnim sustavima koje prevoditelji podržavaju mogu se koristiti za hostiranje licencnog poslužitelja. Od xclm verzije 2.0, mrežni licencni poslužitelj može se instalirati na Microsoft Windows Server platformu, ali licencni poslužitelj ne mora raditi na poslužiteljskoj verziji operativnog sustava.
Podržani uređaji
Ovaj kompajler podržava sve 8-bitne AVR MCU uređaje poznate u vrijeme izdavanja. Pogledajte (u direktoriju dokumenata prevoditelja) za popis svih podržanih uređaja. ove files također navodi postavke konfiguracijskih bitova za svaki uređaj.
Izdanja i nadogradnje licence
Kompajler MPLAB XC8 može se aktivirati kao licencirani (PRO) ili nelicencirani (besplatni) proizvod. Morate kupiti aktivacijski ključ da biste licencirali svoj kompajler. Licenca omogućuje višu razinu optimizacije u usporedbi s besplatnim proizvodom. Nelicenciranim prevoditeljem može se neograničeno upravljati bez licence.
Kompajler MPLAB XC8 Functional Safety mora se aktivirati s licencom za funkcionalnu sigurnost kupljenom od Microchipa. Kompajler neće raditi bez ove licence. Nakon aktivacije možete odabrati bilo koju razinu optimizacije i koristiti sve značajke prevoditelja. Ovo izdanje MPLAB XC Functional Safety Compiler-a podržava licencu mrežnog poslužitelja.
Pogledajte dokument Instaliranje i licenciranje kompilatora MPLAB XC C (DS50002059) za informacije o vrstama licenci i instalaciji prevoditelja s licencom.
Instalacija i aktivacija
Također pogledajte odjeljke Problemi s migracijom i ograničenja za važne informacije o najnovijem upravitelju licenci uključenom u ovaj prevodilac.
Ako koristite MPLAB IDE, svakako instalirajte najnoviji MPLAB X IDE verziju 5.0 ili noviju prije instaliranja ovog alata. Zatvorite IDE prije instaliranja kompajlera. Pokrenite aplikaciju za instalaciju prevoditelja .exe (Windows), .run (Linux) ili aplikaciju (macOS), npr. XC8-1.00.11403-windows.exe i slijedite upute na zaslonu.
Preporuča se zadani instalacijski direktorij. Ako koristite Linux, morate instalirati kompajler pomoću terminala i s root računa. Instalirajte pomoću macOS računa s administratorskim ovlastima.
Aktivacija se sada provodi odvojeno od instalacije. Za više informacija pogledajte dokument Upravitelj licenci za MPLAB® XC C kompajlere (DS52059).
Ako odlučite pokrenuti kompilator pod licencom za procjenu, sada ćete dobiti upozorenje tijekom kompilacije kada budete unutar 14 dana od završetka vašeg razdoblja za procjenu. Isto se upozorenje izdaje ako ste u roku od 14 dana od isteka HPA pretplate.
Poslužitelj mrežne licence XC zaseban je instalacijski program i nije uključen u instalacijski program prevoditelja za jednog korisnika.
XC License Manager sada podržava roaming pokretnih mrežnih licenci. Namijenjena mobilnim korisnicima, ova značajka omogućuje da se pokretna licenca isključi iz mreže na kratko vrijeme. Pomoću ove značajke možete se odspojiti s mreže i dalje koristiti svoj MPLAB XC kompajler. Više o ovoj značajci potražite u mapi doc XCLM instalacije. MPLAB X IDE uključuje prozor Licence (Alati > Licence) za vizualno upravljanje roamingom.
Rješavanje problema s instalacijom
Ako naiđete na poteškoće pri instaliranju prevoditelja pod bilo kojim od Windows operativnih sustava, pokušajte sljedeće prijedloge.
- Pokrenite instalaciju kao administrator.
- Postavite dopuštenja aplikacije za instalaciju na 'Potpuna kontrola'. (Desnom tipkom miša kliknite file, odaberite Svojstva, karticu Sigurnost, odaberite korisnika, uredite.)
- Postavite dopuštenja privremene mape na "Puna kontrola!
Da biste odredili lokaciju privremene mape, upišite %temp% u naredbu Pokreni (tipka s logotipom sustava Windows + R). Ovo će otvoriti a file dijaloški okvir istraživača koji prikazuje taj direktorij i omogućit će vam da odredite stazu te mape.
Dokumentacija kompilatora
Korisničke vodiče prevoditelja možete otvoriti s HTML stranice koja se otvara u vašem pregledniku kada kliknete plavi gumb za pomoć na nadzornoj ploči MPLAB X IDE, kao što je prikazano na snimci zaslona.
Ako gradite za 8-bitne AVR ciljeve, MPLAB® XC8 C Compiler User's Guide for AVR® MCU sadrži informacije o tim opcijama kompajlera i značajkama koje su primjenjive na ovu arhitekturu.
Korisnička podrška
Microchip pozdravlja izvješća o greškama, prijedloge ili komentare u vezi s ovom verzijom prevoditelja. Sva izvješća o greškama ili zahtjeve za značajkama uputite putem sustava podrške.
Ažuriranja dokumentacije
Za on-line i ažurirane verzije MPLAB XC8 dokumentacije, molimo posjetite Microchipovu online tehničku dokumentaciju webmjesto.
Nova ili ažurirana AVR dokumentacija u ovom izdanju:
- MUSL obavijest o autorskim pravima
- Instaliranje i licenciranje MPLAB XC C kompilatora (revizija M)
- MPLAB XC8 Korisnički vodič za ugrađene inženjere – AVR MCU (revizija A)
- MPLAB XC8 C Compiler Korisnički vodič za AVR MCU (revizija F)
- Referentni vodič za Microchip Unified Standard Library (revizija B)
Referentni vodič za Microchip Unified Standard Library opisuje ponašanje i sučelje funkcija koje definira Microchip Unified Standard Library, kao i namjeravanu upotrebu tipova knjižnica i makronaredbi. Neke od ovih informacija ranije su bile sadržane u MPLAB® XC8 C Compiler User!s Guide for AVR® MCU. Podaci o biblioteci specifični za uređaj i dalje su sadržani u ovom vodiču za prevoditelj.
Ako tek počinjete s 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 projekt. Ovaj vodič se sada distribuira s 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.
Što je novo
Sljedeće su nove AVR-target značajke koje kompajler sada podržava. Broj verzije u podnaslovima označava prvu verziju prevoditelja koja podržava značajke koje slijede.
Verzija 2.40
Podrška za novi uređaj 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) poboljšan je tako da se može ocrtati kod koji sadrži instrukcije za poziv funkcije (poziv poziva)). To će se dogoditi samo ako se stog ne koristi za prosljeđivanje argumenata niti za dobivanje povratne vrijednosti od funkcije. Stog se koristi kada se poziva funkcija s popisom promjenjivih argumenata ili kada se poziva funkcija koja uzima više argumenata nego što ima registara određenih za tu svrhu. Ova se značajka može onemogućiti pomoću opcije monk-pa-outline-calls ili se proceduralna apstrakcija može u potpunosti onemogućiti za objekt file ili funkcionirati pomoću -monk-pa-on-file odnosno -mo.-pa-on-function, ili korištenjem nipa atributa (nipa specifikator) selektivno s funkcijama
Makro pokrivenosti koda Prevodilac sada definira makronaredbu __CODECOV ako je navedena važeća opcija mcodecov.
Mogućnost rezervacije memorije Upravljački program xc8-cc sada će prihvatiti opciju -mreserve=space@start: end kada gradi za AVR ciljeve. Ova opcija rezervira navedeni raspon memorije u prostoru memorije podataka ili programa, sprječavajući povezivač da popuni kod ili objekte u ovom području.
Pametniji pametni IO Napravljeno je nekoliko poboljšanja u funkcijama Smart IO, uključujući opća podešavanja koda jezgre printf, tretiranje specifičara konverzije %n kao neovisne 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 faktoriziranje zajedničkog koda u širini polja i rukovanju preciznošću. To može rezultirati značajnom uštedom koda i podataka, kao i povećanjem brzine izvršavanja IO-a.
Verzija 2.39 (funkcionalno sigurnosno izdanje)
Licenca mrežnog poslužitelja Ovo izdanje MPLAB XC8 Functional Safety Compiler podržava licencu mrežnog poslužitelja.
Verzija 2.36
Nijedan.
Verzija 2.35
Podrška za novi uređaj 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 unosu i kako se ti registri obnavljaju kada prekine rutina prekida. Radi na sličan način kao opcija -mcall-prologues, ali utječe samo na funkcije prekida (ISR).
Još poboljšano prebacivanje konteksta Nova opcija -mgas-isr-prologues kontrolira kontekstni itch kod generiran za male servisne rutine prekida. Kada je omogućena, ova značajka će natjerati asembler da skenira ISR u potrazi za korištenjem registra i spremiti ove korištene registre samo ako je potrebno.
Podesivo flash mapiranje Neki uređaji u obitelji AVR DA i AVR DB imaju SFR (npr. FLMAP) koji određuje koji će se dio programske memorije od 32k mapirati u podatkovnu memoriju. Nova opcija – mconst-data-in-config-mapped-proem može se koristiti kako bi povezivač smjestio sve cons kvalificirane podatke u jedan odjeljak od 32k i automatski inicijalizirao relevantni SFR registar kako bi se osiguralo da su ti podaci preslikani u prostor podatkovne memorije , gdje će mu se pristupiti učinkovitije.
Microchipove objedinjene standardne knjižnice Svi MPLAB XC kompajleri dijelit će Microchip Unified Standard Library, koji je sada dostupan s ovim izdanjem MPLAB XC8. MPLAB® XC8 C Compiler User's Guide/ili AVR® MCU više ne uključuje dokumentaciju za ove standardne funkcije. Ove se informacije sada mogu pronaći u Referentnom vodiču za Microchip Unified Standard Library. Imajte na umu da neke funkcije koje je prethodno definirao avr-libc više nisu dostupne. (Vidi Librar):'. funkcionalnost…)
Pametni IO Kao dio novih objedinjenih biblioteka, IO funkcije u obiteljima ispisa i skeniranja sada se generiraju po narudžbi pri svakoj verziji, na temelju načina na koji se te funkcije koriste u programu. Ovo može značajno smanjiti resurse koje koristi program.
Smart IO opcija pomoći Prilikom analize poziva pametnih IO funkcija (kao što su printf () ili scanf () ), prevodilac ne može uvijek odrediti iz niza formata ili zaključiti iz argumenata one specifikatore konverzije koje zahtijeva poziv. Prethodno prevodilac uvijek ne bi pravio nikakve pretpostavke i osiguravao da su potpuno funkcionalne IO funkcije povezane u konačnu sliku programa. Dodana je nova opcija – msmart-io-format=fmt tako da korisnik umjesto toga prevodilac može informirati o specifikatorima konverzije koje koriste pametne IO funkcije čija je upotreba dvosmislena, sprječavajući povezivanje predugih IO rutina. (Pogledajte opciju smart-io-format za više detalja.)
Postavljanje prilagođenih odjeljaka Prethodno je opcija -Wl, –section-start postavljala navedeni odjeljak na traženu adresu samo kada je skripta povezivača definirala izlazni odjeljak s istim imenom. Kad to nije bio slučaj, odjeljak je postavljen na adresu koju je odabrao povezivač, a opcija je u biti zanemarena. Sada će se opcija poštovati za sve prilagođene odjeljke, čak i ako skripta povezivača ne definira odjeljak. Imajte na umu, međutim, da za standardne odjeljke, 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 učinka. Koristite opciju -Wl, -Tsection=add, kao što je opisano u korisničkom priručniku.
Verzija 2.32
Stack Guidance Dostupna s PRO licencom za kompajler, značajka prevoditelja za vođenje hrpa može se koristiti za procjenu maksimalne dubine bilo kojeg hrpa koji koristi program. Konstruira i analizira graf poziva programa, utvrđuje korištenje stogova svake funkcije i proizvodi izvješće iz kojeg se može zaključiti o dubini stogova koje koristi program. Ova je značajka omogućena putem opcije naredbenog retka -mchp-stack-usage. Sažetak upotrebe stoga ispisuje se nakon izvođenja. Detaljno izvješće o hrpi dostupno je na karti file, koji se može zatražiti na uobičajeni način.
Podrška za novi uređaj Podrška dostupan je za sljedeće AVR dijelove: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32 i AVR32DB48.
Povučena podrška za uređaj Podrška više nije dostupan za sljedeće AVR dijelove: AVR16DA28, AVR16DA32 i AVR16DA48.
Verzija 2.31
Nijedan.
Verzija 2.30
Nova opcija za sprječavanje inicijalizacije podataka Nova opcija upravljačkog programa -mno-data-ini t sprječava inicijalizaciju podataka i brisanje bss odjeljaka. Djeluje tako da potiskuje izlaz simbola do_ copy_ data i d o_ clear_ bss u sklopu files, što će zauzvrat spriječiti uključivanje tih rutina od strane povezivača.
Poboljšane optimizacije Napravljena su brojna poboljšanja optimizacije, uključujući uklanjanje suvišnih povratnih instrukcija, uklanjanje nekih skokova nakon instrukcije preskoči ako je bit-je te poboljšana proceduralna apstrakcija i mogućnost ponavljanja ovog procesa.
Sada su dostupne dodatne opcije za kontrolu nekih od ovih optimizacija, posebno -f sidra odjeljaka, koja dopuštaju pristup statičkim objektima u odnosu na jedan simbol; -mpai derations=n, što omogućuje promjenu broja ponavljanja proceduralne apstrakcije sa zadane vrijednosti 2; i, -mpa- call cost- shortcall, koji izvodi agresivniju proceduralnu apstrakciju, u nadi da povezivač može opustiti duge pozive. Ova zadnja opcija može povećati veličinu koda ako temeljne pretpostavke nisu ostvarene.
Podrška za novi uređaj Podrška je dostupna za sljedeće AVR dijelove: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 i AVR128DB64.
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 ATA664251.
Verzija 2.29 (funkcionalno sigurnosno izdanje)
Zaglavlje file za ugrađene kompajlere Kako bi se osiguralo da prevodilac može biti usklađen sa specifikacijama jezika kao što je MISRA, zaglavlje file, koju automatski uključuje , 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 elementi možda nisu usklađeni s MISRA-om; oni se mogu izostaviti dodavanjem define _Xe_ STRICT_ MISRA u naredbeni red prevoditelja. Ugrađeni elementi i njihove deklaracije ažurirani su za upotrebu tipova fiksne širine.
Verzija 2.20
Podrška za novi uređaj Podrška je dostupna za sljedeće AVR dijelove: ATTINY1624, ATTINY1626 i ATTINY1627.
Bolja raspodjela najboljeg pristajanja Alokator najboljeg pristajanja (BFA) u kompajleru poboljšan je tako da se odjeljci dodjeljuju redoslijedom koji omogućuje bolju optimizaciju. BFA sada podržava imenovane adresne prostore i bolje obrađuje inicijalizaciju podataka.
Poboljšana proceduralna apstrakcija Optimizacije proceduralne apstrakcije sada se izvode na više sekvenci koda. Prethodne situacije u kojima je ova optimizacija mogla povećati veličinu koda riješene su tako što je optimizacijski kod bio svjestan procesa skupljanja smeća povezivača.
Odsutnost AVR asemblera AVR Assembler više nije uključen u ovu distribuciju.
Verzija 2.19 (funkcionalno sigurnosno izdanje)
Nijedan.
Verzija 2.10
Pokrivenost koda Ovo izdanje uključuje značajku pokrivenosti koda koja olakšava analizu opsega do kojeg je izvorni kod projekta izvršen. Koristite opciju -mcodecov=ram da biste je omogućili. Nakon izvođenja programa na vašem hardveru, informacije o pokrivenosti koda će se prikupiti u uređaju, a to se može prenijeti i prikazati u MPLAB X IDE putem dodatka za pokrivenost koda. Pogledajte IDE dokumentaciju za informacije o ovom dodatku koji se mogu dobiti. #pragma mcodecov može se koristiti za isključivanje naknadnih funkcija iz analize pokrivenosti. Idealno bi pragmu trebalo dodati na početku file isključiti taj cijeli file iz analize pokrivenosti. Alternativno, atribut ( (mcodecov)) se može koristiti za isključivanje određene funkcije iz analize pokrivenosti.
Opis uređaja files Novi uređaj file zove se avr chipinfo. html nalazi se u direktoriju dokumenata distribucije prevoditelja. Ovaj file navodi sve uređaje koje prevodilac podržava. Kliknite na naziv uređaja i otvorit će se stranica koja prikazuje sve dopuštene parove konfiguracijskih bitova/vrijednosti za taj uređaj, s npr.amples.
Proceduralna apstrakcija Optimizacije proceduralne apstrakcije, koje zamjenjuju uobičajene blokove montažnog koda pozivima ekstrahirane kopije tog bloka, dodane su prevoditelju. Njih izvodi zasebna aplikacija, koju prevodilac automatski poziva prilikom odabira optimizacije razine 2, 3 ili. Ove optimizacije smanjuju veličinu koda, ali mogu smanjiti brzinu izvršenja i mogućnost otklanjanja pogrešaka koda.
Proceduralna apstrakcija može se onemogućiti na višim razinama optimizacije pomoću opcije -mno-pa ili se može omogućiti na nižim razinama optimizacije (ovisno o vašoj licenci) pomoću -mpa. Može se onemogućiti za objekt file pomoću -mno-pa-on-file=fileime ili onemogućeno za funkciju pomoću -mno-pa na funkcija= funkcija.
Unutar vašeg izvornog koda, proceduralna apstrakcija može se onemogućiti za funkciju upotrebom _attribute_ ( (nopa)) s definicijom funkcije ili upotrebom _nopa, koja se proširuje na atribut ( (nopa, noinline)) i na taj način sprječava umetanje funkcije i postoji apstrakcija ugrađenog koda.
Podrška za zaključavanje bita u pragmi #pragma config sada se može koristiti za određivanje bitova za zaključavanje AVR-a, kao i ostalih konfiguracijskih bitova. Provjerite informacije o avr čipu. html file (gore spomenuto) za parove postavka/vrijednost za korištenje s ovom pragmom.
Podrška za novi uređaj Podrška je dostupna za sljedeće dijelove: AVR28DA128, AVR64DA128, AVR32DA128 i AVR48DA128.
Verzija 2.05
Više bitova za vaš novac MacOS verzija ovog prevoditelja i upravitelja licencama sada je 64-bitna aplikacija. To će osigurati da će se kompajler instalirati i pokrenuti bez upozorenja na novijim verzijama macOS-a.
Konstantni objekti u programskoj memoriji Kompajler sada može smjestiti const-kvalificirane objekte u Flash memoriju programa, umjesto da ih smjesti u RAM. Kompajler je modificiran tako da se globalni podaci kvalificirani za const pohranjuju u flash memoriju programa i tim se podacima može izravno i neizravno pristupiti korištenjem odgovarajućih instrukcija programske memorije. Ova je nova značajka omogućena prema zadanim postavkama, ali se može onemogućiti pomoću opcije -mno-const-data-in-progmem. Za arhitekture avrxmega3 i avrtiny, ova značajka nije potrebna i uvijek je onemogućena, budući da je programska memorija preslikana u adresni prostor podataka za te uređaje.
Standard besplatno Nelicencirane (besplatne) verzije ovog prevoditelja sada dopuštaju optimizacije do i uključujući razinu 2. To će omogućiti sličan, iako ne identičan, izlaz onome što je prije bilo moguće korištenjem standardne licence.
Dobro došao AVRASM2 Asembler AVRASM2 za 8-bitne uređaje sada je uključen u instalacijski program XC8 prevoditelja. XC8 kompajler ne koristi ovaj asembler, ali je dostupan za projekte koji se temelje na rukom pisanom izvoru asemblera.
Podrška za novi uređaj Podrška je dostupna za sljedeće dijelove: ATMEGA1608, ATMEGA1609, ATMEGA808 i ATMEGA809.
Verzija 2.00
Vozač najviše razine Novi upravljački program, nazvan xc8-cc, sada se nalazi iznad prethodnog upravljačkog programa avr-gcc i upravljačkog programa xc8, i može pozvati odgovarajući kompajler na temelju odabira ciljnog uređaja. Ovaj upravljački program prihvaća opcije u stilu GCC-a, koje se prevode ili prosljeđuju prevoditelju koji se izvršava. Ovaj upravljački program omogućuje korištenje sličnog skupa opcija sa sličnom semantikom s bilo kojim AVR ili PIC ciljem i stoga je preporučeni način za pozivanje kompajlera. Ako je potrebno, stari avr-gcc upravljački program može se pozvati izravno pomoću opcija starog stila koje je prihvaćao u ranijim verzijama prevoditelja.
Uobičajeno C sučelje Ovaj kompajler se sada može uskladiti s MPLAB Common C sučeljem, omogućujući jednostavniji prijenos izvornog koda na sve MPLAB XC kompajlere. Opcija -mext=cci zahtijeva ovu značajku, omogućavajući alternativnu sintaksu za mnoga jezična proširenja.
Novi knjižničar vozač Novi vozač knjižničara postavljen je iznad prethodnog knjižničara PIC knjižnice i knjižničara AVR avr-ar. Ovaj upravljački program prihvaća opcije u stilu GCC-arhivatora, koje su ili prevedene ili proslijeđene knjižničaru koji se izvršava. Novi upravljački program omogućuje korištenje sličnog skupa opcija sa sličnom semantikom za stvaranje ili manipuliranje bilo kojom PIC ili AVR bibliotekom file i stoga je preporučeni način za pozivanje knjižničara. Ako je potrebno za naslijeđene projekte, prethodni knjižničar može se pozvati izravno pomoću opcija starog stila koje je prihvaćao u ranijim verzijama prevoditelja.
Pitanja migracije
Sljedeće su značajke koje sada drugačije obrađuje prevodilac. Ove promjene mogu zahtijevati modifikaciju vašeg izvornog koda ako prenosite kod na ovu verziju prevoditelja. Broj verzije u podnaslovima označava prvu verziju prevoditelja koja podržava promjene koje slijede.
Verzija 2.40
Nijedan.
Verzija 2.39 (funkcionalno sigurnosno izdanje)
Nijedan.
Verzija 2.36
Nijedan.
Verzija 2.35
Rukovanje string-to bazama (XCS-2420) Kako bi se osigurala dosljednost s drugim XC kompajlerima, XC8 string-to funkcije, poput strtol () itd., više neće pokušavati pretvoriti ulazni niz ako je navedena baza veća od 36 i umjesto toga će postaviti errno na EINVAL. Standard C ne specificira ponašanje funkcija kada se prekorači ova osnovna vrijednost.
Neodgovarajuće optimizacije brzine Optimizacije proceduralne apstrakcije bile su omogućene pri odabiru optimizacije razine 3 (-03). Ove optimizacije smanjuju veličinu koda nauštrb brzine koda, pa ih nije trebalo izvoditi. Projekti koji koriste ovu razinu optimizacije mogu primijetiti razlike u veličini koda i brzini izvršenja kada se izgrade s ovim izdanjem.
Funkcionalnost knjižnice Kod za mnoge funkcije standardne C biblioteke sada dolazi iz Microchipove objedinjene standardne biblioteke, koja bi mogla pokazivati drugačije ponašanje u nekim okolnostima u usporedbi s onim koje pruža bivša biblioteka avr-libc. Na primjerample, više nije potrebno povezivanje u biblioteci lprintf_flt (opcija -print _flt) za uključivanje formatirane IO podrške za specifikatore float-formata. Pametne IO značajke Microchip Unified Standard Library čine ovu opciju suvišnom. Osim toga, upotreba rutina sa sufiksom _p za funkcije niza i memorije (npr. strcpy_P () itd..) koje rade na nizovima const u flashu više nisu potrebne. Standardne C rutine (npr. strcpy ()) ispravno će raditi s takvim podacima kada je omogućena značajka const-data-in-program-memory.
Verzija 2.32
Nijedan.
Verzija 2.31
Nijedan.
Verzija 2.30
Nijedan.
Verzija 2.29 (funkcionalno sigurnosno izdanje)
Nijedan.
Verzija 2.20
Promijenjen je DFP izgled Kompajler sada pretpostavlja drugačiji izgled koji koriste DFP-ovi (Device Family Packs). To će značiti da stariji DFP možda neće raditi s ovim izdanjem, a stariji prevoditelji neće moći koristiti najnovije DFP-ove.
Verzija 2.19 (funkcionalno sigurnosno izdanje)
Nijedan.
Verzija 2.10
Nijedan
Verzija 2.05
Const objekti u programskoj memoriji Imajte na umu da će prema zadanim postavkama, objekti kvalificirani za const biti postavljeni i pristupati im u programskoj memoriji (kako je ovdje opisano). To će utjecati na veličinu i brzinu izvršenja vašeg projekta, ali bi trebalo smanjiti upotrebu RAM-a. Ova se značajka može onemogućiti, ako je potrebno, pomoću opcije -mnoconst- da ta-in-progmem.
Verzija 2.00
Konfiguracijski osigurači Osigurači konfiguracije uređaja sada se mogu programirati korištenjem konfiguracijske pragme nakon koje slijede parovi vrijednosti postavki za određivanje stanja osigurača, npr.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Apsolutni objekti i funkcije Objekti i funkcije sada se mogu smjestiti na određenu adresu u memoriji pomoću specifikatora CCI _at (adrese), npr.ample: #uključi int foobar na (Ox800100); char at(Ox250) get ID(int offset) { … } Argument za ovaj specifikator mora biti konstanta koja predstavlja adresu na koju će biti postavljen prvi bajt ili instrukcija. RAM adrese su naznačene korištenjem pomaka od 0x800000. Omogućite CCI za korištenje ove značajke.
Nova sintaksa funkcije prekida Kompajler sada prihvaća specifikator CCI prekida (num) da označi da su C funkcije rukovatelji prekidima. Specifikator uzima broj prekida, nprample: #uključi void interrupt(SPI STC_ vect _num) spi Isr(void) { … }
Riješeni problemi
Sljedeće su ispravke koje su napravljene na prevoditelju. Oni bi mogli popraviti greške u generiranom kodu ili promijeniti rad kompajlera prema onome što je bilo predviđeno ili navedeno u korisničkom priručniku. Broj verzije u podnaslovima označava prvu verziju prevoditelja 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 obitelji uređaja (DFP) povezanom s uređajem. Pogledajte MPLAB Pack Manager za informacije o promjenama na DFP-ovima i za preuzimanje najnovijih paketa.
Verzija 2.40
Previše opušteno (XCS-2876) Prilikom korištenja opcije -mrelax, prevodilac nije zajedno dodjeljivao neke odjeljke, što je rezultiralo manje optimalnom veličinom koda. To se moglo dogoditi s kodom koji je koristio nove MUSL biblioteke ili sa slabim simbolima.
Značajka mapiranja nije onemogućena kao što je navedeno u upozorenju (XCS-2875) Značajka cost-data-in-config mappedprogmem oslanja se na omogućenu značajku cost-data-in-proem. Ako je značajka cost-data-ipconfig-mapped-proem bila izričito omogućena korištenjem opcije, a značajka cost-data-inprogmem bila je onemogućena, korak povezivanja nije uspio, unatoč poruci upozorenja u kojoj se navodi da cons data- in-config-mapped- značajka proem bila je automatski onemogućena, što nije bilo sasvim točno. Značajka const-data-in-config-mapped-proem sada je potpuno onemogućena u ovoj situaciji.
DFP mijenja za ispravan pristup NVMCTRL (XCS-2848) Kod za pokretanje u vrijeme izvođenja koji koriste uređaji AVR64EA nije uzeo u obzir da je NVMCTRL registar pod zaštitom od promjene konfiguracije (CCP) i nije mogao postaviti IO SFR na stranicu koju koristi prevodilac const-data-in configmapped-proem značajka. Promjene napravljene u AVR-Ex_DFP verziji 2.2.55 omogućit će kodu za pokretanje ispravno pisanje u ovaj registar.
DFP izmjene kako bi se izbjeglo flash mapiranje (XCS-2847) Implementirano je rješenje za problem sa značajkom uređaja za mapiranje bljeskalice prijavljen u AVR128DA28/32/48/64 Silicon Errata (DS80000882). Značajka prevoditelja const-data-in-config-mapped-proem neće se primjenjivati prema zadanim postavkama za pogođene uređaje, a ova će se promjena pojaviti u AVR-Ex_DFP verziji 2.2.160.
Pogreška izrade sa sinhf ili coshf (XCS-2834) Pokušaji korištenja funkcija knjižnice sinhf () ili coshf () rezultirali su pogreškom povezivanja, opisujući nedefiniranu referencu. Referencirana funkcija koja nedostaje sada je uključena u distribuciju prevoditelja.
Pogreške u izradi s nopa (XCS-2833) Korištenje atributa nopa s funkcijom čiji je naziv asemblera naveden pomoću as () pokrenulo je poruke o pogrešci od asemblera. Ova kombinacija nije moguća.
Greška varijabilne funkcije s argumentima pokazivača (XCS-2755, XCS-2731) Funkcije s varijabilnim brojem argumenata očekuju da se 24-bitni (tip _memo) pokazivači prosljeđuju na popisu varijabilnih argumenata kada je omogućena značajka podataka o troškovima u programu. Argumenti koji su bili pokazivači na podatkovnu memoriju prosljeđivani su kao 16-bitni objekti, uzrokujući kvar koda kada su konačno pročitani. Kada je značajka cons data-in-proem omogućena, svi argumenti 16-bitnih pokazivača sada se pretvaraju u 24-bitne pokazivače. Neuspješne funkcije knjižnice strtoxxx (XCS-2620) Kada je značajka const-data-in-proem bila omogućena, parametar unosa u funkcijama knjižnice strtoxxx nije ispravno ažuriran za argumente izvornog niza koji nisu u memoriji programa.
Upozorenja za nevažeće odljeve (XCS-2612) Kompajler će sada izdati pogrešku ako je značajka cost-in-proem omogućena, a adresa literala niza je eksplicitno prebačena u adresni prostor podataka (ispuštanjem kvalifikatora const), npr.ample, (uint8 t *) “Zdravo svijete!”. Upozorenje je problem ako bi adresa mogla biti nevažeća kada se konstantni pokazivač podataka eksplicitno usmjerava na prostor adrese podataka.
Postavljanje neinicijaliziranih const objekata (XCS-2408) Neinicijalizirani const i const v volatile objekti nisu bili smješteni u programsku memoriju na uređajima koji mapiraju cijelu ili dio svoje programske memorije u podatkovni adresni prostor. Za te se uređaje takvi objekti sada smještaju u programsku memoriju, čineći njihov rad dosljednim s drugim uređajima.
Verzija 2.39 (funkcionalno sigurnosno izdanje)
Nijedan.
Verzija 2.36
Pogreška prilikom odgode (XCS-2774) Manje promjene u zadanim optimizacijama slobodnog načina rada spriječile su konstantno presavijanje izraza operanda u ugrađene funkcije odgode, što je rezultiralo njihovim tretiranjem kao nekontaktima i pokretanjem pogreške: _buil tin avr delay_ cycles expects ac ompile vremenska cjelobrojna konstanta.
Verzija 2.35
Kontinuirana dodjela pomoću _at (XCS-2653) Kontinuirana dodjela višestrukih objekata u odjeljak s istim imenom i korištenje at () nije radila ispravno. Na primjerample: constchararrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; trošak char arr2[ ] at tri butte ((section(“.my s eke”))) = {Oxen, Ox FE }; trebao staviti arr2 odmah iza aril.
Određivanje početnih adresa odjeljaka (XCS-2650) Opcija -Wal, –section-start tiho nije uspjela postaviti odjeljke na nominiranu početnu adresu. Ovaj je problem riješen za sve odjeljke s prilagođenim nazivom; međutim, neće raditi ni za jedan standardni odjeljak, kao što je . tekst ili . bss, koji se mora postaviti pomoću opcije -Wl, -T.
Linker se ruši prilikom opuštanja (XCS-2647) Kada je optimizacija -relax bila omogućena i postojali su dijelovi koda ili podataka koji nisu stali u dostupnu memoriju, povezivač se srušio. Sada se u takvim okolnostima umjesto toga izdaju poruke o pogrešci.
Loš pristup EEPROM-u (XCS-2629) Blok rutina leproma _read_ nije radila ispravno na Mega uređajima kada je opcija -monist-data-in-proem bila omogućena (što je zadano stanje), što je rezultiralo neispravnim čitanjem EEPROM memorije.
Nevažeća dodjela memorije (XCS-2593, XCS-2651) Kada je opcija povezivača -Text ili -Tata (nprampdatoteka koja je prošla pomoću opcije -Wl drajvera) navedena, odgovarajuće podrijetlo regije teksta/podataka je ažurirano; međutim, krajnja adresa nije prilagođena u skladu s tim, što je moglo dovesti do toga da regija premaši raspon memorije ciljnog uređaja.
Nevažeći ATtiny kod prekida (XCS-2465) Prilikom izgradnje za Tatin uređaje i optimizacije su bile onemogućene (-00), funkcije prekida možda su pokrenule poruke asemblera operanda izvan raspona.
Opcije koje se ne prolaze (XCS-2452) Prilikom korištenja opcije -Wl s višestrukim opcijama povezivača odvojenim zarezima, nisu sve opcije povezivača proslijeđene povezivaču.
Pogreška neizravnog čitanja programske memorije (XCS-2450) U nekim je slučajevima kompajler proizveo internu pogrešku (neprepoznatljiv insn) prilikom čitanja dvobajtne vrijednosti iz pokazivača u programsku memoriju
Verzija 2.32
Drugi pristup knjižnici nije uspio (XCS-2381) Pozivanje Windows verzije xc8-ar. exe program za arhiviranje knjižnice drugi put za pristup postojećoj arhivi knjižnice možda nije uspio s porukom o pogrešci ne može se preimenovati.
Verzija 2.31
Neobjašnjivi kvarovi prevoditelja (XCS-2367) Prilikom rada na Windows platformama koje su imale sistemski privremeni direktorij postavljen na stazu koja uključuje točku'.' znakova, kompajler možda nije uspio izvršiti.
Verzija 2.30
Globalne oznake zagubljene nakon ocrtavanja (XCS-2299) Rukom pisani asemblerski kod koji postavlja globalne oznake unutar asemblerskih sekvenci koje su faktorizirane proceduralnom apstrakcijom možda nije ispravno premješten.
Opuštajući sudar (XCS-2287) Korištenje opcije -merlad moglo je uzrokovati rušenje povezivača kada su optimizacije opuštanja skoka repa pokušale ukloniti instrukcije ret koje nisu bile na kraju odjeljka.
Rušenje pri optimiziranju oznaka kao vrijednosti (XCS-2282) Kod koji koristi jezično proširenje GNU C "Oznake kao vrijednosti" možda je prouzročio rušenje proceduralne optimizacije apstrakcije, s pogreškom popravka raspona okvira Ocrtanog VMA.
Nije tako konst (XCS-2271) Prototipovi za starts () i druge funkcije iz više ne navodi kvalifikator nestandardne cijene na vraćenim pokazivačima niza kada je značajka -monist-data inprogmem onemogućena. Imajte na umu da je s uređajima avrxmega3 i avertin ova značajka trajno omogućena.
Izgubljeni inicijalizatori (XCS-2269) Kada je više od jedne varijable u jedinici prevođenja postavljeno u odjeljak (pomoću odjeljka ili atributa ((odjeljak))), a prva takva varijabla je inicijalizirana nulom ili nije imala inicijalizator, inicijalizatori za druge varijable u istoj jedinici prevođenja koji su bili smješteni u istom odjeljku izgubljeni su.
Verzija 2.29 (funkcionalno sigurnosno izdanje)
Nijedan.
Verzija 2.20
Pogreška s dugim naredbama (XCS-1983) Kada koristite AVR cilj, kompajler se možda zaustavio s a file pogreška nije pronađena, ako je naredbeni redak bio iznimno velik i sadržavao posebne znakove kao što su navodnici, kose crte, itd.
Nedodijeljeni dio rodata (XCS-1920) AVR povezivač nije uspio dodijeliti memoriju za prilagođene odjeljke rodata prilikom izgradnje za avrxmega3 i avrtiny arhitekture, potencijalno stvarajući pogreške preklapanja memorije
Verzija 2.19 (funkcionalno sigurnosno izdanje)
Nijedan.
Verzija 2.10
Neuspjesi premještanja (XCS-1891) Najprikladniji alokator ostavljao je memorijske 'rupe' između odjeljaka nakon opuštanja povezivača. Osim fragmentacije memorije, ovo je povećalo mogućnost kvarova premještanja povezivača koji se odnose na skokove u odnosu na računalo ili pozive koji izlaze izvan dometa.
Upute koje se ne transformiraju opuštanjem (XCS-1889) Opuštanje povezivača nije se dogodilo za upute skoka ili poziva č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 makronaredbe Kompajler nije automatski definirao makronaredbe pretprocesora_ xcs _MODE_, _xcs VERSION, _xc i xcs. Ove su sada dostupne.
Verzija 2.05
Interna pogreška prevoditelja (XCS-1822) Prilikom izgradnje u sustavu Windows, možda je nastala interna pogreška prevoditelja prilikom optimizacije koda.
Prelijevanje RAM-a nije otkriveno (XCS-1800, XCS-1796) Kompajler u nekim situacijama nije otkrio programe koji su premašili raspoloživi RAM, što je rezultiralo greškom koda za vrijeme izvođenja.
Izostavljena flash memorija (XCS-1792) Za uređaje avrxmega3 i avrtiny, MPLAB X IDE je možda ostavio neprogramirane dijelove flash memorije.
Neuspjeh u izvršavanju glavnog (XCS-1788) U nekim situacijama u kojima program nije imao definirane globalne varijable, kod pokretanja izvođenja nije izašao i funkcija main () nikada nije dosegnuta.
Netočne informacije o memoriji (XCS-1787) Za uređaje avrxmega3 i avrtiny, program veličine avr javljao je da podaci samo za čitanje troše RAM umjesto programske memorije.
Netočno čitanje programske memorije (XCS-1783) Projekti kompilirani za uređaje s programskom memorijom preslikanom u adresni prostor podataka i koji definiraju objekte pomoću makronaredbe/atributa PROGMEM možda su te objekte pročitali s pogrešne adrese.
Interna pogreška s atributima (XCS-1773) Došlo je do interne pogreške ako ste objekte pokazivača definirali s
_at () ili attribute() tokeni između naziva pokazivača i dereferenciranog tipa, nprample, char *
_at (0x80015 0) cp; Sada se izdaje upozorenje ako se naiđe na takav kod.
Neuspjeh u izvršavanju glavnog (XCS-1780, XCS-1767, XCS-1754) Korištenje EEPROM varijabli ili definiranje osigurača pomoću config pragme moglo je uzrokovati neispravnu inicijalizaciju podataka i/ili zaključati izvršenje programa u kodu za pokretanje programa prije nego što dođe do main ().
Pogreška osigurača s malim uređajima (XCS-1778, XCS-1742) Uređaji attiny4/5/9/10/20/40 imali su netočnu duljinu osigurača navedenu u zaglavlju filekoji dovode do pogrešaka povezivača pri pokušaju izgradnje koda koji definira osigurače.
Pogreška segmentacije (XCS-1777) Ispravljena je povremena pogreška segmentacije.
Pad asemblera (XCS-1761) Avr-as asembler se možda srušio kada je kompajler pokrenut pod Ubuntu 18.
Objekti nisu izbrisani (XCS-1752) Neinicijalizirane objekte trajanja statičke pohrane možda nije obrisao kod za pokretanje vremena izvođenja.
Specifikacija uređaja u sukobu zanemarena (XCS-1749) Kompajler nije generirao pogrešku kada je korišteno više opcija specifikacije uređaja i ukazivalo je na različite uređaje.
Oštećenje memorije hrpom (XCS-1748) Heap_ start simbol bio je netočno postavljen, što je rezultiralo mogućnošću da obične varijable budu oštećene hrpom.
Pogreška premještanja povezivača (XCS-1739) Pogreška premještanja povezivača mogla je biti emitirana kada je kod sadržavao rjmp ili rcall s ciljem udaljenim točno 4k bajta.
Verzija 2.00
Nijedan.
Poznati problemi
Sljedeća su ograničenja u radu prevoditelja. 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 vjerojatno ostati trajno na snazi.
MPLAB X IDE integracija
MPLAB IDE integracija Ako će se Compiler koristiti iz MPLAB IDE-a, morate instalirati MPLAB IDE prije instaliranja Compiler-a.
Generiranje koda
Greška dodjele PA memorije (XCS-2881) Kada koristite optimizatore proceduralne apstrakcije, povezivač bi mogao prijaviti pogreške dodjele memorije kada je veličina koda blizu količine dostupne programske memorije na uređaju, iako bi program trebao moći stati u raspoloživi prostor.
Ne tako pametan Smart-IO (XCS-2872) Značajka kompajlera smart-io će generirati važeći, ali suboptimalan kod za funkciju sprinta ako je značajka cost-data-in-proem bila onemogućena ili ako je uređaj sav svoj flash mapirao u podatkovnu memoriju.
Još manje pametan Smart-IO (XCS-2869) Značajka prevoditelja smart-io će generirati važeći, ali suboptimalan kod kada se koriste obje opcije -floe i -fno-buil tin.
Neoptimalan smještaj podataka samo za čitanje (XCS-2849) Povezivač trenutno nije svjestan memorijskih odjeljaka APPCODE i APPDATA, niti podjela [No-]Read-While-Write u memorijskoj mapi. Kao rezultat toga, postoji mala vjerojatnost da povezivač može dodijeliti podatke samo za čitanje u neprikladno područje memorije. Mogućnost pogrešno postavljenih podataka povećava se ako je omogućena značajka coast-data-in-pragma, posebno ako je također omogućena značajka coast-data-in-config-mapped-proem. Ove značajke mogu se onemogućiti ako je potrebno.
Objekt file narudžba za obradu (XCS-2863) Redoslijed kojim objekti files koje će povezivač obraditi mogu se razlikovati na temelju upotrebe optimizacija proceduralne apstrakcije (opcija -mpa). To bi utjecalo samo na kôd koji definira slabe funkcije u više modula.
Pogreška povezivača s apsolutom (XCS-2777) Kada je objekt učinjen apsolutnim na adresi na početku RAM-a i također su definirani neinicijalizirani objekti, može se pokrenuti greška povezivača.
Kratki ID-ovi za buđenje (XCS-2775) Za ATA5700/2 uređaje, PHID0/1 registri definirani su samo kao široki 16 bita, umjesto 32 bita.
Pad povezivača prilikom pozivanja simbola (XCS-2758) Povezivač bi se mogao srušiti ako se koristi opcija upravljačkog programa -merlad kada izvorni kod poziva simbol koji je definiran pomoću opcije povezivača -Wl, –defsym.
Netočna inicijalizacija (XCS-2679) Postoji razlika između mjesta gdje su početne vrijednosti za neke globalne/statičke objekte veličine bajta smještene u podatkovnoj memoriji i mjesta na kojem će se varijablama pristupati tijekom izvođenja.
pogrešno pokrenut postavlja prazan (XCS-2652) U slučajevima kada predmetni niz za pretvorbu pomoću navedenog () sadrži ono što se čini kao broj s pomičnim zarezom u eksponencijalnom formatu i postoji neočekivani znak nakon znaka e, tada će prazna adresa, ako je navedena, ukazivati na znak nakon e a ne samo e. Na primjerample: navedeno ("hooey", prazno); rezultirat će prazninom koja pokazuje na znak x.
Loši neizravni pozivi funkcija (XCS-2628) U nekim slučajevima, pozivi funkcija napravljeni putem pokazivača funkcije pohranjenog kao dio strukture mogu biti neuspješni.
strtof vraća nulu za heksadecimalne float (XCS-2626) Knjižnične funkcije strtof () et al i scanf () et al, uvijek će pretvoriti heksadecimalni broj s pomičnim zarezom koji ne specificira eksponent u
nula. Na primjerample: stator(“Sova”, &prazno); će vratiti vrijednost 0, a ne 1.
Netočna poruka savjetnika za snop (XCS-2542, XCS-2541) U nekim se slučajevima ne emitira upozorenje savjetnika o snopu u vezi s korištenim rekurzijom ili neodređenim snopom (moguće upotrebom alloca()).
Kvar s duplim kodom prekida (XCS-2421) Gdje više od jedne funkcije prekida ima isto tijelo, kompajler bi mogao imati izlaz za jednu funkciju prekida poziva drugu. To će rezultirati nepotrebnim spremanjem svih registara zatrpanih pozivima, a prekidi će biti omogućeni čak i prije nego što se izvede epilog trenutnog rukovatelja prekidima, što može dovesti do kvara koda.
Const objekti nisu u programskoj memoriji (XCS-2408) Za projekte avrxmega3 i avertins neidealizirani const objekti smješteni su u podatkovnu memoriju, iako upozorenje sugerira da su smješteni u programsku memoriju. Ovo neće utjecati na uređaje koji nemaju programsku memoriju mapiranu u prostor podatkovne memorije, niti će utjecati na bilo koji objekt koji je inicijaliziran.
Loš izlaz s nevažećim DFP putem (XCS-2376) Ako se prevodilac pozove s nevažećom DFP stazom i 'spec' file postoji za odabrani uređaj, kompajler ne prijavljuje paket obitelji uređaja koji nedostaje i umjesto toga odabire 'spec' file, što bi onda moglo dovesti do nevažećeg izlaza. 'specifikacija' files možda nisu ažurirani s distribuiranim DFP-ovima i bili su namijenjeni samo za korištenje s internim testiranjem prevoditelja.
Neotkriveno preklapanje memorije (XCS-1966) Kompajler ne otkriva memorijsko preklapanje objekata koji su apsolutni na adresi (preko at ()) i drugih objekata koji koriste specifikator odjeljka () i koji su povezani na istu adresu.
Neuspjeh s funkcijama biblioteke i _meme (XCS-1763) Pozvane limbičke float funkcije s argumentom u adresnom prostoru _memo možda neće uspjeti. Imajte na umu da se rutine biblioteke pozivaju iz nekih C operatora, pa nprample, zahvaćen je sljedeći kod: return regFloatVar > memxFloatVar;
Ograničena limbička implementacija (AVRTC-731) Za proizvode ATTiny4/5/9/10/20/40 standardna implementacija biblioteke C/Math u limbiku vrlo je ograničena ili nije prisutna.
Ograničenja programske memorije (AVRTC-732) Alatni lanac podržava slike programske memorije veće od 128 kb; međutim, postoje poznati slučajevi prekida povezivača bez opuštanja i bez korisne poruke o pogrešci umjesto generiranja potrebnih funkcijskih stubova kada se koristi opcija -relax.
Ograničenja prostora imena (AVRTC-733) Imenovani adresni prostori podržani su od strane alatnog lanca, podložno ograničenjima navedenim u odjeljku Kvalifikatori posebnih vrsta korisničkog vodiča.
Vremenske zone The funkcije knjižnice pretpostavljaju GMT i ne podržavaju lokalne vremenske zone, stoga će lokalno vrijeme () vratiti isto vrijeme kao gummite (), npr.ample.
KORISNIČKA PODRŠKA
file:///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ za A VR. htm
Dokumenti / Resursi
![]() |
MICROCHIP MPLAB XC8 C softver kompajlera [pdf] Priručnik za vlasnika MPLAB XC8 C, MPLAB XC8 C softver za kompilaciju, kompajler softver, softver |