Softvér kompilátora MICROCHIP MPLAB XC8 C 

Softvér kompilátora MICROCHIP MPLAB XC8 C

TENTO DOKUMENT OBSAHUJE DÔLEŽITÉ INFORMÁCIE TÝKAJÚCE SA KOMPILOVAČA MPLAB XC8 C PRI ZACIELENÍ NA ZARIADENIA MICROCHIP AVR.
PREČÍTAJTE SI HO PRED SPUSTENÍM TOHTO SOFTVÉRU. POZRITE SI POZNÁMKY K VYDANIU KOMPILOVAČA MPLAB XC8 C PRE OBRÁZKOVÝ DOKUMENT, AK POUŽÍVATE PREKLADAČ PRE 8-BITOVÉ ZARIADENIA OBRÁZKOV.

Obsah skryť

Koniecview

Úvod

Toto vydanie kompilátora Microchip MPLAB® XC8 C obsahuje niekoľko nových funkcií, opráv chýb a podporu nových zariadení.

Dátum zostavenia

Oficiálny dátum zostavenia tejto verzie kompilátora je 3. júl 2022.

Predošlá verzia

Predchádzajúca verzia kompilátora MPLAB XC8 C bola 2.39, kompilátor funkčnej bezpečnosti, postavený 27. januára 2022. Predchádzajúci štandardný kompilátor bola verzia 2.36, postavená 27. januára 2022.

Príručka funkčnej bezpečnosti

Príručka funkčnej bezpečnosti pre kompilátory MPLAB XC je k dispozícii v balíku dokumentácie, keď si zakúpite licenciu na funkčnú bezpečnosť.

Licencie a verzie komponentov

Kompilátor MPLAB® XC8 C pre nástroje AVR MCU je napísaný a distribuovaný pod GNU General Public License (GPL), čo znamená, že jeho zdrojový kód je voľne distribuovaný a dostupný verejnosti. Zdrojový kód nástrojov pod GNU GPL je možné stiahnuť oddelene od Microchip's webstránky. GNU GPL si môžete prečítať v file name sa nachádza v podadresári vášho inštalačného adresára. Všeobecnú diskusiu o princípoch, ktoré sú základom GPL, nájdete tu. Podporný kód poskytnutý pre hlavičku files, linker skripty a runtime knižnice sú proprietárny kód a nevzťahujú sa na ne GPL.

Tento kompilátor je implementáciou GCC verzie 5.4.0, binutils verzie 2.26 a používa avr-libc verziu 2.0.0.

Systémové požiadavky

Kompilátor MPLAB XC8 C a licenčný softvér, ktorý využíva, sú k dispozícii pre rôzne operačné systémy vrátane 64-bitových verzií nasledujúcich: Professional edície Microsoft Windows 10; Ubuntu 18.04; a macOS 10.15.5. Binárne súbory pre Windows boli podpísané kódom. Binárne súbory pre mac OS boli podpísané kódom a notársky overené.

Ak používate sieťový licenčný server, ako hostiteľ licenčného servera možno použiť iba počítače s operačnými systémami podporovanými kompilátormi. Od verzie xclm 2.0 je možné sieťový licenčný server nainštalovať na platformu Microsoft Windows Server, ale licenčný server nemusí bežať na serverovej verzii operačného systému.

Podporované zariadenia

Tento kompilátor podporuje všetky 8-bitové AVR MCU zariadenia známe v čase vydania. Pozrite si (v adresári doc kompilátora) pre zoznam všetkých podporovaných zariadení. Títo files tiež zoznam nastavení konfiguračných bitov pre každé zariadenie.

Edície a aktualizácie licencií

Kompilátor MPLAB XC8 môže byť aktivovaný ako licencovaný (PRO) alebo nelicencovaný (Free) produkt. Ak chcete licencovať váš kompilátor, musíte si zakúpiť aktivačný kľúč. Licencia umožňuje vyššiu úroveň optimalizácie v porovnaní s bezplatným produktom. Kompilátor bez licencie je možné prevádzkovať neobmedzene dlho bez licencie.

Kompilátor funkčnej bezpečnosti MPLAB XC8 musí byť aktivovaný licenciou funkčnej bezpečnosti zakúpenou od spoločnosti Microchip. Kompilátor nebude fungovať bez tejto licencie. Po aktivácii si môžete vybrať ľubovoľnú úroveň optimalizácie a použiť všetky funkcie kompilátora. Toto vydanie kompilátora funkčnej bezpečnosti MPLAB XC podporuje licenciu sieťového servera.
Informácie o typoch licencií a inštalácii kompilátora s licenciou nájdete v dokumente Inštalácia a licencovanie kompilátorov MPLAB XC C (DS50002059).

Inštalácia a aktivácia

Pozrite si tiež sekcie Problémy a obmedzenia migrácie, kde nájdete dôležité informácie o najnovšom správcovi licencií, ktorý je súčasťou tohto kompilátora.
Ak používate MPLAB IDE, pred inštaláciou tohto nástroja nezabudnite nainštalovať najnovšiu verziu MPLAB X IDE 5.0 alebo novšiu. Pred inštaláciou kompilátora ukončite IDE. Spustite inštalačný program kompilátora .exe (Windows), .run (Linux) alebo app (macOS), napr. XC8-1.00.11403-windows.exe a postupujte podľa pokynov na obrazovke.
Odporúča sa predvolený inštalačný adresár. Ak používate Linux, musíte nainštalovať kompilátor pomocou terminálu a z účtu root. Nainštalujte pomocou účtu macOS s oprávneniami správcu.

Aktivácia sa teraz vykonáva oddelene od inštalácie. Viac informácií nájdete v dokumente License Manager for MPLAB® XC C Compilers (DS52059).

Ak sa rozhodnete spustiť kompilátor pod skúšobnou licenciou, teraz dostanete počas kompilácie varovanie, keď ste do 14 dní od konca skúšobného obdobia. Rovnaké varovanie sa zobrazí, ak ste do 14 dní od konca vášho predplatného HPA.

XC Network License Server je samostatný inštalačný program a nie je súčasťou inštalačného programu kompilátora pre jedného používateľa.

XC License Manager teraz podporuje roaming plávajúcich sieťových licencií. Táto funkcia, zameraná na mobilných používateľov, umožňuje, aby sa pohyblivá licencia na krátku dobu odpojila od siete. Pomocou tejto funkcie sa môžete odpojiť od siete a naďalej používať kompilátor MPLAB XC. Viac o tejto funkcii nájdete v priečinku doc ​​inštalácie XCLM. MPLAB X IDE obsahuje okno Licencie (Nástroje > Licencie) na vizuálnu správu roamingu.

Riešenie problémov s inštaláciou

Ak máte problémy s inštaláciou kompilátora pod ktorýmkoľvek operačným systémom Windows, vyskúšajte nasledujúce návrhy.

  • Spustite inštaláciu ako správca.
  • Nastavte povolenia inštalačnej aplikácie na „Úplná kontrola“. (Kliknite pravým tlačidlom myši na file, vyberte Vlastnosti, kartu Zabezpečenie, vyberte používateľa, upravte.)
  • Nastavte povolenia dočasného priečinka na „Úplná kontrola!

Ak chcete určiť umiestnenie dočasného priečinka, zadajte %temp% do príkazu Spustiť (kláves s logom Windows + R). Tým sa otvorí a file dialógové okno prieskumníka zobrazujúce tento adresár a umožní vám určiť cestu k tomuto priečinku.

Dokumentácia kompilátora

Používateľské príručky kompilátora je možné otvoriť zo stránky HTML, ktorá sa otvorí vo vašom prehliadači po kliknutí na modré tlačidlo pomocníka na ovládacom paneli MPLAB X IDE, ako je uvedené na snímke obrazovky.

Dokumentácia kompilátora
Ak vytvárate pre 8-bitové ciele AVR, používateľská príručka kompilátora MPLAB® XC8 C pre MCU AVR® obsahuje informácie o možnostiach a funkciách kompilátora, ktoré sú použiteľné pre túto architektúru.

Zákaznícka podpora

Microchip víta hlásenia chýb, návrhy alebo komentáre týkajúce sa tejto verzie kompilátora. Akékoľvek hlásenia chýb alebo požiadavky na funkcie smerujte prostredníctvom systému podpory.

Aktualizácie dokumentácie

Pre online a aktuálne verzie dokumentácie MPLAB XC8 navštívte technickú dokumentáciu online spoločnosti Microchip webstránky.

Nová alebo aktualizovaná dokumentácia AVR v tomto vydaní:

  • Oznámenie o autorských právach MUSL
  • Inštalácia a licencovanie kompilátorov MPLAB XC C (revízia M)
  • MPLAB XC8 Užívateľská príručka pre vstavaných inžinierov – AVR MCU (revízia A)
  • Používateľská príručka kompilátora MPLAB XC8 C pre AVR MCU (revízia F)
  • Referenčná príručka štandardnej knižnice Microchip Unified Standard (revízia B)

Referenčná príručka štandardnej knižnice Microchip Unified Standard Library popisuje správanie a rozhranie funkcií definovaných štandardnou knižnicou Microchip Unified Standard Library, ako aj zamýšľané použitie typov knižníc a makier. Niektoré z týchto informácií boli predtým obsiahnuté v užívateľskej príručke MPLAB® XC8 C kompilátora pre AVR® MCU. Informácie o knižnici špecifické pre zariadenie sú stále obsiahnuté v tejto príručke kompilátora.

Ak práve začínate s 8-bitovými zariadeniami a kompilátorom MPLAB XC8 C, MPLAB® XC8 User!s Guide for Embedded Engineers – AVR® MCUs (DS50003108) obsahuje informácie o nastavovaní projektov v MPLAB X IDE a písaní kódu. pre váš prvý projekt MPLAB XC8 C. Táto príručka je teraz distribuovaná s kompilátorom.

Používateľská príručka Hamate bola v tomto vydaní zahrnutá do adresára docs. Táto príručka je určená pre tých, ktorí používajú Hamate ako samostatnú aplikáciu.

Čo je nové

Nasledujú nové funkcie cieľa AVR, ktoré kompilátor teraz podporuje. Číslo verzie v podnadpisoch označuje prvú verziu kompilátora, ktorá podporuje funkcie, ktoré nasledujú.

Verzia 2.40

Podpora nového zariadenia Teraz je k dispozícii podpora pre nasledujúce časti AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32, AVR64.
Vylepšená procedurálna abstrakcia Optimalizačný nástroj procedurálnej abstrakcie (PA) bol vylepšený tak, aby bolo možné načrtnúť kód obsahujúci inštrukciu na volanie funkcie (volanie volania)). Toto sa uskutoční iba vtedy, ak sa zásobník nepoužíva na odovzdávanie argumentov ani na získanie návratovej hodnoty z funkcie. Zásobník sa používa pri volaní funkcie so zoznamom premenných argumentov alebo pri volaní funkcie, ktorá má viac argumentov, ako je na tento účel určených registrov. Túto funkciu je možné deaktivovať pomocou možnosti monk-pa-outline-calls alebo úplne deaktivovať procedurálnu abstrakciu pre objekt file alebo fungovať pomocou -monk-pa-on-file a -mo.-pa-on-function alebo pomocou atribútu nipa (špecifikátor nipa) selektívne s funkciami

Makro pokrytia kódu Kompilátor teraz definuje makro __CODECOV, ak je zadaná platná voľba mcodecov.

Možnosť rezervácie pamäte Ovládač xc8-cc teraz akceptuje voľbu -mreserve=space@start: end pri zostavovaní cieľov AVR. Táto možnosť rezervuje špecifikovaný rozsah pamäte v dátovom alebo programovom pamäťovom priestore, čím bráni linkeru naplniť kód alebo objekty v tejto oblasti.

Inteligentnejšie inteligentné IO Došlo k niekoľkým vylepšeniam funkcií Smart IO, vrátane všeobecných vylepšení kódu jadra printf, zaobchádzania so špecifikátorom konverzie %n ako s nezávislým variantom, prepojením v rutinách vararg pop na požiadanie, použitím kratších typov údajov, ak je to možné, na spracovanie argumentov funkcie IO. a zohľadnenie bežného kódu v šírke poľa a presnosti manipulácie. To môže viesť k významným úsporám kódu a údajov, ako aj k zvýšeniu rýchlosti vykonávania IO.

Verzia 2.39 (funkčné bezpečnostné vydanie)

Licencia pre sieťový server Toto vydanie kompilátora funkčnej bezpečnosti MPLAB XC8 podporuje licenciu sieťového servera.

Verzia 2.36

žiadne.

Verzia 2.35

Podpora nového zariadenia Podpora je k dispozícii pre nasledujúce časti AVR: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 a AVR64DD32.

Vylepšené prepínanie kontextu Nová voľba -mcall-isr-prologues mení spôsob, akým funkcie prerušenia ukladajú registre pri vstupe a ako sa tieto registre obnovia po ukončení rutiny prerušenia. Funguje to podobne ako možnosť -mcall-prologues, ale ovplyvňuje iba funkcie prerušenia (ISR).

Ešte vylepšené prepínanie kontextu Nová voľba -mgas-isr-prologues riadi kontextový svrbivý kód generovaný pre rutiny obsluhy malých prerušení. Ak je táto funkcia povolená, bude assembler kontrolovať použitie registrov v ISR a uložiť tieto použité registre iba v prípade potreby.

Konfigurovateľné flashové mapovanie Niektoré zariadenia z rodiny AVR DA a AVR DB majú SFR (napr. FLMAP), ktorý určuje, ktorá 32k sekcia programovej pamäte bude mapovaná do dátovej pamäte. Nová možnosť – mconst-data-in-config-mapped-proem môže byť použitá na to, aby linker umiestnil všetky záporné kvalifikované dáta do jednej 32k sekcie a automaticky inicializoval príslušný register SFR, aby sa zabezpečilo, že tieto dáta budú mapované do dátového pamäťového priestoru. , kde sa k nemu bude pristupovať efektívnejšie.

Zjednotené štandardné knižnice Microchip Všetky kompilátory MPLAB XC budú zdieľať štandardnú knižnicu Microchip Unified Standard Library, ktorá je teraz k dispozícii v tomto vydaní MPLAB XC8. Používateľská príručka kompilátora MPLAB® XC8 C/alebo AVR® MCU už neobsahuje dokumentáciu pre tieto štandardné funkcie. Tieto informácie teraz nájdete v referenčnej príručke štandardnej knižnice Microchip. Všimnite si, že niektoré funkcie predtým definované avr-libc už nie sú dostupné. (Pozri knižnicu):'. FUNKČNOSŤ...)

Smart IO V rámci nových zjednotených knižníc sa teraz IO funkcie v rodinách tlače a skenovania generujú na mieru pre každú zostavu na základe toho, ako sa tieto funkcie používajú v programe. To môže výrazne znížiť zdroje využívané programom.
Možnosť inteligentnej IO asistencie Pri analýze volaní inteligentných IO funkcií (ako je printf () alebo scanf () ), kompilátor nemôže vždy určiť z formátovacieho reťazca alebo odvodiť z argumentov tie konverzné špecifikátory požadované volaním. Predtým kompilátor vždy nerobil žiadne predpoklady a zabezpečil, že plne funkčné IO funkcie boli prepojené s konečným obrazom programu. Bola pridaná nová možnosť – msmart-io-format=fmt, aby kompilátor mohol byť namiesto toho informovaný používateľom o špecifikátoroch konverzie používaných funkciami smart IO, ktorých použitie je nejednoznačné, čo zabraňuje prepojeniu príliš dlhých rutín IO. (Viac podrobností nájdete v časti Smart-io-format Option.)

Umiestnenie vlastných sekcií Predtým možnosť -Wl, –section-start umiestnila zadanú sekciu na požadovanú adresu iba vtedy, keď skript linkera definoval výstupnú sekciu s rovnakým názvom. Keď to tak nebolo, sekcia bola umiestnená na adresu zvolenú linkerom a možnosť bola v podstate ignorovaná. Teraz sa táto možnosť použije pre všetky vlastné sekcie, aj keď skript linkera sekciu nedefinuje. Upozorňujeme však, že pre štandardné sekcie, ako je . text, . bss alebo . údaje, najvhodnejší alokátor bude mať stále úplnú kontrolu nad ich umiestnením a táto možnosť nebude mať žiadny vplyv. Použite možnosť -Wl, -Tsection=add, ako je popísané v používateľskej príručke.

Verzia 2.32

Stack Guidance K dispozícii s licenciou pre kompilátor PRO, funkcia navádzania zásobníka kompilátora sa dá použiť na odhadnutie maximálnej hĺbky akéhokoľvek zásobníka používaného programom. Konštruuje a analyzuje volací graf programu, určuje využitie zásobníka každej funkcie a vytvára správu, z ktorej možno odvodiť hĺbku zásobníkov používaných programom. Táto funkcia je povolená prostredníctvom voľby príkazového riadka -mchp-stack-usage. Po vykonaní sa vytlačí súhrn využitia zásobníka. Podrobný prehľad zásobníka je k dispozícii na mape file, o ktorú je možné požiadať bežným spôsobom.

Podpora nových zariadení Podpora je k dispozícii pre nasledujúce diely AVR: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64VR,28VR, AVR32DB28, AVR64DB32VRD32D 48.

Podpora stiahnutého zariadenia Podpora už nie je k dispozícii pre nasledujúce diely AVR: AVR16DA28, AVR16DA32 a AVR16DA48.

Verzia 2.31

žiadne.

Verzia 2.30

Nová možnosť zabrániť inicializácii údajov Nová možnosť ovládača -mno-data-init zabraňuje inicializácii údajov a vymazaniu sekcií bss. Funguje tak, že potláča výstup do_ copy_ data a do_ clear_ bss symbolov v zostave files, čo zase zabráni zahrnutiu týchto rutín linkerom.

Vylepšené optimalizácie Vykonalo sa množstvo optimalizačných vylepšení, vrátane odstránenia nadbytočných návratových inštrukcií, odstránenia niektorých skokov po inštrukcii skip-if-bit-is a vylepšenej procedurálnej abstrakcie a schopnosti opakovať tento proces.

Teraz sú k dispozícii ďalšie možnosti na ovládanie niektorých z týchto optimalizácií, konkrétne kotvy sekcií -f, ktoré umožňujú vykonávať prístup k statickým objektom vzhľadom na jeden symbol; -mpai derations=n, čo umožňuje zmeniť počet iterácií procedurálnej abstrakcie z predvolených 2; a -mpa- call cost- shortcall, ktorý vykonáva agresívnejšiu procedurálnu abstrakciu v nádeji, že linker dokáže uvoľniť dlhé hovory. Táto posledná možnosť môže zväčšiť veľkosť kódu, ak nie sú splnené základné predpoklady.

Podpora nového zariadenia Podpora je k dispozícii pre nasledujúce diely AVR: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48, a AVR128DB64.DBXNUMXVR

Podpora zasunutého zariadenia Podpora už nie je k dispozícii pre nasledujúce časti AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, a ATA664251C.XNUMX

Verzia 2.29 (funkčné bezpečnostné vydanie)

Hlavička file pre vstavané kompilátory Aby sa zabezpečilo, že kompilátor môže vyhovovať špecifikáciám jazyka, ako je MISRA, the hlavička file, ktorý je automaticky zahrnutý do , bolo aktualizované. Táto hlavička obsahuje prototypy pre všetky vstavané funkcie, ako sú _buil tin _avrnop () a _buil tin_ avr delay_ cycles () . Niektoré vstavané moduly nemusia byť kompatibilné s MISRA; tieto možno vynechať pridaním _Xe_ STRICT_ MISRA do príkazového riadku kompilátora. Vstavané moduly a ich deklarácie boli aktualizované, aby používali typy s pevnou šírkou.

Verzia 2.20

Podpora nového zariadenia Podpora je dostupná pre nasledujúce časti AVR: ATTINY1624, ATTINY1626 a ATTINY1627.

Lepšie pridelenie najlepšieho prispôsobenia Najvhodnejší alokátor (BFA) v kompilátore bol vylepšený, takže sekcie sú prideľované v poradí umožňujúcom lepšiu optimalizáciu. BFA teraz podporuje pomenované adresné priestory a lepšie zvláda inicializáciu údajov.

Vylepšená procedurálna abstrakcia Optimalizácie procedurálnej abstrakcie sa teraz vykonávajú na viacerých kódových sekvenciách. Predchádzajúce situácie, keď táto optimalizácia mohla zvýšiť veľkosť kódu, boli vyriešené tým, že optimalizačný kód bol informovaný o procese zberu odpadu linkera.

Absencia AVR Assembler AVR Assembler už nie je súčasťou tejto distribúcie.

Verzia 2.19 (funkčné bezpečnostné vydanie)

žiadne.

Verzia 2.10

Pokrytie kódu Toto vydanie obsahuje funkciu pokrytia kódu, ktorá uľahčuje analýzu rozsahu, v akom bol spustený zdrojový kód projektu. Na aktiváciu použite voľbu -mcodecov=ram. Po spustení programu na vašom hardvéri sa v zariadení zhromaždia informácie o pokrytí kódu, ktoré je možné preniesť a zobraziť v MPLAB X IDE prostredníctvom doplnku pokrytia kódu. Informácie o tomto doplnku nájdete v dokumentácii k IDE. #pragma mcodecov možno použiť na vylúčenie následných funkcií z analýzy pokrytia. Ideálne by mala byť pragma pridaná na začiatku file vylúčiť to celé file z analýzy pokrytia. Alternatívne možno atribút ( (mcodecov) ) použiť na vylúčenie špecifickej funkcie z analýzy pokrytia.

Popis zariadenia files Nové zariadenie file s názvom avr chipinfo. html sa nachádza v adresári docs distribúcie kompilátora. Toto file zoznam všetkých zariadení podporovaných kompilátorom. Kliknite na názov zariadenia a otvorí sa stránka so všetkými povolenými pármi nastavenia/hodnoty konfiguračného bitu pre toto zariadenie, napr.amples.

Procedurálna abstrakcia Do kompilátora boli pridané optimalizácie procedurálnej abstrakcie, ktoré nahrádzajú bežné bloky kódu zostavy volaniami extrahovanej kópie tohto bloku. Tie vykonáva samostatná aplikácia, ktorú kompilátor automaticky vyvolá pri výbere optimalizácie úrovne 2, 3 alebo úrovne. Tieto optimalizácie znižujú veľkosť kódu, ale môžu znížiť rýchlosť vykonávania a laditeľnosť kódu.
Procedurálnu abstrakciu možno zakázať na vyšších úrovniach optimalizácie pomocou voľby -mno-pa, alebo ju povoliť na nižších úrovniach optimalizácie (v závislosti od vašej licencie) pomocou -mpa. Dá sa deaktivovať pre objekt file pomocou -mno-pa-on-file=filename alebo deaktivované pre funkciu použitím -mno-pa on function= function.
Vo vašom zdrojovom kóde je možné deaktivovať procedurálnu abstrakciu pre funkciu použitím _attribute_ ( (nopa)) s definíciou funkcie alebo použitím _nopa, ktoré sa rozšíri na atribút ( (nopa, noinline)) a tak zabráni vykonaniu vloženia funkcie a tam je abstrakcia vloženého kódu.
Podpora uzamykacieho bitu v pragme Konfiguráciu #pragma možno teraz použiť na špecifikáciu blokovacích bitov AVR, ako aj ostatných konfiguračných bitov. Skontrolujte informácie o čipe avr. html file (spomenuté vyššie) pre páry nastavenie/hodnota na použitie s touto pragmou.
Podpora nového zariadenia Podpora je k dispozícii pre nasledujúce časti: AVR28DA128, AVR64DA128, AVR32DA128 a AVR48DA128.

Verzia 2.05

Viac kúskov za vaše peniaze Verzia tohto kompilátora a správcu licencií pre macOS je teraz 64-bitová aplikácia. Tým sa zabezpečí, že sa kompilátor nainštaluje a spustí bez upozornení v najnovších verziách systému macOS.
Const objekty v pamäti programu Kompilátor môže teraz umiestniť const-kvalifikované objekty do pamäte Flash programu, namiesto toho, aby ich mal umiestnené v RAM. Kompilátor bol upravený tak, že globálne dáta s kvalifikáciou const sú uložené v programovej flash pamäti a k ​​týmto dátam je možné priamo a nepriamo pristupovať pomocou príslušných inštrukcií programovej pamäte. Táto nová funkcia je predvolene povolená, ale dá sa vypnúť pomocou voľby -mno-const-data-in-progmem. Pre architektúry avrxmega3 a avrtiny sa táto funkcia nevyžaduje a je vždy zakázaná, pretože programová pamäť je mapovaná do priestoru dátových adries pre tieto zariadenia.
Štandardne zadarmo Nelicencované (bezplatné) verzie tohto kompilátora teraz umožňujú optimalizáciu až po úroveň 2 vrátane. To umožní podobný, aj keď nie identický výstup, aký bol predtým možný pomocou štandardnej licencie.
Vitajte AVRASM2 Assembler AVRASM2 pre 8-bitové zariadenia je teraz súčasťou inštalačného programu kompilátora XC8. Tento assembler nepoužíva kompilátor XC8, ale je dostupný pre projekty založené na ručne písaných zdrojoch zostavy.
Podpora nového zariadenia Podpora je k dispozícii pre nasledujúce časti: ATMEGA1608, ATMEGA1609, ATMEGA808 a ATMEGA809.

Verzia 2.00

Vodič najvyššej úrovne Nový ovládač s názvom xc8-cc sa teraz nachádza nad predchádzajúcim ovládačom avr-gcc a ovládačom xc8 a môže volať príslušný kompilátor na základe výberu cieľového zariadenia. Tento ovládač akceptuje voľby v štýle GCC, ktoré sú buď preložené alebo odovzdané vykonávanému kompilátoru. Tento ovládač umožňuje použiť podobnú sadu možností s podobnou sémantikou s akýmkoľvek cieľom AVR alebo PIC, a preto je odporúčaným spôsobom vyvolania kompilátora. V prípade potreby je možné starý ovládač avr-gcc volať priamo pomocou možností starého štýlu, ktoré akceptoval v starších verziách kompilátora.

Spoločné rozhranie C Tento kompilátor sa teraz môže prispôsobiť MPLAB Common C Interface, čo umožňuje jednoduchší prenos zdrojového kódu do všetkých MPLAB XC kompilátorov. Voľba -mext=cci vyžaduje túto funkciu, čím umožňuje alternatívnu syntax pre mnohé jazykové rozšírenia.

Nový vodič knižnice Nový ovládač knižnice je umiestnený nad predchádzajúcim knihovníkom knižnice PIC a knihovníkom AVR avr-ar. Tento ovládač akceptuje voľby v štýle archívu GCC, ktoré sú buď preložené alebo odovzdané vykonávanému knihovníkovi. Nový ovládač umožňuje použiť podobnú sadu možností s podobnou sémantikou na vytvorenie alebo manipuláciu s ľubovoľnou knižnicou PIC alebo AVR file a je teda odporúčaným spôsobom privolávania knihovníka. Ak je to potrebné pre staršie projekty, predchádzajúci knihovník môže byť zavolaný priamo pomocou možností starého štýlu, ktoré akceptoval v starších verziách kompilátora.

Problémy migrácie

Nasledujú funkcie, ktoré teraz kompilátor spracováva inak. Tieto zmeny môžu vyžadovať úpravu vášho zdrojového kódu, ak prenesiete kód do tejto verzie kompilátora. Číslo verzie v podnadpisoch označuje prvú verziu kompilátora, ktorá podporuje nasledujúce zmeny.

Verzia 2.40

žiadne.

Verzia 2.39 (funkčné bezpečnostné vydanie)

žiadne.

Verzia 2.36

žiadne.

Verzia 2.35

Manipulácia so základňami typu string-to-base (XCS-2420) Aby sa zabezpečila konzistencia s inými kompilátormi XC, funkcie XC8 string-to, ako strtol () atď., sa už nebudú pokúšať konvertovať vstupný reťazec, ak je špecifikovaný základ väčší ako 36 a namiesto toho nastavia errno na EINVAL. Štandard C nešpecifikuje správanie funkcií pri prekročení tejto základnej hodnoty.

Nevhodná optimalizácia rýchlosti Procedurálne optimalizácie abstrakcie boli povolené pri výbere optimalizácie úrovne 3 (-03). Tieto optimalizácie znižujú veľkosť kódu na úkor rýchlosti kódu, takže by sa nemali vykonávať. Projekty používajúce túto úroveň optimalizácie môžu zaznamenať rozdiely vo veľkosti kódu a rýchlosti vykonávania pri zostavovaní s týmto vydaním.

Funkcionalita knižnice Kód pre mnohé funkcie štandardnej knižnice C teraz pochádza z Unifikovanej štandardnej knižnice Microchip, ktorá môže za určitých okolností vykazovať odlišné správanie v porovnaní s tým, ktoré poskytuje bývalá knižnica avr-libc. Naprample, už nie je potrebné prepojiť knižnicu lprintf_flt (voľba -print _flt), aby ste zapli formátovanú podporu IO pre špecifikátory plávajúceho formátu. Funkcie smart IO knižnice Microchip Unified Standard Library robia túto možnosť nadbytočnou. Okrem toho už nie je potrebné používať rutiny s príponou _p pre reťazcové a pamäťové funkcie (napr. strcpy_P () atď .. ), ktoré fungujú na reťazcoch const vo flashi. Štandardné rutiny C (napr. strcpy ()) budú s takýmito údajmi pracovať správne, keď je povolená funkcia const-data-in-program-memory.

Verzia 2.32

žiadne.

Verzia 2.31

žiadne.

Verzia 2.30

žiadne.

Verzia 2.29 (funkčné bezpečnostné vydanie)

žiadne.

Verzia 2.20

Rozloženie služby DFP bolo zmenené Kompilátor teraz predpokladá iné rozloženie používané balíkmi DFP (Device Family Pack). Znamená to, že staršia služba DFP nemusí s týmto vydaním fungovať a staršie kompilátory nebudú môcť používať najnovšie služby DFP.

Verzia 2.19 (funkčné bezpečnostné vydanie)

žiadne.

Verzia 2.10

žiadne

Verzia 2.05

Konštantné objekty v pamäti programu Všimnite si, že v predvolenom nastavení budú neustále kvalifikované objekty umiestnené a prístupné v pamäti programu (ako je popísané tu) . To ovplyvní veľkosť a rýchlosť vykonávania vášho projektu, ale malo by to znížiť využitie pamäte RAM. Túto funkciu je možné v prípade potreby deaktivovať pomocou voľby -mnoconst-da ta-in-progmem.

Verzia 2.00

Konfiguračné poistky Poistky konfigurácie zariadenia je teraz možné naprogramovať pomocou konfiguračnej pragmy, po ktorej nasledujú dvojice nastavení a hodnoty na špecifikáciu stavu poistky, napr.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Absolútne objekty a funkcie Objekty a funkcie je teraz možné umiestniť na konkrétnu adresu v pamäti pomocou špecifikátora CCI _at (adresa), napr.ample: #include int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Argumentom tohto špecifikátora musí byť konštanta, ktorá predstavuje adresu, na ktorú bude umiestnený prvý bajt alebo inštrukcia. Adresy RAM sú označené pomocou offsetu 0x800000. Povoľte CCI používať túto funkciu.
Nová syntax funkcie prerušenia Kompilátor teraz akceptuje špecifikátor prerušenia CCI (num), ktorý označuje, že funkcie C sú obslužné programy prerušenia. Špecifikátor má číslo prerušenia, naprample: #include void interrupt(SPI STC_ vect _num) spi Isr(void) { … }

Opravené problémy

Nasledujú opravy, ktoré boli vykonané v kompilátore. Tieto môžu opraviť chyby vo vygenerovanom kóde alebo zmeniť činnosť kompilátora na to, čo bolo zamýšľané alebo špecifikované v používateľskej príručke. Číslo verzie v podnadpisoch označuje prvú verziu kompilátora, ktorá obsahuje opravy pre nasledujúce problémy. Štítky v zátvorkách v názve predstavujú identifikáciu daného problému v databáze sledovania. Tieto môžu byť užitočné, ak potrebujete kontaktovať podporu.

Upozorňujeme, že niektoré problémy špecifické pre zariadenie sú opravené v balíku Device Family Pack (DFP) priradenom k ​​zariadeniu. Informácie o zmenách vykonaných v DFP a stiahnutí najnovších balíkov nájdete v Správcovi balíkov MPLAB.

Verzia 2.40

Príliš uvoľnený (XCS-2876) Pri použití voľby -mrelax kompilátor nealokoval niektoré sekcie spolu, čo malo za následok menej optimálne veľkosti kódu. Mohlo k tomu dôjsť pri kóde, ktorý používal nové knižnice MUSL, alebo pri slabých symboloch.
Funkcia mapovania nie je zakázaná, ako je uvedené vo varovaní (XCS-2875) Funkcia cost-data-in-config mappedprogmem závisí od aktivácie funkcie cost-data-in-proem. Ak bola funkcia cost-data-ipconfig-mapped-proem explicitne povolená pomocou tejto možnosti a funkcia cost-data-inprogmem bola zakázaná, krok prepojenia zlyhal, napriek varovnému hláseniu, ktoré uvádza, že nevýhody data-in-config-mapped- funkcia proem bola automaticky vypnutá, čo nebolo úplne správne. Funkcia const-data-in-config-mapped-proem je teraz v tejto situácii úplne zakázaná.
DFP sa mení na správny prístup k NVMCTRL (XCS-2848) Runtime spúšťací kód používaný zariadeniami AVR64EA nebral do úvahy, že register NVMCTRL bol pod ochranou Configuration Change Protection (CCP) a nedokázal nastaviť IO SFR na stránku používanú kompilátorom const-data-in configmapped-proem. vlastnosť. Zmeny vykonané vo verzii AVR-Ex_DFP 2.2.55 umožnia správnemu zápisu spúšťacieho kódu runtime do tohto registra.
Zmeny v službe DFP, aby sa zabránilo mapovaniu vo formáte Flash (XCS-2847) Bolo implementované riešenie problému s funkciou zariadenia na mapovanie flash hlásené v AVR128DA28/32/48/64 Silicon Errata (DS80000882). Funkcia kompilátora const-data-in-config-mapped-proem sa štandardne nepoužije pre dotknuté zariadenia a táto zmena sa objaví vo verzii AVR-Ex_DFP 2.2.160.
Chyba zostavy s sinhf alebo coshf (XCS-2834) Pokusy o použitie funkcií knižnice sinhf () alebo coshf () viedli k chybe odkazu, ktorá popisovala nedefinovaný odkaz. Chýbajúca funkcia, na ktorú sa odkazuje, bola teraz zahrnutá do distribúcie kompilátora.
Chyby pri zostavovaní pomocou nopa (XCS-2833) Použitie atribútu nopa s funkciou, ktorá má názov assembleru zadaný pomocou ako (), spustilo chybové správy z assemblera. Táto kombinácia nie je možná.
Zlyhanie variadickej funkcie s argumentmi ukazovateľa (XCS-2755, XCS-2731) Funkcie s premenlivým počtom argumentov očakávajú, že 24-bitové ukazovatele (typ _memo) budú odovzdané v zozname premenných argumentov, keď je povolená funkcia cost-data-in-proem. Argumenty, ktoré boli ukazovateľmi na dátovú pamäť, sa odovzdávali ako 16-bitové objekty, čo spôsobilo zlyhanie kódu, keď boli nakoniec načítané. Keď je povolená funkcia cons data-in-proem, všetky argumenty 16-bitových ukazovateľov sa teraz skonvertujú na 24-bitové ukazovatele. Zlyhanie funkcií knižnice strtoxxx (XCS-2620) Keď bola povolená funkcia const-data-in-proem, parameter enter vo funkciách knižnice strtoxxx nebol správne aktualizovaný pre argumenty zdrojového reťazca, ktoré nie sú v pamäti programu.
Upozornenia na neplatné obsadenia (XCS-2612) Kompilátor teraz vydá chybu, ak je povolená funkcia cost-in-proem a adresa reťazcového literálu je explicitne pretypovaná na dátový adresný priestor (vynechá kvalifikátor const), napr.ample, (uint8 t *) „Ahoj svet!“. Varovanie je problém, ak adresa môže byť neplatná, keď je ukazovateľ konštantných údajov explicitne pretypovaný do priestoru adries údajov.
Umiestnenie neinicializovaných konštantných objektov (XCS-2408) Neinicializované objekty const a const v olatile neboli umiestnené v pamäti programu na zariadeniach, ktoré mapujú celú alebo časť ich programovej pamäte do priestoru adries údajov. Pre tieto zariadenia sú teraz takéto objekty umiestnené v pamäti programu, čím je ich činnosť konzistentná s inými zariadeniami.

Verzia 2.39 (funkčné bezpečnostné vydanie)

žiadne.

Verzia 2.36

Chyba pri oneskorení (XCS-2774) Drobné zmeny v predvolenom optimalizácii voľného režimu zabránili neustálemu skladaniu výrazov operandov do vstavaných funkcií oneskorenia, čo viedlo k tomu, že sa s nimi zaobchádzalo ako s bezkontaktnými a spustila sa chyba: _buil tin avr delay_ cycles očakáva ac ompile časová celočíselná konštanta.

Verzia 2.35

Súvislá alokácia pomocou _at (XCS-2653) Súvislá alokácia viacerých objektov v sekcii s rovnakým názvom a použitím at () nefungovalo správne. Naprample: constchararrl [ ] pri tri butte ((sect on(.misses”))) pri (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[ ] at tri butte ((sekcia(.my s eke”))) = {voly, vola FE }; mal umiestniť arr2 hneď po aril.
Určenie počiatočných adries sekcie (XCS-2650) Možnosť -Wal, –section-start ticho zlyhala pri umiestnení sekcií na nominovanú počiatočnú adresu. Tento problém bol vyriešený pre ľubovoľné sekcie s vlastným názvom; nebude to však fungovať pre žiadne štandardné sekcie, ako napríklad . text alebo . bss, ktorý musí byť umiestnený pomocou voľby -Wl, -T.
Linker zlyhá pri relaxácii (XCS-2647) Keď bola povolená optimalizácia -relax a existovali sekcie kódu alebo údajov, ktoré sa nezmestili do dostupnej pamäte, linker zlyhal. Teraz sa za takýchto okolností namiesto toho vydávajú chybové hlásenia.
Zlý prístup k EEPROM (XCS-2629) Rutina _read_ bloku leproma nefungovala správne na zariadeniach Mega, keď bola povolená možnosť -monist-data-in-proem (čo je predvolený stav), čo malo za následok nesprávne načítanie pamäte EEPROM.
Neplatné pridelenie pamäte (XCS-2593, XCS-2651) Keď je možnosť -Text alebo -Tata linker (naprampsúbor prešiel pomocou voľby ovládača -Wl), bol aktualizovaný zodpovedajúci pôvod oblasti textu/údajov; koncová adresa však nebola zodpovedajúcim spôsobom upravená, čo mohlo viesť k tomu, že oblasť prekročila rozsah pamäte cieľového zariadenia.
Neplatný kód prerušenia ATtiny (XCS-2465) Pri vytváraní pre zariadenia Tatin a optimalizácie boli deaktivované (-00), funkcie prerušenia mohli spustiť správy assembleru mimo rozsahu.
Možnosti neprechádzajú (XCS-2452) Pri použití voľby -Wl s viacerými možnosťami linkera oddelených čiarkami sa do linkera nepreniesli všetky možnosti linkera.
Chyba pri nepriamom čítaní pamäte programu (XCS-2450) V niektorých prípadoch kompilátor vytvoril vnútornú chybu (nerozpoznateľné insn) pri čítaní dvojbajtovej hodnoty z ukazovateľa do pamäte programu

Verzia 2.32

Druhý prístup ku knižnici zlyhá (XCS-2381) Vyvolanie verzie systému Windows xc8-ar. Archivátor knižnice exe druhýkrát pri prístupe k existujúcemu archívu knižnice mohol zlyhať, pretože sa nepodarilo premenovať chybové hlásenie.

Verzia 2.31

Nevysvetliteľné zlyhania kompilátora (XCS-2367) Pri spustení na platformách Windows, ktoré mali systémový dočasný adresár nastavený na cestu obsahujúcu bodku'.' kompilátor možno zlyhal pri spustení.

Verzia 2.30

Globálne štítky nesprávne umiestnené po obryse (XCS-2299) Ručne písaný kód zostavy, ktorý umiestňuje globálne štítky do sekvencií zostavy, ktoré sú zohľadnené procedurálnou abstrakciou, možno nebol správne premiestnený.
Relaxačný pád (XCS-2287) Použitie voľby -merlad mohlo spôsobiť zlyhanie linkera, keď sa optimalizácia relaxácie skoku chvostom pokúsila odstrániť inštrukciu ret, ktorá nebola na konci sekcie.
Zlyhanie pri optimalizácii štítkov ako hodnôt (XCS-2282) Kód používajúci rozšírenie jazyka GNU C „Labels as values“ mohol spôsobiť zlyhanie optimalizácií procedurálnej abstrakcie s chybou opravy Outlined VMA ranges.
Nie tak konštantné (XCS-2271) Prototypy pre štarty () a ďalšie funkcie z už neuvádzajte neštandardný kvalifikátor nákladov na vrátených ukazovateľoch reťazca, keď je funkcia -monist-data inprogmem zakázaná. Upozorňujeme, že pri zariadeniach avrxmega3 a avertin je táto funkcia trvalo povolená.
Stratené inicializátory (XCS-2269) Ak bola do sekcie umiestnená viac ako jedna premenná v prekladovej jednotke (pomocou sekcie alebo atribútu ((sekcia)) a prvá takáto premenná bola inicializovaná nulou alebo nemala inicializátor, inicializátory pre iné premenné v tej istej prekladovej jednotke ktoré boli umiestnené v rovnakej sekcii sa stratili.

Verzia 2.29 (funkčné bezpečnostné vydanie)

žiadne.

Verzia 2.20

Chyba pri dlhých príkazoch (XCS-1983) Pri použití cieľa AVR sa kompilátor mohol zastaviť s a file chyba nenájdená, ak bol príkazový riadok extrémne veľký a obsahoval špeciálne znaky ako úvodzovky, spätné lomky atď.
Nepriradená sekcia rodata (XCS-1920) Linker AVR nedokázal priradiť pamäť pre vlastné sekcie rodata pri vytváraní pre architektúry avrxmega3 a avrtiny, čo môže spôsobiť chyby prekrývania pamäte

Verzia 2.19 (funkčné bezpečnostné vydanie)

žiadne.

Verzia 2.10

Zlyhania premiestnenia (XCS-1891) Najvhodnejším alokátorom bolo zanechanie „dier“ v pamäti medzi sekciami po uvoľnení linkera. Okrem fragmentácie pamäte to zvýšilo možnosť zlyhania premiestnenia linkera v súvislosti s počítačovými skokmi alebo volaniami, ktoré sa dostali mimo dosah.
Pokyny nie sú transformované relaxáciou (XCS-1889) Uvoľnenie linkera nenastalo pri pokynoch skoku alebo volania, ktorých ciele sa stanú dosiahnuteľnými, ak sa uvoľnia.
Chýba funkčnosť (XCSE-388) Niekoľko definícií z , ako napríklad clock_div_t a clock_prescale_set (), neboli definované pre zariadenia vrátane ATmega324PB, ATmega328PB, ATtiny441 a ATtiny841.
Chýbajúce makrá Makrá preprocesora_ xcs _MODE_, _xcs VERSION, _xc a xcs neboli automaticky definované kompilátorom. Tieto sú teraz k dispozícii.

Verzia 2.05

Interná chyba kompilátora (XCS-1822) Pri vytváraní pod Windowsom sa pri optimalizácii kódu mohla vyskytnúť interná chyba kompilátora.
Nebolo zistené pretečenie pamäte RAM (XCS-1800, XCS-1796) Programy, ktoré prekročili dostupnú RAM, kompilátor v niektorých situáciách nezistil, čo viedlo k zlyhaniu kódu runtime.
Vynechaná pamäť flash (XCS-1792) Pre zariadenia avrxmega3 a avrtiny mohli byť časti flash pamäte ponechané nenaprogramované v MPLAB X IDE.
Zlyhanie pri spustení hlavného (XCS-1788) V niektorých situáciách, keď program nemal definované žiadne globálne premenné, sa spúšťací kód runtime neukončil a funkcia main () nebola nikdy dosiahnutá.
Nesprávne informácie o pamäti (XCS-1787) Pre zariadenia avrxmega3 a avrtiny program avr-size hlásil, že údaje len na čítanie spotrebúvajú RAM namiesto pamäte programu.
Nesprávne načítanie programovej pamäte (XCS-1783) Projekty kompilované pre zariadenia s programovou pamäťou mapovanou do priestoru adries údajov a ktoré definujú objekty pomocou makra/atribútu PROGMEM mohli tieto objekty načítať z nesprávnej adresy.
Interná chyba s atribútmi (XCS-1773) Vyskytla sa interná chyba, ak ste definovali objekty ukazovateľa pomocou
_at () alebo tokeny atribútu () medzi názvom ukazovateľa a dereferencovaným typom, naprample, znak *
_at ( 0x80015 0) cp; V prípade zistenia takéhoto kódu sa teraz zobrazí varovanie.
Zlyhanie spustenia hlavného (XCS-1780, XCS-1767, XCS-1754) Použitie premenných EEPROM alebo definovanie poistiek pomocou config pragma mohlo spôsobiť nesprávnu inicializáciu dát a/alebo zablokovanie vykonávania programu v spúšťacom kóde runtime pred dosiahnutím hlavného () .
Chyba poistky pri malých zariadeniach (XCS-1778, XCS-1742) Zariadenia attiny4/5/9/10/20/40 mali v hlavičke špecifikovanú nesprávnu dĺžku poistky files, ktoré vedú k chybám linkera pri pokuse o vytvorenie kódu, ktorý definoval poistky.
Chyba segmentácie (XCS-1777) Prerušovaná chyba segmentácie bola opravená.
Zlyhanie assemblera (XCS-1761) Assembler avr-as mohol zlyhať, keď bol kompilátor spustený pod Ubuntu 18.
Objekty nie sú vyčistené (XCS-1752) Neinicializované objekty trvania statického úložného priestoru možno neboli vymazané spúšťacím kódom runtime.
Konfliktná špecifikácia zariadenia bola ignorovaná (XCS-1749) Kompilátor negeneroval chybu, keď sa použili viaceré možnosti špecifikácie zariadenia a označili rôzne zariadenia.
Poškodenie pamäte haldou (XCS-1748) Symbol heap_ start bol nesprávne nastavený, čo malo za následok možnosť poškodenia bežných premenných haldou.
Chyba premiestnenia linkera (XCS-1739) Chyba premiestnenia linkera sa mohla vyslať, keď kód obsahoval rjmp alebo rcall s cieľom presne 4 kB.

Verzia 2.00

žiadne.

Známe problémy

Nasledujú obmedzenia v činnosti kompilátora. Môže ísť o všeobecné obmedzenia kódovania, príp
odchýlky od informácií uvedených v návode na použitie. Štítky v zátvorkách v názve predstavujú identifikáciu daného problému v databáze sledovania. Môže to byť užitočné, ak potrebujete kontaktovať podporu. Tie položky, ktoré nemajú štítky, sú obmedzenia, ktoré popisujú režim činnosti a ktoré pravdepodobne zostanú v platnosti natrvalo.

Integrácia MPLAB X IDE

Integrácia MPLAB IDE Ak sa má kompilátor používať z MPLAB IDE, musíte pred inštaláciou kompilátora nainštalovať MPLAB IDE.

Generovanie kódu

Zlyhanie prideľovania pamäte PA (XCS-2881) Pri použití optimalizátorov procedurálnej abstrakcie môže linker hlásiť chyby pri prideľovaní pamäte, keď je veľkosť kódu blízka množstvu dostupnej programovej pamäte v zariadení, aj keď by sa mal program zmestiť do dostupného priestoru.
Nie tak inteligentný Smart-IO (XCS-2872) Funkcia smart-io kompilátora vygeneruje platný, ale suboptimálny kód pre funkciu sprintu, ak bola funkcia cobe-data-in-proem deaktivovaná alebo ak má zariadenie celý svoj flash namapovaný do dátovej pamäte.
Ešte menej inteligentný Smart-IO (XCS-2869) Funkcia smart-io kompilátora vygeneruje platný, ale neoptimálny kód, keď sa použijú voľby -floe a -fno-buil tin.
Suboptimálne umiestnenie údajov iba na čítanie (XCS-2849) Linker v súčasnosti nepozná sekcie pamäte APPCODE a APPDATA, ani rozdelenie [No-]Read-While-Write v pamäťovej mape. V dôsledku toho existuje malá šanca, že linker môže alokovať údaje len na čítanie v nevhodnej oblasti pamäte. Pravdepodobnosť nesprávneho umiestnenia údajov sa zvyšuje, ak je povolená funkcia coast-data-in-pragma, najmä ak je povolená aj funkcia coast-data-in-config-mapped-proem. Tieto funkcie je možné v prípade potreby deaktivovať.
Objekt file spracovanie objednávky (XCS-2863) Poradie objektov files budú spracované linkerom sa môžu líšiť v závislosti od použitia optimalizácií procedurálnej abstrakcie (možnosť -mpa). To by ovplyvnilo iba kód, ktorý definuje slabé funkcie vo viacerých moduloch.
Chyba spojovača s absolútnou hodnotou (XCS-2777) Keď bol objekt na adrese na začiatku pamäte RAM absolútny a neinicializované objekty boli tiež definované, môže sa spustiť chyba linkera.
ID krátkeho prebudenia (XCS-2775) Pre zariadenia ATA5700/2 sú registre PHID0/1 definované len ako 16 bitové, nie 32 bitové.
Zlyhanie linkera pri volaní symbolu (XCS-2758) Linker môže zlyhať, ak sa použije možnosť ovládača -merlad, keď zdrojový kód volá symbol, ktorý bol definovaný pomocou možnosti linkera -Wl, –defsym.
Nesprávna inicializácia (XCS-2679) Existuje nesúlad medzi tým, kde sú počiatočné hodnoty pre niektoré globálne/statické objekty s veľkosťou bajtov umiestnené v dátovej pamäti a kde sa bude pristupovať k premenným za behu.
nesprávne spustené sady prázdne (XCS-2652) V prípadoch, keď reťazec predmetu na konverziu podľa uvedeného () obsahuje to, čo sa javí ako číslo s pohyblivou rádovou čiarkou v exponenciálnom formáte a za znakom e je neočakávaný znak, potom prázdna adresa, ak je zadaná, bude ukazovať na znak za e a nie samotné e. Naprample: uvedené(“hooey”, prázdne); výsledkom bude prázdne ukazovanie na znak x.
Zlé nepriame volania funkcií (XCS-2628) V niektorých prípadoch môžu zlyhať volania funkcií uskutočnené prostredníctvom ukazovateľa funkcie uloženého ako súčasť štruktúry.
strtof vracia nulu pre hexadecimálne pohyblivé čísla (XCS-2626) Knižničné funkcie strtof () et al a scanf () et al vždy prevedú hexadecimálne číslo s pohyblivou rádovou čiarkou, ktoré nešpecifikuje exponent na
nula. Napríkladample: stator("Sova", &empty); vráti hodnotu 0, nie 1.
Nepresné správy poradcu zásobníka (XCS-2542, XCS-2541) V niektorých prípadoch sa varovanie poradcu zásobníka týkajúce sa rekurzie alebo neurčitého zásobníka (pravdepodobne prostredníctvom použitia alloca()) nevydá.
Zlyhanie s duplicitným kódom prerušenia (XCS-2421) Ak má viac ako jedna funkcia prerušenia rovnaké telo, kompilátor môže mať výstup pre jednu funkciu prerušenia volať druhú. To povedie k zbytočnému ukladaniu všetkých registrov zablokovaných hovormi a prerušenia sa povolia ešte pred spustením epilógu aktuálnej obsluhy prerušení, čo môže viesť k zlyhaniu kódu.
Const objekty nie sú v pamäti programu (XCS-2408) Pre projekty avrxmega3 a avertins sú neidealizované objekty const umiestnené do dátovej pamäte, aj keď varovanie naznačuje, že boli umiestnené v pamäti programu. Toto neovplyvní zariadenia, ktoré nemajú programovú pamäť namapovanú do priestoru dátovej pamäte, ani to neovplyvní žiadny objekt, ktorý je inicializovaný.
Zlý výstup s neplatnou cestou DFP (XCS-2376) Ak je kompilátor vyvolaný s neplatnou cestou DFP a špecifikáciou file existuje pre vybraté zariadenie, kompilátor nenahlási chýbajúci balík rodiny zariadení a namiesto toho vyberie „špecifikáciu“ file, čo by potom mohlo viesť k neplatnému výstupu. „špecifikácia“ files nemusia byť aktuálne s distribuovanými službami DFP a boli určené len na použitie s interným testovaním kompilátora.
Nezistené prekrytie pamäte (XCS-1966) Kompilátor nezisťuje prekrytie pamäte objektov, ktoré sú absolútne na adrese (cez at ()) a iných objektov pomocou špecifikátora sekcie () a ktoré sú spojené s rovnakou adresou.
Zlyhanie funkcií knižnice a _meme (XCS-1763) Volané limbické funkcie float s argumentom v adresnom priestore _memo môžu zlyhať. Všimnite si, že rutiny knižnice sa volajú z niektorých operátorov C, takže naprample, je ovplyvnený nasledujúci kód: return regFloatVar > memxFloatVar;
Obmedzená limbická implementácia (AVRTC-731) Pre produkty ATTiny4/5/9/10/20/40 je štandardná implementácia knižnice C/Math v limbickom jazyku veľmi obmedzená alebo nie je prítomná.
Obmedzenia programovej pamäte (AVRTC-732) Toolchain podporuje obrázky programovej pamäte nad 128 kb; sú však známe prípady prerušenia linkera bez uvoľnenia a bez užitočného chybového hlásenia namiesto vygenerovania požadovaných stubov funkcií, keď sa použije možnosť -relax.
Obmedzenia menného priestoru (AVRTC-733) Pomenované adresné priestory sú podporované reťazcom nástrojov, s výhradou obmedzení uvedených v používateľskej príručke v časti Kvalifikátory špeciálnych typov.
Časové pásma The funkcie knižnice predpokladajú GMT a nepodporujú miestne časové pásma, takže miestny čas () vráti rovnaký čas ako gummite (), napr.ample.

ZÁKAZNÍCKA PODPORA

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

Dokumenty / zdroje

Softvér kompilátora MICROCHIP MPLAB XC8 C [pdf] Používateľská príručka
MPLAB XC8 C, MPLAB XC8 C Softvér kompilátora, Softvér kompilátora, Softvér

Referencie

Zanechajte komentár

Vaša emailová adresa nebude zverejnená. Povinné polia sú označené *