MICROCHIP - logoMPLAB XC8 C Compiler verzija 2.39 Bilješke o izdanju za AVR MCU
Upute za korištenje

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

1.1. Uvod
Ovo izdanje Microchip MPLAB® XC8 C prevoditelja je funkcionalni sigurnosni prevodilac, temeljen na v2.36 izdanju ovog prevoditelja i koji sada podržava licencu mrežnog poslužitelja.
1.2. Datum izlaska
Službeni datum izdavanja ove verzije prevoditelja je 27. siječnja 2022.
1.3. Prethodna verzija
Prethodna verzija MPLAB XC8 C kompajlera bila je 2.36, objavljena 25. siječnja 2022.
1.4. 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.
1.5. Licence komponenti i verzije® on MPLAB
Alati XC8 C kompajlera za AVR MCU napisani su i distribuirani pod GNU Općom javnom licencom (GPL), što znači da je njegov izvorni kod besplatno distribuiran i dostupan javnosti.
Izvorni kod za alate pod GNU GPL može se preuzeti odvojeno od Microchipa webmjesto. GNU GPL možete pročitati u datoteci pod nazivom koja se nalazi u poddirektoriju vaše instalacijske licence.txt direktorija avr/doc. Ovdje se može pronaći opća rasprava o načelima na kojima se temelji GPL.
Kod podrške za datoteke zaglavlja, skripte povezivača i biblioteke vremena izvođenja vlasnički je kod i nije obuhvaćen GPL-om.
Ovaj prevoditelj je implementacija GCC verzije 5.4.0, binutils verzije 2.26 i koristi avr-libc verziju 2.0.0.
1.6. 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 macOS potpisane su 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.
1.7. Podržani uređaji
Ovaj kompajler podržava sve 8-bitne AVR MCU uređaje poznate u vrijeme izdavanja. Vidi (u kompajleru avr_chipinfo.html imenik) za popis svih podržanih uređaja. Ove datoteke također navode konfiguracijske bit doc postavke za svaki uređaj.
1.8. 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 upravljati neograničeno vrijeme 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
Kompajler 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.
1.9. 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 (Windows), (Linux) ili (macOS) .exe .run .app aplikaciju za instalaciju prevoditelja, npr. i slijedite upute na zaslonu.
XC8-1.00.11403-windows.exe
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 floating licencu da se 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.

1.9.1. Rješavanje problema s instalacijom
Ako naiđete na poteškoće s instaliranjem 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 datoteku, odaberite Svojstva, karticu Sigurnost, odaberite korisnika, uredite.)
  • Postavite dopuštenja privremene mape na "Potpuna kontrola!.
  • Da biste odredili lokaciju privremene mape, upišite naredbu Pokreni (tipka s logotipom sustava Windows + R). %temp% Ovo će otvoriti dijaloški okvir file explorera koji prikazuje taj direktorij i omogućit će vam da odredite stazu do te mape.

1.10. Dokumentacija kompilatora

MICROCHIP MPLAB XC8 C kompajler verzija 2.39 Napomene o izdanju za AVR MCU - dokumentKorisnič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 onim opcijama prevoditelja i značajkama koje su primjenjive na ovu arhitekturu.

1.11. 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 Microchip's Online
Tehnička dokumentacija webmjesto.
Nova ili ažurirana AVR dokumentacija u ovom izdanju:
Instaliranje i licenciranje MPLAB® XC C kompilatora (DS50002059) revizija L
Referentni vodič za Microchip Unfied Standard Library opisuje ponašanje i sučelje funkcija koje definira Microchip Unfied Standard Library, kao i namjeravanu upotrebu tipova biblioteke i makronaredbi. Neke od ovih informacija ranije su bile sadržane u MPLA® 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.
Korisnički priručnik za Hexmate uključen je u direktorij u ovom izdanju. Ovaj je vodič namijenjen dokumentima koji koriste Hexmate kao samostalnu aplikaciju.
Sljedeći odjeljci pružaju ispravke i dodatne informacije u odnosu na one koji se nalaze u korisničkim vodičima koji se isporučuju s kompajlerom.

2.1. Opcija smart-io-formata
Opcija-msmart-io-format=fmt fmt, gdje je niz koji sadrži formatirane specifikacije IO pretvorbe, obavještava kompajler da navedene specifikacije koriste pametne IO funkcije.
Kako bi se smanjila veličina koda, kompajler prilagođava kod knjižnice povezan s obiteljima ispisa i skeniranja pametnih IO funkcija, na temelju specifikacija pretvorbe prisutnih u nizovima formata raspoređenih kroz sve pozive tim funkcijama. Ova značajka je potpuno automatska i ne može se onemogućiti.
U nekim situacijama prevodilac ne može odrediti informacije o korištenju iz formatiranog poziva IO funkcije. Ako je opcija korištena, tražene specifikacije pretvorbe za ove funkcije dobivaju se iz niza; inače, prevodilac ne donosi nikakve pretpostavke o tome kako se koriste -msmart-io-format=fmt fmt funkcije i osigurava da su potpuno funkcionalne formatirane IO funkcije povezane u konačnu sliku programa.
Na primjerample, razmotrite sljedeće pozive pametnim IO funkcijama.

vscanf(“%d:%li”, va_list1);
vprintf(“%-s%d”, va_list2);
vprintf(fmt1, va_list3);// dvosmislena upotreba
vscanf(fmt2, va_list4);// dvosmislena upotreba

Prilikom obrade posljednja dva poziva, prevodilac ne može izvesti nikakve informacije o korištenju ni iz nizova formata ni iz argumenata. U tim se slučajevima može koristiti opcija -msmart-io-format koja će potencijalno omogućiti generiranje optimalnije formatiranih I0 funkcija, čime se smanjuje veličina koda programa. Na primjerample, ako nizovi formata na koje ukazuju fmtl i fmt2 zajedno koriste samo specifikatore konverzije “%d”, “%i” i ” % s”, -msmart-io-format=fmt=”%d%i%s ” treba izdati opciju.

Niz nijansi može sadržavati bilo koju važeću specifikaciju konverzije, uključujući oznake i modifikatore (nprample “%-13. 91s") i treba odražavati točno one koje koriste funkcije čija je upotreba dvosmislena. Neuključivanje specifikacije u malo argument gdje su ga koristile formatirane I0 funkcije može dovesti do kvara koda.
Ako je fmt prazan niz ili ne sadrži vidljive specifikacije pretvorbe, izdat će se upozorenje i potpuno funkcionalne formatirane I0 funkcije povezuju se u konačnu sliku programa.
Ova se opcija može koristiti više puta u naredbenom retku. Specifikacije pretvorbe koje se koriste sa svakom opcijom se akumuliraju.

2.2. opcija omit-frame-pointer
Opcija – f omit-frame-pointer daje upute kompajleru da izravno koristi pokazivač steka za pristup objektima na stogu i, ako je moguće, izostavi kod koji sprema, inicijalizira i vraća registar okvira. Automatski je omogućen na svim razinama optimizacije koje nisu nula.
Negiranje opcije, upotrebom -fno-omit- frame-pointer, može pomoći u otklanjanju pogrešaka optimiziranog koda; međutim, ova opcija ne jamči da će se pokazivač okvira uvijek koristiti.

2.3. unroll-loops Mogućnosti
Opcije – funrol I-petlje i -(unroll-all-loops) kontroliraju optimizacije orijentirane na brzinu koje pokušavaju ukloniti kašnjenja grananja u petljama. Odmotane petlje obično povećavaju brzinu izvršavanja generiranog koda, na račun veće veličine koda.
Opcija – funrol I-loops odmotava petlje u kojima se broj ponavljanja može odrediti za vrijeme kompajliranja ili kada kod uđe u petlju. Opcija -funroll-all-loops je agresivnija, odmotava sve petlje, čak i kada je broj ponavljanja nepoznat. Obično je manje učinkovit u poboljšanju brzine izvršenja od opcije – funrol 1-loops.

2.4. mast-Ito-predmeti Opcija
Opcija – f fat-1 to-obj ects zahtijeva da prevodilac generira debeli objekt files, koji sadrže oboje
objektni kod i GIMPLE (jedan od internih prikaza GCC-a), napisan u jedinstvenim ELF odjeljcima. Takvi objekti filekorisni su za knjižnični kod koji se može povezati s projektima koji koriste i ne koriste standardni optimizator vremena povezivanja, kontroliran opcijom -flto.
Forma – fno-fat-lto-objects ove opcije, koja je zadana ako opcija nije navedena, potiskuje uključivanje objektnog koda u objekt files, što rezultira bržim izradama. Međutim, takav objekt files mora uvijek biti povezan pomoću standardnog optimizatora vremena povezivanja.

2.5. Opcija Ito-particije
The – flto-partiti na=a Igo ri thm opcija kontrolira algoritam koji se koristi za particioniranje objekta files prilikom pokretanja alata za optimizaciju vremena veze. Argument none u potpunosti onemogućuje particioniranje i izvršava korak optimizacije vremena povezivanja izravno iz faze analize cijelog programa (WPA). Ovaj način rada će proizvesti najoptimalnije rezultate, nauštrb većih zahtjeva za memorijom prevoditelja i duljeg vremena izgradnje, iako je malo vjerojatno da će to biti problem s malim programima. Pregrađivanje objekta filemože poboljšati izvedbu izrade. Argument jedan specificira da se treba koristiti točno jedna particija, a argument lto1 specificira particioniranje koje odražava ono što diktira izvorni izvor files. Zadani argument je uravnotežen, što navodi dijeljenje na dijelove jednake veličine, kada je to moguće.

2.6. Dodatak odjeljku 3.6.11 Opcije preslikanog povezivača
-wl, – početak odjeljka =sek cija=adresa nedostaje u tablici često korištenih opcija povezivača, kojima se može pristupiti korištenjem opcije upravljačkog programa prevoditelja -wl. Ova opcija omogućuje postavljanje odjeljaka s prilagođenim nazivom na navedenu adresu. Ne može se koristiti za postavljanje standardnih odjeljaka, poput ( . podaci, . bss, . tekst), koji se mora postaviti pomoću opcije -wl, -'r.

2.7. Izmjena i dopuna odjeljka 4.14.2 Promjena i povezivanje dodijeljenog odjeljka
Imajte na umu da, suprotno informacijama sadržanim u ovom odjeljku korisničkog vodiča, promjene napravljene na kompajleru u ovom izdanju sada znače da se prilagođeni odjeljci mogu povezati pomoću -w1, -sekta ion- početak=odjeljak=acicir opciju i bez potrebe za izmjenom skripte povezivača.

Što je novo

Sljedeće 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.

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

3.2. Verzija 2.36 
Nijedan.
3.3. Verzija 2.35 
Nova podrška za 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 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 Novi -mgas-isr-prolozi opcija kontrolira kod za prebacivanje konteksta 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-progmem 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 mapirani u podatke memorijski prostor, gdje će mu se pristupati učinkovitije.

Microchip Unified Standard Libraries Sve MPLAB XC kompajleri će dijeliti Microchip Unified Standard Library, koji je sada dostupan s ovim izdanjem MPLAB XC8. The MPLAB® XC8 C kompajler
Korisnički priručnik za AVR® MCU više ne uključuje dokumentaciju za te standardne funkcije. Te se informacije sada mogu pronaći u Referentni vodič za Microchip Unified Standard Library. Imajte na umu da neke funkcije koje je prethodno definirao avr-libc više nisu dostupne. (Vidjeti Funkcionalnost knjižnice.)
Pametno I0 Kao dio novih objedinjenih biblioteka, JO funkcije u obiteljima printf i scanf sada se generiraju po narudžbi za svaku verziju, na temelju načina na koji se te funkcije koriste u programu. Ovo može značajno smanjiti resurse koje koristi program.
Smart I0 opcija pomoći Prilikom analize poziva pametnih I0 funkcija (kao što su printf () ili scanf ()), kompajler ne može uvijek odrediti iz niza formata ili zaključiti iz argumenata one specifikatore pretvorbe koje zahtijeva poziv. Prethodno prevodilac uvijek ne bi pravio nikakve pretpostavke i osiguravao da je potpuno funkcionalnih 10 funkcija povezano u konačnu sliku programa. Dodana je nova opcija – msma rt-io-format=fmt tako da korisnik umjesto toga može informirati kompajler o specifikatorima pretvorbe koje koriste pametne I0 funkcije čija je upotreba dvosmislena, sprječavajući povezivanje predugih 10 rutina. (Vidjeti smart-io-format Mogućnost za više detalja.)
Postavljanje prilagođenih odjeljaka Prethodno je opcija -W1, –section-start samo postavljala navedeni odjeljak na traženu adresu 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 . podaci, najbolji alokator i dalje će imati potpunu kontrolu nad njihovim postavljanjem, a opcija neće imati učinka. Koristite -wl, -Tsection=addr opciju, kao što je opisano u korisničkom priručniku.

3.4. Verzija 2.32
Stack Guidance Dostupno uz PRO licencu za kompajler, značajka kompilatora za stack guidance može se koristiti za procjenu maksimalne dubine bilo kojeg stoga 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.
Nova podrška za uređaje Podrška je dostupna za sljedeće AVR dijelove: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTNY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32 i AVR32DB48.
Podrška za povučeni uređaj Podrška više nije dostupna za sljedeće AVR dijelove: AVR 16DA28, AVR16DA32 i AVR16DA48.

3.5. Verzija 2.31 Ništa.
3.6. Verzija 2.30
Nova opcija za sprječavanje inicijalizacije podataka Nova opcija upravljačkog programa -mno-data-init sprječava inicijalizaciju podataka i brisanje bss odjeljaka. Djeluje tako da potiskuje izlaz simbola do_copy_data i do_clear_bss u asembleru 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 -fsection-anchors, koja dopušta pristup statičkim objektima koji se izvode u odnosu na jedan simbol; -mpa-iteracije =n, koji dopušta promjenu broja ponavljanja proceduralne apstrakcije sa zadanih 2; i -mpa-callcost-shortcal 1, koji izvodi agresivniju proceduralnu apstrakciju, u nadi da povezivač može opustiti duge pozive. Ova posljednja opcija može povećati veličinu koda ako temeljne pretpostavke nisu ostvarene.
Novi podrška za uređaj Podrška je dostupna za sljedeće AVR dijelove: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR 128DB 32, AVR128DB48 i AVR 128DB64.
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.

3.7. Verzija 2.29 (funkcionalno sigurnosno izdanje)
Zaglavlje file za dodatke prevoditelja Kako bi se osiguralo da prevodilac može biti usklađen sa specifikacijama jezika kao što je MISRA, the zaglavlje file, koju automatski uključuje , je ažuriran. Ovo zaglavlje sadrži prototipove za sve ugrađene funkcije, kao što su ugrađeni in_avr_nop () i _builtin_avr_delay_cycles (). Neki ugrađeni elementi možda nisu usklađeni s MISRA-om; oni se mogu izostaviti dodavanjem definicije XC_STRICT MISRA u naredbeni red prevoditelja. Ugrađeni elementi i njihove deklaracije ažurirani su za upotrebu tipova fiksne širine.

3.8. Verzija 2.20
Novi podrška za uređaj Podrška je dostupna za sljedeće AVR dijelove: ATTINY 1624, ATTINY1626 i ATTINY 1 627.
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. 3.9. Verzija 2.19 (Sigurnost rada Izdanje)
Nijedan.
3.10. 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 nocodecov 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_ ((nocodecov)) može se koristiti za isključivanje određene funkcije iz analize pokrivenosti.
Opis uređaja files Novi uređaj file pod nazivom avr_chipinfo.html nalazi se u direktoriju dokumenata

distribucija 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 razine 2, 3 ili s optimizacije. Ove optimizacije smanjuju veličinu koda, ali mogu smanjiti brzinu izvršenja i mogućnost uklanjanja 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-f ile=filenaziv ili onemogućen za funkciju pomoću -mno-pa-onfunotion=f pomazanje.
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 _attribute_ ( (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 avr_chipinfo.html file (gore spomenuto) za parove postavka/vrijednost za korištenje s ovom pragmom.
Novi podrška za uređaj Podrška je dostupna za sljedeće dijelove: AVR28DAl28, AVR64DAl28, AVR32DAl28 i AVR48DAl28.

3.11. 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.
Const 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 cons t 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.
Novi podrška za uređaj Podrška je dostupna za sljedeće dijelove: ATMEGA1608, ATMEGA 1609, ATMEGA808 i ATMEGA809.

3.12. 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č A novi upravljački program knjižničara postavljen je iznad prethodnog knjižničara PIC libr i AVR avr-ar knjižničara. Ovaj upravljački program prihvaća opcije u stilu GCC-arhivatora, koje se ili prevode ili prosljeđuju 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 am značajke koje kompajler sada obrađuje drugačije. 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.

4.1. Verzija 2.39 (funkcionalno sigurnosno izdanje)
Nijedan.
4.2. Verzija 2.36 Nijedan.
4.3. Verzija 2.35
Rukovanje string-to bazama (XC8-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. C standard ne specificira ponašanje funkcionira kada je ova osnovna vrijednost prekoračena.
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 povezivati ​​biblioteku 1printf flt (opcija -1printf_flt) za uključivanje formatirane I0 podrške za specifikatore float-formata. Smart 10 značajki Microchipove objedinjene standardne biblioteke čini ovu opciju suvišnom. Dodatno, 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 0 ) radit će ispravno s takvim podacima kada je značajka const-data-in-program-memory omogućena.

4.4. Verzija 2.32
Nijedan.
4.5. Verzija 2.31
Nijedan.
4.6. Verzija 2.30
Nijedan.
4.1. Verzija 2.29 (funkcionalno sigurnosno izdanje)
Nijedan.
4.2. Verzija 2.20
Promijenjeni DFP izgled Kompajler sada pretpostavlja drugačiji raspored koji koriste DFP (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.

4.3. Verzija 2.19 (funkcionalno sigurnosno izdanje)
Nijedan.
4.4. Verzija 2.10 Ništa
4.5. Verzija 2.05
Konstantni objekti u programskoj memoriji Imajte na umu da će prema zadanim postavkama, const-kvalificirani objekti biti postavljeni i pristupiti im se u programskoj memoriji (kako je opisano njezino). 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 -mnocons t-data-in-pr ogmem.

4.6. Verzija 2.00
Osigurači za konfiguraciju Osigurači za konfiguraciju uređaja sada se mogu programirati korištenjem pragme konfiguracije nakon koje slijede parovi vrijednosti postavki za određivanje stanja osigurača, npr. #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
Apsolutni objekti i funkcije Objekti i funkcije sada se mogu postaviti na određenu adresu u memoriji pomoću CCI _at (adresa) specifikator, nprampono:
ifinclude
int foobar na (0)0300100);
char at(0x250) getID(int offset) ( Argument za ovaj specifikator mora biti konstanta koja predstavlja adresu na kojoj će biti postavljen prvi bajt ili instrukcija. RAM adrese su naznačene korištenjem pomaka od Ox800000. Omogućite CCI za koristite ovu značajku.
Nova sintaksa funkcije prekida Prevodilac sada prihvaća CCI _prekid (br) specifikator koji označava da su C funkcije rukovatelji prekidima. Specifikator uzima broj prekida, nprampono:

Riješeni problemi

Sljedeći su ispravci koji su napravljeni na kompajleru. 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 (DR)) povezan s uređajem. Pogledajte MPLAB Pack Manager za informacije o promjenama na DFP-ovima i za preuzimanje najnovijih paketa.

5.1. Verzija 2.39 (funkcionalno sigurnosno izdanje)
Nijedan.
5.2. Verzija 2.36
Pogreška prilikom odgode (XCS2774) Manje promjene u zadanim optimizacijama slobodnog načina rada spriječile su stalno presavijanje izraza operanda u ugrađene funkcije odgode, što je rezultiralo njihovim tretiranjem kao nekonstantama i pokretanjem pogreške. ugrađeni_avr_delay_cycles očekuje cjelobrojnu konstantu vremena kompajliranja.

5.3. Verzija 2.35
Granični dodjela koristeći _at (XCS2653) Kontinuirana dodjela višestrukih objekata u odjeljak s istim imenom i korištenje _at () nije radila ispravno. Na primjerampono:
const char arrl[] atribut (odjeljak(“.mysec”) na (0x500) = (OxAB, OxCD);
const char arr2[ ] atribut (sectionr.mysec”)= (OxEF, OxFE);
trebao staviti arr2 odmah iza arri.
Određivanje početnih adresa odjeljaka (XCS2650) The -wl, –section-start opcija 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 a -wl, -T opcija.
Linker se ruši prilikom opuštanja (XCS2647) Kada Optimizacija -mrelax bila je omogućena i to su bili 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.
ne nepadanjeleđa (XCS2646) The – opcija nofallback nije ispravno implementirana niti dokumentirana. Ovo se sada može odabrati kako bi se osiguralo da se prevodilac neće vratiti na nižu postavku optimizacije ako je prevodilac nelicenciran i da će umjesto toga izdati pogrešku.
Neodgovarajuće optimizacije brzine (XCS2637) 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.
Loš pristup EEPROM-u (XCS2629) Rutina eeprom_read_block nije radila ispravno na Xmega uređajima kada je opcija -mconst-data-in-progmem bila omogućena (što je zadano stanje), što je rezultiralo neispravnim čitanjem EEPROM memorije.
Nevažeća dodjela memorije (X03-2593, XC8-2651) Kada opciju povezivača -Ttext ili -Tdata (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.
Pad s pretjerano dodijeljenom funkcijom (XC8-2580) Prevodilac se srušio ako je funkcija deklarirana korištenjem više od jednog atributa prekida, signala ili nmi, npr. _attribute_ ( ( signal , prekid ) ).
Nevažeći ATtiny kod prekida (XC8-2465) Prilikom izgradnje za ATtiny uređaje i optimizacije su bile onemogućene (-00), funkcije prekida možda su pokrenule poruke asemblera operanda izvan raspona.
Opcije se ne prolaze (XC8-2452) Kada koristite -wl opcija s više opcija povezivača odvojenih zarezima, nisu sve opcije povezivača proslijeđene povezivaču.
Pogreška neizravnog čitanja programske memorije (X03-2450) U nekim je slučajevima kompajler proizveo interna pogreška (neprepoznatljiv insn) prilikom čitanja dvobajtne vrijednosti iz pokazivača u programsku memoriju

5.4. Verzija 2.32
Drugi pristup knjižnici nije uspio (X03-2381) Pozivanje Windows verzije arhivatora biblioteke xc8-ar.exe po drugi put za pristup postojećoj arhivi biblioteke možda nije uspjelo s porukom o pogrešci nemogućnosti preimenovanja.

5.5. Verzija 2.31
Nerazjašnjeno kvarovi prevoditelja (XC8-2367) Prilikom trčanja na Windows platforme koje su imale sistemski privremeni direktorij postavljen na stazu koja uključuje točku '.' znakova, kompajler možda nije uspio izvršiti.

5.6. Verzija 2.30
Globalne oznake zagubljene nakon ocrtavanja (XC8-2299) Rukom pisani sklopovni kod koji postavlja globalno oznake unutar sklopovskih sekvenci koje su faktorizirane proceduralnom apstrakcijom možda nisu bile ispravno repozicionirane.
Opuštajući sudar (XC8-2287) Korištenje -mrelax opcija je možda uzrokovala rušenje povezivača kada optimizacije opuštanja skoka repa pokušale su ukloniti ret instrukcije koje nisu bile na kraju a odjeljak.
Rušenje prilikom optimizacije oznaka kao vrijednosti (XC8-2282) Kod koji koristi "Oznake kao vrijednosti" GNU C proširenje jezika moglo je uzrokovati rušenje optimizacije proceduralne apstrakcije, s pogreškom popravka okvira raspona raspona Outlined VMA.
Not so const (XC8-2271) Prototipovi za strstr () i druge funkcije iz više ne navodi nestandardni kvalifikator const na vraćenim pokazivačima niza kada je značajka -mconst-data- inprogmem onemogućena. Imajte na umu da je s uređajima avrxmega3 i avrtiny ova značajka trajno omogućena.
Izgubljeni inicijalizatori (XC8-2269) Kada je više od jedne varijable u prijevodu jedinica je postavljena u odjeljak (koristeći odjeljak or atribut ( (odjeljak) )), a prva takva varijabla je bila inicijalizirana nulom ili nije imala inicijalizator, inicijalizatori za druge varijable u istoj jedinici prevođenja koje su bile smještene u isti odjeljak su izgubljeni.

5.1. Verzija 2.2 9 (Izdanje funkcionalne sigurnosti) Ništa. 
5.2. Verzija 2.20
Pogreška s dugim naredbama (XC8-1983) Kada koristite AVR cilj, kompajler je možda stao s pogreškom lilt not found, ako je naredbeni redak bio izuzetno velik i sadržavao posebne znakove kao što su navodnici, kose crte unazad, itd.
Nedodijeljena rodata sekcija (XC8-1920) AVR povezivač nije uspio dodijeliti memoriju za prilagođene rodata sekcije prilikom izgradnje za avrxmega3 i avrtiny arhitekture, potencijalno stvarajući pogreške preklapanja memorije

5.3. Verzija 2.19 (funkcionalno sigurnosno izdanje)
Nijedan.
5.4. Verzija 2.10
Neuspjesi premještanja (XC8-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.
Instrukcije koje nisu transformirane opuštanjem (XC8-1889) Opuštanje povezivača nije se dogodilo za instrukcije skoka ili poziva čiji ciljevi postaju dostupni ako su opušteni.
Nedostaje funkcionalnost (XC8E-3 ) Nekoliko definicija iz , kao što su clock_div_t i clock_presc ale_s et () , nisu definirani za uređaje, uključujući ATmega324PB, ATmega328PB, ATtiny441 i ATtiny841.
Makronaredbe koje nedostaju Kompajler nije automatski definirao makronaredbe pretprocesora _XC 8_MODE_, XC 8 VERS ION, XC i xc8. Ovi su sada dostupni.

5.5. Verzija 2.05
Unutarnja pogreška prevoditelja (XC8-1822) Prilikom izgradnje u sustavu Windows, možda je nastala interna pogreška prevoditelja prilikom optimizacije koda.
Nije otkriveno prekoračenje RAM-a (XC8-1800, XC8-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 (XC8-1792) Za uređaje avrxmega3 i avrtiny, dijelovi flash memorije su možda ostali neprogramirani u MPLAB X IDE.
Neuspjeh u izvršavanju main (XC8-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 (XC8-1787) Za uređaje avrxmega3 i avrtiny, program veličine avr javljao je da podaci samo za ludi troše RAM umjesto programske memorije.
Netočno čitanje programske memorije (XC8-1783) Projekti kompilirani za uređaje s programskom memorijom preslikanom u adresni prostor podataka i koji definiraju objekte korištenjem PROGMEM makroa/atributa možda su te objekte pročitali s pogrešne adrese.
Interna pogreška s atributima (XC8-1773) Došlo je do interne pogreške ako ste definirali objekte pokazivača s tokenima _at 0 ili attribute() između naziva pokazivača i dereferenciranog tipa, npr.ample, char * _at (0x800150) cp; Sada se izdaje upozorenje ako se naiđe na takav kod.

Neuspjeh u izvršavanju glavnog (XC8-1780, XC8-1767, XC8-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 se dosegne glavna 0 .

Pogreška osigurača s malim uređajima (XC8-1778, XC8-1742) Uređaji attiny4/5/9/10120140 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 (XC8-1777) Ispravljena je povremena pogreška segmentacije.

Pad asemblera (XC8-1761) Avr -as asembler se možda srušio kada je kompajler pokrenut pod Ubuntu 18.

Objekti nisu izbrisani (XC8-1752) Neinicijalizirane objekte trajanja statičke pohrane možda nije obrisao kod za pokretanje vremena izvođenja.

Konfliktna specifikacija uređaja zanemarena (XC8-1749) The prevodilac 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 (XC8-1748) The Simbol _heap_start 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 (XC8-1739) Pogreška premještanja povezivača mogla je biti emitirana kada je kod sadržavao rjmn ili rcall s ciljem udaljenim točno 4k bajta.

5.6. Verzija 2.00 Ništa.

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. Oznaka(e) u zagradama u plimi je 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 modi operandi i koja će vjerojatno ostati trajno na snazi.
6.1. MPLAB X IDE Integracija
MPLAB IDE integracija Ako će se Compiler koristiti iz MPLAB IDE-a, morate instalirati MPLAB IDE prije instaliranja Compiler-a.
6.2. Generiranje koda
Netočno inicijalizacija (XC8-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.
strtod neispravno postavlja endptr (XC8-2652) U slučajevima kada predmetni niz za pretvorbu pomoću strtod () 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 endptr adresa, ako je navedena, ukazivati ​​na znak nakon e a ne samo e. Na primjerample: strtod ("100exy", endptr) ;

rezultirat će endptr-om koji pokazuje na znak x.

Loši neizravni pozivi funkcija (X03-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 (XC8-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 nulu. Na primjerample: strtof ("Oxl", &endptr) ; će vratiti vrijednost 0, a ne 1.
Netočna poruka savjetnika za snop (XC8-2542, XC8-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 (XC8-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.
Konst objekti koji nisu u programskoj memoriji (XC8-2408) Za projekte avrxmega3 i avrtiny unitializirani 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 (XC8-1966) Kompajler ne otkriva preklapanje memorije objekata koji su apsolutni na adresi (putem _at 0) i drugih objekata koji koriste _sektaion () i koji su povezani na istu adresu.
Kvar s funkcijama knjižnice i _memx (XC8-1763) Pozvane libgcc float funkcije s argumentom u adresnom prostoru _memx 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 implementacija libgcc (AVRTC-731) Za ATTiny4/5/9/10/20/40 proizvoda, implementacija standardne C / Math knjižnice u libgcc je vrlo 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 -mrelax.
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 loca It ime 0 vratiti isto vrijeme kao i gmtime ( ), npr.ample.

Dokumenti / Resursi

MICROCHIP MPLAB XC8 C kompajler verzija 2.39 Napomene o izdanju za AVR MCU [pdf] Korisnički priručnik
MPLAB XC8 C prevodilac verzija 2.39 Napomene o izdanju za AVR MCU, MPLAB XC8 C, prevodilac verzija 2.39 Napomene o izdanju za AVR MCU, Napomene o izdanju za AVR MCU
MICROCHIP MPLAB XC8 C kompajler verzija 2.39 Napomene o izdanju za AVR MCU [pdf] Korisnički priručnik
MPLAB XC8 C prevodilac verzija 2.39 Napomene o izdanju za AVR MCU, MPLAB XC8 C, prevoditelj verzija 2.39 Napomene o izdanju za AVR MCU, Napomene za AVR MCU
MICROCHIP MPLAB XC8 C kompajler [pdf] Korisnički priručnik
MPLAB XC8 C kompajler, MPLAB XC8 C, kompajler

Reference

Ostavite komentar

Vaša email adresa neće biti objavljena. Obavezna polja su označena *