MICROCHIP MPLAB XC8 C Compiler Software
DETTE DOKUMENT INDEHOLDER VIGTIGE OPLYSNINGER VEDRØRENDE MPLAB XC8 C-COMPILEREN, NÅR MÅLRETTES TIL MICROCHIP AVR-ENHEDER.
LÆS DET VENLIGST, FØR DU KØRER DENNE SOFTWARE. SE MPLAB XC8 C COMPILER-UDGIVELSESBEMÆRKNINGER TIL PIC-DOKUMENT, HVIS DU BRUGER COMPILEREN TIL 8-BIT PIC-ENHEDER.
Overview
Indledning
Denne udgivelse af Microchip MPLAB® XC8 C-kompileren indeholder flere nye funktioner, fejlrettelser og ny enhedsunderstøttelse.
Byggedato
Den officielle byggedato for denne compilerversion er den 3. juli 2022.
Forrige Version
Den tidligere MPLAB XC8 C compilerversion var 2.39, en funktionel sikkerhedskompiler, bygget den 27. januar 2022. Den tidligere standardkompiler var version 2.36, bygget den 27. januar 2022.
Funktionel sikkerhedsmanual
En funktionel sikkerhedsmanual til MPLAB XC-kompilatorerne er tilgængelig i dokumentationspakken, når du køber en funktionel sikkerhedslicens.
Komponentlicenser og -versioner
MPLAB® XC8 C Compiler til AVR MCUs værktøjer er skrevet og distribueret under GNU General Public License (GPL), hvilket betyder, at dens kildekode er frit distribueret og tilgængelig for offentligheden. Kildekoden til værktøjer under GNU GPL kan downloades separat fra Microchip's webwebsted. Du kan læse GNU GPL i file navngivet placeret underbiblioteket til din installationsmappe. En generel diskussion af principperne bag GPL kan findes her. Supportkode til overskriften files, linker-scripts og runtime-biblioteker er proprietær kode og ikke omfattet af GPL.
Denne compiler er en implementering af GCC version 5.4.0, binutils version 2.26 og bruger avr-libc version 2.0.0.
Systemkrav
MPLAB XC8 C-kompileren og den licenssoftware, den bruger, er tilgængelige for en række forskellige operativsystemer, herunder 64-bit versioner af følgende: Professionelle udgaver af Microsoft Windows 10; Ubuntu 18.04; og macOS 10.15.5. Binære filer til Windows er kodesigneret. Binære filer til mac OS er blevet kodesigneret og notariseret.
Hvis du kører en netværkslicensserver, må kun computere med operativsystemer understøttet af kompilatorerne bruges til at være vært for licensserveren. Fra og med xclm version 2.0 kan netværkslicensserveren installeres på en Microsoft Windows Server-platform, men licensserveren behøver ikke at køre på en serverversion af operativsystemet.
Understøttede enheder
Denne compiler understøtter alle 8-bit AVR MCU-enheder kendt på udgivelsestidspunktet. Se (i compilerens doc-mappe) for en liste over alle understøttede enheder. Disse files viser også konfigurationsbitindstillinger for hver enhed.
Udgaver og licensopgraderinger
MPLAB XC8-kompileren kan aktiveres som et licenseret (PRO) eller ikke-licenseret (gratis) produkt. Du skal købe en aktiveringsnøgle for at licensere din compiler. En licens giver mulighed for et højere niveau af optimering sammenlignet med det gratis produkt. En ulicenseret compiler kan betjenes på ubestemt tid uden en licens.
En MPLAB XC8 Functional Safety-kompiler skal aktiveres med en funktionel sikkerhedslicens købt hos Microchip. Compileren fungerer ikke uden denne licens. Når den er aktiveret, kan du vælge et hvilket som helst optimeringsniveau og bruge alle kompileringsfunktionerne. Denne udgivelse af MPLAB XC Functional Safety Compiler understøtter netværksserverlicensen.
Se dokumentet Installation og licensering af MPLAB XC C Compilers (DS50002059) for oplysninger om licenstyper og installation af compileren med en licens.
Installation og aktivering
Se også afsnittet Migrationsproblemer og -begrænsninger for vigtige oplysninger om den seneste licensmanager, der er inkluderet i denne compiler.
Hvis du bruger MPLAB IDE, skal du sørge for at installere den seneste MPLAB X IDE version 5.0 eller nyere, før du installerer dette værktøj. Afslut IDE, før du installerer compileren. Kør .exe (Windows), .run (Linux) eller app (macOS) compiler installationsprogrammet, f.eks. XC8-1.00.11403-windows.exe, og følg anvisningerne på skærmen.
Standardinstallationsbiblioteket anbefales. Hvis du bruger Linux, skal du installere compileren ved hjælp af en terminal og fra en root-konto. Installer ved hjælp af en macOS-konto med administratorrettigheder.
Aktivering udføres nu separat i forhold til installation. Se dokumentet License Manager for MPLAB® XC C Compilers (DS52059) for mere information.
Hvis du vælger at køre compileren under evalueringslicensen, får du nu en advarsel under kompileringen, når du er inden for 14 dage efter udløbet af din evalueringsperiode. Den samme advarsel udsendes, hvis du er inden for 14 dage efter udløbet af dit HPA-abonnement.
XC Network License Server er et separat installationsprogram og er ikke inkluderet i enkeltbruger-compilerinstallationsprogrammet.
XC License Manager understøtter nu roaming af flydende netværkslicenser. Denne funktion, der er rettet mod mobilbrugere, tillader en flydende licens at gå ud af netværket i en kort periode. Ved at bruge denne funktion kan du afbryde forbindelsen til netværket og stadig bruge din MPLAB XC-kompiler. Se doc-mappen til XCLM-installationen for mere om denne funktion. MPLAB X IDE indeholder et licensvindue (Værktøjer > Licenser) til visuelt at styre roaming.
Løsning af installationsproblemer
Hvis du oplever problemer med at installere compileren under et af Windows-operativsystemerne, kan du prøve følgende forslag.
- Kør installationen som administrator.
- Indstil tilladelserne for installationsprogrammet til 'Fuld kontrol'. (Højreklik på file, vælg Egenskaber, fanen Sikkerhed, vælg bruger, rediger.)
- Indstil tilladelser for den midlertidige mappe til "Fuld kontrol!
For at bestemme placeringen af den midlertidige mappe skal du skrive %temp% i Kør-kommandoen (Windows-logotasten + R). Dette åbner en file Explorer-dialogen, der viser den mappe og giver dig mulighed for at bestemme stien til den pågældende mappe.
Kompiler dokumentation
Kompilerens brugervejledninger kan åbnes fra HTML-siden, der åbnes i din browser, når du klikker på den blå hjælpeknap i MPLAB X IDE-dashboardet, som vist på skærmbilledet.
Hvis du bygger til 8-bit AVR-mål, indeholder MPLAB® XC8 C Compiler Brugervejledning til AVR® MCU oplysninger om de kompileringsmuligheder og funktioner, der er relevante for denne arkitektur.
Kundesupport
Microchip modtager gerne fejlrapporter, forslag eller kommentarer vedrørende denne compilerversion. Send venligst eventuelle fejlrapporter eller funktionsanmodninger via supportsystemet.
Dokumentationsopdateringer
For online og opdaterede versioner af MPLAB XC8 dokumentation, besøg venligst Microchips online tekniske dokumentation webwebsted.
Ny eller opdateret AVR-dokumentation i denne udgivelse:
- MUSL ophavsretsmeddelelse
- Installation og licensering af MPLAB XC C-kompilatorer (revision M)
- MPLAB XC8 Brugervejledning til Embedded Engineers – AVR MCU'er (revision A)
- MPLAB XC8 C Compiler Brugervejledning til AVR MCU (revision F)
- Microchip Unified Standard Library Reference Guide (revision B)
Microchip Unified Standard Library Reference Guide beskriver adfærden af og grænsefladen til de funktioner, der er defineret af Microchip Unified Standard Library, såvel som den tilsigtede brug af bibliotekstyperne og makroerne. Nogle af disse oplysninger var tidligere indeholdt i MPLAB® XC8 C Compiler User!s Guide for AVR® MCU. Enhedsspecifik biblioteksinformation er stadig indeholdt i denne kompileringsvejledning.
Hvis du lige er startet med 8-bit-enheder og MPLAB XC8 C-kompileren, har MPLAB® XC8 User!s Guide for Embedded Engineers – AVR® MCU'er (DS50003108) information om opsætning af projekter i MPLAB X IDE og skrivning af kode til dit første MPLAB XC8 C-projekt. Denne guide er nu distribueret med compileren.
Hamate-brugervejledningen er inkluderet i dokumentbiblioteket i denne udgivelse. Denne vejledning er beregnet til dem, der kører Hamate som en selvstændig applikation.
Hvad er nyt
Følgende er nye AVR-målfunktioner, som compileren nu understøtter. Versionsnummeret i underoverskrifterne angiver den første compilerversion, der understøtter de følgende funktioner.
Version 2.40
Ny enhedsunderstøttelse Support er nu tilgængelig for følgende AVR-dele: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA, AVR32EA og AVR64EA.
Forbedret proceduremæssig abstraktion Procedural abstraction (PA) optimeringsværktøjet er blevet forbedret, så kode, der indeholder en funktionsopkaldsinstruktion (opkaldsgenkald)) kan skitseres. Dette vil kun finde sted, hvis stakken ikke bruges til at sende argumenter til eller opnå returværdi fra funktionen. Stakken bruges ved kald af en funktion med en variabel argumentliste eller ved kald af en funktion, der tager flere argumenter, end der er registre til dette formål. Denne funktion kan deaktiveres ved at bruge indstillingen monk-pa-outline-calls, eller proceduremæssig abstraktion kan deaktiveres helt for et objekt file eller funktion ved at bruge -monk-pa-on-file og -mo.-pa-on-funktion hhv
Kodedækningsmakro Compileren definerer nu makroen __CODECOV, hvis en gyldig mcodecov-option er angivet.
Mulighed for hukommelsesreservation xc8-cc-driveren vil nu acceptere -mreserve=space@start: end-indstillingen, når den bygger til AVR-mål. Denne indstilling reserverer det angivne hukommelsesområde i enten data- eller programhukommelsespladsen, hvilket forhindrer linkeren i at udfylde kode eller objekter i dette område.
Smartere smart IO Der er foretaget adskillige forbedringer til Smart IO-funktionerne, inklusive generelle justeringer af printf-kernekoden, behandling af %n-konverteringsspecifikationen som en uafhængig variant, linkning i vararg pop-rutiner efter behov, ved brug af kortere datatyper, hvor det er muligt til håndtering af IO-funktionsargumenter , og faktorisering af fælles kode i feltbredde og præcisionshåndtering. Dette kan resultere i betydelige kode- og databesparelser, samt øge eksekveringshastigheden af IO.
Version 2.39 (Functional Safety Release)
Netværksserverlicens Denne udgivelse af MPLAB XC8 Functional Safety Compiler understøtter netværksserverlicensen.
Version 2.36
Ingen.
Version 2.35
Ny enhedsunderstøttelse Support er tilgængelig for følgende AVR-dele: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 og AVR64DD32.
Forbedret kontekstskift Den nye -mcall-isr-prologues mulighed ændrer, hvordan afbrydelsesfunktioner gemmer registre ved indtastning, og hvordan disse registre gendannes, når afbrydelsesrutinen afsluttes. Det fungerer på samme måde som -mcall-prologues-indstillingen, men påvirker kun interrupt-funktioner (ISR'er).
Endnu mere forbedret kontekstskift Den nye -mgas-isr-prologues mulighed styrer kontekstens itch-kode, der genereres til små afbrydelsesservicerutiner. Når den er aktiveret, vil denne funktion få assembleren til at scanne ISR'en for registerbrug og kun gemme disse brugte registre, hvis det er nødvendigt.
Konfigurerbar flash mapping Nogle enheder i AVR DA- og AVR DB-familien har en SFR (f.eks. FLMAP), der specificerer, hvilken 32k sektion af programhukommelsen, der vil blive afbildet i datahukommelsen. Den nye - mconst-data-in-config-mapped-proem mulighed kan bruges til at få linkeren til at placere alle ulemper kvalificerede data i en 32k sektion og automatisk initialisere det relevante SFR register for at sikre, at disse data er mappet ind i datahukommelsespladsen , hvor det vil blive tilgået mere effektivt.
Microchip Unified Standard Libraries Alle MPLAB XC-kompilere vil dele et Microchip Unified Standard Library, som nu er tilgængeligt med denne udgivelse af MPLAB XC8. MPLAB® XC8 C Compiler Brugervejledning/eller AVR® MCU indeholder ikke længere dokumentation for disse standardfunktioner. Disse oplysninger kan nu findes i Microchip Unified Standard Library Reference Guide. Bemærk, at nogle funktioner tidligere defineret af avr-libc ikke længere er tilgængelige. (Se bibliotek):'. funktionalitet...)
Smart IO Som en del af de nye forenede biblioteker er IO-funktioner i print- og scanningsfamilierne nu tilpasset til hver build, baseret på hvordan disse funktioner bruges i programmet. Dette kan væsentligt reducere de ressourcer, der bruges af et program.
Smart IO assistance mulighed Når man analyserer opkald til smarte IO-funktioner (såsom printf () eller scanf () ), kan compileren ikke altid bestemme ud fra formatstrengen eller udlede fra argumenterne de konverteringsspecifikationer, der kræves af opkaldet. Tidligere ville compileren altid ikke gøre nogen antagelser og sikre, at fuldt funktionelle IO-funktioner var forbundet til det endelige programbillede. En ny – msmart-io-format=fmt mulighed er tilføjet, så compileren i stedet kan informeres af brugeren om de konverteringsspecifikationer, der bruges af smarte IO-funktioner, hvis brug er tvetydig, hvilket forhindrer alt for lange IO-rutiner i at blive linket. (Se muligheden for smart-io-format for flere detaljer.)
Placering af tilpassede sektioner Tidligere placerede indstillingen -Wl, –section-start kun den specificerede sektion på den anmodede adresse, når linker-scriptet definerede en outputsektion med samme navn. Når det ikke var tilfældet, blev afsnittet placeret på en adresse valgt af linkeren, og muligheden blev i det væsentlige ignoreret. Nu vil muligheden blive respekteret for alle brugerdefinerede sektioner, selvom linker-scriptet ikke definerer sektionen. Bemærk dog, at for standardsektioner, f.eks. tekst,. bss eller . data, vil den bedst tilpassede allokator stadig have fuld kontrol over deres placering, og muligheden har ingen effekt. Brug indstillingen -Wl, -Tsection=add, som beskrevet i brugervejledningen.
Version 2.32
Stakvejledning Tilgængelig med en PRO-compilerlicens, kan compilerens stakvejledningsfunktion bruges til at estimere den maksimale dybde af enhver stak, der bruges af et program. Den konstruerer og analyserer opkaldsgrafen for et program, bestemmer stakbrugen af hver funktion og producerer en rapport, hvorfra dybden af stakke, der bruges af programmet, kan udledes. Denne funktion er aktiveret via kommandolinjeindstillingen -mchp-stack-usage. En oversigt over stakbrug udskrives efter udførelse. En detaljeret stakrapport er tilgængelig på kortet file, som kan rekvireres på sædvanlig vis.
Ny enhedsunderstøttelse er tilgængelig til følgende AVR-dele: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28 og AVR64DB32 og AVR32DB48.
Support til tilbagetrukket enhed er ikke længere tilgængelig til følgende AVR-dele: AVR16DA28, AVR16DA32 og AVR16DA48.
Version 2.31
Ingen.
Version 2.30
Ny mulighed for at forhindre datainitialisering En ny -mno-data-ini t driver mulighed forhindrer initialisering af data og sletning af bss sektioner. Det virker ved at undertrykke outputtet af do_ copy_ data og d o_ clear_ bss symbolerne i assembly files, hvilket igen vil forhindre inklusion af disse rutiner af linkeren.
Forbedrede optimeringer Der er foretaget en række optimeringsforbedringer, herunder fjernelse af redundante returinstruktioner, fjernelse af nogle spring efter en skip-if-bit-is instruktion og forbedret proceduremæssig abstraktion og muligheden for at gentage denne proces.
Yderligere muligheder er nu tilgængelige for at styre nogle af disse optimeringer, specifikt -f sektionsankre, som tillader adgang til statiske objekter, der skal udføres i forhold til et symbol; -mpai derations=n, som gør det muligt at ændre antallet af proceduremæssige abstraktionsiterationer fra standardindstillingen på 2; og -mpa- call cost- shortcall, som udfører mere aggressiv proceduremæssig abstraktion, i håb om at linkeren kan slappe af lange opkald. Denne sidste mulighed kan øge kodestørrelsen, hvis de underliggende antagelser ikke realiseres.
Ny enhedsunderstøttelse Support er tilgængelig for følgende AVR-dele: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 og AVR128DB.
Tilbagetrukket enhedssupport Support er ikke længere tilgængelig for følgende AVR-dele: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C og ATA664251C, og ATAXNUMXATA.
Version 2.29 (Functional Safety Release)
Overskrift file til indbyggede compiler For at sikre, at compileren kan overholde sprogspecifikationer såsom MISRA, den header file, som automatisk indgår af , er blevet opdateret. Denne header indeholder prototyperne for alle indbyggede funktioner, såsom _buil tin _avrnop () og _buil tin_ avr delay_ cycles () . Nogle indbyggede funktioner er muligvis ikke MISRA-kompatible; disse kan udelades ved at tilføje define _Xe_ STRICT_ MISRA til kompilatorens kommandolinje. De indbyggede elementer og deres erklæringer er blevet opdateret til at bruge typer med fast bredde.
Version 2.20
Ny enhedsunderstøttelse Support er tilgængelig for følgende AVR-dele: ATTINY1624, ATTINY1626 og ATTINY1627.
Bedre best fit allokering Best fit allocator (BFA) i compileren er blevet forbedret, så sektioner er allokeret i en rækkefølge, der tillader bedre optimering. BFA understøtter nu navngivne adresserum og håndterer bedre datainitialisering.
Forbedret proceduremæssig abstraktion De proceduremæssige abstraktionsoptimeringer udføres nu på flere kodesekvenser. Tidligere situationer, hvor denne optimering kunne have øget kodestørrelsen, er blevet rettet ved at gøre optimeringskoden opmærksom på linkerens affaldsindsamlingsproces.
Fravær af AVR Assembler AVR Assembler er ikke længere inkluderet i denne distribution.
Version 2.19 (Functional Safety Release)
Ingen.
Version 2.10
Kodedækning Denne udgivelse indeholder en kodedækningsfunktion, der letter analyse af, i hvilket omfang et projekts kildekode er blevet eksekveret. Brug indstillingen -mcodecov=ram for at aktivere den. Efter afvikling af programmet på din hardware vil kodedækningsoplysninger blive samlet i enheden, og disse kan overføres til og vises af MPLAB X IDE via et kodedækningsplugin. Se IDE-dokumentationen for at få oplysninger om dette plugin. #pragma mcodecov kan bruges til at udelukke efterfølgende funktioner fra dækningsanalysen. Ideelt set bør pragma tilføjes i begyndelsen af file at udelukke det hele file fra dækningsanalysen. Alternativt kan attributten ((mcodecov)) bruges til at udelukke en specifik funktion fra dækningsanalysen.
Enhedsbeskrivelse files En ny enhed file kaldet avr chipinfo. html er placeret i docs-biblioteket i compilerdistributionen. Det her file viser alle enheder, der understøttes af compileren. Klik på et enhedsnavn, og det åbner en side, der viser alle de tilladte konfigurationsbitindstillinger/værdipar for den enhed, med f.eks.amples.
Procedurel abstraktion Procedurmæssige abstraktionsoptimeringer, som erstatter almindelige blokke af assembly-kode med kald til en udtrukket kopi af den blok, er blevet tilføjet til compileren. Disse udføres af en separat applikation, som automatisk aktiveres af compileren ved valg af niveau 2, 3 eller optimeringer. Disse optimeringer reducerer kodestørrelsen, men de kan reducere udførelseshastigheden og kodefejlbarheden.
Procedurel abstraktion kan deaktiveres ved højere optimeringsniveauer ved at bruge optionen -mno-pa, eller kan aktiveres ved lavere optimeringsniveauer (afhængig af din licens) ved at bruge -mpa. Det kan deaktiveres for et objekt file bruger -mno-pa-on-file=filenavn, eller deaktiveret for en funktion ved at bruge -mno-pa på funktion= funktion.
Inde i din kildekode kan proceduremæssig abstraktion deaktiveres for en funktion ved at bruge _attribute_ ((nopa)) med funktionens definition, eller ved at bruge _nopa, som udvider til attribut ((nopa, noinline)) og dermed forhindrer funktion inlining i at finde sted og der er abstraktion af indlejret kode.
Lås bitstøtte i pragma #pragma-konfigurationen kan nu bruges til at specificere AVR-låsebits såvel som de andre konfigurationsbits. Tjek avr chip info. html file (nævnt ovenfor) for indstilling/værdi-par, der skal bruges med denne pragma.
Ny enhedsunderstøttelse Support er tilgængelig for følgende dele: AVR28DA128, AVR64DA128, AVR32DA128 og AVR48DA128.
Version 2.05
Flere stykker for pengene MacOS-versionen af denne compiler og licensmanager er nu et 64-bit program. Dette vil sikre, at compileren vil installere og køre uden advarsler på nyere versioner af macOS.
Const-objekter i programhukommelsen Compileren kan nu placere const-kvalificerede objekter i programmets Flash-hukommelse, i stedet for at have disse placeret i RAM. Compileren er blevet modificeret, så const-kvalificerede globale data er lagret i programmets flashhukommelse, og disse data kan tilgås direkte og indirekte ved hjælp af de relevante programhukommelsesinstruktioner. Denne nye funktion er aktiveret som standard, men kan deaktiveres ved hjælp af -mno-const-data-in-progmem muligheden. For avrxmega3- og avrtiny-arkitekturer er denne funktion ikke påkrævet og er altid deaktiveret, da programhukommelsen er mappet til dataadresserummet for disse enheder.
Standard gratis Ulicenserede (gratis) versioner af denne compiler tillader nu optimeringer op til og med niveau 2. Dette vil tillade et lignende, men ikke identisk, output til det, der tidligere var muligt med en standardlicens.
Velkommen AVRASM2 AVRASM2 assembler til 8-bit enheder er nu inkluderet i XC8 compiler installationsprogrammet. Denne assembler bruges ikke af XC8-kompileren, men er tilgængelig til projekter baseret på håndskreven assembly-kilde.
Ny enhedsunderstøttelse Support er tilgængelig for følgende dele: ATMEGA1608, ATMEGA1609, ATMEGA808 og ATMEGA809.
Version 2.00
Driver på øverste niveau En ny driver, kaldet xc8-cc, sidder nu over den tidligere avr-gcc-driver og xc8-driveren, og den kan kalde den relevante compiler baseret på valget af målenheden. Denne driver accepterer valgmuligheder i GCC-stil, som enten oversættes til eller videregives til den kompilator, der udføres. Denne driver gør det muligt at bruge et lignende sæt af muligheder med lignende semantik med ethvert AVR- eller PIC-mål og er derfor den anbefalede måde at kalde compileren på. Hvis det kræves, kan den gamle avr-gcc-driver kaldes direkte ved at bruge de gamle muligheder, den accepterede i tidligere compilerversioner.
Fælles C-grænseflade Denne compiler kan nu tilpasse sig MPLAB Common C Interface, hvilket gør det lettere at overføre kildekode på tværs af alle MPLAB XC compilere. Indstillingen -mext=cci anmoder om denne funktion, hvilket aktiverer alternativ syntaks for mange sprogudvidelser.
Ny bibliotekar driver En ny bibliotekardriver er placeret over den tidligere PIC-bibliotekar og AVR-avr-ar-bibliotekaren. Denne driver accepterer GCC-arkiver-stil muligheder, som enten oversættes til eller videregives til bibliotekaren, der udføres. Den nye driver gør det muligt at bruge et lignende sæt muligheder med lignende semantik til at oprette eller manipulere et hvilket som helst PIC- eller AVR-bibliotek file og er således den anbefalede måde at påkalde bibliotekaren. Hvis det kræves til ældre projekter, kan den tidligere bibliotekar kaldes direkte ved at bruge de gamle muligheder, som den accepterede i tidligere compilerversioner.
Migrationsproblemer
Følgende er funktioner, der nu håndteres anderledes af compileren. Disse ændringer kan kræve ændring af din kildekode, hvis du porterer kode til denne compilerversion. Versionsnummeret i underoverskrifterne angiver den første compilerversion, der understøtter de efterfølgende ændringer.
Version 2.40
Ingen.
Version 2.39 (Functional Safety Release)
Ingen.
Version 2.36
Ingen.
Version 2.35
Håndtering af streng-til-baser (XCS-2420) For at sikre overensstemmelse med andre XC-kompilere, vil XC8-streng-til-funktionerne, såsom strtol () osv., ikke længere forsøge at konvertere en inputstreng, hvis den angivne base er større end 36, og vil i stedet sætte errno til EINVAL. C-standarden specificerer ikke funktionernes opførsel, når denne basisværdi overskrides.
Uhensigtsmæssige hastighedsoptimeringer Procedurmæssige abstraktionsoptimeringer blev aktiveret ved valg af niveau 3-optimeringer (-03). Disse optimeringer reducerer kodestørrelsen på bekostning af kodehastigheden, så de burde ikke have været udført. Projekter, der bruger dette optimeringsniveau, kan muligvis se forskelle i kodestørrelse og udførelseshastighed, når de bygges med denne udgivelse.
Bibliotekets funktionalitet Koden til mange af standard C-biblioteksfunktionerne kommer nu fra Microchips Unified Standard Library, som kan udvise anderledes adfærd under nogle omstændigheder sammenlignet med den, der leveres af det tidligere avr-libc-bibliotek. F.eksample, er det ikke længere nødvendigt at linke i lprintf_flt-biblioteket (-print _flt-indstilling) for at aktivere formateret IO-understøttelse for float-format-specifikationer. De smarte IO-funktioner i Microchip Unified Standard Library gør denne mulighed overflødig. Derudover er brugen af _p-suffiksede rutiner til streng- og hukommelsesfunktioner (f.eks. strcpy_P () osv.. ), der opererer på const-strenge i flash, ikke længere nødvendig. Standard C-rutinerne (f.eks. strcpy ()) vil fungere korrekt med sådanne data, når funktionen const-data-in-program-memory er aktiveret.
Version 2.32
Ingen.
Version 2.31
Ingen.
Version 2.30
Ingen.
Version 2.29 (Functional Safety Release)
Ingen.
Version 2.20
Ændret DFP-layout Compileren antager nu et andet layout, der bruges af DFP'er (Device Family Packs). Dette vil betyde, at en ældre DFP muligvis ikke fungerer med denne udgivelse, og ældre compilere vil ikke være i stand til at bruge de nyeste DFP'er.
Version 2.19 (Functional Safety Release)
Ingen.
Version 2.10
Ingen
Version 2.05
Konstobjekter i programhukommelsen Bemærk, at de som standard, const-kvalificerede objekter vil blive placeret og tilgået i programhukommelsen (som beskrevet her). Dette vil påvirke størrelsen og udførelseshastigheden af dit projekt, men bør reducere RAM-forbruget. Denne funktion kan deaktiveres, hvis det kræves, ved at bruge -mnoconst-da ta-in-progmem muligheden.
Version 2.00
Konfigurationssikringer Enhedskonfigurationssikringerne kan nu programmeres ved hjælp af en konfigurationspragma efterfulgt af indstillingsværdipar for at specificere sikringstilstanden, f.eks.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Absolutte objekter og funktioner Objekter og funktioner kan nu placeres på en bestemt adresse i hukommelsen ved hjælp af CCI _at (adresse) specifikationen, f.eks.ample: #inkluder int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Argumentet til denne specifikation skal være en konstant, der repræsenterer adressen, hvor den første byte eller instruktion vil blive placeret. RAM-adresser er angivet ved at bruge en offset på 0x800000. Aktiver CCI for at bruge denne funktion.
Ny syntaks for afbrydelsesfunktion Compileren accepterer nu CCI interrupt (num)-specifikationen for at indikere, at C-funktioner er interrupt-handlere. Specifikatoren tager et interrupt-nummer, f.eksample: #inkluder void interrupt(SPI STC_ vect _num) spi Isr(void) { … }
Faste problemer
Følgende er rettelser, der er foretaget til compileren. Disse kan rette fejl i den genererede kode eller ændre compilerens funktion til det, som var tilsigtet eller specificeret af brugervejledningen. Versionsnummeret i underoverskrifterne angiver den første compilerversion, der indeholder rettelser til de problemer, der følger. Etiket(erne) i parentes i titlen er det pågældende problems identifikation i sporingsdatabasen. Disse kan være nyttige, hvis du har brug for at kontakte support.
Bemærk, at nogle enhedsspecifikke problemer er rettet i Device Family Pack (DFP), der er knyttet til enheden. Se MPLAB Pack Manager for at få oplysninger om ændringer af DFP'er og for at downloade de seneste pakker.
Version 2.40
For afslappet (XCS-2876) Når du brugte -mrelax-indstillingen, tildelte compileren ikke nogle sektioner sammen, hvilket resulterede i mindre optimale kodestørrelser. Dette kan være sket med kode, der brugte de nye MUSL-biblioteker eller med svage symboler.
Kortlægningsfunktionen er ikke deaktiveret som angivet i advarsel (XCS-2875) Cost-data-in-config mapdprogmem-funktionen er afhængig af, at cost-data-in-proem-funktionen er aktiveret. Hvis cost-data-ipconfig-mapped-proem-funktionen eksplicit blev aktiveret ved hjælp af indstillingen, og cost-data-inprogmem-funktionen blev deaktiveret, mislykkedes linktrinnet, på trods af en advarselsmeddelelse, der angiver, at cons data-in-config-mapped- proem-funktionen var automatisk blevet deaktiveret, hvilket ikke var helt korrekt. Const-data-in-config-mapped-proem-funktionen er nu fuldstændig deaktiveret i denne situation.
DFP-ændringer for at få korrekt adgang til NVMCTRL (XCS-2848) Runtime-startkoden, der blev brugt af AVR64EA-enheder, tog ikke højde for, at NVMCTRL-registret var under Configuration Change Protection (CCP) og ikke var i stand til at indstille IO SFR til den side, der blev brugt af const-data-in configmapped-proem compileren funktion. Ændringer foretaget i AVR-Ex_DFP version 2.2.55 vil gøre det muligt for runtime-startkoden at skrive korrekt til dette register.
DFP-ændringer for at undgå flash-mapping (XCS-2847) En løsning på et problem med flashkortlægningsenhedens funktion rapporteret i AVR128DA28/32/48/64 Silicon Errata (DS80000882) er blevet implementeret. Const-data-in-config-mapped-proem compiler-funktionen vil ikke blive anvendt som standard for berørte enheder, og denne ændring vises i AVR-Ex_DFP version 2.2.160.
Byg fejl med sinhf eller coshf (XCS-2834) Forsøg på at bruge biblioteksfunktionerne sinhf () eller coshf () resulterede i en linkfejl, der beskriver en udefineret reference. Den manglende funktion, der refereres til, er nu inkluderet i compilerdistributionen.
Byg fejl med nopa (XCS-2833) Brug af nopa-attributten med en funktion, der har fået sit assemblernavn angivet ved hjælp af som () udløste fejlmeddelelser fra assembler. Denne kombination er ikke mulig.
Variadisk funktionsfejl med pointer-argumenter (XCS-2755, XCS-2731) Funktioner med et variabelt antal argumenter forventer, at 24-bit (_memo type) pointere sendes i listen over variable argumenter, når funktionen cost-data-in-proem er aktiveret. Argumenter, der var pointere til datahukommelsen, blev videregivet som 16-bit objekter, hvilket forårsagede kodefejl, da de i sidste ende blev læst. Når funktionen cons data-in-proem er aktiveret, konverteres alle 16-bit pointer-argumenter nu til 24-bit pointere. strtoxxx-biblioteksfunktioner fejler (XCS-2620) Når const-data-in-proem-funktionen blev aktiveret, blev enter-parameteren i strtoxxx-biblioteksfunktionerne ikke opdateret korrekt for kildestrengargumenter, der ikke er i programhukommelsen.
Advarsler for ugyldige casts (XCS-2612) Compileren vil nu udsende en fejl, hvis cost-in-proem-funktionen er aktiveret, og adressen på en streng-literal eksplicit castes til dataadresserummet (slipper const-kvalifikationen), f.eks.ample, (uint8 t *) "Hej verden!". Der er en advarsel, hvis adressen muligvis er ugyldig, når en const-datapointer eksplicit castes til dataadresserummet.
Placering af ikke-initialiserede const-objekter (XCS-2408) Ikke-initialiserede const og const v olatile objekter blev ikke placeret i programhukommelsen på enheder, der mapper hele eller en del af deres programhukommelse til dataadresserummet. For disse enheder er sådanne objekter nu placeret i programhukommelsen, hvilket gør deres drift i overensstemmelse med andre enheder.
Version 2.39 (Functional Safety Release)
Ingen.
Version 2.36
Fejl ved forsinkelse (XCS-2774) Mindre ændringer i standardfri tilstandsoptimering forhindrede konstant foldning af operandudtryk til de indbyggede forsinkelsesfunktioner, hvilket resulterede i, at de blev behandlet som ikke-kontakter og udløste fejlen: _buil tin avr delay_ cycles expects ac ompile tidsheltalskonstant.
Version 2.35
Kontinuerlig tildeling ved hjælp af _at (XCS-2653) Sammenhængende tildeling af flere objekter i en sektion med det samme navn og ved at bruge ved () fungerede ikke korrekt. F.eksample: constchararrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; koste char arr2[ ] at tri butte ((section(“.my s eke”))) = {Oxen, Ox FE }; skulle have placeret arr2 umiddelbart efter aril.
Angivelse af sektions startadresser (XCS-2650) Valgmuligheden -Wal, -sektion-start undlod stille og roligt at placere sektioner på den nominerede startadresse. Dette problem er blevet rettet for alle brugerdefinerede sektioner; det vil dog ikke fungere for nogen standardsektioner, såsom . tekst eller . bss, som skal placeres ved hjælp af en -Wl, -T mulighed.
Linkeren går ned, når du slapper af (XCS-2647) Da -relax-optimeringen var aktiveret, og der var kode- eller datasektioner, der ikke passede ind i den tilgængelige hukommelse, styrtede linkeren ned. Nu, i en sådan omstændighed, udsendes der i stedet fejlmeddelelser.
Dårlig EEPROM-adgang (XCS-2629) Leproma _read_ block-rutinen fungerede ikke korrekt på Mega-enheder, når -monist-data-in-proem-indstillingen var aktiveret (som er standardtilstanden), hvilket resulterede i, at EEPROM-hukommelsen ikke blev læst korrekt.
Ugyldig hukommelsestildeling (XCS-2593, XCS-2651) Når -Text eller -Tata linker-indstillingen (f.eksample passeret gennem ved hjælp af en -Wl-driverindstilling) er angivet, den tilsvarende tekst/dataregionsoprindelse blev opdateret; slutadressen blev dog ikke justeret i overensstemmelse hermed, hvilket kunne have ført til, at regionen overskred målenhedens hukommelsesområde.
Ugyldig ATtiny-afbrydelseskode (XCS-2465) Når du bygger til Tatin-enheder, og optimeringerne blev deaktiveret (-00), kan afbrydelsesfunktioner have udløst operand-udenfor rækkevidde-assembler-meddelelser.
Valgmuligheder bliver ikke gennemgået (XCS-2452) Ved brug af -Wl-optionen med flere, komma-separerede linker-muligheder, blev ikke alle linker-mulighederne overført til linkeren.
Fejl ved indirekte læsning af programhukommelse (XCS-2450) I nogle tilfælde producerede compileren en intern fejl (uigenkendelig insn) ved læsning af en værdi på to byte fra en pointer til programhukommelse
Version 2.32
Anden adgang til biblioteket mislykkes (XCS-2381) Påberåber Windows-versionen af xc8-ar. exe-biblioteksarkiver en anden gang for at få adgang til et eksisterende biblioteksarkiv kan have mislykkedes med en fejlmeddelelse, der ikke kunne omdøbe.
Version 2.31
Uforklarede compilerfejl (XCS-2367) Når den kører på Windows-platforme, der havde systemets midlertidige mappe sat til en sti, der inkluderede en prik'.' karakter, kan compileren have undladt at udføre.
Version 2.30
Globale etiketter forlagt efter kontur (XCS-2299) Håndskrevet assembly-kode, der placerer globale etiketter i assembly-sekvenser, der er udregnet ved proceduremæssig abstraktion, er muligvis ikke blevet korrekt omplaceret.
Et afslappende styrt (XCS-2287) Brug af -merlad-indstillingen kan have fået linkeren til at gå ned, når tail jump relaxation-optimeringer forsøgte at fjerne ret-instruktioner, der ikke var i slutningen af en sektion.
Nedbrud ved optimering af etiketter som værdier (XCS-2282) Kode, der bruger "Etiketter som værdier" GNU C-sprogudvidelsen kan have forårsaget, at de proceduremæssige abstraktionsoptimeringer gik ned, med en skitseret VMA-områdespændvidde-fixup-fejl.
Ikke så konst (XCS-2271) Prototyperne til starter () og andre funktioner fra ikke længere angive den ikke-standardiserede omkostningskvalifikation på returnerede strengpointere, når funktionen -monist-data inprogmem er deaktiveret. Bemærk, at med avrxmega3- og avertin-enheder er denne funktion permanent aktiveret.
Mistede initialiseringer (XCS-2269) Når mere end én variabel i en oversættelsesenhed blev placeret i en sektion (ved hjælp af sektion eller attribut ((sektion))), og den første sådan variabel blev nulinitieret eller ikke havde en initialisering, initialiseres for andre variabler i samme oversættelsesenhed som var placeret i samme sektion gik tabt.
Version 2.29 (Functional Safety Release)
Ingen.
Version 2.20
Fejl med lange kommandoer (XCS-1983) Når du bruger et AVR-mål, kan compileren være stoppet med en file ikke fundet fejl, hvis kommandolinjen var ekstremt stor og indeholdt specialtegn såsom anførselstegn, omvendte skråstreg osv.
Ikke-tildelt rodatasektion (XCS-1920) AVR-linkeren kunne ikke tildele hukommelse til brugerdefinerede rodatasektioner, da den byggede til avrxmega3- og avrtiny-arkitekturer, hvilket potentielt producerede hukommelsesoverlapningsfejl
Version 2.19 (Functional Safety Release)
Ingen.
Version 2.10
Flytningsfejl (XCS-1891) Den bedst egnede allokator var at efterlade "huller" i hukommelsen mellem sektionerne efter linkerafslapning. Bortset fra at fragmentere hukommelsen, øgede dette muligheden for, at der er linkerflytningsfejl i forbindelse med pc-relative hop eller opkald, der bliver uden for rækkevidde.
Instruktioner ikke transformeret ved afslapning (XCS-1889) Linker-afspænding forekom ikke for hop- eller opkaldsinstruktioner, hvis mål bliver tilgængelige, hvis de blev afslappet.
Mangler funktionalitet (XCSE-388) Flere definitioner fra , såsom clock_ div_ t og clock_prescale_set (), blev ikke defineret for enheder, inklusive ATmega324PB, ATmega328PB, ATtiny441 og ATtiny841.
Manglende makroer Forprocessormakroerne_ xcs _MODE_, _xcs VERSION, _xc og xcs blev ikke automatisk defineret af compileren. Disse er nu tilgængelige.
Version 2.05
Intern compiler fejl (XCS-1822) Når du bygger under Windows, kan der være opstået en intern compilerfejl under optimering af kode.
RAM-overløb ikke fundet (XCS-1800, XCS-1796) Programmer, der overskred den tilgængelige RAM, blev ikke fundet af compileren i nogle situationer, hvilket resulterede i en runtime-kodefejl.
Udeladt flashhukommelse (XCS-1792) For avrxmega3 og avrtiny-enheder kan dele af flashhukommelsen være blevet efterladt uprogrammeret af MPLAB X IDE.
Kunne ikke udføre main (XCS-1788) I nogle situationer, hvor programmet ikke havde nogen definerede globale variabler, afsluttede runtime-startkoden ikke, og hovedfunktionen () blev aldrig nået.
Forkerte hukommelsesoplysninger (XCS-1787) For avrxmega3- og avrtiny-enheder rapporterede programmet avr-størrelse, at skrivebeskyttede data forbrugte RAM i stedet for programhukommelse.
Forkert programhukommelseslæsning (XCS-1783) Projekter, der er kompileret til enheder med programhukommelse mappet til dataadresserummet, og som definerer objekter ved hjælp af PROGMEM-makroen/-attributten, kan have læst disse objekter fra den forkerte adresse.
Intern fejl med attributter (XCS-1773) Der opstod en intern fejl, hvis du definerede markørobjekter med
_at () eller attribut() tokens mellem pointernavnet og den derefererede type, f.eks.ample, char *
_at ( 0x80015 0) cp; En advarsel udsendes nu, hvis en sådan kode stødes på.
Manglende udførelse af main (XCS-1780, XCS-1767, XCS-1754) Brug af EEPROM-variabler eller definering af sikringer ved hjælp af config-pragmaen kan have forårsaget ukorrekt datainitialisering og/eller låst programafvikling i runtime-startkoden, før man når main () .
Sikringsfejl med små enheder (XCS-1778, XCS-1742) Attiny4/5/9/10/20/40-enhederne havde en forkert sikringslængde angivet i deres overskrift files, der fører til linkerfejl, når man forsøger at bygge kode, der definerede sikringer.
Segmenteringsfejl (XCS-1777) En intermitterende segmenteringsfejl er blevet rettet.
Samlernedbrud (XCS-1761) Avr-as-samleren kunne være gået ned, da compileren blev kørt under Ubuntu 18.
Objekter ikke ryddet (XCS-1752) Ikke-initialiserede statiske lagringsvarighedsobjekter er muligvis ikke blevet ryddet af runtime-startkoden.
Modstridende enhedsspecifikation ignoreret (XCS-1749) Compileren genererede ikke en fejl, da der blev brugt flere enhedsspecifikationsmuligheder og indikerede forskellige enheder.
Hukommelseskorruption af heap (XCS-1748) Heap_start-symbolet blev indstillet forkert, hvilket resulterede i muligheden for, at almindelige variabler blev beskadiget af heapen.
Linker flytning fejl (XCS-1739) En linker-flytningsfejl kan være blevet udsendt, når koden indeholdt et rjmp eller rcall med et mål nøjagtigt 4k bytes væk.
Version 2.00
Ingen.
Kendte problemer
Følgende er begrænsninger i compilerens drift. Disse kan være generelle kodningsbegrænsninger, eller
afvigelser fra oplysningerne i brugermanualen. Etiket(erne) i parentes i titlen er det pågældende problems identifikation i sporingsdatabasen. Dette kan være en fordel, hvis du har brug for at kontakte support. De elementer, der ikke har etiketter, er begrænsninger, der beskriver tilstand operandi, og som sandsynligvis forbliver i kraft permanent.
MPLAB X IDE-integration
MPLAB IDE integration Hvis Compiler skal bruges fra MPLAB IDE, skal du installere MPLAB IDE før du installerer Compiler.
Kodegenerering
PA-hukommelsesallokeringsfejl (XCS-2881) Når du bruger de proceduremæssige abstraktionsoptimeringer, kan linkeren rapportere hukommelsesallokeringsfejl, når kodestørrelsen er tæt på mængden af tilgængelig programhukommelse på enheden, selvom programmet burde være i stand til at passe til den tilgængelige plads.
Ikke så smart Smart-IO (XCS-2872) Compilerens smart-io-funktion vil generere gyldig, men suboptimal kode for sprintfunktionen, hvis kyst-data-i-proem-funktionen er blevet deaktiveret, eller hvis enheden har al sin flash-mappning i datahukommelsen.
Endnu mindre smart Smart-IO (XCS-2869) Compilerens smart-io-funktion vil generere gyldig, men suboptimal kode, når både -floe og -fno-buil tin-indstillingerne bruges.
Suboptimal skrivebeskyttet dataplacering (XCS-2849) Linkeren er i øjeblikket ikke opmærksom på APPCODE- og APPDATA-hukommelsessektionerne eller [No-]Read-While-Write-divisionerne i hukommelseskortet. Som et resultat er der en lille chance for, at linkeren kan allokere skrivebeskyttede data i et uegnet hukommelsesområde. Chancen for malplacerede data øges, hvis funktionen kystdata-i-pragma er aktiveret, især hvis funktionen kystdata-i-konfig-kortlagt-proem også er aktiveret. Disse funktioner kan deaktiveres, hvis det kræves.
Objekt file behandlingsordre (XCS-2863) Den rækkefølge, hvori objekter files vil blive behandlet af linkeren kan variere baseret på brugen af proceduremæssige abstraktionsoptimeringer (-mpa option). Dette vil kun påvirke kode, som definerer svage funktioner på tværs af flere moduler.
Linkerfejl med absolut (XCS-2777) Når et objekt er blevet gjort absolut på en adresse ved starten af RAM og ikke-initialiserede objekter også er blevet defineret, kan der udløses en linkerfejl.
Korte opvågnings-id'er (XCS-2775) For ATA5700/2-enheder er PHID0/1-registrene kun defineret som værende 16 bit brede i stedet for 32 bit brede.
Linker går ned ved opkaldssymbol (XCS-2758) Linkeren kan gå ned, hvis -merlad-driverindstillingen bruges, når kildekoden kalder et symbol, der er blevet defineret ved hjælp af -Wl, –defsym-linkerindstillingen.
Forkert initialisering (XCS-2679) Der er en uoverensstemmelse mellem, hvor startværdierne for nogle globale/statiske byte-objekter er placeret i datahukommelsen, og hvor variablerne vil blive tilgået under kørsel.
startet forkert indstiller tom (XCS-2652) I tilfælde, hvor en emnestreng til konvertering med angivet () indeholder, hvad der ser ud til at være et flydende kommatal i eksponentielt format, og der er et uventet tegn efter et e-tegn, så vil den tomme adresse, hvis den er angivet, pege på tegnet efter e'et og ikke e'et selv. F.eksample: stated(“hooey”, tom); vil resultere i, at tom peger på x-tegnet.
Dårlige indirekte funktionskald (XCS-2628) I nogle tilfælde kan funktionskald foretaget via en funktionsmarkør, der er gemt som en del af en struktur, mislykkes.
strtof returnerer nul for hexadecimale flydere (XCS-2626) Biblioteksfunktionerne strtof () et al og scanf () et al, vil altid konvertere et hexadecimalt flydende decimaltal, der ikke specificerer en eksponent til
nul. F.eksample: stator(“Ugle”, &tom); returnerer værdien 0, ikke 1.
Upræcise stakrådgivermeddelelser (XCS-2542, XCS-2541) I nogle tilfælde udsendes stack-rådgiver-advarslen vedrørende rekursion eller ubestemt stack (eventuelt ved brug af alloca()) ikke.
Fejl med dublet afbrydelseskode (XCS-2421) Hvor mere end én afbrydelsesfunktion har den samme krop, kan compileren have outputtet for en afbrydelsesfunktion til at kalde den anden. Dette vil resultere i, at alle call-clobbered registre bliver gemt unødigt, og afbrydelserne vil blive aktiveret allerede før epilogen af den aktuelle interrupt-handler er kørt, hvilket kan føre til kodefejl.
Konstobjekter ikke i programhukommelsen (XCS-2408) For avrxmega3 og avertins-projekter placeres uidealiserede const-objekter i datahukommelsen, selvom en advarsel antyder, at de er blevet placeret i programhukommelsen. Dette vil ikke påvirke enheder, der ikke har programhukommelse tilknyttet datahukommelsespladsen, og det vil heller ikke påvirke noget objekt, der initialiseres.
Dårligt output med ugyldig DFP-sti (XCS-2376) Hvis compileren startes med en ugyldig DFP-sti og en "spec" file eksisterer for den valgte enhed, rapporterer compileren ikke den manglende enhedsfamiliepakke og vælger i stedet 'specifikationen' file, hvilket så kan føre til et ugyldigt output. 'Spec'en' files er muligvis ikke opdateret med de distribuerede DFP'er og var kun beregnet til brug med intern compilertestning.
Hukommelsesoverlapning uopdaget (XCS-1966) Compileren detekterer ikke hukommelsesoverlapningen af objekter, der er gjort absolutte på en adresse (via at ()) og andre objekter ved hjælp af sektion ()-specifikationen, og som er knyttet til den samme adresse.
Fejl med biblioteksfunktioner og _meme (XCS-1763) Kaldede limbiske float-funktioner med et argument i _memo-adresserummet kan mislykkes. Bemærk, at biblioteksrutiner kaldes fra nogle C-operatører, så f.eksample, følgende kode er påvirket: return regFloatVar > memxFloatVar;
Begrænset limbisk implementering (AVRTC-731) For ATTiny4/5/9/10/20/40-produkterne er standard C / Math-biblioteksimplementeringen i limbisk meget begrænset eller ikke til stede.
Programhukommelsesbegrænsninger (AVRTC-732) Programhukommelsesbilleder ud over 128 kb understøttes af værktøjskæden; der er dog kendte tilfælde af linkerafbrydelser uden afslapning og uden en nyttig fejlmeddelelse i stedet for at generere de nødvendige funktionsstubber, når -relax-indstillingen bruges.
Begrænsninger for navneplads (AVRTC-733) Navngivne adresserum understøttes af værktøjskæden, med forbehold for de begrænsninger, der er nævnt i brugervejledningens afsnit Special Type Qualifiers.
Tidszoner Det biblioteksfunktioner antager GMT og understøtter ikke lokale tidszoner, derfor vil lokal tid () returnere samme tid som gummite (), f.eks.ample.
KUNDESUPPORT
file:///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ til A VR. htm
Dokumenter/ressourcer
![]() |
MICROCHIP MPLAB XC8 C Compiler Software [pdf] Brugermanual MPLAB XC8 C, MPLAB XC8 C Compiler Software, Compiler Software, Software |