MICROCHIP MPLAB XC8 C kompilatorprogramvare 

MICROCHIP MPLAB XC8 C kompilatorprogramvare

DETTE DOKUMENTET INNEHOLDER VIKTIG INFORMASJON KNYTTET TIL MPLAB XC8 C-KOMPILEREN VED MÅLRETTING AV MICROCHIP AVR-ENHETER.
VENNLIGST LES DEN FØR DU KJØRER DENNE PROGRAMVAREN. SE MPLAB XC8 C-KOMPILEREN RUTGIFTSMERKNADER FOR PIC-DOKUMENT HVIS DU BRUKER KOMPILEREN FOR 8-BIT PIC-ENHETER.

Overview

Introduksjon

Denne utgivelsen av Microchip MPLAB® XC8 C-kompilatoren inneholder flere nye funksjoner, feilrettinger og ny enhetsstøtte.

Byggedato

Den offisielle byggedatoen for denne kompilatorversjonen er 3. juli 2022.

Forrige versjon

Den forrige MPLAB XC8 C kompilatorversjonen var 2.39, en funksjonell sikkerhetskompilator, bygget 27. januar 2022. Den forrige standardkompilatoren var versjon 2.36, bygget 27. januar 2022.

Håndbok for funksjonell sikkerhet

En funksjonell sikkerhetsmanual for MPLAB XC-kompilatorene er tilgjengelig i dokumentasjonspakken når du kjøper en funksjonell sikkerhetslisens.

Komponentlisenser og versjoner

MPLAB® XC8 C Compiler for AVR MCU-verktøy er skrevet og distribuert under GNU General Public License (GPL), som betyr at kildekoden er fritt distribuert og tilgjengelig for allmennheten. Kildekoden for verktøy under GNU GPL kan lastes ned separat fra Microchip's webnettstedet. Du kan lese GNU GPL i file navngitt lokalisert underkatalogen til installasjonsmappen din. En generell diskusjon av prinsippene som ligger til grunn for GPL kan finnes her. Støttekode oppgitt for overskriften files, linkerskript og kjøretidsbiblioteker er proprietær kode og dekkes ikke av GPL.

Denne kompilatoren er en implementering av GCC versjon 5.4.0, binutils versjon 2.26, og bruker avr-libc versjon 2.0.0.

Systemkrav

MPLAB XC8 C-kompilatoren og lisensieringsprogramvaren den bruker er tilgjengelig for en rekke operativsystemer, inkludert 64-biters versjoner av følgende: Profesjonelle utgaver av Microsoft Windows 10; Ubuntu 18.04; og macOS 10.15.5. Binærfiler for Windows er kodesignert. Binærfiler for mac OS har blitt kodesignert og notarisert.

Hvis du kjører en nettverkslisensserver, kan bare datamaskiner med operativsystemer som støttes av kompilatorene brukes som vert for lisensserveren. Fra og med xclm versjon 2.0 kan nettverkslisensserveren installeres på en Microsoft Windows Server-plattform, men lisensserveren trenger ikke å kjøre på en serverversjon av operativsystemet.

Enheter som støttes

Denne kompilatoren støtter alle 8-bits AVR MCU-enheter kjent på utgivelsestidspunktet. Se (i kompilatorens dokumentkatalog) for en liste over alle støttede enheter. Disse files viser også konfigurasjonsbitinnstillinger for hver enhet.

Utgaver og lisensoppgraderinger

MPLAB XC8-kompilatoren kan aktiveres som et lisensiert (PRO) eller ulisensiert (gratis) produkt. Du må kjøpe en aktiveringsnøkkel for å lisensiere kompilatoren din. En lisens gir mulighet for et høyere optimaliseringsnivå sammenlignet med gratisproduktet. En ulisensiert kompilator kan brukes på ubestemt tid uten lisens.

En MPLAB XC8 Functional Safety-kompilator må aktiveres med en funksjonell sikkerhetslisens kjøpt fra Microchip. Kompilatoren vil ikke fungere uten denne lisensen. Når den er aktivert, kan du velge hvilket som helst optimaliseringsnivå og bruke alle kompilatorfunksjonene. Denne utgivelsen av MPLAB XC Functional Safety Compiler støtter nettverksserverlisensen.
Se dokumentet Installere og lisensiere MPLAB XC C Compilers (DS50002059) for informasjon om lisenstyper og installasjon av kompilatoren med lisens.

Installering og aktivering

Se også delene Migrasjonsproblemer og begrensninger for viktig informasjon om den nyeste lisensbehandlingen som følger med denne kompilatoren.
Hvis du bruker MPLAB IDE, sørg for å installere den nyeste MPLAB X IDE versjon 5.0 eller nyere før du installerer dette verktøyet. Avslutt IDE før du installerer kompilatoren. Kjør installasjonsprogrammet .exe (Windows), .run (Linux) eller app (macOS), f.eks. XC8-1.00.11403-windows.exe, og følg instruksjonene på skjermen.
Standard installasjonsmappe anbefales. Hvis du bruker Linux, må du installere kompilatoren ved å bruke en terminal og fra en root-konto. Installer med en macOS-konto med administratorrettigheter.

Aktivering utføres nå separat for installasjon. Se dokumentet License Manager for MPLAB® XC C-kompilatorer (DS52059) for mer informasjon.

Hvis du velger å kjøre kompilatoren under evalueringslisensen, vil du nå få en advarsel under kompileringen når du er innen 14 dager etter slutten av evalueringsperioden. Den samme advarselen gis hvis du er innen 14 dager etter slutten av HPA-abonnementet.

XC Network License Server er et separat installasjonsprogram og er ikke inkludert i enkeltbrukerkompilatorinstallasjonsprogrammet.

XC License Manager støtter nå roaming av flytende nettverkslisenser. Denne funksjonen er rettet mot mobilbrukere og lar en flytende lisens gå av nettverket i en kort periode. Ved å bruke denne funksjonen kan du koble fra nettverket og fortsatt bruke MPLAB XC-kompilatoren. Se dokumentmappen til XCLM-installasjonen for mer om denne funksjonen. MPLAB X IDE inkluderer et lisensvindu (Verktøy > Lisenser) for å visuelt administrere roaming.

Løse installasjonsproblemer

Hvis du opplever problemer med å installere kompilatoren under noen av Windows-operativsystemene, prøv følgende forslag.

  • Kjør installasjonen som administrator.
  • Sett tillatelsene til installasjonsprogrammet til "Full kontroll". (Høyreklikk på file, velg Egenskaper, Sikkerhet-fanen, velg bruker, rediger.)
  • Sett tillatelser for midlertidig mappe til "Full kontroll!

For å finne plasseringen til temp-mappen, skriv inn %temp% i Kjør-kommandoen (Windows-logotasten + R). Dette vil åpne en file Explorer-dialogen som viser den katalogen og lar deg bestemme banen til den mappen.

Kompilatordokumentasjon

Kompilatorens brukerveiledninger kan åpnes fra HTML-siden som åpnes i nettleseren din når du klikker på den blå hjelpeknappen i MPLAB X IDE-dashbordet, som vist på skjermbildet.

Kompilatordokumentasjon
Hvis du bygger for 8-bits AVR-mål, inneholder MPLAB® XC8 C Compiler User's Guide for AVR® MCU informasjon om de kompilatoralternativene og funksjonene som gjelder for denne arkitekturen.

Kundestøtte

Microchip tar gjerne imot feilrapporter, forslag eller kommentarer angående denne kompilatorversjonen. Send eventuelle feilrapporter eller funksjonsforespørsler via støttesystemet.

Dokumentasjonsoppdateringer

For online og oppdaterte versjoner av MPLAB XC8 dokumentasjon, vennligst besøk Microchips online tekniske dokumentasjon webnettstedet.

Ny eller oppdatert AVR-dokumentasjon i denne utgivelsen:

  • MUSL opphavsrettserklæring
  • Installere og lisensiere MPLAB XC C-kompilatorer (revisjon M)
  • MPLAB XC8 brukerveiledning for innebygde ingeniører – AVR MCUer (revisjon A)
  • MPLAB XC8 C Compiler Brukerveiledning for AVR MCU (revisjon F)
  • Microchip Unified Standard Library Reference Guide (revisjon B)

Microchip Unified Standard Library Reference Guide beskriver oppførselen til og grensesnittet til funksjonene definert av Microchip Unified Standard Library, samt den tiltenkte bruken av bibliotektypene og makroene. Noe av denne informasjonen var tidligere inneholdt i MPLAB® XC8 C Compiler User!s Guide for AVR® MCU. Enhetsspesifikk bibliotekinformasjon finnes fortsatt i denne kompilatorveiledningen.

Hvis du nettopp har startet med 8-bits enheter og MPLAB XC8 C-kompilatoren, har MPLAB® XC8 brukerveiledning for innebygde ingeniører – AVR® MCUer (DS50003108) informasjon om hvordan du setter opp prosjekter i MPLAB X IDE og skriver kode for ditt første MPLAB XC8 C-prosjekt. Denne veiledningen er nå distribuert med kompilatoren.

Hamate-brukerveiledningen er inkludert i dokumentkatalogen i denne utgivelsen. Denne veiledningen er ment for de som kjører Hamate som et frittstående program.

Hva er nytt

Følgende er nye AVR-målfunksjoner som kompilatoren nå støtter. Versjonsnummeret i underoverskriftene indikerer den første kompilatorversjonen som støtter funksjonene som følger.

Versjon 2.40

Ny enhetsstøtte Støtte er nå tilgjengelig for følgende AVR-deler: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA, AVR32EA og AVR64EA.
Forbedret prosedyreabstraksjon Optimaliseringsverktøyet for prosedyreabstraksjon (PA) har blitt forbedret slik at kode som inneholder en funksjonsanropsinstruksjon (call recall) kan skisseres. Dette vil kun skje hvis stabelen ikke brukes til å sende argumenter til eller hente returverdi fra funksjonen. Stakken brukes når du kaller en funksjon med en variabel argumentliste eller når du kaller en funksjon som tar flere argumenter enn det er registre utpekt for dette formålet. Denne funksjonen kan deaktiveres ved å bruke alternativet monk-pa-outline-calls, eller prosedyreabstraksjon kan deaktiveres helt for et objekt file eller funksjon ved å bruke -monk-pa-on-file og -mo.-pa-on-funksjon henholdsvis, eller ved å bruke nipa-attributtet (nipa-spesifikasjoner) selektivt med funksjoner

Kodedekningsmakro Kompilatoren definerer nå makroen __CODECOV hvis et gyldig mcodecov-alternativ er spesifisert.

Mulighet for minnereservasjon xc8-cc-driveren vil nå godta -mreserve=space@start: end-alternativet når den bygger for AVR-mål. Dette alternativet reserverer det spesifiserte minneområdet i enten data- eller programminnet, og hindrer linkeren i å fylle ut kode eller objekter i dette området.

Smartere smart IO Flere forbedringer er gjort i Smart IO-funksjonene, inkludert generelle tilpasninger av printf-kjernekoden, behandler %n-konverteringsspesifikatoren som en uavhengig variant, kobling i vararg-pop-rutiner på forespørsel, bruk av kortere datatyper der det er mulig for håndtering av IO-funksjonsargumenter , og faktorisering av felles kode i feltbredde og presisjonshåndtering. Dette kan resultere i betydelige kode- og databesparelser, samt øke utførelseshastigheten til IO.

Versjon 2.39 (Functional Safety Release)

Nettverksserverlisens Denne utgivelsen av MPLAB XC8 Functional Safety Compiler støtter nettverksserverlisensen.

Versjon 2.36

Ingen.

Versjon 2.35

Ny enhetsstøtte Støtte er tilgjengelig for følgende AVR-deler: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 og AVR64DD32.

Forbedret kontekstbytte Det nye alternativet -mcall-isr-prologues endrer hvordan avbruddsfunksjoner lagrer registre ved oppføring og hvordan disse registrene gjenopprettes når avbruddsrutinen avsluttes. Det fungerer på samme måte som alternativet -mcall-prologues, men påvirker bare avbruddsfunksjoner (ISR).

Enda mer forbedret kontekstbytte Det nye alternativet -mgas-isr-prologues kontrollerer kontekstens itch-kode som genereres for små avbruddsrutiner. Når den er aktivert, vil denne funksjonen få montøren til å skanne ISR for registerbruk og bare lagre disse brukte registrene hvis nødvendig.

Konfigurerbar flash-kartlegging Noen enheter i AVR DA- og AVR DB-familien har en SFR (f.eks. FLMAP) som spesifiserer hvilken 32k seksjon av programminnet som skal tilordnes dataminnet. Det nye alternativet – mconst-data-in-config-mapped-proem kan brukes til å få linkeren til å plassere alle ulemper-kvalifiserte data i én 32k-seksjon og automatisk initialisere det relevante SFR-registeret for å sikre at disse dataene blir kartlagt i dataminnet. , hvor den vil bli tilgjengelig mer effektivt.

Microchip Unified Standard Libraries Alle MPLAB XC-kompilatorer vil dele et Microchip Unified Standard Library, som nå er tilgjengelig med denne utgivelsen av MPLAB XC8. MPLAB® XC8 C Compiler User's Guide/eller AVR® MCU inkluderer ikke lenger dokumentasjonen for disse standardfunksjonene. Denne informasjonen kan nå finnes i Microchip Unified Standard Library Reference Guide. Merk at noen funksjoner tidligere definert av avr-libc ikke lenger er tilgjengelig. (Se bibliotek):'. funksjonalitet...)

Smart IO Som en del av de nye enhetlige bibliotekene er IO-funksjoner i utskrifts- og skannefamiliene nå tilpasset generert på hver build, basert på hvordan disse funksjonene brukes i programmet. Dette kan redusere ressursene som brukes av et program betydelig.
Smart IO assistansealternativ Når man analyserer kall til smarte IO-funksjoner (som printf () eller scanf () ), kan ikke kompilatoren alltid bestemme ut fra formatstrengen eller utlede fra argumentene de konverteringsspesifisatorene som kreves av kallet. Tidligere ville kompilatoren alltid ikke gjøre noen forutsetninger og sørge for at fullt funksjonelle IO-funksjoner ble koblet inn i det endelige programbildet. Et nytt – msmart-io-format=fmt-alternativ er lagt til slik at kompilatoren i stedet kan informeres av brukeren om konverteringsspesifikasjonene som brukes av smarte IO-funksjoner hvis bruk er tvetydig, og forhindrer at for lange IO-rutiner kobles sammen. (Se alternativ for smart-io-format for flere detaljer.)

Plassering av egendefinerte seksjoner Tidligere plasserte alternativet -Wl, –section-start bare den spesifiserte delen på den forespurte adressen når linkerskriptet definerte en utdataseksjon med samme navn. Når det ikke var tilfelle, ble seksjonen plassert på en adresse valgt av linkeren, og alternativet ble i hovedsak ignorert. Nå vil alternativet bli respektert for alle egendefinerte seksjoner, selv om linkerskriptet ikke definerer seksjonen. Vær imidlertid oppmerksom på at for standardseksjoner, f.eks. tekst,. bss eller . data, vil den best passende allokatoren fortsatt ha full kontroll over plasseringen, og alternativet vil ikke ha noen effekt. Bruk alternativet -Wl, -Tsection=add, som beskrevet i brukerveiledningen.

Versjon 2.32

Stabelveiledning Tilgjengelig med en PRO-kompilatorlisens, kan kompilatorens stabelveiledningsfunksjon brukes til å estimere maksimal dybde til enhver stabel som brukes av et program. Den konstruerer og analyserer anropsgrafen til et program, bestemmer stabelbruken til hver funksjon, og produserer en rapport der dybden av stabler som brukes av programmet kan utledes. Denne funksjonen er aktivert gjennom kommandolinjealternativet -mchp-stack-usage. Et sammendrag av stabelbruk skrives ut etter utførelse. En detaljert stabelrapport er tilgjengelig på kartet file, som kan etterspørres på vanlig måte.

Støtte for ny enhet er tilgjengelig for følgende AVR-deler: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32 og AVR32DB48 og AVRXNUMXDBXNUMX.

Støtte for tilbaketrukket enhet er ikke lenger tilgjengelig for følgende AVR-deler: AVR16DA28, AVR16DA32 og AVR16DA48.

Versjon 2.31

Ingen.

Versjon 2.30

Nytt alternativ for å forhindre initialisering av data Et nytt -mno-data-ini t driveralternativ forhindrer initialisering av data og sletting av bss-seksjoner. Det fungerer ved å undertrykke utdataene fra do_ copy_ data og d o_ clear_ bss symbolene i assembly files, som igjen vil forhindre inkludering av disse rutinene av linkeren.

Forbedrede optimaliseringer En rekke optimaliseringsforbedringer er gjort, inkludert fjerning av redundante returinstruksjoner, fjerning av noen hopp etter en skip-if-bit-is instruksjon, og forbedret prosedyreabstraksjon og muligheten til å iterere denne prosessen.

Ytterligere alternativer er nå tilgjengelige for å kontrollere noen av disse optimaliseringene, spesifikt -f seksjonsankre, som lar tilgang til statiske objekter utføres i forhold til ett symbol; -mpai derations=n, som gjør at antall prosessuelle abstraksjonsiterasjoner kan endres fra standardverdien på 2; og, -mpa- call cost- shortcall, som utfører mer aggressiv prosedyreabstraksjon, i håp om at linkeren kan slappe av lange samtaler. Dette siste alternativet kan øke kodestørrelsen hvis de underliggende forutsetningene ikke blir realisert.

Ny enhetsstøtte Støtte er tilgjengelig for følgende AVR-deler: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 og AVR128DB.

Støtte for tilbaketrukket enhet Støtte er ikke lenger tilgjengelig for følgende AVR-deler: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, og ATA664251C og ATAXNUMXATA.

Versjon 2.29 (Functional Safety Release)

Overskrift file for kompilator innebygde For å sikre at kompilatoren kan samsvare med språkspesifikasjoner som MISRA, den Overskrift file, som automatisk inkluderes av , har blitt oppdatert. Denne overskriften inneholder prototypene for alle innebygde funksjoner, for eksempel _buil tin _avrnop () og _buil tin_ avr delay_ cycles () . Noen innebygde moduler er kanskje ikke MISRA-kompatible; disse kan utelates ved å legge til define _Xe_ STRICT_ MISRA til kompilatorens kommandolinje. De innebygde og deres erklæringer er oppdatert for å bruke fastbreddetyper.

Versjon 2.20

Ny enhetsstøtte Støtte er tilgjengelig for følgende AVR-deler: ATTINY1624, ATTINY1626 og ATTINY1627.

Bedre tildeling av best passform Best fit allocator (BFA) i kompilatoren har blitt forbedret slik at seksjoner tildeles i en rekkefølge som tillater bedre optimalisering. BFA støtter nå navngitte adresserom og håndterer datainitialisering bedre.

Forbedret prosedyreabstraksjon De prosedyremessige abstraksjonsoptimeringene utføres nå på flere kodesekvenser. Tidligere situasjoner der denne optimaliseringen kan ha økt kodestørrelsen, har blitt løst ved å gjøre optimaliseringskoden oppmerksom på linkerens søppelinnsamlingsprosess.

Fravær av AVR-montør AVR Assembler er ikke lenger inkludert i denne distribusjonen.

Versjon 2.19 (Functional Safety Release)

Ingen.

Versjon 2.10

Kodedekning Denne utgivelsen inkluderer en kodedekningsfunksjon som forenkler analyse av i hvilken grad et prosjekts kildekode har blitt utført. Bruk alternativet -mcodecov=ram for å aktivere det. Etter kjøring av programmet på maskinvaren din, vil kodedekningsinformasjon samles i enheten, og denne kan overføres til og vises av MPLAB X IDE via en kodedekningsplugin. Se IDE-dokumentasjonen for informasjon om denne plugin-en kan fås. #pragma mcodecov kan brukes til å ekskludere påfølgende funksjoner fra dekningsanalysen. Ideelt sett bør pragma legges til i begynnelsen av file å utelukke det hele file fra dekningsanalysen. Alternativt kan attributtet ( (mcodecov) ) brukes til å ekskludere en spesifikk funksjon fra dekningsanalysen.

Enhetsbeskrivelse files En ny enhet file kalt avr chipinfo. html ligger i docs-katalogen til kompilatordistribusjonen. Dette file viser alle enheter som støttes av kompilatoren. Klikk på et enhetsnavn, og det vil åpne en side som viser alle tillatte konfigurasjonsbitinnstillinger/verdipar for den enheten, med f.eks.amples.

Prosedyreabstraksjon Prosedyremessige abstraksjonsoptimaliseringer, som erstatter vanlige blokker med monteringskode med kall til en ekstrahert kopi av den blokken, er lagt til kompilatoren. Disse utføres av en egen applikasjon, som automatisk påkalles av kompilatoren når du velger nivå 2, 3 eller optimaliseringer. Disse optimaliseringene reduserer kodestørrelsen, men de kan redusere utførelseshastigheten og kodefeilsøkbarheten.
Prosedyreabstraksjon kan deaktiveres på høyere optimaliseringsnivåer ved å bruke alternativet -mno-pa, eller kan aktiveres på lavere optimaliseringsnivåer (avhengig av lisensen din) ved å bruke -mpa. Den kan deaktiveres for et objekt file bruker -mno-pa-on-file=filenavn, eller deaktivert for en funksjon ved å bruke -mno-pa på funksjon= funksjon.
Inne i kildekoden din kan prosedyreabstraksjon deaktiveres for en funksjon ved å bruke _attribute_ ( (nopa)) med funksjonens definisjon, eller ved å bruke _nopa, som utvides til attributt ( (nopa, noinline)) og dermed forhindrer funksjonsinlining fra å finne sted og det er abstraksjon av innebygd kode.
Lås bitstøtte i pragma #pragma-konfigurasjonen kan nå brukes til å spesifisere AVR-låsebitene så vel som de andre konfigurasjonsbitene. Sjekk avr chip info. html file (nevnt ovenfor) for innstilling/verdi-parene som skal brukes med denne pragmaen.
Ny enhetsstøtte Støtte er tilgjengelig for følgende deler: AVR28DA128, AVR64DA128, AVR32DA128 og AVR48DA128.

Versjon 2.05

Mer for pengene MacOS-versjonen av denne kompilatoren og lisensbehandlingen er nå en 64-bits applikasjon. Dette vil sikre at kompilatoren vil installere og kjøre uten advarsler på nyere versjoner av macOS.
Const-objekter i programminne Kompilatoren kan nå plassere const-kvalifiserte objekter i programmet Flash-minne, i stedet for å ha disse plassert i RAM. Kompilatoren har blitt modifisert slik at const-kvalifiserte globale data lagres i programmets flashminne, og disse dataene kan fås direkte og indirekte ved å bruke de riktige programminneinstruksjonene. Denne nye funksjonen er aktivert som standard, men kan deaktiveres ved å bruke alternativet -mno-const-data-in-progmem. For avrxmega3- og avrtiny-arkitekturer er ikke denne funksjonen nødvendig og er alltid deaktivert, siden programminnet er tilordnet dataadresserommet for disse enhetene.
Standard gratis Ulisensierte (gratis) versjoner av denne kompilatoren tillater nå optimaliseringer opp til og med nivå 2. Dette vil tillate en lignende, men ikke identisk, utgang til det som tidligere var mulig med en standardlisens.
Velkommen AVRASM2 AVRASM2-monteringsprogrammet for 8-bits enheter er nå inkludert i XC8-kompilatorinstallasjonsprogrammet. Denne assembleren brukes ikke av XC8-kompilatoren, men er tilgjengelig for prosjekter basert på håndskrevet monteringskilde.
Ny enhetsstøtte Støtte er tilgjengelig for følgende deler: ATMEGA1608, ATMEGA1609, ATMEGA808 og ATMEGA809.

Versjon 2.00

Driver på toppnivå En ny driver, kalt xc8-cc, sitter nå over den forrige avr-gcc-driveren og xc8-driveren, og den kan kalle den aktuelle kompilatoren basert på valget av målenheten. Denne driveren godtar alternativer i GCC-stil, som enten oversettes for eller sendes til kompilatoren som kjøres. Denne driveren lar et lignende sett med alternativer med lignende semantikk brukes med ethvert AVR- eller PIC-mål, og er derfor den anbefalte måten å starte kompilatoren på. Om nødvendig kan den gamle avr-gcc-driveren kalles opp direkte ved å bruke de gamle alternativene den godtok i tidligere kompilatorversjoner.

Felles C-grensesnitt Denne kompilatoren kan nå samsvare med MPLAB Common C Interface, slik at kildekoden lettere kan overføres på tvers av alle MPLAB XC-kompilatorer. Alternativet -mext=cci ber om denne funksjonen, og aktiverer alternativ syntaks for mange språkutvidelser.

Ny bibliotekar sjåfør En ny bibliotekardriver er plassert over den forrige PIC-bibliotekaren og AVR avr-ar-bibliotekaren. Denne driveren godtar alternativer i GCC-arkivstil, som enten oversettes for eller sendes videre til bibliotekaren som blir henrettet. Den nye driveren lar et lignende sett med alternativer med lignende semantikk brukes til å lage eller manipulere et hvilket som helst PIC- eller AVR-bibliotek file og er dermed den anbefalte måten å påkalle bibliotekaren. Hvis det er nødvendig for eldre prosjekter, kan den forrige bibliotekaren ringes opp direkte ved å bruke de gamle alternativene den godtok i tidligere kompilatorversjoner.

Migrasjonsproblemer

Følgende er funksjoner som nå håndteres annerledes av kompilatoren. Disse endringene kan kreve modifikasjon av kildekoden din hvis du porterer kode til denne kompilatorversjonen. Versjonsnummeret i underoverskriftene indikerer den første kompilatorversjonen som støtter endringene som følger.

Versjon 2.40

Ingen.

Versjon 2.39 (Functional Safety Release)

Ingen.

Versjon 2.36

Ingen.

Versjon 2.35

Håndtering av streng-til-baser (XCS-2420) For å sikre konsistens med andre XC-kompilatorer, vil XC8-streng-til-funksjonene, som strtol () osv., ikke lenger forsøke å konvertere en inngangsstreng hvis den spesifiserte basen er større enn 36 og vil i stedet sette errno til EINVAL. C-standarden spesifiserer ikke funksjonene til funksjonene når denne grunnverdien overskrides.

Upassende hastighetsoptimaliseringer Prosedyremessige abstraksjonsoptimaliseringer ble aktivert ved valg av nivå 3-optimaliseringer (-03). Disse optimaliseringene reduserer kodestørrelsen på bekostning av kodehastigheten, så de burde ikke vært utført. Prosjekter som bruker dette optimaliseringsnivået kan se forskjeller i kodestørrelse og utførelseshastighet når de bygges med denne utgivelsen.

Bibliotek funksjonalitet Koden for mange av standard C-biblioteksfunksjonene kommer nå fra Microchips Unified Standard Library, som kan vise annerledes oppførsel under noen omstendigheter sammenlignet med det som ble levert av det tidligere avr-libc-biblioteket. For eksample, er det ikke lenger nødvendig å koble i lprintf_flt-biblioteket (-print _flt-alternativet) for å slå på formatert IO-støtte for float-formatspesifikasjoner. De smarte IO-funksjonene til Microchip Unified Standard Library gjør dette alternativet overflødig. I tillegg er det ikke lenger nødvendig å bruke _p-suffiksrutiner for streng- og minnefunksjoner (f.eks. strcpy_P () osv .. ) som opererer på const-strenger i flash. Standard C-rutiner (f.eks. strcpy ()) vil fungere korrekt med slike data når funksjonen const-data-in-program-memory er aktivert.

Versjon 2.32

Ingen.

Versjon 2.31

Ingen.

Versjon 2.30

Ingen.

Versjon 2.29 (Functional Safety Release)

Ingen.

Versjon 2.20

Endret DFP-layout Kompilatoren antar nå et annet oppsett som brukes av DFP-er (Device Family Packs). Dette vil bety at en eldre DFP kanskje ikke fungerer med denne utgivelsen, og at eldre kompilatorer ikke vil kunne bruke de nyeste DFPene.

Versjon 2.19 (Functional Safety Release)

Ingen.

Versjon 2.10

Ingen

Versjon 2.05

Konstobjekter i programminnet Merk at de som standard, const-kvalifiserte objektene vil bli plassert og åpnet i programminnet (som beskrevet her) . Dette vil påvirke størrelsen og utførelseshastigheten til prosjektet ditt, men bør redusere RAM-bruken. Denne funksjonen kan deaktiveres om nødvendig ved å bruke alternativet -mnoconst-da ta-in-progmem.

Versjon 2.00

Konfigurasjonssikringer Enhetskonfigurasjonssikringene kan nå programmeres ved hjelp av en konfigurasjonspragma etterfulgt av innstillingsverdipar for å spesifisere sikringstilstanden, f.eks.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Absolutte objekter og funksjoner Objekter og funksjoner kan nå plasseres på en bestemt adresse i minnet ved å bruke CCI _at (adresse) spesifikasjonen, f.eks.ample: #inkluder int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Argumentet til denne spesifikasjonen må være en konstant som representerer adressen der den første byten eller instruksjonen skal plasseres. RAM-adresser indikeres ved å bruke en offset på 0x800000. Aktiver CCI for å bruke denne funksjonen.
Ny syntaks for avbruddsfunksjon Kompilatoren godtar nå CCI-avbruddsspesifikasjonen (num) for å indikere at C-funksjoner er avbruddsbehandlere. Spesifisereren tar et avbruddsnummer, for eksempelample: #inkluder void avbrudd(SPI STC_ vect _num) spi Isr(void) { … }

Faste problemer

Følgende er korrigeringer som er gjort i kompilatoren. Disse kan fikse feil i den genererte koden eller endre driften av kompilatoren til den som var tiltenkt eller spesifisert av brukerveiledningen. Versjonsnummeret i underoverskriftene indikerer den første kompilatorversjonen som inneholder rettelser for problemene som følger. Etiketten(e) i parentes i tittelen er identifikasjonen av problemet i sporingsdatabasen. Disse kan være nyttige hvis du trenger å kontakte support.

Vær oppmerksom på at noen enhetsspesifikke problemer er rettet i Device Family Pack (DFP) knyttet til enheten. Se MPLAB Pack Manager for informasjon om endringer som er gjort i DFP-er og for å laste ned de nyeste pakkene.

Versjon 2.40

For avslappet (XCS-2876) Når du brukte alternativet -mrelax, allokerte ikke kompilatoren noen seksjoner sammen, noe som resulterte i mindre optimale kodestørrelser. Dette kan ha skjedd med kode som brukte de nye MUSL-bibliotekene eller med svake symboler.
Kartfunksjonen er ikke deaktivert som angitt i advarselen (XCS-2875) Funksjonen cost-data-in-config mapdprogmem er avhengig av at cost-data-in-proem-funksjonen er aktivert. Hvis cost-data-ipconfig-mapped-proem-funksjonen eksplisitt ble aktivert ved å bruke alternativet og cost-data-inprogmem-funksjonen ble deaktivert, mislyktes koblingstrinnet, til tross for en advarsel om at cons data-in-config-mapped- proem-funksjonen var automatisk deaktivert, noe som ikke var helt korrekt. Const-data-in-config-mapped-proem-funksjonen er nå fullstendig deaktivert i denne situasjonen.
DFP-endringer for å få riktig tilgang til NVMCTRL (XCS-2848) Runtime-oppstartskoden brukt av AVR64EA-enheter tok ikke hensyn til at NVMCTRL-registeret var under Configuration Change Protection (CCP) og ikke var i stand til å sette IO SFR til siden brukt av const-data-in configmapped-proem-kompilatoren trekk. Endringer gjort i AVR-Ex_DFP versjon 2.2.55 vil tillate at kjøretidsoppstartskoden skrives riktig til dette registeret.
DFP-endringer for å unngå flash-mapping (XCS-2847) En løsning for et problem med funksjonen for flashkartlegging som er rapportert i AVR128DA28/32/48/64 Silicon Errata (DS80000882) er implementert. Const-data-in-config-mapped-proem-kompilatorfunksjonen vil ikke bli brukt som standard for berørte enheter, og denne endringen vil vises i AVR-Ex_DFP versjon 2.2.160.
Byggefeil med sinhf eller coshf (XCS-2834) Forsøk på å bruke bibliotekfunksjonene sinhf () eller coshf () resulterte i en koblingsfeil som beskriver en udefinert referanse. Den manglende funksjonen det refereres til er nå inkludert i kompilatordistribusjonen.
Byggefeil med nopa (XCS-2833) Bruk av nopa-attributtet med en funksjon som har fått assemblernavnet spesifisert ved å bruke som () utløste feilmeldinger fra assembler. Denne kombinasjonen er ikke mulig.
Variadisk funksjonsfeil med pekerargumenter (XCS-2755, XCS-2731) Funksjoner med et variabelt antall argumenter forventer at 24-biters (_memo type) pekere sendes i listen over variable argumenter når kostnadsdata-i-proem-funksjonen er aktivert. Argumenter som var pekere til dataminne ble sendt som 16-bits objekter, noe som forårsaket kodefeil når de til slutt ble lest. Når cons data-in-proem-funksjonen er aktivert, blir alle 16-bits pekereargumenter nå konvertert til 24-biters pekere. strtoxxx-biblioteksfunksjoner svikter (XCS-2620) Når const-data-in-proem-funksjonen ble aktivert, ble ikke enter-parameteren i strtoxxx-bibliotekfunksjonene oppdatert riktig for kildestrengargumenter som ikke er i programminnet.
Varsler for ugyldige cast (XCS-2612) Kompilatoren vil nå gi en feilmelding hvis kostnad-i-proem-funksjonen er aktivert og adressen til en streng-literal er eksplisitt castet til dataadresserom (slipper const-kvalifiseringen), f.eks.ample, (uint8 t *) "Hei verden!". En advarsel er et problem hvis adressen kan være ugyldig når en const-datapeker eksplisitt castes til dataadresserom.
Plassering av uinitialiserte const-objekter (XCS-2408) Uinitialiserte const og const v olatile objekter ble ikke plassert i programminnet på enheter som tilordner hele eller deler av programminnet til dataadresserommet. For disse enhetene er slike objekter nå plassert i programminnet, noe som gjør at de fungerer i samsvar med andre enheter.

Versjon 2.39 (Functional Safety Release)

Ingen.

Versjon 2.36

Feil ved forsinkelse (XCS-2774) Mindre endringer i standard frimodusoptimalisering forhindret konstant folding av operanduttrykk til de innebygde forsinkelsesfunksjonene, noe som resulterte i at de ble behandlet som ikke-kontakter og utløste feilen: _buil tin avr delay_ cycles expects ac ompile tidsheltallskonstant.

Versjon 2.35

Kontinuerlig tildeling ved hjelp av _at (XCS-2653) Sammenhengende tildeling av flere objektplasseringer i en seksjon med samme navn og bruk av () fungerte ikke riktig. For 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 }; burde ha plassert arr2 umiddelbart etter aril.
Spesifisere seksjonsstartadresser (XCS-2650) Alternativet -Wal, -seksjon-start mislyktes i det stille med å plassere seksjoner på den nominerte startadressen. Dette problemet er løst for alle egendefinerte seksjoner; det vil imidlertid ikke fungere for noen standardseksjoner, for eksempel . tekst eller . bss, som må plasseres med et -Wl, -T-alternativ.
Linker krasjer når du slapper av (XCS-2647) Da -relax-optimaliseringen ble aktivert og det var kode- eller dataseksjoner som ikke passet inn i det tilgjengelige minnet, krasjet linkeren. Nå, i en slik omstendighet, utstedes feilmeldinger i stedet.
Dårlig EEPROM-tilgang (XCS-2629) Leproma _read_ block-rutinen fungerte ikke riktig på Mega-enheter når alternativet -monist-data-in-proem ble aktivert (som er standardtilstanden), noe som resulterte i at EEPROM-minnet ikke ble lest riktig.
Ugyldig minnetildeling (XCS-2593, XCS-2651) Når -Text eller -Tata linker-alternativet (f.eksample sendt gjennom ved å bruke et -Wl-driveralternativ) er spesifisert, den korresponderende tekst-/dataregionens opprinnelse ble oppdatert; sluttadressen ble imidlertid ikke justert tilsvarende, noe som kunne ha ført til at regionen overskred målenhetens minnerekkevidde.
Ugyldig ATtiny avbruddskode (XCS-2465) Når du bygger for Tatin-enheter og optimaliseringene ble deaktivert (-00), kan avbruddsfunksjoner ha utløst operand utenfor rekkevidde assembler-meldinger.
Alternativer blir ikke sendt gjennom (XCS-2452) Når du bruker alternativet -Wl med flere, kommaseparerte linkeralternativer, ble ikke alle linkeralternativene sendt til linkeren.
Feil indirekte lesing av programminne (XCS-2450) I noen tilfeller produserte kompilatoren en intern feil (ugjenkjennelig insn) når den leste en verdi på to byte fra en peker til programminnet

Versjon 2.32

Andre tilgang til biblioteket mislykkes (XCS-2381) Påkaller Windows-versjonen av xc8-ar. exe-biblioteksarkiver en gang til for å få tilgang til et eksisterende bibliotekarkiv kan ha mislyktes med en feilmelding som ikke kan endre navn.

Versjon 2.31

Uforklarlige kompilatorfeil (XCS-2367) Når du kjører på Windows-plattformer som hadde systemets midlertidige katalog satt til en bane som inkluderte en prikk.' karakter, kan kompilatoren ha mislyktes i å kjøre.

Versjon 2.30

Globale etiketter er feilplassert etter kontur (XCS-2299) Håndskrevet sammenstillingskode som plasserer globale etiketter i sammenstillingssekvenser som er faktorisert ut av prosedyreabstraksjon, kan ikke ha blitt riktig reposisjonert.
En avslappende krasj (XCS-2287) Bruk av -merlad-alternativet kan ha fått linkeren til å krasje når tail jump relaxation-optimaliseringer forsøkte å fjerne ret-instruksjoner som ikke var på slutten av en seksjon.
Krasj ved optimalisering av etiketter som verdier (XCS-2282) Kode som bruker "Etiketter som verdier" GNU C-språkutvidelsen kan ha fått de prosedyremessige abstraksjonsoptimaliseringene til å krasje, med en oppsettsfeil for VMA-omfangsspenn.
Ikke så konst (XCS-2271) Prototypene for starter () og andre funksjoner fra ikke lenger spesifisere ikke-standard kostnadskvalifikatoren på returnerte strengpekere når -monist-data inprogmem-funksjonen er deaktivert. Merk at med avrxmega3- og avertin-enheter er denne funksjonen aktivert permanent.
Tapte initialiserere (XCS-2269) Når mer enn én variabel i en oversettelsesenhet ble plassert i en seksjon (ved bruk av seksjon eller attributt ((seksjon))), og den første slike variabelen var null initialisert eller ikke hadde en initialisering, initialiserere for andre variabler i samme oversettelsesenhet som ble plassert i samme seksjon gikk tapt.

Versjon 2.29 (Functional Safety Release)

Ingen.

Versjon 2.20

Feil med lange kommandoer (XCS-1983) Når du bruker et AVR-mål, kan kompilatoren ha stoppet med en file ikke funnet feil, hvis kommandolinjen var ekstremt stor og inneholdt spesialtegn som anførselstegn, omvendt skråstrek osv.
Ikke-tilordnet rodataseksjon (XCS-1920) AVR-linkeren klarte ikke å tilordne minne for tilpassede rodata-seksjoner ved bygging for avrxmega3- og avrtiny-arkitekturer, noe som potensielt kunne forårsake minneoverlappingsfeil

Versjon 2.19 (Functional Safety Release)

Ingen.

Versjon 2.10

Flyttefeil (XCS-1891) Den best passende allokatoren var å etterlate "hull" i minnet mellom seksjonene etter linkeravslapning. Bortsett fra å fragmentere minne, økte dette muligheten for at det er linkerflyttingsfeil knyttet til pc-relative hopp eller samtaler som blir utenfor rekkevidde.
Instruksjoner som ikke er transformert ved avslapning (XCS-1889) Linkeravslapping skjedde ikke for hopp- eller anropsinstruksjoner hvis mål blir nåbare hvis de slappes av.
Savnet funksjonalitet (XCSE-388) Flere definisjoner fra , slik som clock_ div_ t og clock_prescale_set (), ble ikke definert for enheter, inkludert ATmega324PB, ATmega328PB, ATtiny441 og ATtiny841.
Manglende makroer Forprosessormakroene_ xcs _MODE_, _xcs VERSION, _xc og xcs ble ikke automatisk definert av kompilatoren. Disse er nå tilgjengelige.

Versjon 2.05

Intern kompilatorfeil (XCS-1822) Når du bygger under Windows, kan det ha oppstått en intern kompilatorfeil ved optimalisering av kode.
RAM-overflyt ikke oppdaget (XCS-1800, XCS-1796) Programmer som overskred tilgjengelig RAM ble ikke oppdaget av kompilatoren i noen situasjoner, noe som resulterte i en kjøretidskodefeil.
Utelatt flash-minne (XCS-1792) For avrxmega3- og avrtiny-enheter kan deler av flashminnet ha blitt uprogrammert av MPLAB X IDE.
Kunne ikke kjøre main (XCS-1788) I noen situasjoner der programmet ikke hadde noen globale variabler definert, avsluttet ikke kjøretidsoppstartskoden og hovedfunksjonen () ble aldri nådd.
Feil minneinformasjon (XCS-1787) For avrxmega3- og avrtiny-enheter rapporterte programmet avr-størrelse at skrivebeskyttede data forbrukte RAM i stedet for programminne.
Feil programminnelesing (XCS-1783) Prosjekter kompilert for enheter med programminne kartlagt i dataadresserommet og som definerer objekter ved hjelp av PROGMEM-makroen/attributtet kan ha lest disse objektene fra feil adresse.
Intern feil med attributter (XCS-1773) Det oppstod en intern feil hvis du definerte pekerobjekter med
_at () eller attributt() tokens mellom pekernavnet og dereferert type, f.eks.ample, røye *
_at ( 0x80015 0) cp; En advarsel utstedes nå hvis en slik kode påtreffes.
Feil i å kjøre main (XCS-1780, XCS-1767, XCS-1754) Bruk av EEPROM-variabler eller definering av sikringer ved å bruke konfigurasjonspragmaen kan ha forårsaket feil datainitialisering og/eller låst programkjøring i oppstartskoden for kjøretid, før man når main () .
Sikringsfeil med små enheter (XCS-1778, XCS-1742) Attiny4/5/9/10/20/40-enhetene hadde feil sikringslengde spesifisert i overskriften files som fører til linkerfeil ved forsøk på å bygge kode som definerte sikringer.
Segmenteringsfeil (XCS-1777) En intermitterende segmenteringsfeil er rettet.
Monteringskrasj (XCS-1761) Avr-as assembler kan ha krasjet da kompilatoren ble kjørt under Ubuntu 18.
Objekter ikke ryddet (XCS-1752) Uinitialiserte statiske lagringsvarighetsobjekter har kanskje ikke blitt slettet av kjøretidsoppstartskoden.
Motstridende enhetsspesifikasjon ignorert (XCS-1749) Kompilatoren genererte ikke en feil når flere enhetsspesifikasjonsalternativer ble brukt og indikerte forskjellige enheter.
Minnekorrupsjon etter haug (XCS-1748) Heap_ start-symbolet ble feil satt, noe som resulterte i muligheten for at vanlige variabler ble ødelagt av heapen.
Feil ved flytting av kobling (XCS-1739) En linker-flyttefeil kan ha blitt sendt ut når koden inneholdt en rjmp eller rcall med et mål nøyaktig 4k byte unna.

Versjon 2.00

Ingen.

Kjente problemer

Følgende er begrensninger i kompilatorens drift. Dette kan være generelle kodebegrensninger, eller
avvik fra informasjonen i brukerhåndboken. Etiketten(e) i parentes i tittelen er identifikasjonen av problemet i sporingsdatabasen. Dette kan være en fordel hvis du trenger å kontakte support. De elementene som ikke har etiketter er begrensninger som beskriver modusoperandi og som sannsynligvis vil forbli i kraft permanent.

MPLAB X IDE-integrasjon

MPLAB IDE-integrasjon Hvis Compiler skal brukes fra MPLAB IDE, må du installere MPLAB IDE før du installerer Compiler.

Kodegenerering

PA-minnetildelingsfeil (XCS-2881) Når du bruker prosedyreabstraksjonsoptimalisatorene, kan linkeren rapportere minneallokeringsfeil når kodestørrelsen er nær mengden tilgjengelig programminne på enheten, selv om programmet skal kunne passe den tilgjengelige plassen.
Ikke så smart Smart-IO (XCS-2872) Kompilatorens smart-io-funksjon vil generere gyldig, men suboptimal kode for sprint-funksjonen hvis kyst-data-i-proem-funksjonen er deaktivert eller hvis enheten har all flash kartlagt i dataminnet.
Enda mindre smart Smart-IO (XCS-2869) Kompilatorens smart-io-funksjon vil generere gyldig, men suboptimal kode når -floe og -fno-buil tin-alternativene begge brukes.
Suboptimal skrivebeskyttet dataplassering (XCS-2849) Linkeren er foreløpig ikke klar over APPCODE- og APPDATA-minneseksjonene, og heller ikke [No-]Read-While-Write-divisjonene i minnekartet. Som et resultat er det en liten sjanse for at linkeren kan tildele skrivebeskyttet data i et uegnet område av minnet. Sjansen for feilplasserte data øker hvis funksjonen kystdata-i-pragma er aktivert, spesielt hvis funksjonen kystdata-i-konfig-kartlagt-proem også er aktivert. Disse funksjonene kan deaktiveres om nødvendig.
Gjenstand file behandlingsordre (XCS-2863) Rekkefølgen objektene i files vil bli behandlet av linkeren kan variere basert på bruken av prosedyreabstraksjonsoptimaliseringer (-mpa-alternativet). Dette vil bare påvirke kode som definerer svake funksjoner på tvers av flere moduler.
Koblingsfeil med absolutt (XCS-2777) Når et objekt er gjort absolutt på en adresse ved starten av RAM og uinitialiserte objekter også er definert, kan en linkerfeil utløses.
Korte vekke-ID-er (XCS-2775) For ATA5700/2-enheter er PHID0/1-registrene bare definert som 16 bits brede i stedet for 32 bits brede.
Linker krasjer ved anropssymbol (XCS-2758) Linkeren kan krasje hvis -merlad-driveralternativet brukes når kildekoden kaller et symbol som er definert ved å bruke -Wl, –defsym linkeralternativet.
Feil initialisering (XCS-2679) Det er et avvik mellom hvor startverdiene for enkelte globale/statiske byte-objekter er plassert i dataminnet og hvor variablene vil få tilgang til under kjøring.
startet feil setter tom (XCS-2652) I tilfeller der en emnestreng for konvertering med oppgitt () inneholder det som ser ut til å være et flyttall i eksponentielt format og det er et uventet tegn etter et e-tegn, vil den tomme adressen, hvis den er oppgitt, peke til tegnet etter e og ikke e i seg selv. For eksample: stated(“hooey”, tom); vil resultere i tom peker på x-tegnet.
Dårlige indirekte funksjonskall (XCS-2628) I noen tilfeller kan funksjonskall gjort via en funksjonspeker lagret som en del av en struktur mislykkes.
strtof returnerer null for heksadesimale flyter (XCS-2626) Bibliotekfunksjonene strtof () et al og scanf () et al, vil alltid konvertere et heksadesimalt flyttall som ikke spesifiserer en eksponent til
null. For eksample: stator(“Ugle”, &tom); vil returnere verdien 0, ikke 1.
Unøyaktig stabelrådgivermeldinger (XCS-2542, XCS-2541) I noen tilfeller sendes ikke stabelrådgiverens advarsel angående rekursjon eller ubestemt stabel som brukes (muligens gjennom bruk av alloca()).
Feil med duplikat avbruddskode (XCS-2421) Der mer enn én avbruddsfunksjon har samme kropp, kan kompilatoren ha utdata for en avbruddsfunksjon kalle den andre. Dette vil føre til at alle call-clobberde registre blir lagret unødvendig, og avbruddene vil være aktivert allerede før epilogen til gjeldende avbruddsbehandler har kjørt, noe som kan føre til kodefeil.
Konstobjekter ikke i programminnet (XCS-2408) For avrxmega3 og avertins-prosjekter plasseres uidealiserte const-objekter i dataminnet, selv om en advarsel antyder at de har blitt plassert i programminnet. Dette vil ikke påvirke enheter som ikke har programminne kartlagt i dataminnet, og det vil heller ikke påvirke noe objekt som initialiseres.
Dårlig utdata med ugyldig DFP-bane (XCS-2376) Hvis kompilatoren påkalles med en ugyldig DFP-bane og en "spesifikasjon" file eksisterer for den valgte enheten, rapporterer ikke kompilatoren den manglende enhetsfamiliepakken og velger i stedet 'spesifikasjonen' file, som da kan føre til en ugyldig utgang. 'spesifikasjonen' files er kanskje ikke oppdatert med de distribuerte DFP-ene og var kun beregnet på bruk med intern kompilatortesting.
Minneoverlapping uoppdaget (XCS-1966) Kompilatoren oppdager ikke minneoverlappingen av objekter som er gjort absolutte på en adresse (via at ()) og andre objekter som bruker seksjon ()-spesifikasjonen og som er koblet til den samme adressen.
Feil med bibliotekfunksjoner og _meme (XCS-1763) Kalte limbiske flytefunksjoner med et argument i _memo-adresserommet kan mislykkes. Merk at biblioteksrutiner kalles opp fra noen C-operatører, så f.eksample, følgende kode påvirkes: return regFloatVar > memxFloatVar;
Begrenset limbisk implementering (AVRTC-731) For ATTiny4/5/9/10/20/40-produktene er standard C / Math-bibliotekimplementeringen i limbisk svært begrenset eller ikke til stede.
Programminnebegrensninger (AVRTC-732) Programminnebilder utover 128 kb støttes av verktøykjeden; Det er imidlertid kjente tilfeller av linkeravbrudd uten avslapning og uten en nyttig feilmelding i stedet for å generere de nødvendige funksjonstubbene når -relax-alternativet brukes.
Begrensninger for navneplass (AVRTC-733) Navngitte adresserom støttes av verktøykjeden, underlagt begrensningene nevnt i brukerveiledningens avsnitt Spesialtypekvalifiseringer.
Tidssoner De bibliotekfunksjoner antar GMT og støtter ikke lokale tidssoner, 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_ for A VR. htm

Dokumenter / Ressurser

MICROCHIP MPLAB XC8 C kompilatorprogramvare [pdf] Brukerhåndbok
MPLAB XC8 C, MPLAB XC8 C kompilatorprogramvare, kompilatorprogramvare, programvare

Referanser

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket *