MICROCHIP MPLAB XC8 C Compiler Software 

MICROCHIP MPLAB XC8 C Compiler Software

DIT DOKUMENT BEVET WICHTICH YNFORMAASJE LIET OP DE MPLAB XC8 C-KOMPILER BY TAGERJE MICROCHIP AVR-apparaten.
LÊS DIT asjebleaft FOARDAT DIT SOFTWARE RUNNT. SJOCH DE MPLAB XC8 C COMPILER RELEASE OPMERKINGEN FOAR PIC DOKUMENT AS JO DE COMPILER GEBRUKKE FOAR 8-BIT PIC DEVICES.

Ynhâld ferstopje

Oerview

Ynlieding

Dizze release fan 'e Microchip MPLAB® XC8 C-kompiler befettet ferskate nije funksjes, bugfixes en nije apparaatstipe.

Bouwdatum

De offisjele boudatum fan dizze kompilerferzje is de 3 july 2022.

Foarige ferzje

De foarige MPLAB XC8 C-kompilatorferzje wie 2.39, in funksjonele feiligenskompilator, boud op 27 jannewaris 2022. De foarige standert gearstaller wie ferzje 2.36, boud op 27 jannewaris 2022.

Hânlieding foar funksjonele feiligens

In Hânlieding foar funksjonele feiligens foar de MPLAB XC-kompilators is beskikber yn it dokumintaasjepakket as jo in funksjonele feiligenslisinsje keapje.

Komponint Lisinsjes en ferzjes

De MPLAB® XC8 C-kompiler foar AVR MCU's-ark binne skreaun en ferspraat ûnder de GNU General Public License (GPL), wat betsjut dat syn boarnekoade frij ferspraat en beskikber is foar it publyk. De boarnekoade foar ark ûnder de GNU GPL kin apart downloade wurde fan Microchip's website. Jo kinne de GNU GPL lêze yn 'e file neamd leit de submap fan jo ynstallaasjemap. In algemiene diskusje oer prinsipes dy't de GPL ûnderlizze kinne hjir fûn wurde. Stipe koade foarsjoen foar de koptekst files, linker skripts, en runtime biblioteken binne proprietêre koade en net bedekt ûnder de GPL.

Dizze gearstaller is in ymplemintaasje fan GCC ferzje 5.4.0, binutils ferzje 2.26, en brûkt avr-libc ferzje 2.0.0.

Systeem easken

De MPLAB XC8 C-kompiler en de lisinsjesoftware dy't it brûkt binne beskikber foar in ferskaat oan bestjoeringssystemen, ynklusyf 64-bit ferzjes fan de folgjende: Profesjonele edysjes fan Microsoft Windows 10; Ubuntu 18.04; en macOS 10.15.5. Binaries foar Windows binne koade-ûndertekene. Binaries foar mac OS binne koade-ûndertekene en notarisearre.

As jo ​​in netwurk lisinsje tsjinner rinne, meie allinnich kompjûters mei bestjoeringssystemen stipe troch de gearstallers brûkt wurde om de lisinsje tsjinner. Fanôf xclm ferzje 2.0 kin de netwurklisinsjetsjinner ynstalleare wurde op in Microsoft Windows Server-platfoarm, mar de lisinsjetsjinner hoecht net te rinnen op in serverferzje fan it bestjoeringssysteem.

Stipe apparaten

Dizze kompilator stipet alle 8-bit AVR MCU-apparaten bekend op it momint fan frijlitting. Sjoch (yn de doc-map fan 'e kompilator) foar in list fan alle stipe apparaten. Dizze files ek list konfiguraasje bit ynstellings foar elk apparaat.

Editions en lisinsje Upgrades

De MPLAB XC8-kompiler kin wurde aktivearre as in lisinsje (PRO) of net lisinsearre (Fergees) produkt. Jo moatte in aktivearringskaai keapje om jo kompilator te lisinsje. In lisinsje soarget foar in heger nivo fan optimalisaasje yn ferliking mei it fergese produkt. In net lisinsearre kompilator kin foar ûnbepaalde tiid wurde eksploitearre sûnder lisinsje.

In MPLAB XC8 Functional Safety compiler moat wurde aktivearre mei in funksjonele feiligens lisinsje kocht fan Microchip. De gearstaller sil net wurkje sûnder dizze lisinsje. Ienris aktivearre kinne jo elk optimalisaasjenivo selektearje en alle kompilerfunksjes brûke. Dizze útjefte fan 'e MPLAB XC Functional Safety Compiler stipet de Network Server License.
Sjoch it Ynstallearjen en lisinsje fan MPLAB XC C Compilers (DS50002059) dokumint foar ynformaasje oer lisinsje typen en ynstallaasje fan de gearstaller mei in lisinsje.

Ynstallaasje en aktivearring

Sjoch ek de seksjes Migraasjeproblemen en beheiningen foar wichtige ynformaasje oer de lêste lisinsjebehearder opnommen mei dizze kompilator.
As jo ​​​​MPLAB IDE brûke, wês dan wis dat jo de lêste MPLAB X IDE ferzje 5.0 of letter ynstallearje foardat jo dit ark ynstallearje. Stopje de IDE foardat jo de kompilator ynstallearje. Laad de .exe (Windows), .run (Linux) of app (macOS) kompilerynstallaasjeapplikaasje, bygelyks XC8-1.00.11403-windows.exe en folgje de rjochtingen op it skerm.
De standert ynstallaasjemap wurdt oanrikkemandearre. As jo ​​Linux brûke, moatte jo de kompilator ynstallearje mei in terminal en fan in root-akkount. Ynstallearje mei in macOS-akkount mei beheardersrjochten.

Aktivearring wurdt no apart útfierd foar ynstallaasje. Sjoch it dokumint License Manager foar MPLAB® XC C Compilers (DS52059) foar mear ynformaasje.

As jo ​​kieze om de gearstaller út te fieren ûnder de evaluaasjelisinsje, krije jo no in warskôging by kompilaasje as jo binnen 14 dagen binne nei it ein fan jo evaluaasjeperioade. Deselde warskôging wurdt útjûn as jo binnen 14 dagen binne nei it ein fan jo HPA-abonnemint.

De XC Network License Server is in aparte ynstallearder en is net opnommen yn 'e ien-brûkers kompilerynstallearder.

De XC License Manager stipet no roaming fan driuwende netwurklisinsjes. Rjochte op mobile brûkers, dizze funksje lit in driuwende lisinsje foar in koarte perioade fan it netwurk gean. Mei dizze funksje kinne jo de ferbining losmeitsje fan it netwurk en jo MPLAB XC-kompiler noch brûke. Sjoch de doc-map fan 'e XCLM-ynstallaasje foar mear oer dizze funksje. MPLAB X IDE omfettet in lisinsjefinster (Tools > Lisinsjes) om roaming visueel te behearjen.

It oplossen fan ynstallaasjeproblemen

As jo ​​swierrichheden ûnderfine by it ynstallearjen fan de kompilator ûnder ien fan 'e Windows-bestjoeringssystemen, besykje dan de folgjende suggestjes.

  • Laad de ynstallaasje as behearder.
  • Stel de tagongsrjochten fan 'e ynstallearderapplikaasje yn op 'Folsleine kontrôle'. (Rjochtsklikke op file, selektearje Eigenskippen, ljepper Feiligens, selektearje brûker, bewurkje.)
  • Stel de tagongsrjochten fan 'e tydlike map yn op "Folsleine kontrôle!

Om de lokaasje fan 'e temp-map te bepalen, typ %temp% yn it Run-kommando (Windows-logo-kaai + R). Dit sil iepenje in file explorer-dialooch dy't dizze map toant en sil jo it paad fan dy map kinne bepale.

Kompilator dokumintaasje

De brûkersgidsen fan 'e kompilator kinne wurde iepene fanút de HTML-side dy't iepenet yn jo blêder as jo op de blauwe helpknop yn it MPLAB X IDE-dashboard klikke, lykas oanjûn yn 'e skermôfbylding.

Kompilator dokumintaasje
As jo ​​bouwe foar 8-bit AVR-doelen, befettet de MPLAB® XC8 C Compiler User's Guide foar AVR® MCU ynformaasje oer dy kompilatoropsjes en funksjes dy't fan tapassing binne op dizze arsjitektuer.

Klant Support

Microchip ferwolkommet bugrapporten, suggestjes of opmerkings oangeande dizze kompilerferzje. Rjochtsje asjebleaft alle brekrapporten of funksjefersiken fia it Support System.

Dokumintaasje Updates

Foar online en aktuele ferzjes fan MPLAB XC8 dokumintaasje, besykje asjebleaft Microchip's Online Technical Documentation website.

Nije as bywurke AVR-dokumintaasje yn dizze útjefte:

  • MUSL copyright notice
  • Ynstallearje en lisinsje fan MPLAB XC C-kompilers (ferzje M)
  • MPLAB XC8 User!s Guide foar Embedded Engineers - AVR MCU's (ferzje A)
  • MPLAB XC8 C Compiler User!s Guide foar AVR MCU (ferzje F)
  • Microchip Unified Standard Library Reference Guide (ferzje B)

De Microchip Unified Standert Bibleteek Reference Guide beskriuwt it gedrach fan en ynterface nei de funksjes definiearre troch de Microchip Unified Standert Bibleteek, likegoed as it bedoeld gebrûk fan de bibleteek typen en makro. Guon fan dizze ynformaasje wie earder befette yn 'e MPLAB® XC8 C Compiler User!s Guide foar AVR® MCU. Apparaatspesifike biblioteekynformaasje is noch altyd befette yn dizze gearstallergids.

As jo ​​​​gewoan begjinne mei 8-bit-apparaten en de MPLAB XC8 C-kompiler, hat de MPLAB® XC8 User!s Guide for Embedded Engineers - AVR® MCU's (DS50003108) ynformaasje oer it ynstellen fan projekten yn 'e MPLAB X IDE en it skriuwen fan koade foar jo earste MPLAB XC8 C-projekt. Dizze gids is no ferspraat mei de kompilator.

De Hamate User's Guide is opnommen yn 'e docs-map yn dizze release. Dizze hantlieding is bedoeld foar dyjingen dy't Hamate útfiere as in standalone applikaasje.

Wat is nij

De folgjende binne nije AVR-doelfunksjes dy't de kompilator no stipet. It ferzjenûmer yn 'e subkoppen jout de earste kompilerferzje oan om de folgjende funksjes te stypjen.

Ferzje 2.40

Nije apparaat stipe Stipe is no beskikber foar de folgjende AVR-dielen: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA, AVR32EA en AVR64EA.
Ferbettere prosedurele abstraksje It optimalisearjen ark foar prosedurele abstraksje (PA) is ferbettere, sadat koade mei in funksje-opropynstruksje (opropoprop)) kin wurde sketst. Dit sil allinich plakfine as de stapel net brûkt wurdt om arguminten troch te jaan of werom te krijen fan 'e funksje. De stack wurdt brûkt by it oanroppen fan in funksje mei in fariabele argumintlist of by it oanroppen fan in funksje dy't mear arguminten nimt as d'r registers binne oanwiisd foar dit doel. Dizze funksje kin útskeakele wurde mei de opsje monk-pa-outline-calls, of prosedurele abstraksje kin folslein útskeakele wurde foar in objekt file of funksje mei de -monk-pa-on-file en -mo.-pa-on-funksje respektivelik, of troch it nipa-attribút (nipa-spesifisator) selektyf te brûken mei funksjes

Koade dekking makro De gearstaller definiearret no de makro __CODECOV as in jildige mcodecov opsje is oantsjutte.

Unthâld reservearring opsje De xc8-cc-bestjoerder sil no de opsje -mreserve=space@start: ein akseptearje by it bouwen foar AVR-doelen. Dizze opsje behâldt it oantsjutte ûnthâldberik yn 'e gegevens- as programma-ûnthâldromte, en foarkomt dat de linker koade of objekten yn dit gebiet befolket.

Smarter smart IO Ferskate ferbetterings binne makke oan 'e Smart IO-funksjes, ynklusyf algemiene tweaks oan' e printf-kearnkoade, behanneljen fan de %n-konverzje-spesifisator as in ûnôfhinklike fariant, keppeljen yn vararg pop-routines op oanfraach, gebrûk fan koartere gegevenstypen wêr mooglik foar it behanneljen fan IO-funksjearguminten , en factoring mienskiplike koade yn fjild breedte en precision handling. Dit kin resultearje yn signifikante koade- en gegevensbesparring, lykas ek de útfieringssnelheid fan IO ferheegje.

Ferzje 2.39 (útjefte fan funksjonele feiligens)

Netwurk Server Lisinsje Dizze útjefte fan 'e MPLAB XC8 Functional Safety Compiler stipet de Network Server License.

Ferzje 2.36

Gjin.

Ferzje 2.35

Nije apparaat stipe Stipe is beskikber foar de folgjende AVR-dielen: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28, en AVR64DD32.

Ferbettere kontekstwikseling De nije opsje -mcall-isr-prologues feroaret hoe't ûnderbrekkingsfunksjes registers opslaan by yngong en hoe't dy registers wersteld wurde as de ûnderbrekkingsroutine beëiniget. It wurket op in fergelykbere manier as de opsje -mcall-prologues, mar hat allinich ynfloed op ynterruptfunksjes (ISR's).

Noch mear ferbettere kontekstwikseling De nije -mgas-isr-prologues-opsje kontrolearret de konteksten itch-koade generearre foar lytse ûnderbrekkingstsjinstroutines. As dizze funksje ynskeakele is, sil de assembler de ISR scannen foar registergebrûk en allinich dizze brûkte registers opslaan as nedich.

Konfigurearbere flash mapping Guon apparaten yn 'e AVR DA- en AVR DB-famylje hawwe in SFR (bgl. FLMAP) dy't spesifisearret hokker 32k-seksje fan programmaûnthâld yn kaart brocht wurdt yn it gegevensûnthâld. De nije - mconst-data-in-config-mapped-proem-opsje kin brûkt wurde om de linker alle neidielen kwalifisearre gegevens yn ien 32k-seksje te pleatsen en automatysk it oanbelangjende SFR-register te initialisearjen om te soargjen dat dizze gegevens yn kaart brocht wurde yn 'e gegevensûnthâldromte , wêr't it effektiver tagong wurdt.

Microchip Unified Standert biblioteken Alle MPLAB XC-kompilators sille in Microchip Unified Standard Library diele, dy't no beskikber is mei dizze release fan MPLAB XC8. De MPLAB® XC8 C Compiler User's Guide / of AVR® MCU befettet net langer de dokumintaasje foar dizze standertfunksjes. Dizze ynformaasje is no te finen yn 'e Microchip Unified Standard Library Reference Guide. Tink derom dat guon funksjonaliteit earder definieare troch avr-libc net mear beskikber is. (Sjoch Bibleteek):'. funksjonaliteit ...)

Smart IO As ûnderdiel fan 'e nije ferienige bibleteken wurde IO-funksjes yn' e print- en scanfamyljes no oanpast oanmakke op elke build, basearre op hoe't dizze funksjes yn it programma wurde brûkt. Dit kin de boarnen brûkt troch in programma substansjeel ferminderje.
Smart IO assistinsje opsje By it analysearjen fan oproppen nei tûke IO-funksjes (lykas printf () of scanf () ), kin de kompilator net altyd bepale út 'e opmaakstring of út' e arguminten dy konverzjespesifisatoren dy't nedich binne troch de oprop ôfliede. Eartiids soe de kompilator altyd gjin oannames meitsje en soargje dat folslein funksjonele IO-funksjes keppele waarden oan it definitive programmaôfbylding. In nije - msmart-io-format=fmt-opsje is tafoege, sadat de kompilator ynstee kin wurde ynformeare troch de brûker fan 'e konverzje-spesifisearrings dy't brûkt wurde troch tûke IO-funksjes wêrfan it gebrûk dûbelsinnich is, om te foarkommen dat te lange IO-routines wurde keppele. (Sjoch opsje smart-io-formaat foar mear details.)

It pleatsen fan oanpaste seksjes Eartiids pleatste de opsje -Wl, -section-start allinich de opjûne seksje op it frege adres as it linkerskript in útfierseksje mei deselde namme definieare. Doe't dat net it gefal wie, waard de seksje pleatst op in adres keazen troch de linker en waard de opsje yn wêzen negearre. No sil de opsje eare wurde foar alle oanpaste seksjes, sels as it linkerskript de seksje net definiearret. Tink derom dat foar standert seksjes, sokke. tekst, . bss of. gegevens, de bêste fit allocator sil noch hawwe folsleine kontrôle oer harren pleatsing, en de opsje sil hawwe gjin effekt. Brûk de -Wl, -Tsection = tafoegje opsje, lykas beskreaun yn 'e brûkershantlieding.

Ferzje 2.32

Stack Begelieding Beskikber mei in PRO-kompilerlisinsje, kin de stackbegeliedingsfunksje fan 'e gearstaller brûkt wurde om de maksimale djipte te skatten fan elke stapel brûkt troch in programma. It konstruearret en analysearret de opropgrafyk fan in programma, bepaalt it stapelgebrûk fan elke funksje, en produsearret in rapport, wêrfan de djipte fan stacks brûkt troch it programma kin wurde ôflaat. Dizze funksje is ynskeakele fia de kommando-rigelopsje -mchp-stack-usage. In gearfetting fan stapelgebrûk wurdt printe nei útfiering. In detaillearre stapelrapport is beskikber yn 'e kaart file, dy't op 'e gewoane wize oanfrege wurde kin.

Nije apparaatstipe Stipe is beskikber foar de folgjende AVR-dielen: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVRXNUMXDBXNUMX en

Ynlutsen apparaat stipe Support is net mear beskikber foar de folgjende AVR dielen: AVR16DA28, AVR16DA32 en, AVR16DA48.

Ferzje 2.31

Gjin.

Ferzje 2.30

Nije opsje om foar te kommen data inisjalisaasje In nije -mno-data-ini t stjoerprogramma opsje foarkomt de inisjalisaasje fan gegevens en it wiskjen fan bss seksjes. It wurket troch it ûnderdrukken fan de útfier fan de do_ copy_ gegevens en d o_ clear_ bss symboalen yn gearstalling files, dat sil op syn beurt foarkomme it opnimmen fan dy routines troch de linker.

Ferbettere optimalisaasjes In oantal optimalisaasjeferbetterings binne makke, ynklusyf it fuortheljen fan oerstallige return-ynstruksjes, it fuortheljen fan guon sprongen nei in skip-as-bit-is ynstruksje, en ferbettere prosedurele abstraksje en de mooglikheid om dit proses te iterearjen.

Oanfoljende opsjes binne no beskikber foar in kontrôle guon fan dizze optimalisaasjes, spesifyk -f seksje ankers, wêrtroch tagong ta statyske objekten wurde útfierd relatyf oan ien symboal; -mpai derations=n, wêrtroch it oantal prosedurele abstraksje-iteraasjes feroare wurde kin fan de standert fan 2; en, -mpa- call cost- shortcall, dy't mear agressive prosedurele abstraksje útfiert, yn 'e hope dat de linker lange petearen kin ûntspanne. Dizze lêste opsje kin koadegrutte fergrutsje as de ûnderlizzende oannames net realisearre wurde.

Nije apparaat stipe Stipe is beskikber foar de folgjende AVR-dielen: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48, en AVR128DB.

Ynlutsen apparaat Support Stipe is net mear beskikber foar de folgjende AVR-dielen: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, en ATA664251ATA.

Ferzje 2.29 (útjefte fan funksjonele feiligens)

Koptekst file foar gearstaller ynboude Om derfoar te soargjen dat de gearstaller kin foldwaan oan taal spesifikaasjes lykas MISRA, de koptekst file, dat wurdt automatysk opnommen troch , is bywurke. Dizze koptekst befettet de prototypen foar alle ynboude funksjes, lykas _buil tin _avrnop () en _buil tin_ avr delay_ cycles (). Guon ynboude binne miskien net MISRA-kompatibel; dizze kinne wurde weilitten troch it tafoegjen fan de define _Xe_ STRICT_ MISRA oan de kompilator kommandorigel. De ynboude yns en har deklaraasjes binne bywurke om typen fan fêste breedte te brûken.

Ferzje 2.20

Nije apparaat stipe Stipe is beskikber foar de folgjende AVR-dielen: ATTINY1624, ATTINY1626, en ATTINY1627.

Better beste fit allocaasje De best fit allocator (BFA) yn 'e gearstaller is ferbettere sadat seksjes wurde tawiisd yn in folchoarder wêrtroch bettere optimalisaasje mooglik is. De BFA stipet no neamde adresromten en behannelet better gegevensinitialisaasje.

Ferbettere prosedurele abstraksje De prosedurele abstraksje-optimalisaasjes wurde no útfierd op mear koade-sekwinsjes. Foarige situaasjes dêr't dizze optimalisaasje koe hawwe ferhege koade grutte binne oanpakt troch it meitsjen fan de optimalisaasje koade bewust fan de linker syn garbage collection proses.

Absence fan AVR Assembler De AVR Assembler is net mear opnommen yn dizze distribúsje.

Ferzje 2.19 (útjefte fan funksjonele feiligens)

Gjin.

Ferzje 2.10

Koadedekking Dizze útjefte omfettet in funksje foar koadedekking dy't de analyze fasilitearret fan 'e mjitte wêryn't de boarnekoade fan in projekt is útfierd. Brûk de opsje -mcodecov=ram om it yn te skeakeljen. Nei it útfieren fan it programma op jo hardware sil koade dekking ynformaasje wurde sammele yn it apparaat, en dit kin wurde oerdroegen oan en werjûn troch de MPLAB X IDE fia in koade dekking plugin. Sjoch de IDE dokumintaasje foar ynformaasje oer dizze plugin kin wurde krigen. De #pragma mcodecov kin brûkt wurde om folgjende funksjes út te sluten fan 'e dekkingsanalyse. Ideal it pragma moat wurde tafoege oan it begjin fan 'e file om dat gehiel út te sluten file út de dekking analyze. As alternatyf kin it attribút ((mcodecov)) brûkt wurde om in spesifike funksje út te sluten fan 'e dekkingsanalyse.

Apparaat beskriuwing files In nij apparaat file neamd avr chipinfo. html leit yn 'e docs-map fan' e kompilerferdieling. Dit file listet alle apparaten stipe troch de kompilator. Klikje op in apparaatnamme, en it sil in side iepenje dy't alle tastiene konfiguraasjebitynstellingen/weardepearen foar dat apparaat toant, mei examples.

Proseduele abstraksje Proseduele abstraksje-optimalisaasjes, dy't gewoane blokken fan assemblagekoade ferfange troch oproppen nei in ekstrahearre kopy fan dat blok, binne tafoege oan de kompilator. Dizze wurde útfierd troch in aparte applikaasje, dy't automatysk wurdt oproppen troch de kompilator by it selektearjen fan nivo 2, 3 of optimalisaasjes. Dizze optimisaasjes ferminderje koadegrutte, mar se kinne útfieringssnelheid en koade-debuggen ferminderje.
Proseduele abstraksje kin útskeakele wurde op hegere optimaliseringsnivaer mei help fan de opsje -mno-pa, of kin ynskeakele wurde op legere optimalisaasje nivo (ûnder foarbehâld fan jo lisinsje) troch it brûken fan -mpa. It kin wurde útskeakele foar in foarwerp file mei -mno-pa-on-file=filenamme, of útskeakele foar in funksje troch te brûken -mno-pa op funksje = funksje.
Binnen jo boarnekoade kin prosedurele abstraksje útskeakele wurde foar in funksje troch _attribute_ ((nopa)) te brûken mei de definysje fan 'e funksje, of troch _nopa te brûken, dy't útwreidet nei attribút ((nopa, noinline)) en dus foarkomt dat funksje-ynlining plakfynt en d'r is abstraksje fan ynline koade.
Slot bit stipe yn pragma De #pragma-konfiguraasje kin no brûkt wurde om de AVR-slotbits te spesifisearjen lykas de oare konfiguraasjebits. Kontrolearje de avr chip info. html file (hjirboppe neamd) foar de ynstelling/wearde-pearen om te brûken mei dit pragma.
Nije apparaat stipe Stipe is beskikber foar de folgjende dielen: AVR28DA128, AVR64DA128, AVR32DA128, en AVR48DA128.

Ferzje 2.05

Mear stikken foar jo jild De macOS-ferzje fan dizze kompilator en lisinsjebehearder is no in 64-bit applikaasje. Dit sil derfoar soargje dat de kompilator sil ynstallearje en útfiere sûnder warskôgings op resinte ferzjes fan macOS.
Const-objekten yn programma-ûnthâld De kompilator kin no const-kwalifisearre objekten pleatse yn it programma Flash-ûnthâld, ynstee fan dat dizze yn RAM lizze. De gearstaller is wizige sadat const-kwalifisearre globale gegevens wurde opslein yn programma-flash-ûnthâld en dizze gegevens kinne direkt en yndirekt tagonklik wurde mei de passende ynstruksjes foar programma-ûnthâld. Dizze nije funksje is standert ynskeakele, mar kin útskeakele wurde mei de opsje -mno-const-data-in-progmem. Foar avrxmega3 en avrtiny arsjitektuer is dizze funksje net fereaske en is altyd útskeakele, sûnt programma ûnthâld wurdt yn kaart brocht yn de gegevens adres romte foar dizze apparaten.
Standert fergees Net lisinsearre (Fergees) ferzjes fan dizze gearstaller tastean no optimisaasjes ta oant en mei nivo 2. Dit sil in ferlykbere, hoewol net identyk, útfier tastean as wat earder mooglik wie mei in standert lisinsje.
Wolkom AVRASM2 De AVRASM2-assembler foar 8-bit-apparaten is no opnommen yn 'e XC8-kompilerynstallearder. Dizze assembler wurdt net brûkt troch de XC8-kompiler, mar is beskikber foar projekten basearre op mei de hân skreaune gearstallingsboarne.
Nije apparaat stipe Stipe is beskikber foar de folgjende dielen: ATMEGA1608, ATMEGA1609, ATMEGA808, en ATMEGA809.

Ferzje 2.00

Driver op it heechste nivo In nije bestjoerder, neamd xc8-cc, sit no boppe de foarige avr-gcc-bestjoerder en de xc8-bestjoerder, en it kin de passende kompilator neame op basis fan 'e seleksje fan it doelapparaat. Dizze stjoerprogramma akseptearret GCC-styl opsjes, dy't of oerset wurde foar of trochjûn nei de kompilator dy't wurdt útfierd. Dizze stjoerprogramma lit in ferlykbere set opsjes mei ferlykbere semantyk brûke mei elk AVR- of PIC-doel en is dus de oanrikkemandearre manier om de kompilator op te roppen. As it nedich is, kin de âlde avr-gcc-bestjoerder direkt oproppen wurde mei de âlde-styl-opsjes dy't it akseptearre yn eardere kompilatorferzjes.

Common C Interface Dizze kompilator kin no oerienkomme mei de MPLAB Common C Interface, wêrtroch boarnekoade makliker wurde kin wurde oer alle MPLAB XC-kompilers. De opsje -mext=cci freget dizze funksje oan, wêrtroch alternatyf syntaksis foar in protte taalútwreidings mooglik is.

Nije bibletekaris bestjoerder In nije bibletekaris bestjoerder is gepositioneerd boppe de foarige PIC bibletekaris en de AVR avr-ar bibletekaris. Dizze stjoerprogramma akseptearret opsjes yn GCC-argyfstyl, dy't of oerset wurde foar of trochjûn nei de bibletekaris dy't útfierd wurdt. De nije bestjoerder lit in ferlykbere set opsjes mei ferlykbere semantyk brûkt wurde om elke PIC- as AVR-biblioteek te meitsjen of te manipulearjen file en is dus de oanrikkemandearre manier om de bibletekaris op te roppen. As nedich foar legacy-projekten, kin de foarige bibletekaris direkt oproppen wurde mei de âlde-styl-opsjes dy't it akseptearre yn eardere kompilatorferzjes.

Migraasje Issues

De folgjende binne funksjes dy't no oars wurde behannele troch de kompilator. Dizze wizigingen kinne modifikaasje fan jo boarnekoade nedich wêze as jo koade nei dizze kompilerferzje portearje. It ferzjenûmer yn 'e subkoppen jout de earste kompilerferzje oan om de folgjende wizigingen te stypjen.

Ferzje 2.40

Gjin.

Ferzje 2.39 (útjefte fan funksjonele feiligens)

Gjin.

Ferzje 2.36

Gjin.

Ferzje 2.35

Behanneling fan string-to-bases (XCS-2420) Om konsistinsje te garandearjen mei oare XC-kompilators, sille de XC8-string-to-funksjes, lykas strtol () ensfh., net langer besykje in ynfierstring te konvertearjen as de opjûne basis grutter is as 36 en sil ynstee errno ynstelle op EINVAL. De C-standert spesifisearret net it gedrach fan 'e funksjes as dizze basiswearde wurdt oerschreden.

Ûngepaste snelheid optimalisaasjes Proseduele abstraksje-optimisaasjes waarden ynskeakele by it selektearjen fan nivo 3-optimisaasjes (-03). Dizze optimalisaasjes ferminderje koadegrutte ten koste fan koadesnelheid, dus moatte net útfierd wurde. Projekten dy't dit optimalisaasjenivo brûke kinne ferskillen yn koadegrutte en útfieringssnelheid sjen as se boud binne mei dizze release.

Biblioteek funksjonaliteit De koade foar in protte fan 'e standert C-bibleteekfunksjes komt no fan Microchip's Unified Standard Library, dy't yn guon omstannichheden oars gedrach kin fertoane yn ferliking mei dat fersoarge troch de eardere avr-libc-bibleteek. Bygelyksample, it is net mear nedich om te keppeljen yn de lprintf_flt bibleteek (-print _flt opsje) te skeakeljen opmakke IO stipe foar float-formaat spesifikaasjes. De tûke IO-funksjes fan 'e Microchip Unified Standard Library makket dizze opsje oerstallich. Dêrneist is it brûken fan _p efterheaksel routines foar string en ûnthâld funksjes (bgl. strcpy_P () ensfh .. ) dy't operearje op const snaren yn flash binne net mear nedich. De standert C-routines (bgl. strcpy ()) sille goed wurkje mei sokke gegevens as de funksje const-data-in-program-memory ynskeakele is.

Ferzje 2.32

Gjin.

Ferzje 2.31

Gjin.

Ferzje 2.30

Gjin.

Ferzje 2.29 (útjefte fan funksjonele feiligens)

Gjin.

Ferzje 2.20

DFP-yndieling feroare De kompilator nimt no in oare yndieling oan dy't brûkt wurdt troch DFP's (Device Family Packs). Dit sil betsjutte dat in âldere DFP miskien net wurket mei dizze release, en âldere kompilatoren sille de lêste DFP's net kinne brûke.

Ferzje 2.19 (útjefte fan funksjonele feiligens)

Gjin.

Ferzje 2.10

Gjin

Ferzje 2.05

Const objekten yn programma ûnthâld Tink derom dat de standert, const-kwalifisearre objekten wurde pleatst en tagong ta programma ûnthâld (lykas hjir beskreaun). Dit sil ynfloed hawwe op de grutte en útfieringssnelheid fan jo projekt, mar moat RAM-gebrûk ferminderje. Dizze funksje kin útskeakele wurde, as nedich, mei de opsje -mnoconst- da ta-in-progmem.

Ferzje 2.00

Konfiguraasje fuses De fuses foar apparaatkonfiguraasje kinne no programmearre wurde mei in konfiguraasjepragma folge troch ynstelling-wearde-pearen om de lontstatus oan te jaan, bgl.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Absolute objekten en funksjes Objekten en funksjes kinne no op spesifyk adres yn it ûnthâld pleatst wurde mei de CCI _at (adres) spesifikaasje, bygelyksample: #ynklusyf int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } It argumint foar dizze spesifikaasje moat in konstante wêze dy't it adres fertsjintwurdiget wêrop de earste byte of ynstruksje pleatst wurde sil. RAM-adressen wurde oanjûn mei in offset fan 0x800000. Aktivearje de CCI om dizze funksje te brûken.
Nije ûnderbrekkingsfunksje syntaksis De kompilator akseptearret no de CCI-ûnderbrekking (num) spesifisator om oan te jaan dat C-funksjes ûnderbrekkingshannelers binne. De spesifisator nimt in ûnderbrekkingsnûmer, bygelyksample: #ynklusyf void interrupt(SPI STC_ vect _num) spi Isr(void) { … }

Fêste problemen

De folgjende binne korreksjes dy't makke binne oan 'e kompilator. Dizze kinne bugs reparearje yn 'e oanmakke koade of feroarje de wurking fan' e kompilator nei dat dat wie bedoeld of spesifisearre troch de brûkershantlieding. It ferzjenûmer yn 'e subkoppen jout de earste kompilerferzje oan dy't reparaasjes befetsje foar de problemen dy't folgje. De label(s) mei heakjes yn 'e titel binne de identifikaasje fan dat probleem yn 'e trackingdatabase. Dizze kinne nuttich wêze as jo kontakt opnimme moatte mei stipe.

Tink derom dat guon apparaatspesifike problemen binne korrizjearre yn it Device Family Pack (DFP) ferbûn mei it apparaat. Sjoch de MPLAB Pack Manager foar ynformaasje oer feroarings makke oan DFP's en om de lêste pakketten te downloaden.

Ferzje 2.40

Te ûntspannen (XCS-2876) By it brûken fan de -mrelax-opsje wie de kompilator guon seksjes net byinoar, wat resultearre yn minder optimale koadegrutte. Dit kin bard wêze mei koade dy't de nije MUSL-biblioteken brûkte of mei swakke symboalen.
Mappingfunksje net útskeakele lykas oanjûn yn warskôging (XCS-2875) De funksje cost-data-in-config mapdprogmem is ôfhinklik fan 'e kosten-data-in-proem-funksje dy't ynskeakele is. As de kosten-data-ipconfig-mapped-proem-funksje eksplisyt ynskeakele wie mei de opsje en de kosten-data-inprogmem-funksje wie útskeakele, mislearre de keppelingstap, nettsjinsteande in warskôgingsberjocht dat stelt dat de cons data-in-config-mapped- proem-funksje wie automatysk útskeakele, wat net hielendal korrekt wie. De funksje const-data-in-config-mapped-proem is no folslein útskeakele yn dizze situaasje.
DFP feroaret om korrekt tagong te krijen ta NVMCTRL (XCS-2848) De runtime opstartkoade brûkt troch AVR64EA-apparaten hat der gjin rekken mei hâlden dat it NVMCTRL-register ûnder Configuration Change Protection (CCP) wie en de IO SFR net ynstelle koe op de side brûkt troch de const-data-in configmapped-proem-kompiler eigenskip. Feroarings makke yn AVR-Ex_DFP ferzje 2.2.55 sille tastean de runtime opstarten koade goed te skriuwen nei dit register.
DFP-feroarings om flashmapping te foarkommen (XCS-2847) In work-around foar in probleem mei de flash mapping apparaat funksje rapportearre yn de AVR128DA28/32/48/64 Silicon Errata (DS80000882) is ymplementearre. De funksje const-data-in-config-mapped-proem-kompiler sil net standert tapast wurde foar troffen apparaten, en dizze feroaring sil ferskine yn AVR-Ex_DFP ferzje 2.2.160.
Bou flater mei sinhf of coshf (XCS-2834) Pogingen om de sinhf () of coshf () bibleteekfunksjes te brûken resultearre yn in keppelingflater, dy't in ûndefinieare referinsje beskriuwt. De ferwiisde ûntbrekkende funksje is no opnommen yn 'e kompilerferdieling.
Bou flaters mei nopa (XCS-2833) Mei help fan de nopa attribút mei in funksje dy't hat hie syn assembler namme oantsjutte mei help as () triggered flater berjochten fan de assembler. Dizze kombinaasje is net mooglik.
Variadic funksje mislearring mei oanwizer arguminten (XCS-2755, XCS-2731) Funksjes mei in fariabele oantal arguminten ferwachtsje dat 24-bit (_memo-type) oanwizers wurde trochjûn yn 'e fariabele argumintlist as de kosten-data-in-proem-funksje ynskeakele is. Arguminten dy't oanwizers wiene foar gegevensûnthâld waarden trochjûn as 16-bit objekten, wêrtroch koade mislearre doe't se úteinlik waarden lêzen. As de funksje tsjin gegevens-in-proem ynskeakele is, wurde alle 16-bit-oanwizersarguminten no omboud ta 24-bit-oanwizers. strtoxxx bibleteek funksjes failing (XCS-2620) Doe't const-data-in-proem funksje wie ynskeakele, de enter parameter yn de strtoxxx bibleteek funksjes waard net bywurke goed foar boarne string arguminten net yn programma ûnthâld.
Alerts foar ûnjildige casts (XCS-2612) De kompilator sil no in flater útjaan as de kosten-in-proem-funksje ynskeakele is en it adres fan in letterlike tekenrige wurdt eksplisyt cast nei gegevensadresromte (de const-kwalifikaasje litte litte), bygelyksample, (uint8 t *) "Hello World!". In warskôging is probleem as it adres miskien ûnjildich is as in const-gegevensoanwizer eksplisyt nei gegevensadresromte wurdt cast.
Pleatsing fan net inisjalisearre konstobjekten (XCS-2408) Uninitialisearre const en const v olatile foarwerpen waarden net pleatst yn programma ûnthâld op apparaten dy't map al of in part fan harren programma ûnthâld yn de gegevens adres romte. Foar dizze apparaten wurde sokke objekten no yn programma-ûnthâld pleatst, wat har wurking konsekwint makket mei oare apparaten.

Ferzje 2.39 (útjefte fan funksjonele feiligens)

Gjin.

Ferzje 2.36

Flater by fertraging (XCS-2774) Lytse feroarings yn 'e standert frije modus optimisaasjes foarkamen konstante fold fan operand-útdrukkingen nei de fertraging ynboude funksjes, wat resultearre yn' e wurde behannele as net-kontakten en trigger de flater: _buil tin avr delay_ cycles expects ac ompile tiid integer konstante.

Ferzje 2.35

Trochrinnende tawizing mei _at (XCS-2653) Trochrinnende tawizing fan meardere objekten plakken yn in seksje mei deselde namme en gebrûk by () wurke net goed. Bygelyksample: constchararrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; kosten char arr2[ ] at tri butte ((section(“.my s eke”))) = {Oxen, Ox FE }; moatten pleatst arr2 fuortendaliks nei aril.
Oantsjutte seksje startadressen (XCS-2650) De opsje -Wal, -section-start mislearre yn stilte om seksjes te pleatsen op it nominearre startadres. Dit probleem is reparearre foar alle oanpaste-neamde seksjes; lykwols, it sil net wurkje foar alle standert seksjes, lykas. tekst of. bss, dat moat wurde pleatst mei in -Wl, -T opsje.
Linker crasht by ûntspannen (XCS-2647) Doe't de -relax-optimalisaasje ynskeakele wie en d'r wiene koade- of gegevensseksjes dy't net passe yn it beskikbere ûnthâld, ferûngelokke de linker. No wurde yn sa'n omstannichheid ynstee flaterberjochten útjûn.
Slechte EEPROM tagong (XCS-2629) De leproma _read_-blokroutine wurke net goed op Mega-apparaten doe't de -monist-data-in-proem-opsje ynskeakele wie (wat de standertstatus is), wêrtroch't EEPROM-ûnthâld net goed lêzen waard.
Unjildich ûnthâld tawizing (XCS-2593, XCS-2651) As de -Tekst of -Tata linker opsje (bygelyksample trochjûn mei in -Wl stjoerprogramma opsje) wurdt oantsjutte, de oerienkommende tekst / gegevens regio oarsprong waard bywurke; lykwols, it ein adres waard net oanpast neffens, dat koe hawwe laat ta de regio boppe it doel apparaat syn ûnthâld berik.
Unjildige ATtiny-ûnderbrekkingskoade (XCS-2465) By it bouwen foar Tatin-apparaten en de optimisaasjes waarden útskeakele (-00), kinne ûnderbrekkingsfunksjes operand bûten berik assembler-berjochten hawwe trigger.
Opsjes wurde net trochjûn (XCS-2452) By it brûken fan de -Wl opsje mei meardere, komma-skieden linker opsjes, net alle linker opsjes waarden trochjûn oan de linker.
Flater yndirekt lêzen fan programmaûnthâld (XCS-2450) Yn guon gefallen produsearre de kompilator in ynterne flater (ûnherkenbere insn) by it lêzen fan in wearde fan twa byte fan in oanwizer nei programma-ûnthâld

Ferzje 2.32

Twadde tagong fan biblioteek mislearret (XCS-2381) De Windows-ferzje fan 'e xc8-ar oproppe. exe biblioteek argyf in twadde kear om tagong te krijen ta in besteande biblioteek argyf kin mislearre mei in net mooglik omneame flater berjocht.

Ferzje 2.31

Unferklearbere kompilerflaters (XCS-2367) By it útfieren op Windows-platfoarms dy't de tydlike systeemmap ynsteld hie op in paad dat in punt omfette'. karakter, kin de kompilator net útfiere.

Ferzje 2.30

Globale etiketten ferkeard pleatst nei skets (XCS-2299) Mei de hân skreaune gearstallingskoade dy't globale labels pleatst binnen gearstallingssekwinsjes dy't troch prosedurele abstraksje faktuearre binne, is miskien net korrekt wersteld.
In ûntspannen crash (XCS-2287) It brûken fan de -merlad opsje koe hawwe feroarsake de linker te crashe doe't tail jump relaxation optimizations besocht te fuortsmite ret ynstruksje dy't wiene net oan 'e ein fan in seksje.
Crash by it optimalisearjen fan labels as wearden (XCS-2282) Koade mei de "Labels as wearden" GNU C-taalútwreiding kin feroarsake hawwe dat de prosedurele abstraksje-optimalisaasjes crashen, mei in sketste VMA-berik omspant fixupflater.
Not so const (XCS-2271) De prototypes foar begjint () en oare funksjes út net mear spesifisearje de net-standert kosten kwalifikaasjetoernoai op werom string pointers as de -monist-data inprogmem funksje is útskeakele. Tink derom dat mei avrxmega3- en avertin-apparaten dizze funksje permanint ynskeakele is.
Ferlern initializers (XCS-2269) As mear as ien fariabele yn in oersetienheid waard pleatst yn in seksje (mei seksje of attribút ((seksje))), en de earste sa'n fariabele waard nul inisjalisearre of hie gjin initializer, initializers foar oare fariabelen yn deselde oersetting ienheid dy't waarden pleatst yn deselde seksje binne ferlern gien.

Ferzje 2.29 (útjefte fan funksjonele feiligens)

Gjin.

Ferzje 2.20

Flater mei lange kommando's (XCS-1983) By it brûken fan in AVR-doel, kin de gearstaller stoppe mei in file net fûn flater, as de kommandorigel ekstreem grut wie en spesjale tekens befette, lykas quotes, backslashes, ensfh.
Net-tawiisde rodata-seksje (XCS-1920) De AVR-linker koe ûnthâld net tawize foar oanpaste rodata-seksjes by it bouwen foar avrxmega3- en avrtiny-arsjitektueren, wêrtroch mooglik ûnthâld-oerlapflaters produsearre

Ferzje 2.19 (útjefte fan funksjonele feiligens)

Gjin.

Ferzje 2.10

Ferhuzing mislearrings (XCS-1891) De beste fit allocator wie it ferlitten fan ûnthâld 'gaten' tusken seksjes nei linker ûntspanning. Njonken it fragmintearjen fan ûnthâld, fergrutte dit de mooglikheid dat d'r mislearrings foar linkerferpleatsing wiene yn ferbân mei pc-relatyf sprongen of oproppen dy't bûten berik wurde.
Ynstruksjes net feroare troch ûntspanning (XCS-1889) Linkerrelaksje kaam net foar foar sprong- of opropynstruksjes wêrfan de doelen berikber wurde as ûntspannen.
Missing funksjonaliteit (XCSE-388) Ferskate definysjes út , lykas clock_ div_ t en clock_prescale_set (), waarden net definiearre foar apparaten, ynklusyf de ATmega324PB, ATmega328PB, ATtiny441, en ATtiny841.
Makro's ûntbrekke De preprocessor makros_ xcs _MODE_, _xcs VERSION, _xc, en xcs waarden net automatysk definiearre troch de kompilator. Dizze binne no beskikber.

Ferzje 2.05

Ynterne kompilerflater (XCS-1822) By it bouwen ûnder Windows kin in ynterne kompilerflater makke wurde by it optimalisearjen fan koade.
RAM-oerstream net ûntdutsen (XCS-1800, XCS-1796) Programma's dy't boppe dat beskikbere RAM wiene, waarden yn guon situaasjes net ûntdutsen troch de kompilator, wat resultearre yn in runtime-koadefout.
Welitten flash-ûnthâld (XCS-1792) Foar avrxmega3- en avrtiny-apparaten kinne dielen fan it flashûnthâld ûnprogrammearre wurde litten troch de MPLAB X IDE.
Net útfiere main (XCS-1788) Yn guon situaasjes dêr't it programma hie gjin globale fariabelen definiearre, de runtime startup koade net út en de wichtichste () funksje waard nea berikt.
Unjildich ûnthâld ynformaasje (XCS-1787) Foar avrxmega3- en avrtiny-apparaten melde it programma fan avr-grutte dat allinich-lêzen gegevens RAM konsumearje ynstee fan programmaûnthâld.
Unjildich programma ûnthâld lêzen (XCS-1783) Projekten gearstald foar apparaten mei programma ûnthâld yn kaart brocht yn de gegevens adres romte en dy't definiearje foarwerpen mei help fan de PROGMEM makro / attribút miskien hawwe lêzen dizze objekten út it ferkearde adres.
Ynterne flater mei attributen (XCS-1773) In ynterne flater barde as jo definiearre pointer foarwerpen mei de
_at () of attribút () tokens tusken de oanwizer namme en dereferenced type, bygelyksample, char*
_at ( 0x80015 0) cp; Der wurdt no in warskôging útjûn as sa'n koade tsjinkomt.
Net útfiere main (XCS-1780, XCS-1767, XCS-1754) It brûken fan EEPROM-fariabelen of it definiearjen fan fuses mei it konfiguraasje-pragma kin in ferkearde gegevensinitialisaasje en/of programma-útfiering yn 'e runtime-opstartkoade feroarsake hawwe foardat it haad () .
Fuse flater mei lytse apparaten (XCS-1778, XCS-1742) De attiny4/5/9/10/20/40-apparaten hiene in ferkearde lontlange spesifisearre yn har koptekst files dy't liede ta linker flaters as jo besykje te bouwen koade dy't definiearre lont.
Segmentaasjefout (XCS-1777) In intermitterende segmentaasjefout is korrizjearre.
Assembler crash (XCS-1761) De avr-as assembler koe ferûngelokke wêze doe't de kompilator ûnder Ubuntu 18 waard útfierd.
Objekten net wiske (XCS-1752) Net inisjalisearre objekten mei statyske opslachduur binne mooglik net wiske troch de startkoade foar runtime.
Konflikt apparaatspesifikaasje negearre (XCS-1749) De gearstaller genereart gjin flater doe't meardere apparaatspesifikaasjeopsjes waarden brûkt en ferskate apparaten oanjûn.
Unthâldkorrupsje troch heap (XCS-1748) It heap_-startsymboal waard ferkeard ynsteld, wat resultearre yn 'e mooglikheid dat gewoane fariabelen beskeadige wurde troch de heap.
Ferpleatsflater fan keppelings (XCS-1739) In linker-ferpleatsingsflater kin wêze útstjoerd as koade in rjmp of rcall befette mei in doel krekt 4k bytes fuort.

Ferzje 2.00

Gjin.

Bekende problemen

De folgjende binne beheiningen yn 'e operaasje fan' e kompilator. Dit kinne algemiene kodearringbeperkingen wêze, of
ôfwikingen fan ynformaasje befette yn de brûker syn hânboek. De label(s) mei heakjes yn 'e titel binne de identifikaasje fan dat probleem yn 'e trackingdatabase. Dit kin fan foardiel wêze as jo kontakt opnimme moatte mei stipe. Dy items dy't gjin labels hawwe binne beheiningen dy't de modus operandi beskriuwe en dy't wierskynlik permanint yn wurking bliuwe.

MPLAB X IDE Yntegraasje

MPLAB IDE yntegraasje As Compiler moat wurde brûkt fan MPLAB IDE, dan moatte jo MPLAB IDE ynstallearje foardat jo Compiler ynstallearje.

Koade Generaasje

PA ûnthâld tawizing flater (XCS-2881) By it brûken fan de prosedurele abstraksje-optimizers, kin de linker miskien melde flaters foar ûnthâldallokaasje as koadegrutte tichtby it bedrach fan beskikber programmaûnthâld op it apparaat is, ek al soe it programma de beskikbere romte kinne passe.
Net sa smart Smart-IO (XCS-2872) De smart-io-funksje fan 'e kompilator sil jildige, mar sub-optimale koade generearje foar de sprintfunksje as de funksje kust-data-in-proem is útskeakele of as it apparaat al syn flash hat yn kaart brocht yn gegevensûnthâld.
Noch minder smart Smart-IO (XCS-2869) De smart-io-funksje fan 'e kompilator sil jildige, mar suboptimale koade generearje as de opsjes -floe en -fno-buil tin beide wurde brûkt.
Suboptimale lês-allinnich gegevens pleatsing (XCS-2849) De linker is op it stuit net bewust fan 'e APPCODE- en APPDATA-ûnthâldseksjes, noch de [No-]Read-While-Write-ôfdielingen yn 'e ûnthâldkaart. As gefolch is d'r in lytse kâns dat de linker allinich lêsgegevens tawize kin yn in net geskikt gebiet fan ûnthâld. De kâns op ferkeard pleatst gegevens nimt ta as de kust-data-yn-pragma-funksje ynskeakele is, benammen as de funksje coast-data-in-config-mapped-proem ek ynskeakele is. Dizze funksjes kinne as nedich wurde útskeakele.
Objekt file ferwurkjen oarder (XCS-2863) De folchoarder wêryn objekten files wurde ferwurke troch de linker kin ferskille basearre op it brûken fan prosedurele abstraksje optimizations (-mpa opsje). Dit soe allinich ynfloed hawwe op koade dy't swakke funksjes definiearret oer meardere modules.
Linker flater mei absolute (XCS-2777) As in objekt absolút makke is op in adres oan it begjin fan RAM en net-inisjalisearre objekten binne ek definieare, kin in linkerflater wurde trigger.
Koarte wekker-ID's (XCS-2775) Foar ATA5700/2-apparaten wurde de PHID0/1-registers allinich definieare as 16 bits breed, ynstee fan 32 bits breed.
Linker crash by it roppen fan symboal (XCS-2758) De linker kin crashe as de -merlad stjoerprogramma opsje wurdt brûkt as de boarne koade ropt in symboal dat is definiearre mei de -Wl, -defsym linker opsje.
Ferkearde inisjalisaasje (XCS-2679) D'r is in diskrepânsje tusken wêr't de begjinwearden foar guon globale / statyske byte-grutte objekten wurde pleatst yn gegevensûnthâld en wêr't de fariabelen tagonklik wurde by runtime.
begûn ferkeard set leech (XCS-2652) Yn gefallen dêr't in ûnderwerpstring foar konverzje troch opjûne () befettet wat liket te wêzen in driuwend-puntnûmer yn eksponinsjele opmaak en der is in ûnferwacht karakter nei in e-teken, dan sil it lege adres, as opjûn, ferwize nei it karakter nei de e en net de e sels. Bygelyksample: stated ("hooey", leech); sil resultearje yn lege wizend nei it x karakter.
Slechte yndirekte funksje-oanroppen (XCS-2628) Yn guon gefallen kinne funksje-oanroppen makke fia in funksje-oanwizer opslein as ûnderdiel fan in struktuer miskien mislearje.
strtof jout nul foar heksadesimale floaten (XCS-2626) De bibleteekfunksjes strtof () et al en scanf () et al, sille altyd in heksadesimale driuwende-puntnûmer konvertearje dat gjin eksponint spesifisearret nei
nul. Bygelyksample: stator ("Uil", & leech); sil de wearde 0 werombringe, net 1.
Unkrekte stackadvisor-berjochten (XCS-2542, XCS-2541) Yn guon gefallen, de stack adviseur warskôging oangeande rekursion of ûnbepaalde stapel brûkt (mooglik troch it brûken fan alloca ()) wurdt net útstjoerd.
Mislearring mei dûbele ûnderbrekkingskoade (XCS-2421) Wêr't mear as ien ûnderbrekkingsfunksje itselde lichem hat, kin de kompilator de útfier hawwe foar ien ûnderbrekkingsfunksje de oare oproppe. Dit sil resultearje yn alle call-clobbered registers wurde bewarre ûnnedich, en de interrupts sille wurde ynskeakele noch foardat de epilooch fan de hjoeddeiske interrupt handler hat útfierd, wat kin liede ta koade flater.
Const objekten net yn programma ûnthâld (XCS-2408) Foar avrxmega3 en avertins projekten unidealized const objekten wurde pleatst yn gegevens ûnthâld, ek al in warskôging suggerearret dat se binne pleatst yn programma ûnthâld. Dit sil gjin ynfloed op apparaten dy't net hawwe programma ûnthâld yn kaart brocht yn de gegevens ûnthâld romte, noch sil beynfloedzje alle foarwerp dat wurdt inisjalisearre.
Ferkearde útfier mei ûnjildich DFP-paad (XCS-2376) As de kompilator wurdt oproppen mei in ûnjildich DFP-paad en in 'spec' file bestiet foar it selekteare apparaat, de kompilator rapportearret it ûntbrekkende apparaatfamyljepakket net en selekteart ynstee de 'spec' file, wat dan liede kin ta in ûnjildige útfier. De 'spesifikaasje' files miskien net by de tiid mei de ferspraat DFPs en wiene bedoeld foar gebrûk mei ynterne gearstaller testen allinne.
Unthâldoerlap net ûntdutsen (XCS-1966) De gearstaller is net detect de ûnthâld oerlaap fan objekten makke absolút op in adres (fia by ()) en oare objekten mei help fan de seksje () specifier en dy't keppele binne oan itselde adres.
Mislearring mei biblioteekfunksjes en _meme (XCS-1763) Neamde limbyske floatfunksjes mei in argumint yn 'e _memo-adresromte kinne mislearje. Tink derom dat biblioteekroutines wurde neamd fan guon C-operators, dus bglample, de folgjende koade wurdt beynfloede: werom regFloatVar> memxFloatVar;
Beheinde limbike ymplemintaasje (AVRTC-731) Foar de ATTiny4/5/9/10/20/40-produkten is de ymplemintaasje fan standert C / Math-bibleteek yn limbike heul beheind as net oanwêzich.
Programma ûnthâld beheiningen (AVRTC-732) Programma ûnthâld ôfbyldings foarby 128 kb wurde stipe troch de toolchain; lykwols, der binne bekende eksimplaren fan linker ôfbrekke sûnder ûntspanning en sûnder in nuttich flater berjocht yn stee fan it generearjen fan de fereaske funksje stubs as de -relax opsje wurdt brûkt.
Beperkingen foar nammeromte (AVRTC-733) Neamde adresromten wurde stipe troch de toolchain, ûnder foarbehâld fan de beheiningen neamd yn 'e brûker syn gids seksje Special Type Qualifiers.
Tiid sônes De biblioteekfunksjes nimme GMT oan en stypje gjin lokale tiidsônes, dus lokale tiid () sil deselde tiid weromkomme as gummite (), bygelyksample.

CUSTOMER SUPPORT

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

Dokuminten / Resources

MICROCHIP MPLAB XC8 C Compiler Software [pdf] Hânlieding foar brûkers
MPLAB XC8 C, MPLAB XC8 C Compiler Software, Compiler Software, Software

Referinsjes

Lit in reaksje efter

Jo e-mailadres sil net publisearre wurde. Ferplichte fjilden binne markearre *