MPLAB XC8 C Compiler verze 2.39 Poznámky k vydání pro AVR MCU
Uživatelská příručka
TENTO DOKUMENT OBSAHUJE DŮLEŽITÉ INFORMACE TÝKAJÍCÍ SE KOMPILOVAČE MPLAB XC8 C PŘI CÍLENÍ NA ZAŘÍZENÍ MICROCHIP AVR. PŘEČTĚTE SI JI PŘED SPUŠTĚNÍM TOHOTO SOFTWARU.
POKUD POUŽÍVÁTE KOMPILER PRO 8BITOVÁ ZAŘÍZENÍ OBRÁZEK, NAJDETE V POZNÁMKÁCH K VYDÁNÍ KOMPILERU MPLAB XC8 C PRO OBRÁZKOVÝ DOKUMENT.
Nadview
1.1. Úvod
Toto vydání kompilátoru Microchip MPLAB® XC8 C je kompilátor funkční bezpečnosti, založený na verzi 2.36 tohoto kompilátoru a který nyní podporuje licenci síťového serveru.
1.2. Datum vydání
Oficiální datum vydání této verze kompilátoru je 27. ledna 2022.
1.3. Předchozí verze
Předchozí verze kompilátoru MPLAB XC8 C byla 2.36, vydaná 25. ledna 2022.
1.4. Manuál funkční bezpečnosti
Příručka funkční bezpečnosti pro kompilátory MPLAB XC je k dispozici v balíčku dokumentace při zakoupení licence funkční bezpečnosti.
1.5. Licence a verze komponent® MPLAB
XC8 C Compiler for AVR MCUs nástroje jsou napsány a distribuovány pod licencí GNU General Public License (GPL), což znamená, že jeho zdrojový kód je volně distribuován a dostupný veřejnosti.
Zdrojový kód pro nástroje pod GNU GPL lze stáhnout samostatně z Microchip's webmísto. GNU GPL si můžete přečíst v souboru s názvem, který se nachází v podadresáři instalační licence.txt adresáře avr/doc. Obecnou diskuzi o principech, na kterých je GPL založena, naleznete zde.
Kód podpory poskytovaný pro soubory záhlaví, skripty linkeru a runtime knihovny jsou proprietární kód a nevztahuje se na ně GPL.
Tento kompilátor je implementací GCC verze 5.4.0, binutils verze 2.26 a používá avr-libc verze 2.0.0.
1.6. Systémové požadavky
Kompilátor MPLAB XC8 C a licenční software, který využívá, jsou k dispozici pro různé operační systémy, včetně 64bitových verzí následujících: Professional edice Microsoft Windows 10; Ubuntu 18.04; a macOS 10.15.5. Binární soubory pro Windows byly podepsány kódem. Binární soubory pro macOS byly podepsány kódem a notářsky ověřeny.
Pokud provozujete síťový licenční server, mohou být k hostování licenčního serveru použity pouze počítače s operačními systémy podporovanými kompilátory. Od verze xclm 2.0 lze síťový licenční server nainstalovat na platformu Microsoft Windows Server, ale licenční server nemusí běžet na serverové verzi operačního systému.
1.7. Podporovaná zařízení
Tento kompilátor podporuje všechna 8bitová zařízení AVR MCU známá v době vydání. Viz (v kompilátoru avr_chipinfo.html adresář) pro seznam všech podporovaných zařízení. Tyto soubory také obsahují nastavení konfiguračního bitového dokumentu pro každé zařízení.
1.8. Edice a aktualizace licencí
Kompilátor MPLAB XC8 lze aktivovat jako licencovaný (PRO) nebo nelicencovaný (Free) produkt. Chcete-li licencovat svůj kompilátor, musíte si zakoupit aktivační klíč. Licence umožňuje vyšší úroveň optimalizace ve srovnání s bezplatným produktem. Nelicencovaný kompilátor lze provozovat neomezeně dlouho bez licence.
Kompilátor funkční bezpečnosti MPLAB XC8 musí být aktivován pomocí licence funkční bezpečnosti zakoupené od společnosti Microchip. Bez této licence nebude překladač fungovat. Po aktivaci si můžete vybrat libovolnou úroveň optimalizace a používat všechny funkce kompilátoru. Toto vydání funkční bezpečnosti MPLAB XC
Kompilátor podporuje licenci síťového serveru.
Informace o typech licencí a instalaci kompilátoru s licencí naleznete v dokumentu Instalace a licencování kompilátorů MPLAB XC C (DS50002059).
1.9. Instalace a aktivace
Viz také sekce Problémy a omezení migrace, kde najdete důležité informace o nejnovějším správci licencí, který je součástí tohoto kompilátoru.
Pokud používáte MPLAB IDE, nezapomeňte před instalací tohoto nástroje nainstalovat nejnovější MPLAB X IDE verze 5.0 nebo novější. Před instalací kompilátoru ukončete IDE. Spusťte (Windows), (Linux) nebo (macOS) .exe .run .app kompilátor instalační aplikaci, např. a postupujte podle pokynů na obrazovce.
XC8-1.00.11403-windows.exe
Doporučuje se výchozí instalační adresář. Pokud používáte Linux, musíte nainstalovat kompilátor pomocí terminálu a z účtu root. Nainstalujte pomocí účtu macOS s oprávněními správce.
Aktivace se nyní provádí odděleně od instalace. Další informace naleznete v dokumentu License Manager for MPLAB® XC C Compilers (DS52059).
Pokud se rozhodnete spustit kompilátor pod zkušební licencí, zobrazí se vám nyní během kompilace varování, když do 14 dnů od konce zkušebního období nedosáhnete. Stejné varování se zobrazí, pokud jste do 14 dnů od konce vašeho předplatného HPA.
XC Network License Server je samostatný instalační program a není součástí instalačního programu kompilátoru pro jednoho uživatele.
XC License Manager nyní podporuje roaming pohyblivých síťových licencí. Tato funkce je zaměřena na mobilní uživatele a umožňuje přechodné licenci na krátkou dobu mimo síť. Pomocí této funkce se můžete odpojit od sítě a stále používat svůj MPLAB XC kompilátor. Více o této funkci najdete ve složce doc instalace XCLM.
MPLAB X IDE obsahuje okno Licence (Nástroje > Licence) pro vizuální správu roamingu.
1.9.1. Řešení problémů s instalací
Pokud máte potíže s instalací kompilátoru pod některým z operačních systémů Windows, vyzkoušejte následující návrhy.
- Spusťte instalaci jako správce.
- Nastavte oprávnění instalační aplikace na „Plná kontrola“. (Klikněte pravým tlačítkem myši na soubor, vyberte Vlastnosti, karta Zabezpečení, vyberte uživatele, upravte.)
- Nastavte oprávnění dočasné složky na „Plná kontrola!.
- Chcete-li určit umístění dočasné složky, zadejte příkaz Spustit (klávesa s logem Windows + R). %temp% Toto otevře dialogové okno průzkumníka souborů s daným adresářem a umožní vám určit cestu k této složce.
1.10. Dokumentace kompilátoru
Uživatelské příručky kompilátoru lze otevřít ze stránky HTML, která se otevře ve vašem prohlížeči po kliknutí na modré tlačítko nápovědy na řídicím panelu MPLAB X IDE, jak je uvedeno na snímku obrazovky.
Pokud vytváříte pro 8bitové cíle AVR, MPLAB® XC8 C Compiler User's Guide for AVR
MCU obsahuje informace o možnostech a funkcích kompilátoru, které jsou použitelné pro tuto architekturu.
1.11. Zákaznická podpora
Microchip vítá hlášení o chybách, návrhy nebo komentáře týkající se této verze kompilátoru. Veškeré hlášení o chybách nebo požadavky na funkce směřujte prostřednictvím systému podpory.
Aktualizace dokumentace
Pro online a aktuální verze dokumentace MPLAB XC8 navštivte prosím Microchip's Online
Technická dokumentace webmísto.
Nová nebo aktualizovaná dokumentace AVR v tomto vydání:
Instalace a licencování MPLAB® XC C kompilátorů (DS50002059) revize L
Referenční příručka Microchip Unified Standard Library popisuje chování a rozhraní funkcí definovaných Microchip Unified Standard Library, stejně jako zamýšlené použití typů knihoven a maker. Některé z těchto informací byly dříve obsaženy v MPLA® XC8 C Compiler User!s Guide® for AVR
MCU. Informace o knihovně specifické pro zařízení jsou stále obsaženy v této příručce kompilátoru.
Uživatelská příručka Hexmate byla zahrnuta do adresáře v této verzi. Tato příručka je určena pro dokumenty, které používají Hexmate jako samostatnou aplikaci.
Následující části poskytují opravy a dodatečné informace k těm, které najdete v uživatelských příručkách dodávaných s kompilátorem.
2.1. Smart-io-format Option
Volba-msmart-io-format=fmt fmt, kde je řetězec obsahující formátované specifikace IO konverze, oznamuje kompilátoru, že uvedené specifikace jsou používány funkcemi smart IO.
Aby se zmenšila velikost kódu, kompilátor přizpůsobí kód knihovny související s rodinami tiskových a skenovacích funkcí inteligentních IO na základě specifikací převodu přítomných ve formátovacích řetězcích shromážděných ve všech voláních těchto funkcí. Tato funkce je plně automatická a nelze ji deaktivovat.
V některých situacích kompilátor nemůže určit informace o využití z formátovaného volání funkce IO. Pokud byla volba použita, požadované převodní specifikace pro tyto funkce jsou získány z řetězce; jinak kompilátor nepředpokládá, jak se používají funkce -msmart-io-format=fmt fmt, a zajišťuje, že plně funkční formátované IO funkce jsou propojeny s konečným obrazem programu.
Napřample, zvažte následující volání funkcí inteligentních IO.
vscanf(“%d:%li”, va_list1);
vprintf(“%-s%d”, va_list2);
vprintf(fmt1, va_list3);// nejednoznačné použití
vscanf(fmt2, va_list4);// nejednoznačné použití
Při zpracování posledních dvou volání nemůže kompilátor odvodit žádné informace o použití ani z formátovacích řetězců, ani z argumentů. V těchto případech lze použít volbu -msmart-io-format a potenciálně umožní generování optimálněji naformátovaných funkcí I0, čímž se sníží velikost kódu programu. Napřample, pokud formátovací řetězce, na které odkazují fmtl a fmt2 společně používají pouze specifikátory převodu „%d“, „%i“ a „% s“, -msmart-io-format=fmt=”%d%i%s “, měla by být vydána možnost.
Řetězec odstínu může obsahovat jakoukoli platnou specifikaci převodu, včetně příznaků a modifikátorů (napřample "%-13. 91s”) a měly by přesně odrážet ty, které používají funkce, jejichž použití je nejednoznačné. Neuvedení specifikace v bit argument, kde byl použit formátovanými funkcemi I0, může vést k selhání kódu.
Pokud je fmt prázdný řetězec nebo neobsahuje žádné rozeznatelné specifikace převodu, vydá se varování a plně funkční naformátované funkce I0 se propojí s konečným obrazem programu.
Tuto volbu lze na příkazovém řádku použít vícekrát. Shromažďují se specifikace převodu použité u každé možnosti.
2.2. Možnost vynechat-snímek-ukazatel
Volba – f omit- frame-pointer instruuje kompilátor, aby přímo použil ukazatel zásobníku pro přístup k objektům v zásobníku, a pokud je to možné, vynechal kód, který ukládá, inicializuje a obnovuje registr rámců. Je povolena automaticky na všech nenulových úrovních optimalizace.
Negace volby pomocí -fno-omit- frame-pointer může pomoci při ladění optimalizovaného kódu; tato možnost však nezaručuje, že ukazatel snímku bude vždy použit.
2.3. Unroll-loops Options
Volby – funrol I-loops a -(unroll-all-loops) řídí optimalizace orientované na rychlost, které se pokoušejí odstranit zpoždění větvení ve smyčkách.Rozbalené smyčky obvykle zvyšují rychlost provádění generovaného kódu na úkor větší velikosti kódu.
Volba – funrol I-loops rozvine smyčky, kde lze počet iterací určit v době kompilace nebo při vstupu kódu do smyčky. Volba -funroll-all-loops je agresivnější a rozvine všechny smyčky, i když není znám počet iterací. Obvykle je méně efektivní při zlepšování rychlosti provádění než možnost – funrol 1-loops.
2.4. fat-Ito-objekty Volba
Volba – f fat-1 to-obj ects požaduje, aby kompilátor vygeneroval tlustý objekt files, které obsahují obojí
objektový kód a GIMPLE (jedna z interních reprezentací GCC), zapsané do jedinečných sekcí ELF. Takové předměty files jsou užitečné pro kód knihovny, který by mohl být propojen s projekty, které používají a nepoužívají standardní optimalizátor doby propojení, řízený volbou -flto.
Forma – fno-fat-lto-objects této možnosti, která je výchozí, pokud není zadána žádná možnost, potlačuje zahrnutí kódu objektu do objektu files, což má za následek rychlejší sestavení. Nicméně, takový objekt files musí být vždy propojeny pomocí standardního optimalizátoru doby propojení.
2.5. Možnost Ito-partition
– flto-partiti na=a Igo ri thm volba řídí algoritmus použitý k rozdělení objektu files při spuštění optimalizátoru doby připojení. Argument none zcela zakáže dělení a provede krok optimalizace doby připojení přímo z fáze analýzy celého programu (WPA). Tento režim provozu poskytne nejoptimálnější výsledky na úkor větších požadavků na paměť kompilátoru a delší doby sestavování, i když je nepravděpodobné, že by to byl problém u malých programů. Rozdělení objektu files může zlepšit výkon stavby. Argument jedna určuje, že by měl být použit právě jeden oddíl, a argument lto1 určuje rozdělení, které zrcadlí to, co diktoval původní zdroj files. Výchozí argument je vyvážený, což určuje rozdělení na stejně velké bloky, pokud je to možné.
2.6. Doplněk k části 3.6.11 Možnosti mapovaného linkeru
-wl, – začátek sekce =sec tion=addr chybí v tabulce běžně používaných voleb linkeru, přístupných pomocí volby ovladače kompilátoru -wl. Tato možnost umožňuje umístění vlastních pojmenovaných sekcí na zadanou adresu. Nelze jej použít k umístění standardních sekcí, jako ( . data, . bss, . text), který musí být umístěn pomocí volby -wl, -'r.
2.7. Dodatek k části 4.14.2 Změna a propojení přidělené části
Všimněte si, že na rozdíl od informací obsažených v této části uživatelské příručky, změny provedené v kompilátoru v této verzi nyní znamenají, že vlastní sekce lze propojit pomocí -w1, -sekta ion- start=sekce=acicir možnost a bez nutnosti úpravy skriptu linkeru.
Co je nového
Následující jsou nové funkce cíle AVR, které kompilátor nyní podporuje. Číslo verze v podnadpisech označuje první verzi kompilátoru, která podporuje funkce, které následují.
3.1. Verze 2.39 (funkční bezpečnostní vydání)
Licence síťového serveru Tato verze MPLAB XC8 Functional Safety Compiler podporuje licenci síťového serveru.
3.2. Verze 2.36
Žádný.
3.3. Verze 2.35
Podpora nových zařízení Podpora je k dispozici pro následující části AVR: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 a AVR64DD32.
Vylepšené přepínání kontextu Nová volba -mcall-isr-prologues mění způsob, jakým funkce přerušení ukládají registry při vstupu a jak se tyto registry obnovují po ukončení rutiny přerušení. Funguje podobně jako volba -mcall-prologues, ale ovlivňuje pouze funkce přerušení (ISR).
Ještě vylepšené přepínání kontextu Nový -mgas-isr-prology volba řídí kód přepínání kontextu generovaný pro servisní rutiny malých přerušení. Je-li tato funkce povolena, bude assembler prohledávat ISR pro použití registrů a uložit tyto použité registry pouze v případě potřeby.
Konfigurovatelné flash mapování Některá zařízení z rodiny AVR DA a AVR DB mají SFR (např. FLMAP), který určuje, která 32k sekce programové paměti bude mapována do datové paměti. Novou možnost – mconst-data-in-config-mapped-progmem lze použít k tomu, aby linker umístil všechna data s kvalifikací cons t do jedné 32k sekce a automaticky inicializoval příslušný registr SFR, aby bylo zajištěno, že tato data budou mapována do dat. paměťový prostor, kde k němu bude efektivnější přístup.
Microchip Unified Standard Libraries Všechny MPLAB Kompilátory XC budou sdílet knihovnu Microchip Unified Standard Library, která je nyní k dispozici s tímto vydáním MPLAB XC8. The MPLAB® Kompilátor XC8 C
Uživatelská příručka pro AVR® MCU již neobsahuje dokumentaci pro tyto standardní funkce. Tyto informace lze nyní nalézt v Referenční příručka sjednocené standardní knihovny Microchip. Všimněte si, že některé funkce dříve definované avr-libc již nejsou dostupné. (Vidět Funkce knihovny.)
Chytrý I0 V rámci nových sjednocených knihoven jsou nyní funkce JO v rodinách printf a scanf generovány na zakázku v každém sestavení na základě způsobu použití těchto funkcí v programu. To může podstatně snížit zdroje používané programem.
Možnost pomoci Smart I0 Při analýze volání funkcí smart I0 (jako je printf () nebo scanf ()) nemůže kompilátor vždy určit z formátovacího řetězce nebo odvodit z argumentů ty konverzní specifikátory požadované voláním. Dříve kompilátor vždy nevytvářel žádné předpoklady a zajistil, aby bylo do výsledného obrazu programu propojeno plně funkčních 10 funkcí. Byla přidána nová možnost – msma rt-io- format=fmt, takže kompilátor může být uživatelem informován o specifikátorech převodu používaných funkcemi smart I0, jejichž použití je nejednoznačné, což zabraňuje propojení příliš dlouhých 10 rutin. (Vidět smart-io-formát Možnost pro více podrobností.)
Umístění uživatelských sekcí Dříve možnost -W1, –section-start umístila zadanou sekci na požadovanou adresu pouze tehdy, když skript linkeru definoval výstupní sekci se stejným názvem. Když tomu tak nebylo, sekce byla umístěna na adresu zvolenou linkerem a možnost byla v podstatě ignorována. Nyní bude tato možnost použita pro všechny vlastní sekce, i když skript linkeru sekci nedefinuje. Všimněte si však, že pro standardní sekce, jako je . text, . bss nebo . data, nejlépe vyhovující alokátor bude mít stále úplnou kontrolu nad jejich umístěním a volba nebude mít žádný účinek. Použijte -wl, -Tsection=addr možnost, jak je popsáno v uživatelské příručce.
3.4. Verze 2.32
Stack Guidance Funkce kompilátoru stack Guidance, která je k dispozici s licencí kompilátoru PRO, lze použít k odhadu maximální hloubky libovolného stacku používaného programem. Konstruuje a analyzuje graf volání programu, určuje využití zásobníku pro každou funkci a vytváří zprávu, ze které lze odvodit hloubku zásobníků používaných programem.
Tato funkce je povolena pomocí volby příkazového řádku -mchp-stack-use. Po provedení se vytiskne souhrn využití zásobníku. Na mapě je k dispozici podrobná sestava zásobníku file, o kterou lze požádat běžným způsobem.
Podpora nových zařízení Podpora je k dispozici pro následující díly AVR: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTNY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVRXNUMXDBXNUMX, AVRXNUMXDXNUMXB.
Podpora zataženého zařízení Podpora již není k dispozici pro následující díly AVR: AVR 16DA28, AVR16DA32 a AVR16DA48.
3.5. Verze 2.31 Žádná.
3.6. Verze 2.30
Nová možnost, jak zabránit inicializaci dat Nová možnost ovladače -mno-data-init zabraňuje inicializaci dat a vymazání sekcí bss. Funguje tak, že potlačí výstup symbolů do_copy_data a do_clear_bss v sestavě files, což zase zabrání zahrnutí těchto rutin linkerem.
Vylepšené optimalizace Byla provedena řada optimalizačních vylepšení, včetně odstranění nadbytečných návratových instrukcí, odstranění některých skoků po instrukci skip-if-bit-is a vylepšené procedurální abstrakce a schopnosti tento proces opakovat.
Pro ovládání některých z těchto optimalizací jsou nyní k dispozici další volby, konkrétně -fsection-anchors, která umožňuje provádět přístup ke statickým objektům vzhledem k jednomu symbolu; -mpa-iterace =n, což umožňuje změnit počet iterací procedurální abstrakce z výchozích 2; a -mpa-callcost-shortcal 1, který provádí agresivnější procedurální abstrakci v naději, že linker dokáže uvolnit dlouhé hovory. Tato poslední možnost může zvětšit velikost kódu, pokud nejsou splněny základní předpoklady.
Nový podpora zařízení Podpora je k dispozici pro následující díly AVR: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DA28, AVR128VRDB a AVR32VRDB128VRD.
Podpora zataženého zařízení Podpora již není k dispozici pro následující části AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, ATA664251C, ATAXNUMX
3.7. Verze 2.29 (funkční bezpečnostní vydání)
Záhlaví file pro bunt-ins kompilátoru Aby bylo zajištěno, že kompilátor může odpovídat specifikacím jazyka, jako je MISRA, the záhlaví file, který je automaticky zahrnut do , byl aktualizován. Tato hlavička obsahuje prototypy pro všechny vestavěné funkce, jako je built in_avr_nop ( ) a _builtin_avr_delay_cycles () . Některé vestavěné moduly nemusí být kompatibilní s MISRA; tyto lze vynechat přidáním definice XC_STRICT MISRA do příkazového řádku kompilátoru. Vestavěné moduly a jejich deklarace byly aktualizovány tak, aby používaly typy s pevnou šířkou.
3.8. Verze 2.20
Nový podpora zařízení Podpora je k dispozici pro následující díly AVR: ATTINY 1624, ATTINY1626 a ATTINY 1 627.
Lepší rozdělení nejlépe vyhovujících Nejvhodnější alokátor (BFA) v kompilátoru byl vylepšen, takže sekce jsou alokovány v pořadí umožňujícím lepší optimalizaci. BFA nyní podporuje pojmenované adresní prostory a lépe zvládá inicializaci dat.
Vylepšená procedurální abstrakce Optimalizace procedurální abstrakce se nyní provádějí na více sekvencích kódu. Předchozí situace, kdy tato optimalizace mohla zvětšit velikost kódu, byly vyřešeny tím, že optimalizační kód byl informován o procesu sběru paměti linkeru.
Absence AVR Assembler AVR Assembler již není součástí této distribuce. 3.9. Verze 2.19 (Funkční bezpečnost Uvolnění)
Žádný.
3.10. Verze 2.10
Pokrytí kódu Tato verze obsahuje funkci pokrytí kódu, která usnadňuje analýzu rozsahu, v jakém byl zdrojový kód projektu spuštěn. Chcete-li to povolit, použijte volbu -mcodecov=ram. Po spuštění programu na vašem hardwaru budou v zařízení shromážděny informace o pokrytí kódu, které lze přenést do MPLAB X IDE a zobrazit je pomocí pluginu pro pokrytí kódu. Informace o tomto pluginu naleznete v dokumentaci k IDE.
K vyloučení následných funkcí z analýzy pokrytí lze použít #pragma nocodecov. Ideálně by mělo být pragma přidáno na začátek file vyloučit to celé file z analýzy pokrytí. Alternativně lze k vyloučení konkrétní funkce z analýzy pokrytí použít _attribute_ ( (nocodecov)).
Popis zařízení files Nové zařízení file s názvem avr_chipinfo.html se nachází v adresáři docs
distribuce kompilátoru. Tento file uvádí všechna zařízení podporovaná kompilátorem. Klikněte na název zařízení a otevře se stránka zobrazující všechny přípustné páry nastavení konfiguračních bitů/hodnot pro toto zařízení, např.amples.
Procedurální abstrakce Do kompilátoru byly přidány optimalizace procedurální abstrakce, které nahrazují běžné bloky kódu sestavení voláním extrahované kopie tohoto bloku. Ty jsou prováděny samostatnou aplikací, která je automaticky vyvolána překladačem při výběru úrovně 2, 3 popř. s optimalizace. Tyto optimalizace snižují velikost kódu, ale mohou snížit rychlost provádění a laditelnost kódu.
Procedurální abstrakci lze zakázat na vyšších úrovních optimalizace pomocí volby -mno-pa, nebo ji lze povolit na nižších úrovních optimalizace (v závislosti na vaší licenci) pomocí -mpa. Lze jej pro objekt zakázat file pomocí -mno-pa-on-f ile=filename nebo zakázáno pro funkci pomocí -mno-pa-onfunotion=f pomazání.
Uvnitř zdrojového kódu lze procedurální abstrakci pro funkci zakázat použitím atributu_ ( (nopa) ) s definicí funkce nebo použitím nopa, které se rozšíří na _attribute_ ( (nopa, noinline) ) a zabrání tak vložení funkce. a tam je abstrakce vloženého kódu.
Podpora zámku bitů v pragma Konfiguraci #pragma lze nyní použít ke specifikaci blokovacích bitů AVR i ostatních konfiguračních bitů. Podívejte se na avr_chipinfo.html file (zmíněno výše) pro páry nastavení/hodnota pro použití s tímto pragmem.
Nový podpora zařízení Podpora je k dispozici pro následující části: AVR28DAl28, AVR64DAl28, AVR32DAl28 a AVR48DAl28.
3.11. Verze 2.05
Více kousků za vaše peníze Verze tohoto kompilátoru a správce licencí pro macOS je nyní 64bitová aplikace. Tím zajistíte, že se kompilátor nainstaluje a spustí bez varování v nejnovějších verzích macOS.
Const objekty v paměti programu Kompilátor nyní může umístit const-kvalifikované objekty do paměti Flash programu, místo aby je musel nacházet v RAM. Kompilátor byl upraven tak, že globální data s kvalifikací cons t jsou uložena v programové flash paměti a k těmto datům lze přímo i nepřímo přistupovat pomocí příslušných instrukcí programové paměti. Tato nová funkce je ve výchozím nastavení povolena, ale lze ji deaktivovat pomocí volby -mno-const-data-in-progmem. U architektur avrxmega3 a avrtiny není tato funkce vyžadována a je vždy zakázána, protože programová paměť je mapována do datového adresního prostoru pro tato zařízení.
Standard zdarma Nelicencované (bezplatné) verze tohoto kompilátoru nyní umožňují optimalizace až do úrovně 2 včetně. To umožní podobný, i když ne identický výstup, jaký byl dříve možný pomocí standardní licence.
Vítejte AVRASM2 Assembler AVRASM2 pro 8bitová zařízení je nyní součástí instalačního programu kompilátoru XC8. Tento assembler není používán kompilátorem XC8, ale je dostupný pro projekty založené na ručně psaném zdroji sestavení.
Nový podpora zařízení Podpora je k dispozici pro následující části: ATMEGA1608, ATMEGA 1609, ATMEGA808 a ATMEGA809.
3.12. Verze 2.00
Řidič nejvyšší úrovně Nový ovladač s názvem xc8 -cc je nyní umístěn nad předchozím ovladačem avr-gcc a ovladačem xc8 a může volat příslušný kompilátor na základě výběru cílového zařízení. Tento ovladač přijímá volby ve stylu GCC, které jsou buď přeloženy nebo předány prováděnému kompilátoru. Tento ovladač umožňuje použít podobnou sadu voleb s podobnou sémantikou s jakýmkoli cílem AVR nebo PIC, a je tedy doporučeným způsobem, jak vyvolat kompilátor. V případě potřeby lze starý ovladač avr-gcc volat přímo pomocí možností starého stylu, které akceptoval v dřívějších verzích kompilátoru.
Společné C rozhraní Tento kompilátor se nyní může přizpůsobit MPLAB Common C Interface, což umožňuje snazší přenos zdrojového kódu do všech MPLAB XC kompilátorů. Volba -mext=cci vyžaduje tuto funkci a umožňuje alternativní syntaxi pro mnoho jazykových rozšíření.
Nový řidič knihovny A nový ovladač knihovny je umístěn nad předchozím knihovníkem knihovny PIC a knihovníkem AVR avr-ar. Tento ovladač akceptuje volby ve stylu archivátoru GCC, které jsou buď přeloženy nebo předány prováděnému knihovníkovi. Nový ovladač umožňuje použít podobnou sadu možností s podobnou sémantikou k vytvoření nebo manipulaci s jakoukoli knihovnou PIC nebo AVR file a je tedy doporučeným způsobem, jak vyvolat knihovníka. Pokud to vyžadují starší projekty, lze předchozího knihovníka zavolat přímo pomocí možností starého stylu, které akceptoval v dřívějších verzích kompilátoru.
Problémy migrace
Následují funkce, které nyní kompilátor zpracovává jinak. Tyto změny mohou vyžadovat úpravu vašeho zdrojového kódu, pokud přenášíte kód do této verze kompilátoru. Číslo verze v podnadpisech označuje první verzi kompilátoru, která podporuje následující změny.
4.1. Verze 2.39 (funkční bezpečnostní vydání)
Žádný.
4.2. Verze 2.36 Žádný.
4.3. Verze 2.35
Manipulace s bázemi string-to (XC8-2420) Aby byla zajištěna konzistence s ostatními kompilátory XC, XC8 string-to funkce jako strtol () atd. se již nebudou pokoušet převést vstupní řetězec, pokud je zadaný základ větší než 36, a místo toho nastaví errno na EINVAL. Standard C nespecifikuje chování funkce, když je tato základní hodnota překročena.
Nevhodná optimalizace rychlosti Při výběru optimalizací úrovně 3 (-03) byly povoleny optimalizace procedurální abstrakce. Tyto optimalizace snižují velikost kódu na úkor rychlosti kódu, takže by neměly být prováděny. Projekty používající tuto úroveň optimalizace mohou zaznamenat rozdíly ve velikosti kódu a rychlosti provádění při sestavování s tímto vydáním.
Funkce knihovny Kód pro mnoho funkcí standardní knihovny C nyní pochází z Unifikované standardní knihovny Microchip, která může za určitých okolností vykazovat odlišné chování ve srovnání s tím, které poskytuje bývalá knihovna avr-libc. Napřample, již není nutné propojovat knihovnu 1printf flt (volba -1printf_flt), aby bylo možné zapnout podporu formátovaného I0 pro specifikátory formátu float. Chytré funkce 10 Microchip Unified Standard Library činí tuto možnost nadbytečnou. Navíc již není nutné používat rutiny s příponou _P pro funkce řetězců a paměti (např. strcpy_P ( ) atd..), které pracují s řetězci const ve flashi. Standardní rutiny C (např. strcpy 0 ) budou s takovými daty pracovat správně, pokud je povolena funkce const-data-in-program-memory.
4.4. Verze 2.32
Žádný.
4.5. Verze 2.31
Žádný.
4.6. Verze 2.30
Žádný.
4.1. Verze 2.29 (funkční bezpečnostní vydání)
Žádný.
4.2. Verze 2.20
Změněné rozvržení DFP Kompilátor nyní předpokládá jiné rozvržení používané službami DFP (Device Family Pack). To bude znamenat, že starší DFP nemusí s tímto vydáním fungovat a starší kompilátory nebudou moci používat nejnovější DFP.
4.3. Verze 2.19 (funkční bezpečnostní vydání)
Žádný.
4.4. Verze 2.10 Žádná
4.5. Verze 2.05
Objekty Const v paměti programu Všimněte si, že ve výchozím nastavení budou objekty s kvalifikací const umístěny a zpřístupněny v paměti programu (jak je popsáno u ní). To ovlivní velikost a rychlost provádění vašeho projektu, ale mělo by to snížit využití paměti RAM. Tuto funkci lze v případě potřeby zakázat pomocí volby -mnocons t-data-in-progmem.
4.6. Verze 2.00
Konfigurační pojistky Konfigurační pojistky zařízení lze nyní naprogramovat pomocí konfiguračního pragma následovaného páry nastavení-hodnota pro specifikaci stavu pojistky, např. #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
Absolutní objekty a funkce Objekty a funkce lze nyní umístit na konkrétní adresu v paměti pomocí CCI_at (adresa) specifikátor, napřampten:
ifinclude
int foobar na (0)0300100);
char at(0x250) getID(int offset) ( Argument tohoto specifikátoru musí být konstanta, která představuje adresu, na kterou bude umístěn první bajt nebo instrukce. Adresy RAM jsou indikovány pomocí offsetu Ox800000. Povolte CCI, aby použijte tuto funkci.
Nová syntaxe funkce přerušení Kompilátor nyní přijímá CCI _interrupt (č) specifikátor označující, že funkce C jsou obsluhy přerušení. Specifikátor má číslo přerušení, napřampten:
Opravené problémy
Následují opravy, které byly provedeny v kompilátoru. Ty mohou opravit chyby ve vygenerovaném kódu nebo změnit činnost kompilátoru na to, co bylo zamýšleno nebo specifikováno v uživatelské příručce. Číslo verze v podnadpisech označuje první verzi kompilátoru, která obsahuje opravy problémů, které následují. Štítky v závorce v názvu představují identifikaci daného problému v databázi sledování. Mohou být užitečné, pokud potřebujete kontaktovat podporu.
Upozorňujeme, že některé problémy specifické pro zařízení jsou opraveny v sadě Device Family Pack (DR)) spojené se zařízením. Informace o změnách provedených v DFP a stažení nejnovějších balíčků naleznete ve Správci balíčků MPLAB.
5.1. Verze 2.39 (funkční bezpečnostní vydání)
Žádný.
5.2. Verze 2.36
Chyba při zpoždění (XCS–2774) Drobné změny ve výchozích optimalizacích volného režimu zabránily neustálému skládání výrazů operandů do vestavěných funkcí zpoždění, což vedlo k tomu, že se s nimi zacházelo jako s nekonstantními a došlo k chybě. built in_avr_delay_cycles očekává celočíselnou konstantu doby kompilace.
5.3. Verze 2.35
Souvislé přidělení pomocí _at (XCS–2653) Souvislá alokace více objektů v sekci se stejným názvem a pomocí _at () nefungovala správně. Napřampten:
const char arrl[ ] atribut (section(.mysec”) at (0x500) = (OxAB, OxCD);
const char arr2[ ] atribut (sectionr.mysec”)= (OxEF, OxFE);
měl umístit arr2 ihned za arri.
Zadání počáteční adresy sekce (XCS–2650) Volba -wl, –section-start tiše selhala při umístění sekcí na nominovanou počáteční adresu. Tento problém byl opraven pro všechny vlastní pojmenované sekce; nebude však fungovat pro žádné standardní sekce, jako je . text nebo . bss, který musí být umístěn pomocí a -wl, -T varianta.
Linker se zhroutí při relaxaci (XCS–2647) Kdy optimalizace -mrelax byla povolena a byly to sekce kódu nebo dat, které se nevešly do dostupné paměti, linker se zhroutil. Nyní se za takových okolností místo toho vydávají chybové zprávy.
Ne ne–padající–zpět (XCS–2646) – možnost nofallback nebyla správně implementována ani zdokumentována. To lze nyní vybrat, abyste zajistili, že kompilátor neklesne zpět na nižší nastavení optimalizace, pokud je kompilátor bez licence, a místo toho vydá chybu.
Nevhodná optimalizace rychlosti (XCS–2637) Při výběru optimalizací úrovně 3 (-03) byly povoleny optimalizace procedurální abstrakce. Tyto optimalizace snižují velikost kódu na úkor rychlosti kódu, takže by neměly být prováděny.
Špatný přístup k EEPROM (XCS–2629) Rutina eeprom_read_block nefungovala správně na zařízeních Xmega, když byla povolena volba -mconst-data-in-progmem (což je výchozí stav), což vedlo k nesprávnému čtení paměti EEPROM.
Neplatná alokace paměti (X03-2593, XC8-2651) Kdy možnost linkeru -Ttext nebo -Tdata (napřampsoubor prošel pomocí volby ovladače -wl), byl aktualizován odpovídající původ oblasti textu/dat; koncová adresa však nebyla odpovídajícím způsobem upravena, což mohlo vést k tomu, že oblast překročila rozsah paměti cílového zařízení.
Selhání s přehnaně přiřazenou funkcí (XC8-2580) Kompilátor se zhroutil, pokud byla funkce deklarována pomocí více než jednoho z atributů přerušení, signálu nebo nmi, např. _attribute_ ( ( signál , přerušení) ).
Neplatný kód přerušení ATtiny (XC8-2465) Při sestavování pro zařízení ATtiny a optimalizace byly zakázány (-00), funkce přerušení mohly spustit zprávy assembleru mimo rozsah.
Volby neprocházejí (XC8-2452) Při použití -wl s více možnostmi linkeru oddělenými čárkami, nebyly všechny možnosti linkeru předány linkeru.
Chyba při nepřímém čtení paměti programu (X03-2450) V některých případech kompilátor vytvořil vnitřní chyba (nerozpoznatelná insn) při čtení dvoubajtové hodnoty z ukazatele do paměti programu
5.4. Verze 2.32
Druhý přístup ke knihovně se nezdaří (X03-2381) Druhé vyvolání archivátoru knihoven xc8-ar.exe pro systém Windows pro přístup k existujícímu archivu knihovny mohlo selhat s chybovou zprávou nelze přejmenovat.
5.5. Verze 2.31
Nevysvětleno selhání kompilátoru (XC8-2367) Při běhu dál Windows platformy, které měly systémový dočasný adresář nastavený na cestu obsahující tečku '.' kompilátor pravděpodobně selhal.
5.6. Verze 2.30
Globální štítky špatně umístěné po nastínění (XC8-2299) Ručně psaný kód sestavy, který umístí globální štítky v sekvencích sestavení, které jsou vyloučeny procedurální abstrakcí, možná nebyly správně přemístěny.
Relaxační pád (XC8-2287) Pomocí - relaxovat možnost mohla způsobit selhání linkeru, když optimalizace relaxace skoku ocasem se pokusily odstranit instrukce ret, které nebyly na konci a sekce.
Selhání při optimalizaci štítků jako hodnot (XC8-2282) Kód pomocí „Štítky jako hodnoty“ GNU C jazykové rozšíření mohlo způsobit selhání optimalizací procedurální abstrakce s chybou opravy rozsahu Outlined VMA.
Ne tak konst (XC8-2271) Prototypy pro strstr () a další funkce z již neuvádějte nestandardní kvalifikátor const na vrácených řetězcových ukazatelích, když je zakázána funkce -mconst-data- inprogmem. Pamatujte, že u zařízení avrxmega3 a avrtiny je tato funkce trvale povolena.
Lost initializers (XC8-2269) Při překladu více než jedné proměnné jednotka byla umístěna v sekci (pomocí sekce or atribut ( (sekce) )) a první taková proměnná byla inicializována nulou nebo neměla inicializátor, inicializátory pro jiné proměnné ve stejné překladové jednotce, které byly umístěny ve stejné sekci, byly ztraceny.
5.1. Verze 2.2 9 (Function Safety Release) Žádné.
5.2. Verze 2.20
Chyba s dlouhými příkazy (XC8-1983) Při použití cíle AVR se kompilátor mohl zastavit s chybou lilt nenalezen, pokud byl příkazový řádek extrémně velký a obsahoval speciální znaky, jako jsou uvozovky, zpětná lomítka atd.
Nepřiřazená sekce rodata (XC8-1920) Linkeru AVR se nepodařilo přiřadit paměť pro vlastní sekce rodata při vytváření pro architektury avrxmega3 a avrtiny, což může způsobit chyby překrývání paměti
5.3. Verze 2.19 (funkční bezpečnostní vydání)
Žádný.
5.4. Verze 2.10
Selhání přemístění (XC8-1891) Nejvhodnějším alokátorem bylo ponechání „děr“ v paměti mezi sekcemi po uvolnění linkeru. Kromě fragmentace paměti to zvýšilo možnost selhání přemístění linkeru souvisejících s PC relativními skoky nebo voláním mimo dosah.
Instrukce netransformované relaxací (XC8-1889) K relaxaci linkeru nedošlo u instrukcí skoku nebo volání, jejichž cíle se stanou dosažitelné, pokud se uvolní.
Chybějící funkčnost (XC8E-3 ) Několik definic z , jako jsou clock_div_t a clock_presc ale_s et () , nebyly definovány pro zařízení, včetně ATmega324PB, ATmega328PB, ATtiny441 a ATtiny841.
Chybějící makra Makra preprocesoru _XC 8_MODE_, XC 8 VERS ION, XC a xc8 nebyla automaticky definována kompilátorem. Tyto jsou nyní k dispozici.
5.5. Verze 2.05
Interní chyba kompilátoru (XC8-1822) Při sestavování pod Windows mohla být při optimalizaci kódu vytvořena interní chyba kompilátoru.
Nebylo zjištěno přetečení paměti RAM (XC8-1800, XC8-1796) Programy, které překročily dostupnou RAM, nebyly v některých situacích detekovány kompilátorem, což mělo za následek selhání runtime kódu.
Vynechaná paměť flash (XC8-1792) U zařízení avrxmega3 a avrtiny mohly být části paměti flash ponechány nenaprogramované pomocí MPLAB X IDE.
Selhání spuštění main (XC8-1788) V některých situacích, kdy program neměl definovány žádné globální proměnné, se spouštěcí kód runtime neukončil a funkce main () nebyla nikdy dosažena.
Nesprávné informace o paměti (XC8-1787) U zařízení avrxmega3 a avrtiny program avr-size hlásil, že pouze data šílená spotřebovávají RAM místo paměti programu.
Nesprávné čtení programové paměti (XC8-1783) Projekty kompilované pro zařízení s programovou pamětí mapovanou do datového adresního prostoru a definující objekty pomocí makra/atributu PROGMEM mohly tyto objekty načíst z nesprávné adresy.
Interní chyba s atributy (XC8-1773) Došlo k interní chybě, pokud jste definovali objekty ukazatele s tokeny _at 0 nebo atribut() mezi názvem ukazatele a dereferencovaným typem, např.ample, char * _at (0x800150) cp; V případě zjištění takového kódu se nyní zobrazí varování.
Selhání spuštění hlavního (XC8-1780, XC8-1767, XC8-1754) Použití proměnných EEPROM nebo definování pojistek pomocí config pragma mohlo způsobit nesprávnou inicializaci dat a/nebo zablokovat provádění programu v runtime spouštěcím kódu před dosažením main 0 .
Chyba pojistky u malých zařízení (XC8-1778, XC8-1742) Zařízení attiny4/5/9/10120140 měla v záhlaví uvedenou nesprávnou délku pojistky files, které vedou k chybám linkeru při pokusu o sestavení kódu, který definoval pojistky.
Chyba segmentace (XC8-1777) Byla opravena občasná chyba segmentace.
Zhroucení assembleru (XC8-1761) Assembler avr -as mohl selhat, když byl kompilátor spuštěn pod Ubuntu 18.
Objekty nebyly vymazány (XC8-1752) Neinicializované objekty doby trvání statického úložiště nemusely být vymazány spouštěcím kódem runtime.
Specifikace konfliktního zařízení ignorována (XC8-1749) The kompilátor negeneroval chybu, když bylo použito více možností specifikace zařízení a indikovalo různá zařízení.
Poškození paměti haldou (XC8-1748) The Symbol _heap_start byl nesprávně nastaven, což mělo za následek možnost poškození běžných proměnných haldou.
Chyba přemístění linkeru (XC8-1739) Chyba přemístění linkeru mohla být vydána, když kód obsahoval rjmn nebo rcall s cílem vzdáleným přesně 4 kB.
5.6. Verze 2.00 Žádná.
Známé problémy
Následují omezení v činnosti kompilátoru. Mohou to být obecná omezení kódování nebo odchylky od informací obsažených v uživatelské příručce. Štítky v závorce v přílivu jsou identifikací tohoto problému v databázi sledování. To může být užitečné, pokud potřebujete kontaktovat podporu. Ty položky, které nemají štítky, jsou omezení, která popisují modi operandi a která pravděpodobně zůstanou v platnosti trvale.
6.1. MPLAB X IDE Integrace
MPLAB Integrace IDE Pokud má být kompilátor použit z MPLAB IDE, musíte nainstalovat MPLAB IDE před instalací kompilátoru.
6.2. Generování kódu
Nesprávný inicializace (XC8-2679) Existuje nesrovnalost mezi tím, kde jsou počáteční hodnoty pro některé globální/statické objekty o velikosti bajtů umístěny v datové paměti, a kde budou proměnné zpřístupněny za běhu.
strtod nesprávně nastavuje endptr (XC8-2652) V případech, kdy předmětový řetězec pro převod pomocí strtod () obsahuje to, co vypadá jako číslo s plovoucí desetinnou čárkou v exponenciálním formátu a za znakem e je neočekávaný znak, bude adresa endptr, pokud je uvedena, ukazovat na znak za e a ne e samotné. Napřample: strtod („100exy“, endptr) ;
výsledkem bude endptr ukazující na znak x.
Špatná nepřímá volání funkcí (X03-2628) V některých případech může selhat volání funkcí provedená prostřednictvím ukazatele funkce uloženého jako součást struktury.
strtof vrací nulu pro hexadecimální čísla s plovoucí čárkou (XC8-2626) Knihovní funkce strtof () et al a scanf () et al vždy převedou hexadecimální číslo s plovoucí desetinnou čárkou, které neurčuje exponent na nulu. Napřample: strtof („Oxl“, &endptr) ; vrátí hodnotu 0, nikoli 1.
Nepřesné zprávy poradce zásobníku (XC8-2542, XC8-2541) V některých případech se varování poradce zásobníku týkající se rekurze nebo neurčitého zásobníku (možná prostřednictvím použití alloca()) nevydá.
Selhání s duplicitním kódem přerušení (XC8-2421) Pokud má více než jedna funkce přerušení stejné tělo, kompilátor může mít výstup pro volání jedné funkce přerušení druhé. To bude mít za následek zbytečné ukládání všech registrů zablokovaných volání a přerušení budou povolena ještě před spuštěním epilogu aktuální obsluhy přerušení, což by mohlo vést k selhání kódu.
Const objekty, které nejsou v paměti programu (XC8-2408) U projektů avrxmega3 a avrtiny jsou unitializované objekty const umístěny do datové paměti, i když varování naznačuje, že byly umístěny do paměti programu. To neovlivní zařízení, která nemají programovou paměť namapovanou do prostoru datové paměti, ani to neovlivní žádný objekt, který je inicializován.
Špatný výstup s neplatnou cestou DFP (XCS-2376) Pokud je kompilátor vyvolán s neplatnou cestou DFP a specifikací file existuje pro vybrané zařízení, kompilátor nehlásí chybějící balíček rodiny zařízení a místo toho vybere „spec“ file, což by pak mohlo vést k neplatnému výstupu. "specifikace" files nemusí být aktuální s distribuovanými službami DFP a byly určeny pouze pro použití s interním testováním kompilátoru.
Nedetekováno překrývání paměti (XC8-1966) Kompilátor nezjišťuje překrytí paměti objektů, které jsou na adrese absolutní (přes _at 0 ) a jiných objektů pomocí _sektaion () a které jsou spojeny se stejnou adresou.
Selhání funkcí knihovny a _memx (XC8-1763) Volané plovoucí funkce libgcc s argumentem v adresním prostoru _memx mohou selhat. Všimněte si, že rutiny knihovny jsou volány z některých operátorů C, takže napřample, je ovlivněn následující kód: return regFloatVar > memxFloatVar;
Omezená implementace libgcc (AVRTC-731) Pro ATTiny4/5/9/10/20/40 produktů, standardní implementace knihovny C/Math v libgcc je velmi omezená nebo není přítomna.
Omezení programové paměti (AVRTC-732) Toolchain podporuje obrázky paměti programu přesahující 128 kb; existují však známé případy přerušení linkeru bez uvolnění a bez užitečné chybové zprávy namísto generování požadovaných útržků funkcí při použití volby -mrelax.
Omezení jmenného prostoru (AVRTC-733) Pojmenované adresní prostory jsou podporovány toolchainem, s výhradou omezení uvedených v uživatelské příručce v části Kvalifikátory speciálních typů.
Časová pásma The funkce knihovny předpokládají GMT a nepodporují místní časová pásma, takže loca It ime 0 vrátí stejný čas jako gmtime ( ), např.ample.
Dokumenty / zdroje
![]() |
MICROCHIP MPLAB XC8 C Compiler verze 2.39 Poznámky k vydání pro AVR MCU [pdfUživatelská příručka MPLAB XC8 C Compiler Version 2.39 Release Notes pro AVR MCU, MPLAB XC8 C, Compiler Version 2.39 Release Notes for AVR MCU, Release Notes for AVR MCU |
![]() |
MICROCHIP MPLAB XC8 C Compiler verze 2.39 Poznámky k vydání pro AVR MCU [pdfUživatelská příručka MPLAB XC8 C Compiler verze 2.39 Poznámky k verzi pro AVR MCU, MPLAB XC8 C, Compiler verze 2.39 Poznámky k verzi pro AVR MCU, Poznámky k AVR MCU |
![]() |
Kompilátor MICROCHIP MPLAB XC8 C [pdfUživatelská příručka MPLAB XC8 C kompilátor, MPLAB XC8 C, kompilátor |