Software kompilátoru MICROCHIP MPLAB XC8 C 

Software kompilátoru MICROCHIP MPLAB XC8 C

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.

Obsah skrýt

Nadview

Zavedení

Toto vydání kompilátoru Microchip MPLAB® XC8 C obsahuje několik nových funkcí, opravy chyb a podporu nových zařízení.

Datum sestavení

Oficiální datum sestavení této verze kompilátoru je 3. července 2022.

Předchozí verze

Předchozí verze kompilátoru MPLAB XC8 C byla 2.39, kompilátor funkční bezpečnosti, postavená 27. ledna 2022. Předchozí standardní kompilátor byla verze 2.36, postavená 27. ledna 2022.

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.

Licence a verze komponent

MPLAB® XC8 C Compiler pro nástroje AVR MCU 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 je k dispozici 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 file name nalezl podadresář vašeho instalačního adresáře. Obecnou diskuzi o principech, na kterých je GPL založena, naleznete zde. Pro záhlaví byl poskytnut kód podpory files, linker skripty 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.

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 mac OS 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.

Zařízení podporována

Tento kompilátor podporuje všechna 8bitová zařízení AVR MCU známá v době vydání. Viz (v adresáři doc kompilátoru) pro seznam všech podporovaných zařízení. Tyto files také uvádí nastavení konfiguračních bitů pro každé zařízení.

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. Tato verze MPLAB XC Functional Safety Compiler 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).

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 instalační aplikaci kompilátoru .exe (Windows), .run (Linux) nebo aplikaci (macOS), např. XC8-1.00.11403-windows.exe a postupujte podle pokynů na obrazovce.
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.

Ř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 na file, 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 %temp% do příkazu Spustit (klávesa s logem Windows + R). Tím se otevře a file dialogové okno průzkumníka zobrazující tento adresář a umožní vám určit cestu k této složce.

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.

Dokumentace kompilátoru
Pokud vytváříte pro 8bitové cíle AVR, uživatelská příručka kompilátoru MPLAB® XC8 C pro AVR® MCU obsahuje informace o možnostech a funkcích kompilátoru, které jsou použitelné pro tuto architekturu.

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 online technickou dokumentaci společnosti Microchip webmísto.

Nová nebo aktualizovaná dokumentace AVR v tomto vydání:

  • Upozornění na autorská práva MUSL
  • Instalace a licencování MPLAB XC C kompilátorů (revize M)
  • MPLAB XC8 Uživatelská příručka pro vestavěné inženýry – AVR MCU (revize A)
  • Uživatelská příručka kompilátoru MPLAB XC8 C pro AVR MCU (revize F)
  • Referenční příručka sjednocené standardní knihovny Microchip (revize B)

Referenční příručka Microchip Unified Standard Library popisuje chování a rozhraní funkcí definovaných Microchip Unified Standard Library a také zamýšlené použití typů knihoven a maker. Některé z těchto informací byly dříve obsaženy v uživatelské příručce MPLAB® XC8 C kompilátoru pro AVR® MCU. Informace o knihovně specifické pro zařízení jsou stále obsaženy v této příručce kompilátoru.

Pokud právě začínáte s 8bitovými zařízeními a MPLAB XC8 C Compiler, MPLAB® XC8 User!s Guide for Embedded Engineers – AVR® MCUs (DS50003108) obsahuje informace o nastavení projektů v MPLAB X IDE a psaní kódu. pro váš první projekt MPLAB XC8 C. Tato příručka je nyní distribuována s kompilátorem.

Uživatelská příručka Hamate byla v této verzi zahrnuta do adresáře docs. Tato příručka je určena pro ty, kteří používají Hamate jako samostatnou aplikaci.

Co je nového

Následují 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í.

Verze 2.40

Podpora nových zařízení Nyní je k dispozici podpora pro následující díly AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64.
Vylepšená procedurální abstrakce Optimalizační nástroj procedurální abstrakce (PA) byl vylepšen tak, aby bylo možné nastínit kód obsahující instrukci volání funkce (volání volání)). K tomu dojde pouze v případě, že zásobník není použit k předávání argumentů ani k získávání návratové hodnoty z funkce. Zásobník se používá při volání funkce se seznamem proměnných argumentů nebo při volání funkce, která má více argumentů, než je k tomu určených registrů. Tuto funkci lze deaktivovat pomocí možnosti monk-pa-outline-calls nebo lze procedurální abstrakci zcela zakázat pro objekt file nebo fungovat pomocí -monk-pa-on-file a -mo.-pa-on-function nebo pomocí atributu nipa (specifikátor nipa) selektivně s funkcemi

Makro pro pokrytí kódu Kompilátor nyní definuje makro __CODECOV, pokud je zadána platná volba mcodecov.

Možnost rezervace paměti Ovladač xc8-cc nyní při sestavování cílů AVR akceptuje volbu -mreserve=space@start: end. Tato volba rezervuje zadaný rozsah paměti v datovém nebo programovém paměťovém prostoru, čímž zabraňuje linkeru naplnit kód nebo objekty v této oblasti.

Chytřejší inteligentní IO Bylo provedeno několik vylepšení funkcí Smart IO, včetně obecných vylepšení kódu jádra printf, zpracování specifikátoru konverze %n jako nezávislé varianty, propojení v rutinách vararg pop na vyžádání, použití kratších datových typů, kde je to možné, pro zpracování argumentů funkcí IO. a zohlednění běžného kódu v šířce pole a přesnosti manipulace. To může vést k významným úsporám kódu a dat a také ke zvýšení rychlosti provádění IO.

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.

Verze 2.36

Žádný.

Verze 2.35

Podpora nových zařízení Podpora je k dispozici pro následující díly 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á volba -mgas-isr-prologues řídí kontextový svrbivý kód generovaný pro rutiny obsluhy 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-proem lze použít k tomu, aby linker umístil všechna kvalifikovaná data do jedné 32k sekce a automaticky inicializoval příslušný registr SFR, aby se zajistilo, že tato data budou mapována do prostoru datové paměti. , kde k němu bude efektivnější přístup.

Sjednocené standardní knihovny Microchip Všechny kompilátory MPLAB XC budou sdílet standardní knihovnu Microchip Unified Standard Library, která je nyní k dispozici v tomto vydání MPLAB XC8. Uživatelská příručka kompilátoru MPLAB® XC8 C/nebo AVR® MCU již neobsahuje dokumentaci pro tyto standardní funkce. Tyto informace lze nyní nalézt v referenční příručce Microchip Unified Standard Library. Všimněte si, že některé funkce dříve definované avr-libc již nejsou dostupné. (Viz knihovník):'. FUNKCE…)

Smart IO V rámci nových sjednocených knihoven jsou nyní IO funkce v rodinách tisku a skenování generovány na zakázku v každém sestavení na základě toho, jak jsou tyto funkce v programu použity. To může podstatně snížit zdroje používané programem.
Možnost inteligentní IO asistence Při analýze volání funkcí inteligentních IO (jako je printf () nebo scanf () ) kompilátor nemůže 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, že plně funkční IO funkce byly propojeny do konečného obrazu programu. Byla přidána nová možnost – msmart-io-format=fmt, takže kompilátor může být uživatelem informován o specifikátorech převodu používaných inteligentními IO funkcemi, jejichž použití je nejednoznačné, což zabraňuje propojování příliš dlouhých IO rutin. (Více podrobností viz možnost smart-io-format Option.)

Umístění vlastních sekcí Dříve možnost -Wl, –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ý vliv. Použijte volbu -Wl, -Tsection=add, jak je popsáno v uživatelské příručce.

Verze 2.32

Pokyny pro zásobník Funkce navádění zásobníku kompilátoru, která je k dispozici s licencí kompilátoru PRO, lze použít k odhadu maximální hloubky libovolného zásobníku 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-usage. 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 tyto díly AVR: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28VR, AVR32B28, AVR64DB32, AVR32DB48, XNUMXDXNUMX

Podpora zasunutého zařízení Podpora již není k dispozici pro následující díly AVR: AVR16DA28, AVR16DA32 a AVR16DA48.

Verze 2.31

Žádný.

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 to tak, že potlačí výstup do_ copy_ data a do_ clear_ bss symbolů 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.

Nyní jsou k dispozici další volby pro ovládání některých z těchto optimalizací, konkrétně -f ukotvení sekcí, která umožňuje provádět přístup ke statickým objektům vzhledem k jednomu symbolu; -mpai derations=n, což umožňuje změnit počet iterací procedurální abstrakce z výchozích 2; a -mpa- call cost- shortcall, 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.

Podpora nových zařízení Podpora je k dispozici pro následující díly AVR: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48.DB128VR a AVR64DBXNUMX.DBXNUMXVR

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 a 664251.

Verze 2.29 (funkční bezpečnostní vydání)

Záhlaví file pro vestavěné kompilátory 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 jsou _buil tin _avrnop () a _buil tin_ avr delay_ cycles () . Některé vestavěné moduly nemusí být kompatibilní s MISRA; ty lze vynechat přidáním define _Xe_ 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.

Verze 2.20

Podpora nových zařízení Podpora je k dispozici pro následující díly AVR: ATTINY1624, ATTINY1626 a ATTINY1627.

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.

Verze 2.19 (funkční bezpečnostní vydání)

Žádný.

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. #pragma mcodecov lze použít k vyloučení následných funkcí z analýzy pokrytí. 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 atribut ( (mcodecov)) použít k vyloučení konkrétní funkce z analýzy pokrytí.

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 kompilátorem při výběru optimalizace úrovně 2, 3 nebo úrovně. 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-file=filename, nebo zakázáno pro funkci pomocí -mno-pa na funkci=funkci.
Uvnitř zdrojového kódu lze procedurální abstrakci pro funkci zakázat pomocí _attribute_ ( (nopa)) s definicí funkce nebo pomocí _nopa, která se rozšíří na atribut ( (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ů. Zkontrolujte informace o čipu avr. html file (zmíněno výše) pro páry nastavení/hodnota pro použití s ​​tímto pragmem.
Podpora nových zařízení Podpora je k dispozici pro následující části: AVR28DA128, AVR64DA128, AVR32DA128 a AVR48DA128.

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.
Objekty Const v paměti programu Kompilátor nyní může umístit objekty kvalifikované pro const 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í const 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í.
Podpora nových zařízení Podpora je k dispozici pro následující části: ATMEGA1608, ATMEGA1609, ATMEGA808 a ATMEGA809.

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 Nový knihovnický ovladač je umístěn nad předchozím knihovníkem knihovny PIC a knihovníkem AVR avr-ar. Tento ovladač přijímá 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.

Verze 2.40

Žádný.

Verze 2.39 (funkční bezpečnostní vydání)

Žádný.

Verze 2.36

Žádný.

Verze 2.35

Manipulace se strunovými bázemi (XCS-2420) Aby byla zajištěna konzistence s jinými kompilátory XC, funkce XC8 string-to, 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í funkcí při překročení této základní hodnoty.

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 lprintf_flt (volba -print _flt), aby bylo možné zapnout formátovanou podporu IO pro specifikátory formátu float. Díky funkcím inteligentních IO knihovny Microchip Unified Standard Library je tato možnost nadbytečná. Navíc již není nutné používat rutiny s příponou _p pro funkce řetězce a paměti (např. strcpy_P () atd.. ), které pracují s řetězci const ve flashi. Standardní rutiny C (např. strcpy ()) budou s takovými daty pracovat správně, pokud je povolena funkce const-data-in-program-memory.

Verze 2.32

Žádný.

Verze 2.31

Žádný.

Verze 2.30

Žádný.

Verze 2.29 (funkční bezpečnostní vydání)

Žádný.

Verze 2.20

Změněno rozvržení DFP Kompilátor nyní předpokládá jiné rozvržení používané sadami 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.

Verze 2.19 (funkční bezpečnostní vydání)

Žádný.

Verze 2.10

Žádný

Verze 2.05

Const objekty v paměti programu Všimněte si, že ve výchozím nastavení budou konst-kvalifikované objekty umístěny a zpřístupněny v paměti programu (jak je popsáno zde) . 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 vypnout pomocí volby -mnoconst-da ta-in-progmem.

Verze 2.00

Konfigurační pojistky Pojistky konfigurace zařízení lze nyní naprogramovat pomocí konfiguračního pragma následovaného páry nastavení-hodnota pro specifikaci stavu pojistky, např.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Absolutní objekty a funkce Objekty a funkce lze nyní umístit na konkrétní adresu v paměti pomocí specifikátoru CCI _at (adresa), např.ample: #zahrnout int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Argumentem tohoto specifikátoru musí být konstanta, která představuje adresu, na kterou bude umístěn první bajt nebo instrukce. Adresy RAM jsou označeny pomocí offsetu 0x800000. Povolte CCI používat tuto funkci.
Nová syntaxe funkce přerušení Kompilátor nyní přijímá specifikátor přerušení CCI (num), který označuje, že funkce C jsou obslužné nástroje přerušení. Specifikátor má číslo přerušení, napřample: #zahrnout void interrupt(SPI STC_ vect _num) spi Isr(void) { … }

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 (DFP) přidružené k zařízení. Informace o změnách provedených v DFP a stažení nejnovějších balíčků naleznete ve Správci balíčků MPLAB.

Verze 2.40

Příliš uvolněný (XCS-2876) Při použití volby -mrelax kompilátor nepřiděloval některé sekce dohromady, což vedlo k méně optimální velikosti kódu. K tomu mohlo dojít u kódu, který používal nové knihovny MUSL, nebo u slabých symbolů.
Funkce mapování není deaktivována, jak je uvedeno ve varování (XCS-2875) Funkce cost-data-in-config mappedprogmem je závislá na aktivaci funkce cost-data-in-proem. Pokud byla funkce cost-data-ipconfig-mapped-proem explicitně povolena pomocí této možnosti a funkce cost-data-inprogmem byla zakázána, krok propojení se nezdařil, přestože se zobrazila varovná zpráva, že nevýhody data-in-config-mapped- funkce proem byla automaticky deaktivována, což nebylo úplně správné. Funkce const-data-in-config-mapped-proem je nyní v této situaci plně deaktivována.
DFP se mění tak, aby správně přistupovalo k NVMCTRL (XCS-2848) Runtime spouštěcí kód používaný zařízeními AVR64EA nebral v úvahu, že registr NVMCTRL byl pod ochranou Configuration Change Protection (CCP) a nebyl schopen nastavit IO SFR na stránku používanou kompilátorem const-data-in configmapped-proem. Vlastnosti. Změny provedené v AVR-Ex_DFP verze 2.2.55 umožní spuštění runtime kódu správně zapisovat do tohoto registru.
Změny DFP, aby se zabránilo mapování Flash (XCS-2847) Bylo implementováno řešení problému s funkcí flash mapovacího zařízení hlášeného v AVR128DA28/32/48/64 Silicon Errata (DS80000882). Funkce kompilátoru const-data-in-config-mapped-proem nebude u dotčených zařízení ve výchozím nastavení použita a tato změna se objeví ve verzi AVR-Ex_DFP 2.2.160.
Chyba sestavení pomocí sinhf nebo coshf (XCS-2834) Pokusy o použití funkcí knihovny sinhf () nebo coshf () vedly k chybě odkazu popisující nedefinovaný odkaz. Chybějící odkazovaná funkce byla nyní zahrnuta do distribuce kompilátoru.
Chyby sestavení s nopa (XCS-2833) Použití atributu nopa s funkcí, která má název assembleru zadaný pomocí as (), spustilo chybové zprávy z assembleru. Tato kombinace není možná.
Selhání variadické funkce s argumenty ukazatele (XCS-2755, XCS-2731) Funkce s proměnným počtem argumentů očekávají, že 24bitové ukazatele (typ _memo) budou předány v seznamu argumentů proměnných, když je povolena funkce cost-data-in-proem. Argumenty, které byly ukazateli na datovou paměť, byly předány jako 16bitové objekty, což způsobilo selhání kódu, když byly nakonec přečteny. Když je povolena funkce cons data-in-proem, všechny argumenty 16bitových ukazatelů jsou nyní převedeny na 24bitové ukazatele. Selhání funkcí knihovny strtoxxx (XCS-2620) Když byla povolena funkce const-data-in-proem, parametr enter ve funkcích knihovny strtoxxx nebyl správně aktualizován pro argumenty zdrojového řetězce, které nejsou v paměti programu.
Upozornění na neplatná obsazení (XCS-2612) Kompilátor nyní vydá chybu, pokud je povolena funkce cost-in-proem a adresa řetězcového literálu je explicitně přetypována do datového adresního prostoru (vynechá kvalifikátor const), např.ample, (uint8 t *) „Ahoj světe!“. Varování je problém, pokud adresa může být neplatná, když je ukazatel const dat explicitně přetypován do prostoru datových adres.
Umístění neinicializovaných objektů const (XCS-2408) Neinicializované const a const volatilní objekty nebyly umístěny do paměti programu na zařízeních, která mapují celou nebo část jejich programové paměti do prostoru datových adres. U těchto zařízení jsou nyní takové objekty umístěny v paměti programu, takže jejich činnost je konzistentní s ostatními zařízeními.

Verze 2.39 (funkční bezpečnostní vydání)

Žádný.

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 nekontaktními a došlo ke spuštění chyby: _buil tin avr delay_ cycles očekávání ac ompile časová celočíselná konstanta.

Verze 2.35

Souvislá alokace pomocí _at (XCS-2653) Souvislá alokace více objektů v sekci se stejným názvem a pomocí at () nefungovalo správně. Napřample: constchararrl [ ] at tri butte ((sect on(.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[ ] at tri butte ((sekce(.my s eke”))) = {voli, vůl FE }; měl umístit arr2 ihned za aril.
Zadání počáteční adresy sekce (XCS-2650) Volba -Wal, –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í volby -Wl, -T.
Linker se zhroutí při relaxaci (XCS-2647) Když byla povolena optimalizace -relax a existovaly části 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.
Špatný přístup k EEPROM (XCS-2629) Rutina blokování leproma _read_ nefungovala správně na zařízeních Mega, když byla povolena volba -monist-data-in-proem (což je výchozí stav), což vedlo k nesprávnému čtení paměti EEPROM.
Neplatná alokace paměti (XCS-2593, XCS-2651) Když volba -Text nebo -Tata linker (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í.
Neplatný kód přerušení ATtiny (XCS-2465) Při sestavování pro zařízení Tatin a optimalizace byly deaktivovány (-00), funkce přerušení mohly spustit zprávy assembleru mimo rozsah.
Možnosti neprocházejí (XCS-2452) Při použití možnosti -Wl s více možnostmi linkeru oddělených čárkami nebyly všechny možnosti linkeru předány linkeru.
Chyba při nepřímém čtení paměti programu (XCS-2450) V některých případech kompilátor vytvořil vnitřní chybu (nerozpoznatelné insn) při čtení dvoubajtové hodnoty z ukazatele do paměti programu

Verze 2.32

Druhý přístup ke knihovně se nezdaří (XCS-2381) Vyvolání verze xc8-ar pro Windows. Archivátor knihovny exe podruhé při přístupu k existujícímu archivu knihovny mohl selhat s chybovou zprávou, kterou nelze přejmenovat.

Verze 2.31

Nevysvětlitelná selhání kompilátoru (XCS-2367) Při spuštění na platformách Windows, které měly systémový dočasný adresář nastavený na cestu obsahující tečku'.' kompilátor pravděpodobně selhal.

Verze 2.30

Globální štítky špatně umístěné po obrysu (XCS-2299) Ručně psaný kód sestavy, který umísťuje globální štítky do sekvencí sestav, které jsou zohledněny procedurální abstrakcí, nemusel být správně přemístěn.
Relaxační pád (XCS-2287) Použití volby -merlad mohlo způsobit zhroucení linkeru, když se optimalizace relaxace skoku ocasem pokusily odstranit instrukce ret, které nebyly na konci sekce.
Selhání aplikace při optimalizaci štítků jako hodnot (XCS-2282) Kód používající rozšíření jazyka GNU C „Labels as values“ mohl způsobit selhání optimalizací procedurální abstrakce s chybou opravy Outlined VMA ranges.
Ne tak konstantní (XCS-2271) Prototypy pro starty () a další funkce z již neuvádějte nestandardní kvalifikátor nákladů na vrácených řetězcových ukazatelích, když je deaktivována funkce -monist-data inprogmem. Pamatujte, že u zařízení avrxmega3 a avertin je tato funkce trvale povolena.
Ztracené inicializátory (XCS-2269) Pokud byla do sekce umístěna více než jedna proměnná v překladové jednotce (pomocí sekce nebo atributu ((sekce)) a první taková proměnná byla nula inicializována 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.

Verze 2.29 (funkční bezpečnostní vydání)

Žádný.

Verze 2.20

Chyba s dlouhými příkazy (XCS-1983) Při použití cíle AVR se kompilátor možná zastavil s a file nenalezena chyba, 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 (XCS-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

Verze 2.19 (funkční bezpečnostní vydání)

Žádný.

Verze 2.10

Selhání přemístění (XCS-1891) Nejlepší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.
Pokyny netransformované relaxací (XCS-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 (XCSE-388) Několik definic z , jako například clock_div_t a clock_prescale_set (), nebyly definovány pro zařízení, včetně ATmega324PB, ATmega328PB, ATtiny441 a ATtiny841.
Chybí makra Makra preprocesoru_ xcs _MODE_, _xcs VERSION, _xc a xcs nebyla automaticky definována kompilátorem. Tyto jsou nyní k dispozici.

Verze 2.05

Interní chyba kompilátoru (XCS-1822) Při sestavování pod Windows mohla při optimalizaci kódu vzniknout interní chyba kompilátoru.
Nebylo zjištěno přetečení paměti RAM (XCS-1800, XCS-1796) Programy, které překročily dostupnou RAM, nebyly v některých situacích detekovány kompilátorem, což vedlo k selhání runtime kódu.
Vynechaná paměť flash (XCS-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í hlavního (XCS-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 (XCS-1787) U zařízení avrxmega3 a avrtiny program avr-size hlásil, že data pouze pro čtení spotřebovávají RAM místo paměti programu.
Nesprávné čtení paměti programu (XCS-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 (XCS-1773) Pokud jste definovali objekty ukazatele pomocí příkazu, došlo k vnitřní chybě
_at () nebo atribut() tokeny mezi názvem ukazatele a dereferencovaným typem, napřample, char *
_at ( 0x80015 0) cp; V případě zjištění takového kódu se nyní zobrazí varování.
Selhání spuštění hlavního (XCS-1780, XCS-1767, XCS-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 () .
Chyba pojistky u malých zařízení (XCS-1778, XCS-1742) Zařízení attiny4/5/9/10/20/40 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 (XCS-1777) Byla opravena občasná chyba segmentace.
Selhání programu assembler (XCS-1761) Assembler avr-as mohl selhat, když byl kompilátor spuštěn pod Ubuntu 18.
Objekty nebyly vyčištěny (XCS-1752) Neinicializované objekty doby trvání statického úložiště nemusely být vymazány spouštěcím kódem runtime.
Konfliktní specifikace zařízení ignorována (XCS-1749) 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 (XCS-1748) 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 (XCS-1739) Chyba přemístění linkeru mohla být vydána, když kód obsahoval rjmp nebo rcall s cílem vzdáleným přesně 4 kB.

Verze 2.00

Žádný.

Známé problémy

Následují omezení v činnosti kompilátoru. Může se jednat o obecná omezení kódování, popř
odchylky od informací obsažených v uživatelské příručce. Štítky v závorce v názvu představují identifikaci daného 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í režim operandi a která pravděpodobně zůstanou v platnosti trvale.

Integrace MPLAB X IDE

Integrace MPLAB IDE Pokud má být kompilátor použit z MPLAB IDE, musíte nainstalovat MPLAB IDE před instalací kompilátoru.

Generování kódu

Selhání přidělení paměti PA (XCS-2881) Při použití optimalizátorů procedurální abstrakce může linker hlásit chyby alokace paměti, když se velikost kódu blíží velikosti dostupné programové paměti na zařízení, i když by se program měl vejít do dostupného prostoru.
Ne tak chytrý Smart-IO (XCS-2872) Funkce smart-io kompilátoru vygeneruje platný, ale neoptimální kód pro funkci sprintu, pokud byla deaktivována funkce coast-data-in-proem nebo pokud má zařízení všechny své flash namapované do datové paměti.
Ještě méně chytrý Smart-IO (XCS-2869) Funkce smart-io kompilátoru vygeneruje platný, ale neoptimální kód, když se použijí obě volby -floe a -fno-buil tin.
Suboptimální umístění dat pouze pro čtení (XCS-2849) Linker aktuálně nezná sekce paměti APPCODE a APPDATA ani dělení [No-]Read-While-Write v mapě paměti. V důsledku toho existuje malá pravděpodobnost, že by linker mohl alokovat data pouze pro čtení v nevhodné oblasti paměti. Pravděpodobnost nesprávného umístění dat se zvyšuje, pokud je povolena funkce coast-data-in-pragma, zejména pokud je také povolena funkce coast-data-in-config-mapped-proem. Tyto funkce lze v případě potřeby deaktivovat.
Objekt file zpracování objednávky (XCS-2863) Pořadí objektů files budou zpracovány linkerem se mohou lišit v závislosti na použití optimalizací procedurální abstrakce (volba -mpa). To by ovlivnilo pouze kód, který definuje slabé funkce napříč více moduly.
Chyba linkeru s absolutním (XCS-2777) Když byl objekt na adrese na začátku paměti RAM nastaven jako absolutní a neinicializované objekty byly také definovány, může být spuštěna chyba linkeru.
ID krátkého probuzení (XCS-2775) U zařízení ATA5700/2 jsou registry PHID0/1 definovány pouze jako 16 bitové, nikoli 32 bitové.
Selhání linkeru při volání symbolu (XCS-2758) Linker může selhat, pokud je použita volba ovladače -merlad, když zdrojový kód volá symbol, který byl definován pomocí volby linkeru -Wl, –defsym.
Nesprávná inicializace (XCS-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.
nesprávně spuštěné sady prázdné (XCS-2652) V případech, kdy předmětový řetězec pro převod pomocí uvedeného () obsahuje to, co se jeví jako číslo s plovoucí desetinnou čárkou v exponenciálním formátu a za znakem e je neočekávaný znak, pak prázdná adresa, pokud je uvedena, bude ukazovat na znak za e a ne e samotné. Napřample: uvedl(“hooey”, prázdný); výsledkem bude prázdné ukazování na znak x.
Špatná nepřímá volání funkcí (XCS-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í plovoucí čísla (XCS-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
nula. Napřample: stator("Sova", &empty); vrátí hodnotu 0, nikoli 1.
Nepřesné zprávy poradce zásobníku (XCS-2542, XCS-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í (XCS-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 nejsou v paměti programu (XCS-2408) U projektů avrxmega3 a avertins jsou neidealizované 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.
Překrývání paměti nezjištěno (XCS-1966) Kompilátor nezjišťuje překrytí paměti objektů, které jsou na adrese absolutní (přes zavináč ()) a dalších objektů používajících specifikátor sekce () a které jsou spojeny se stejnou adresou.
Selhání funkcí knihovny a _meme (XCS-1763) Volané limbické plovoucí funkce s argumentem v adresním prostoru _memo 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á limbická implementace (AVRTC-731) U produktů ATTiny4/5/9/10/20/40 je standardní implementace knihovny C/Math v limbickém jazyce velmi omezená nebo není k dispozici.
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 relaxace a bez užitečné chybové zprávy namísto generování požadovaných funkčních útržků při použití volby -relax.
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 místní čas () vrátí stejný čas jako gummite (), např.ample.

ZÁKAZNICKÁ PODPORA

file:///Aplikace/microehip/xc8/v 2 .40/docs/Read me_X C 8_ pro A VR. htm

Dokumenty / zdroje

Software kompilátoru MICROCHIP MPLAB XC8 C [pdfUživatelská příručka
MPLAB XC8 C, MPLAB XC8 C překladačový software, překladačový software, software

Reference

Zanechte komentář

Vaše emailová adresa nebude zveřejněna. Povinná pole jsou označena *