MICROCHIP MPLAB XC8 C-compilersoftware 

MICROCHIP MPLAB XC8 C-compilersoftware

DIT DOCUMENT BEVAT BELANGRIJKE INFORMATIE MET BETREKKING TOT DE MPLAB XC8 C-COMPILER BIJ MICROCHIP AVR-APPARATEN.
LEES DEZE AUB VOORDAT U DEZE SOFTWARE GEBRUIKT. ZIE DE MPLAB XC8 C COMPILER RELEASE OPMERKINGEN VOOR PIC DOCUMENT ALS U DE COMPILER GEBRUIKT VOOR 8-BIT PIC APPARATEN.

Overview

Invoering

Deze release van de Microchip MPLAB® XC8 C-compiler bevat verschillende nieuwe functies, bugfixes en nieuwe apparaatondersteuning.

Bouwdatum

De officiële builddatum van deze compilerversie is 3 juli 2022.

Vorige versie

De vorige MPLAB XC8 C-compilerversie was 2.39, een functionele veiligheidscompiler, gebouwd op 27 januari 2022. De vorige standaardcompiler was versie 2.36, gebouwd op 27 januari 2022.

Functionele veiligheidshandleiding

Een Functional Safety Manual voor de MPLAB XC-compilers is beschikbaar in het documentatiepakket wanneer u een Functional Safety-licentie aanschaft.

Componentlicenties en versies

De MPLAB® XC8 C-compiler voor AVR MCU-tools is geschreven en gedistribueerd onder de GNU General Public License (GPL), wat betekent dat de broncode vrij wordt gedistribueerd en beschikbaar is voor het publiek. De broncode voor tools onder de GNU GPL kan afzonderlijk van Microchip's worden gedownload webplaats. U kunt de GNU GPL lezen in de file named bevindt zich in de submap van uw installatiemap. Een algemene bespreking van de principes die ten grondslag liggen aan de GPL is hier te vinden. Ondersteuningscode voor de koptekst files, linkerscripts en runtime-bibliotheken zijn eigen code en vallen niet onder de GPL.

Deze compiler is een implementatie van GCC versie 5.4.0, binutils versie 2.26 en gebruikt avr-libc versie 2.0.0.

Systeemvereisten

De MPLAB XC8 C-compiler en de licentiesoftware die het gebruikt, zijn beschikbaar voor verschillende besturingssystemen, waaronder 64-bits versies van het volgende: Professionele edities van Microsoft Windows 10; Ubuntu 18.04; en macOS 10.15.5. Binaries voor Windows zijn code-ondertekend. Binaire bestanden voor mac OS zijn met een code ondertekend en notarieel bekrachtigd.

Als u een netwerklicentieserver gebruikt, mogen alleen computers met besturingssystemen die door de compilers worden ondersteund, worden gebruikt om de licentieserver te hosten. Vanaf xclm versie 2.0 kan de netwerklicentieserver op een Microsoft Windows Server-platform worden geïnstalleerd, maar hoeft de licentieserver niet op een serverversie van het besturingssysteem te draaien.

Ondersteunde apparaten

Deze compiler ondersteunt alle 8-bit AVR MCU-apparaten die bekend waren op het moment van uitgave. Zie (in de doc-directory van de compiler) voor een lijst met alle ondersteunde apparaten. Deze files geeft ook configuratiebitinstellingen weer voor elk apparaat.

Edities en licentie-upgrades

De MPLAB XC8-compiler kan worden geactiveerd als een gelicentieerd (PRO) of niet-gelicentieerd (gratis) product. U moet een activeringssleutel kopen om uw compiler te licentiëren. Een licentie zorgt voor een hoger niveau van optimalisatie in vergelijking met het gratis product. Een compiler zonder licentie kan voor onbepaalde tijd zonder licentie worden gebruikt.

Een MPLAB XC8 Functional Safety-compiler moet worden geactiveerd met een Functional Safety-licentie die is aangeschaft bij Microchip. Zonder deze licentie werkt de compiler niet. Eenmaal geactiveerd, kunt u elk optimalisatieniveau selecteren en alle compilerfuncties gebruiken. Deze release van de MPLAB XC Functional Safety Compiler ondersteunt de netwerkserverlicentie.
Zie het document Installing and Licensing MPLAB XC C Compilers (DS50002059) voor informatie over licentietypen en installatie van de compiler met een licentie.

Installatie en Activering

Zie ook de secties Migratieproblemen en -beperkingen voor belangrijke informatie over de nieuwste licentiebeheerder die bij deze compiler is geleverd.
Als u MPLAB IDE gebruikt, zorg er dan voor dat u de nieuwste MPLAB X IDE versie 5.0 of later installeert voordat u deze tool installeert. Sluit de IDE voordat u de compiler installeert. Start de .exe (Windows), .run (Linux) of app (macOS) compiler-installatietoepassing, bijv. XC8-1.00.11403-windows.exe en volg de aanwijzingen op het scherm.
De standaard installatiemap wordt aanbevolen. Als u Linux gebruikt, moet u de compiler installeren met behulp van een terminal en vanaf een root-account. Installeer met een macOS-account met beheerdersrechten.

De activering wordt nu afzonderlijk van de installatie uitgevoerd. Zie het document License Manager for MPLAB® XC C Compilers (DS52059) voor meer informatie.

Als u ervoor kiest om de compiler onder de evaluatielicentie uit te voeren, krijgt u nu een waarschuwing tijdens het compileren wanneer u binnen 14 dagen na het einde van uw evaluatieperiode bent. Dezelfde waarschuwing wordt gegeven als u binnen 14 dagen na het einde van uw HPA-abonnement bent.

De XC Network License Server is een afzonderlijk installatieprogramma en maakt geen deel uit van het installatieprogramma voor de single-user compiler.

De XC License Manager ondersteunt nu roaming van zwevende netwerklicenties. Deze functie is gericht op mobiele gebruikers en zorgt ervoor dat een zwevende licentie voor een korte periode van het netwerk kan worden verwijderd. Met deze functie kunt u de verbinding met het netwerk verbreken en toch uw MPLAB XC-compiler gebruiken. Zie de doc-map van de XCLM-installatie voor meer informatie over deze functie. MPLAB X IDE bevat een venster Licenties (Tools > Licenties) om roaming visueel te beheren.

Installatieproblemen oplossen

Als u problemen ondervindt bij het installeren van de compiler onder een van de Windows-besturingssystemen, probeer dan de volgende suggesties.

  • Voer de installatie uit als beheerder.
  • Stel de machtigingen van de installatietoepassing in op 'Volledige controle'. (Klik met de rechtermuisknop op het file, selecteer Eigenschappen, tabblad Beveiliging, selecteer gebruiker, bewerken.)
  • Stel de machtigingen van de tijdelijke map in op "Volledige controle!

Om de locatie van de tijdelijke map te bepalen, typt u %temp% in de opdracht Uitvoeren (Windows-logotoets + R). Dit opent een file verkenner-dialoogvenster met die map en stelt u in staat het pad van die map te bepalen.

Compiler-documentatie

De gebruikershandleidingen van de compiler kunnen worden geopend vanaf de HTML-pagina die in uw browser wordt geopend wanneer u op de blauwe Help-knop in het MPLAB X IDE-dashboard klikt, zoals aangegeven in de schermafbeelding.

Compiler-documentatie
Als u bouwt voor 8-bit AVR-doelen, bevat de MPLAB® XC8 C Compiler Gebruikershandleiding voor AVR® MCU informatie over de compileropties en functies die van toepassing zijn op deze architectuur.

Klantenservice

Microchip verwelkomt bugrapporten, suggesties of opmerkingen met betrekking tot deze compilerversie. Stuur eventuele bugrapporten of functieverzoeken via het ondersteuningssysteem.

Documentatie-updates

Voor on-line en up-to-date versies van MPLAB XC8-documentatie gaat u naar Microchip's online technische documentatie webplaats.

Nieuwe of bijgewerkte AVR-documentatie in deze release:

  • MUSL copyright-kennisgeving
  • MPLAB XC C-compilers installeren en licentiëren (revisie M)
  • MPLAB XC8 Gebruikershandleiding voor Embedded Engineers – AVR MCU's (revisie A)
  • MPLAB XC8 C Compiler Gebruikershandleiding voor AVR MCU (revisie F)
  • Microchip Unified Standard Library Referentiegids (revisie B)

De Microchip Unified Standard Library Reference Guide beschrijft het gedrag van en de interface met de functies die zijn gedefinieerd door de Microchip Unified Standard Library, evenals het bedoelde gebruik van de bibliotheektypen en macro's. Een deel van deze informatie stond voorheen in de MPLAB® XC8 C Compiler User!s Guide for AVR® MCU. Apparaatspecifieke bibliotheekinformatie is nog steeds opgenomen in deze compilerhandleiding.

Als u net begint met 8-bits apparaten en de MPLAB XC8 C Compiler, bevat de MPLAB® XC8 User!s Guide for Embedded Engineers – AVR® MCUs (DS50003108) informatie over het opzetten van projecten in de MPLAB X IDE en het schrijven van code voor uw eerste MPLAB XC8 C-project. Deze gids wordt nu met de compiler gedistribueerd.

De gebruikershandleiding van Hamate is opgenomen in de map docs in deze release. Deze handleiding is bedoeld voor degenen die Hamate als een stand-alone applicatie gebruiken.

Wat is er nieuw?

Hieronder volgen nieuwe AVR-doelfuncties die de compiler nu ondersteunt. Het versienummer in de subkoppen geeft de eerste compilerversie aan die de volgende functies ondersteunt.

Versie 2.40

Nieuwe apparaatondersteuning Ondersteuning is nu beschikbaar voor de volgende AVR-onderdelen: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32 en AVR64EA48.
Verbeterde procedurele abstractie De optimalisatietool voor procedurele abstractie (PA) is verbeterd, zodat code die een functieaanroepinstructie (call recall) bevat, kan worden geschetst. Dit gebeurt alleen als de stapel niet wordt gebruikt om argumenten door te geven aan of retourwaarde van de functie te verkrijgen. De stapel wordt gebruikt bij het aanroepen van een functie met een lijst met variabele argumenten of bij het aanroepen van een functie die meer argumenten nodig heeft dan er registers voor dit doel zijn aangewezen. Deze functie kan worden uitgeschakeld met behulp van de optie monnik-pa-omtrek-oproepen, of procedurele abstractie kan volledig worden uitgeschakeld voor een object file of functie met behulp van de -monk-pa-on-file en -mo.-pa-on-function respectievelijk, of door het nipa-attribuut ( nipa-specificatie) selectief te gebruiken met functies

Codedekkingsmacro De compiler definieert nu de macro __CODECOV als een geldige mcodecov-optie is opgegeven.

Geheugenreserveringsoptie Het xc8-cc-stuurprogramma accepteert nu de optie -mreserve=space@start: end bij het bouwen voor AVR-doelen. Deze optie reserveert het opgegeven geheugenbereik in de gegevens- of programmageheugenruimte, waardoor wordt voorkomen dat de linker code of objecten in dit gebied vult.

Slimmere slimme IO Er zijn verschillende verbeteringen aangebracht aan de Smart IO-functies, waaronder algemene tweaks aan de printf-kerncode, het behandelen van de %n-conversiespecificatie als een onafhankelijke variant, het koppelen van vararg-poproutines op aanvraag, het gebruik van kortere gegevenstypen waar mogelijk voor het verwerken van IO-functieargumenten , en rekening houdend met gemeenschappelijke code in veldbreedte en precisieverwerking. Dit kan leiden tot aanzienlijke code- en gegevensbesparingen en tot een hogere uitvoeringssnelheid van IO.

Versie 2.39 (functionele veiligheidsrelease)

Licentie voor netwerkserver Deze release van de MPLAB XC8 Functional Safety Compiler ondersteunt de netwerkserverlicentie.

Versie 2.36

Geen.

Versie 2.35

Nieuwe apparaatondersteuning Ondersteuning is beschikbaar voor de volgende AVR-onderdelen: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 en AVR64DD32.

Verbeterde contextomschakeling De nieuwe optie -mcall-isr-prologues verandert hoe interruptfuncties registers opslaan bij binnenkomst en hoe die registers worden hersteld wanneer de interruptroutine eindigt. Het werkt op dezelfde manier als de optie -mcall-prologues, maar heeft alleen invloed op interruptfuncties (ISR's).

Nog meer verbeterde contextwisseling De nieuwe optie -mgas-isr-prologues regelt de context-jeukcode die wordt gegenereerd voor kleine interrupt-serviceroutines. Indien ingeschakeld, laat deze functie de assembler de ISR scannen op registergebruik en deze gebruikte registers alleen opslaan als dat nodig is.

Configureerbare flash mapping Sommige apparaten in de AVR DA- en AVR DB-familie hebben een SFR (bijv. FLMAP) die aangeeft welk gedeelte van het programmageheugen van 32 kB wordt toegewezen aan het datageheugen. De nieuwe optie - mconst-data-in-config-mapped-proem kan worden gebruikt om de linker alle cons-gekwalificeerde gegevens in één 32k-sectie te laten plaatsen en automatisch het relevante SFR-register te initialiseren om ervoor te zorgen dat deze gegevens worden toegewezen aan de gegevensgeheugenruimte , waar het effectiever toegankelijk zal zijn.

Microchip Unified Standard-bibliotheken Alle MPLAB XC-compilers zullen een Microchip Unified Standard Library delen, die nu beschikbaar is met deze release van MPLAB XC8. De MPLAB® XC8 C Compiler User's Guide/of AVR® MCU bevat niet langer de documentatie voor deze standaardfuncties. Deze informatie is nu te vinden in de Microchip Unified Standard Library Reference Guide. Merk op dat sommige functies die eerder door avr-libc zijn gedefinieerd, niet langer beschikbaar zijn. (Zie bibliothecaris):'. functionaliteit...)

Slimme I/O Als onderdeel van de nieuwe uniforme bibliotheken worden IO-functies in de print- en scanfamilies nu op maat gegenereerd bij elke build, op basis van hoe deze functies in het programma worden gebruikt. Dit kan de middelen die door een programma worden gebruikt aanzienlijk verminderen.
Optie Smart IO-assistentie Bij het analyseren van aanroepen naar slimme IO-functies (zoals printf () of scanf () ), kan de compiler niet altijd uit de formaatreeks bepalen of uit de argumenten afleiden welke conversiespecificaties vereist zijn voor de aanroep. Voorheen deed de compiler altijd geen aannames en zorgde ervoor dat volledig functionele IO-functies werden gekoppeld aan het uiteindelijke programma-image. Er is een nieuwe optie - msmart-io-format=fmt toegevoegd, zodat de compiler in plaats daarvan door de gebruiker kan worden geïnformeerd over de conversiespecificaties die worden gebruikt door slimme IO-functies waarvan het gebruik dubbelzinnig is, waardoor wordt voorkomen dat extreem lange IO-routines worden gekoppeld. (Zie Smart-io-formaatoptie voor meer details.)

Aangepaste secties plaatsen Voorheen plaatste de optie -Wl, –section-start alleen de opgegeven sectie op het gevraagde adres wanneer het linkerscript een uitvoersectie met dezelfde naam definieerde. Wanneer dat niet het geval was, werd de sectie op een door de linker gekozen adres geplaatst en werd de optie in wezen genegeerd. Nu wordt de optie gehonoreerd voor alle aangepaste secties, zelfs als het linkerscript de sectie niet definieert. Merk echter op dat voor standaardsecties, zoals . tekst, . bs of . gegevens, heeft de best passende allocator nog steeds volledige controle over hun plaatsing en heeft de optie geen effect. Gebruik de optie -Wl, -Tsection=add, zoals beschreven in de gebruikershandleiding.

Versie 2.32

Stapel begeleiding Beschikbaar met een PRO-compilerlicentie, kan de stapelbegeleidingsfunctie van de compiler worden gebruikt om de maximale diepte te schatten van elke stapel die door een programma wordt gebruikt. Het construeert en analyseert de oproepgrafiek van een programma, bepaalt het stapelgebruik van elke functie en produceert een rapport waaruit de diepte van de stapels die door het programma worden gebruikt, kan worden afgeleid. Deze functie wordt ingeschakeld via de opdrachtregeloptie -mchp-stack-usage. Na uitvoering wordt een samenvatting van het stapelgebruik afgedrukt. Een gedetailleerd stapelrapport is beschikbaar op de kaart file, die op de gebruikelijke manier kan worden aangevraagd.

Ondersteuning voor nieuwe apparaten is beschikbaar voor de volgende AVR-onderdelen: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32 en AVR32DB48.

Ingetrokken apparaatondersteuning Ondersteuning is niet langer beschikbaar voor de volgende AVR-onderdelen: AVR16DA28, AVR16DA32 en AVR16DA48.

Versie 2.31

Geen.

Versie 2.30

Nieuwe optie om gegevensinitialisatie te voorkomen Een nieuwe -mno-data-init driveroptie voorkomt de initialisatie van gegevens en het wissen van bss-secties. Het werkt door de uitvoer van de symbolen do_copy_data en d o_clear_bss in assembly te onderdrukken files, wat op zijn beurt zal voorkomen dat die routines door de linker worden opgenomen.

Verbeterde optimalisaties Er zijn een aantal optimalisatieverbeteringen aangebracht, waaronder het verwijderen van redundante retourinstructies, het verwijderen van enkele sprongen na een skip-if-bit-is-instructie, en verbeterde procedurele abstractie en de mogelijkheid om dit proces te herhalen.

Er zijn nu extra opties beschikbaar om sommige van deze optimalisaties te regelen, met name -f sectie-ankers, waarmee toegang tot statische objecten kan worden uitgevoerd ten opzichte van één symbool; -mpai derations=n, waarmee het aantal procedurele abstractie-iteraties kan worden gewijzigd ten opzichte van de standaardwaarde van 2; en, -mpa- call cost- shortcall, die agressievere procedurele abstractie uitvoert, in de hoop dat de linker lange gesprekken kan ontspannen. Deze laatste optie kan de codeomvang vergroten als de onderliggende aannames niet worden gerealiseerd.

Nieuwe apparaatondersteuning Ondersteuning is beschikbaar voor de volgende AVR-onderdelen: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 en AVR128DB64.

Ondersteuning voor ingetrokken apparaten Ondersteuning is niet langer beschikbaar voor de volgende AVR-onderdelen: ATA5272, ATA5790, ATA5790N,ATA5791,ATA5795,ATA6285,ATA6286,ATA6612C,ATA6613C,ATA6614Q, ATA6616C, ATA6617C en ATA664251.

Versie 2.29 (functionele veiligheidsrelease)

Koptekst file voor ingebouwde compiler Om ervoor te zorgen dat de compiler kan voldoen aan taalspecificaties zoals MISRA, de koptekst file, die automatisch wordt opgenomen door , is geupdate. Deze header bevat de prototypes voor alle ingebouwde functies, zoals _buil tin _avrnop () en _buil tin_ avr delay_cycles () . Sommige ingebouwde apparaten zijn mogelijk niet MISRA-compatibel; deze kunnen worden weggelaten door de define _Xe_ STRICT_ MISRA toe te voegen aan de opdrachtregel van de compiler. De ingebouwde functies en hun declaraties zijn bijgewerkt om typen met een vaste breedte te gebruiken.

Versie 2.20

Nieuwe apparaatondersteuning Ondersteuning is beschikbaar voor de volgende AVR-onderdelen: ATTINY1624, ATTINY1626 en ATTINY1627.

Betere best passende toewijzing De best passende allocator (BFA) in de compiler is verbeterd, zodat secties worden toegewezen in een volgorde die een betere optimalisatie mogelijk maakt. De BFA ondersteunt nu benoemde adresruimten en kan gegevensinitialisatie beter aan.

Verbeterde procedurele abstractie De procedurele abstractie-optimalisaties worden nu uitgevoerd op meer codereeksen. Eerdere situaties waarin deze optimalisatie de codeomvang mogelijk had vergroot, zijn verholpen door de optimalisatiecode bewust te maken van het afvalverzamelingsproces van de linker.

Afwezigheid van AVR-monteur De AVR Assembler wordt niet meer meegeleverd met deze distributie.

Versie 2.19 (functionele veiligheidsrelease)

Geen.

Versie 2.10

Codedekking Deze release bevat een functie voor codedekking die analyse mogelijk maakt van de mate waarin de broncode van een project is uitgevoerd. Gebruik de optie -mcodecov=ram om het in te schakelen. Na uitvoering van het programma op uw hardware, wordt codedekkingsinformatie verzameld in het apparaat, en deze kan worden overgedragen naar en weergegeven door de MPLAB X IDE via een codedekkingsplug-in. Zie de IDE-documentatie voor informatie over deze plug-in die kan worden verkregen. De #pragma mcodecov kan worden gebruikt om volgende functies uit te sluiten van de dekkingsanalyse. Idealiter zou het pragma aan het begin van de file om dat geheel uit te sluiten file uit de dekkingsanalyse. Als alternatief kan het attribuut ( (mcodecov) ) worden gebruikt om een ​​specifieke functie uit te sluiten van de dekkingsanalyse.

Beschrijving van het apparaat files Een nieuw apparaat file avr chipinfo genoemd. html bevindt zich in de map docs van de compilerdistributie. Dit file somt alle apparaten op die door de compiler worden ondersteund. Klik op een apparaatnaam en er wordt een pagina geopend met alle toegestane configuratiebit-instelling/waardeparen voor dat apparaat, met bijv.amples.

Procedurele abstractie Procedurele abstractie-optimalisaties, die gewone blokken assemblagecode vervangen door oproepen naar een geëxtraheerde kopie van dat blok, zijn aan de compiler toegevoegd. Deze worden uitgevoerd door een aparte applicatie, die automatisch wordt aangeroepen door de compiler bij het selecteren van niveau 2, 3 of optimalisaties. Deze optimalisaties verminderen de codegrootte, maar ze kunnen de uitvoeringssnelheid en foutopsporing in de code verminderen.
Procedurele abstractie kan worden uitgeschakeld op hogere optimalisatieniveaus met behulp van de optie -mno-pa, of kan worden ingeschakeld op lagere optimalisatieniveaus (afhankelijk van uw licentie) met behulp van -mpa. Het kan worden uitgeschakeld voor een object file met behulp van -mno-pa-on-file=filenaam, of uitgeschakeld voor een functie door -mno-pa op functie= functie te gebruiken.
Binnen uw broncode kan procedurele abstractie worden uitgeschakeld voor een functie door _attribute_ ((nopa)) te gebruiken met de functiedefinitie, of door _nopa te gebruiken, dat uitbreidt naar attribuut ((nopa, noinline)) en zo voorkomt dat functie-inlining plaatsvindt en er is abstractie van inline code.
Slotbitondersteuning in pragma De #pragma-configuratie kan nu worden gebruikt om zowel de AVR-vergrendelingsbits als de andere configuratiebits te specificeren. Controleer de avr-chipinfo. html file (hierboven vermeld) voor de instelling/waarde-paren die met dit pragma moeten worden gebruikt.
Nieuwe apparaatondersteuning Ondersteuning is beschikbaar voor de volgende onderdelen: AVR28DA128, AVR64DA128,AVR32DA128 en AVR48DA128.

Versie 2.05

Meer bits voor je geld De macOS-versie van deze compiler en licentiebeheerder is nu een 64-bits applicatie. Dit zorgt ervoor dat de compiler zonder waarschuwingen wordt geïnstalleerd en uitgevoerd op recente versies van macOS.
Const-objecten in het programmageheugen De compiler kan nu const-gekwalificeerde objecten in het flash-geheugen van het programma plaatsen in plaats van dat deze zich in het RAM-geheugen bevinden. De compiler is aangepast zodat const-gekwalificeerde globale gegevens worden opgeslagen in het flash-geheugen van het programma en deze gegevens kunnen direct en indirect worden benaderd met behulp van de juiste instructies voor het programmageheugen. Deze nieuwe functie is standaard ingeschakeld, maar kan worden uitgeschakeld met de optie -mno-const-data-in-progmem. Voor avrxmega3- en avrtiny-architecturen is deze functie niet vereist en altijd uitgeschakeld, aangezien het programmageheugen is toegewezen aan de gegevensadresruimte voor deze apparaten.
Standaard gratis Niet-gelicentieerde (gratis) versies van deze compiler maken nu optimalisaties mogelijk tot en met niveau 2. Dit maakt een vergelijkbare, hoewel niet identieke, output mogelijk als voorheen mogelijk was met een standaardlicentie.
Welkom AVRASM2 De AVRASM2-assembler voor 8-bits apparaten is nu opgenomen in het XC8-compiler-installatieprogramma. Deze assembler wordt niet gebruikt door de XC8-compiler, maar is beschikbaar voor projecten op basis van handgeschreven assemblagebron.
Nieuwe apparaatondersteuning Ondersteuning is beschikbaar voor de volgende onderdelen: ATMEGA1608, ATMEGA1609, ATMEGA808 en ATMEGA809.

Versie 2.00

Bestuurder van het hoogste niveau Een nieuw stuurprogramma, xc8-cc genaamd, bevindt zich nu boven het vorige avr-gcc-stuurprogramma en het xc8-stuurprogramma en kan de juiste compiler oproepen op basis van de selectie van het doelapparaat. Deze driver accepteert opties in GCC-stijl, die worden vertaald voor of doorgegeven aan de compiler die wordt uitgevoerd. Dit stuurprogramma maakt het mogelijk een vergelijkbare set opties met vergelijkbare semantiek te gebruiken met elk AVR- of PIC-doel en is daarom de aanbevolen manier om de compiler aan te roepen. Indien nodig kan het oude avr-gcc-stuurprogramma rechtstreeks worden aangeroepen met behulp van de ouderwetse opties die het accepteerde in eerdere compilerversies.

Gemeenschappelijke C-interface Deze compiler kan nu voldoen aan de MPLAB Common C Interface, waardoor de broncode gemakkelijker kan worden overgezet naar alle MPLAB XC-compilers. De optie -mext=cci vraagt ​​om deze functie, waardoor alternatieve syntaxis voor veel taalextensies mogelijk wordt.

Nieuwe bibliothecaris driver Een nieuwe bibliothecaris-driver is gepositioneerd boven de vorige PIC-libr-librarian en de AVR avr-ar-librarian. Deze driver accepteert GCC-archiver-achtige opties, die worden vertaald voor of doorgegeven aan de bibliothecaris die wordt uitgevoerd. Met het nieuwe stuurprogramma kan een vergelijkbare set opties met vergelijkbare semantiek worden gebruikt om elke PIC- of AVR-bibliotheek te maken of te manipuleren file en is dus de aanbevolen manier om de bibliothecaris aan te roepen. Indien vereist voor verouderde projecten, kan de vorige bibliothecaris rechtstreeks worden aangeroepen met behulp van de oude stijlopties die in eerdere compilerversies werden geaccepteerd.

Migratieproblemen

Hieronder volgen functies die nu anders worden afgehandeld door de compiler. Deze wijzigingen vereisen mogelijk een aanpassing van uw broncode als u code overdraagt ​​naar deze compilerversie. Het versienummer in de subkoppen geeft de eerste compilerversie aan die de volgende wijzigingen ondersteunt.

Versie 2.40

Geen.

Versie 2.39 (functionele veiligheidsrelease)

Geen.

Versie 2.36

Geen.

Versie 2.35

Behandeling van string-naar-bases (XCS-2420) Om consistentie met andere XC-compilers te garanderen, zullen de XC8 string-to-functies, zoals strtol () etc., niet langer proberen een invoerstring te converteren als het opgegeven grondtal groter is dan 36 en stellen ze in plaats daarvan errno in op EINVAL. De C-norm specificeert niet het gedrag van de functies bij overschrijding van deze basiswaarde.

Ongepaste snelheidsoptimalisaties Procedurele abstractie-optimalisaties werden ingeschakeld bij het selecteren van optimalisaties van niveau 3 (-03). Deze optimalisaties verkleinen de codegrootte ten koste van de codesnelheid en hadden dus niet mogen worden uitgevoerd. Projecten die dit optimalisatieniveau gebruiken, kunnen verschillen zien in codegrootte en uitvoeringssnelheid wanneer ze met deze release worden gebouwd.

Bibliotheek functionaliteit De code voor veel van de standaard C-bibliotheekfuncties is nu afkomstig van Microchip's Unified Standard Library, die in sommige omstandigheden ander gedrag kan vertonen in vergelijking met de vroegere avr-libc-bibliotheek. Voor bijvample, is het niet langer nodig om te linken in de lprintf_flt-bibliotheek (optie -print _flt) om geformatteerde IO-ondersteuning voor float-formaatspecificaties in te schakelen. De slimme IO-functies van de Microchip Unified Standard Library maken deze optie overbodig. Bovendien is het gebruik van routines met het achtervoegsel _p voor string- en geheugenfuncties (bijv. strcpy_P () etc.. ) die werken op const-strings in flash niet langer nodig. De standaard C-routines (bijv. strcpy ()) werken correct met dergelijke gegevens wanneer de functie const-data-in-programmageheugen is ingeschakeld.

Versie 2.32

Geen.

Versie 2.31

Geen.

Versie 2.30

Geen.

Versie 2.29 (functionele veiligheidsrelease)

Geen.

Versie 2.20

Gewijzigde DFP-indeling De compiler gaat nu uit van een andere lay-out die wordt gebruikt door DFP's (Device Family Packs). Dit betekent dat een oudere DFP mogelijk niet werkt met deze release en dat oudere compilers de nieuwste DFP's niet kunnen gebruiken.

Versie 2.19 (functionele veiligheidsrelease)

Geen.

Versie 2.10

Geen

Versie 2.05

Const-objecten in het programmageheugen Merk op dat de standaard, const-gekwalificeerde objecten in het programmageheugen worden geplaatst en benaderd (zoals hier beschreven). Dit heeft invloed op de grootte en uitvoeringssnelheid van uw project, maar zou het RAM-gebruik moeten verminderen. Deze functie kan indien nodig worden uitgeschakeld met de optie -mnoconst- data-in-progmem.

Versie 2.00

Configuratie zekeringen De zekeringen van de apparaatconfiguratie kunnen nu worden geprogrammeerd met behulp van een configuratiepragma gevolgd door instelwaardeparen om de status van de zekering te specificeren, bijv.
#pragma-config WDT0N = SET
#pragma-configuratie B0DLEVEL = B0DLEVEL_4V3
Absolute objecten en functies Objecten en functies kunnen nu op een specifiek adres in het geheugen worden geplaatst met behulp van de CCI _at (adres) specificatie, bijvoorbeeldample: #include int foobar op (Ox800100); char at(Ox250) get ID(int offset) { … } Het argument voor deze specificatie moet een constante zijn die het adres vertegenwoordigt waarop de eerste byte of instructie zal worden geplaatst. RAM-adressen worden aangegeven met een offset van 0x800000. Schakel de CCI in om deze functie te gebruiken.
Nieuwe syntaxis van de interruptfunctie De compiler accepteert nu de CCI-interrupt (num)-specificatie om aan te geven dat C-functies interrupt-handlers zijn. De specificatie neemt bijvoorbeeld een interruptnummerample: #include leegte onderbreken(SPI STC_ vect _num) spi Isr(void) { … }

Opgeloste problemen

Hieronder volgen correcties die in de compiler zijn aangebracht. Deze kunnen bugs in de gegenereerde code repareren of de werking van de compiler wijzigen in de bedoeling of gespecificeerd in de gebruikershandleiding. Het versienummer in de subkoppen geeft de eerste compilerversie aan die oplossingen bevat voor de volgende problemen. Het(de) label(s) tussen haakjes in de titel zijn de identificatie van dat nummer in de trackingdatabase. Deze kunnen handig zijn als u contact moet opnemen met de ondersteuning.

Houd er rekening mee dat sommige apparaatspecifieke problemen zijn verholpen in het Device Family Pack (DFP) dat aan het apparaat is gekoppeld. Zie de MPLAB Pack Manager voor informatie over wijzigingen die zijn aangebracht in DFP's en om de nieuwste packs te downloaden.

Versie 2.40

Te ontspannen (XCS-2876) Bij gebruik van de optie -mrelax wees de compiler sommige secties niet samen toe, wat resulteerde in minder optimale codegroottes. Dit kan zijn gebeurd met code die de nieuwe MUSL-bibliotheken gebruikte of met zwakke symbolen.
Kaartfunctie niet uitgeschakeld zoals vermeld in waarschuwing (XCS-2875) De cost-data-in-config mappedprogmem-functie is afhankelijk van het inschakelen van de cost-data-in-proem-functie. Als de cost-data-ipconfig-mapped-proem-functie expliciet was ingeschakeld met behulp van de optie en de cost-data-inprogmem-functie was uitgeschakeld, is de koppelingsstap mislukt, ondanks een waarschuwingsbericht waarin staat dat de nadelen data-in-config-mapped- proem-functie was automatisch uitgeschakeld, wat niet helemaal correct was. De functie const-data-in-config-mapped-proem is nu volledig uitgeschakeld in deze situatie.
DFP-wijzigingen voor correcte toegang tot NVMCTRL (XCS-2848) De runtime-opstartcode die door AVR64EA-apparaten wordt gebruikt, hield geen rekening met het feit dat het NVMCTRL-register onder Configuration Change Protection (CCP) viel en de IO SFR niet kon instellen op de pagina die wordt gebruikt door de const-data-in configmapped-proem-compiler functie. Door wijzigingen in AVR-Ex_DFP versie 2.2.55 kan de runtime-opstartcode correct naar dit register schrijven.
DFP-wijzigingen om flash-mapping te voorkomen (XCS-2847) Er is een tijdelijke oplossing geïmplementeerd voor een probleem met de functie voor het in kaart brengen van het flashgeheugen, gerapporteerd in de AVR128DA28/32/48/64 Silicon Errata (DS80000882). De compilerfunctie const-data-in-config-mapped-proem wordt niet standaard toegepast op getroffen apparaten en deze wijziging wordt weergegeven in AVR-Ex_DFP versie 2.2.160.
Bouwfout met sinhf of coshf (XCS-2834) Pogingen om de bibliotheekfuncties sinhf () of coshf () te gebruiken resulteerden in een linkfout, die een niet-gedefinieerde referentie beschrijft. De ontbrekende functie waarnaar wordt verwezen, is nu opgenomen in de compilerdistributie.
Bouwfouten met nopa (XCS-2833) Het gebruik van het nopa-attribuut met een functie waarvan de assembler-naam is opgegeven met as () veroorzaakte foutmeldingen van de assembler. Deze combinatie is niet mogelijk.
Variadische functiefout met aanwijzerargumenten (XCS-2755, XCS-2731) Functies met een variabel aantal argumenten verwachten dat 24-bits (_memo type) pointers worden doorgegeven in de lijst met variabele argumenten wanneer de cost-data-in-proem-functie is ingeschakeld. Argumenten die verwijzingen naar het gegevensgeheugen waren, werden doorgegeven als 16-bits objecten, waardoor de code mislukte toen ze uiteindelijk werden gelezen. Wanneer de cons data-in-proem-functie is ingeschakeld, worden alle 16-bit pointers-argumenten nu geconverteerd naar 24-bit pointers. strtoxxx-bibliotheekfuncties werken niet (XCS-2620) Wanneer de functie const-data-in-proem was ingeschakeld, werd de enter-parameter in de strtoxxx-bibliotheekfuncties niet correct bijgewerkt voor brontekenreeksargumenten die zich niet in het programmageheugen bevinden.
Waarschuwingen voor ongeldige casts (XCS-2612) De compiler geeft nu een foutmelding als de cost-in-proem-functie is ingeschakeld en het adres van een letterlijke tekenreeks expliciet naar de gegevensadresruimte wordt gecast (waarbij de const-kwalificatie wordt verwijderd), bijvoorbeeldample, (uint8 t *) "Hallo wereld!". Er wordt een waarschuwing weergegeven als het adres mogelijk ongeldig is wanneer een const-gegevensaanwijzer expliciet naar de gegevensadresruimte wordt gecast.
Plaatsing van niet-geïnitialiseerde const-objecten (XCS-2408) Niet-geïnitialiseerde const en const vluchtige objecten werden niet in het programmageheugen geplaatst op apparaten die hun programmageheugen geheel of gedeeltelijk toewijzen aan de gegevensadresruimte. Voor deze apparaten worden dergelijke objecten nu in het programmageheugen geplaatst, waardoor hun werking consistent is met die van andere apparaten.

Versie 2.39 (functionele veiligheidsrelease)

Geen.

Versie 2.36

Fout bij vertraging (XCS-2774) Kleine wijzigingen in de standaard optimalisaties van de vrije modus verhinderden het constant vouwen van operandexpressies naar de ingebouwde vertragingsfuncties, waardoor ze werden behandeld als contactloze functies en de fout werd geactiveerd: _buil tin avr delay_ cycles expects a ompile tijd integer constant.

Versie 2.35

Aaneengesloten toewijzing met behulp van _at (XCS-2653) Aaneengesloten toewijzing van meerdere objectplaatsen in een sectie met dezelfde naam en het gebruik van at () werkte niet correct. Voor bijvample: constchararrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[ ] at tri butte ((section(“.my s eke”))) = {Ossen, Ox FE }; had arr2 direct na aril moeten plaatsen.
Startadressen van secties specificeren (XCS-2650) De optie -Wal, –sectie-start slaagde er stilletjes niet in om secties op het opgegeven startadres te plaatsen. Dit probleem is opgelost voor secties met aangepaste namen; het werkt echter niet voor standaardsecties, zoals . tekst of . bss, die moet worden geplaatst met de optie -Wl, -T.
Linker crasht bij ontspannen (XCS-2647) Toen de optimalisatie -relax was ingeschakeld en er code- of gegevenssecties waren die niet in het beschikbare geheugen pasten, crashte de linker. Nu, in een dergelijke omstandigheid, worden in plaats daarvan foutmeldingen gegeven.
Slechte EEPROM-toegang (XCS-2629) De leproma _read_ block-routine werkte niet correct op Mega-apparaten wanneer de optie -monist-data-in-proem was ingeschakeld (wat de standaardstatus is), waardoor het EEPROM-geheugen niet correct werd gelezen.
Ongeldige geheugentoewijzing (XCS-2593, XCS-2651) Wanneer de linkeroptie -Text of -Tata (bijvample doorgegeven met behulp van een -Wl driveroptie) is opgegeven, de corresponderende oorsprong van het tekst-/gegevensgebied is bijgewerkt; het eindadres was echter niet dienovereenkomstig aangepast, wat ertoe had kunnen leiden dat de regio het geheugenbereik van het doelapparaat overschreed.
Ongeldige ATtiny-interruptcode (XCS-2465) Bij het bouwen voor Tatin-apparaten en de optimalisaties waren uitgeschakeld (-00), kunnen interruptfuncties operand-out-of-range assembler-berichten hebben geactiveerd.
Opties worden niet doorgegeven (XCS-2452) Bij gebruik van de optie -Wl met meerdere, door komma's gescheiden linkeropties, werden niet alle linkeropties doorgegeven aan de linker.
Fout bij indirect lezen van programmageheugen (XCS-2450) In sommige gevallen produceerde de compiler een interne fout (onherkenbare insn) bij het lezen van een waarde van twee bytes van een aanwijzer naar het programmageheugen

Versie 2.32

Tweede toegang tot bibliotheek mislukt (XCS-2381) De Windows-versie van de xc8-ar aanroepen. exe-bibliotheekarchivering een tweede keer om toegang te krijgen tot een bestaand bibliotheekarchief is mogelijk mislukt met een foutmelding dat de naam niet kan worden gewijzigd.

Versie 2.31

Onverklaarbare compilerfouten (XCS-2367) Bij uitvoering op Windows-platforms waarop de tijdelijke systeemmap was ingesteld op een pad met een punt '.' teken, is de compiler mogelijk niet uitgevoerd.

Versie 2.30

Globale labels verkeerd geplaatst na schetsen (XCS-2299) Handgeschreven assemblagecode die globale labels plaatst in assemblagereeksen die zijn weggelaten door procedurele abstractie, is mogelijk niet correct geherpositioneerd.
Een ontspannende crash (XCS-2287) Het gebruik van de optie -merlad kan ertoe hebben geleid dat de linker is gecrasht toen optimalisaties van staartsprongrelaxatie probeerden ret-instructies te verwijderen die niet aan het einde van een sectie stonden.
Crash bij het optimaliseren van labels als waarden (XCS-2282) Code die de GNU C-taalextensie "Labels als waarden" gebruikt, kan ervoor hebben gezorgd dat de procedurele abstractie-optimalisaties zijn gecrasht, met een fout voor het oplossen van een overzicht van VMA-bereikbereiken.
Niet zo constant (XCS-2271) De prototypes voor starts () en andere functies van specificeer niet langer de niet-standaard kostenkwalificatie op geretourneerde stringpointers wanneer de functie -monist-data inprogmem is uitgeschakeld. Merk op dat met avrxmega3- en avertin-apparaten deze functie permanent is ingeschakeld.
Verloren initialisatieprogramma's (XCS-2269) Wanneer meer dan één variabele in een vertaaleenheid in een sectie werd geplaatst (met behulp van sectie of attribuut ((sectie))), en de eerste dergelijke variabele nul geïnitialiseerd was of geen initialisatie had, initialisaties voor andere variabelen in dezelfde vertaaleenheid die in dezelfde sectie waren geplaatst, gingen verloren.

Versie 2.29 (functionele veiligheidsrelease)

Geen.

Versie 2.20

Fout bij lange opdrachten (XCS-1983) Bij gebruik van een AVR-doel is de compiler mogelijk gestopt met een file niet gevonden-fout, als de opdrachtregel extreem groot was en speciale tekens bevatte, zoals aanhalingstekens, backslashes, enz.
Niet-toegewezen rodata-sectie (XCS-1920) De AVR-linker kon geen geheugen toewijzen voor aangepaste rodata-secties bij het bouwen voor avrxmega3- en avrtiny-architecturen, waardoor mogelijk geheugenoverlappingsfouten ontstonden

Versie 2.19 (functionele veiligheidsrelease)

Geen.

Versie 2.10

Verhuizingsfouten (XCS-1891) De best passende allocator was het achterlaten van geheugen 'gaten' tussen secties na relaxatie van de linker. Afgezien van het fragmenteren van het geheugen, verhoogde dit de mogelijkheid dat er linkerverplaatsingsfouten zijn met betrekking tot pc-relatieve sprongen of oproepen die buiten bereik raken.
Instructies niet getransformeerd door relaxatie (XCS-1889) Linker-relaxatie vond niet plaats voor spring- of call-instructies waarvan de doelen bereikbaar worden als ze worden ontspannen.
Missend functionaliteit (XCSE-388) Verschillende definities van , zoals clock_div_t en clock_prescale_set (), zijn niet gedefinieerd voor apparaten, waaronder de ATmega324PB, ATmega328PB, ATtiny441 en ATtiny841.
Ontbrekende macro's De preprocessor-macro's_ xcs _MODE_, _xcs VERSION, _xc en xcs werden niet automatisch gedefinieerd door de compiler. Deze zijn nu beschikbaar.

Versie 2.05

Interne compilerfout (XCS-1822) Bij het bouwen onder Windows is er mogelijk een interne compilerfout opgetreden bij het optimaliseren van code.
RAM-overflow niet gedetecteerd (XCS-1800, XCS-1796) Programma's die dat beschikbare RAM-geheugen overschreden, werden in sommige situaties niet door de compiler gedetecteerd, wat resulteerde in een runtime-codefout.
Weggelaten flash-geheugen (XCS-1792) Voor avrxmega3- en avrtiny-apparaten zijn mogelijk delen van het flashgeheugen niet geprogrammeerd door de MPLAB X IDE.
Kan main niet uitvoeren (XCS-1788) In sommige situaties waarin het programma geen globale variabelen had gedefinieerd, werd de runtime-opstartcode niet afgesloten en werd de functie main() nooit bereikt.
Onjuiste geheugeninformatie (XCS-1787) Voor avrxmega3- en avrtiny-apparaten meldde het programma van avr-formaat dat alleen-lezen gegevens RAM verbruikten in plaats van programmageheugen.
Onjuist gelezen programmageheugen (XCS-1783) Projecten die zijn samengesteld voor apparaten met een programmageheugen toegewezen aan de gegevensadresruimte en die objecten definiëren met behulp van de PROGMEM-macro/attribuut, hebben deze objecten mogelijk van het verkeerde adres gelezen.
Interne fout met attributen (XCS-1773) Er is een interne fout opgetreden als u aanwijzerobjecten hebt gedefinieerd met de
_at () of attribute() tokens tussen de pointernaam en het type waarnaar wordt verwezen, bijvoorbeeldample, char *
_at (0x80015 0) cp; Er wordt nu een waarschuwing gegeven als dergelijke code wordt aangetroffen.
Kan main niet uitvoeren (XCS-1780, XCS-1767, XCS-1754) Het gebruik van EEPROM-variabelen of het definiëren van fuses met behulp van de config pragma kan onjuiste data-initialisatie hebben veroorzaakt en/of de uitvoering van het programma hebben geblokkeerd in de runtime-opstartcode, voordat main () werd bereikt.
Zekeringsfout bij kleine apparaten (XCS-1778, XCS-1742) De attiny4/5/9/10/20/40-apparaten hadden een onjuiste lengte van de zekering gespecificeerd in hun header files die leiden tot linkerfouten bij het bouwen van code die zekeringen definieerde.
Segmentatiefout (XCS-1777) Een intermitterende segmentatiefout is gecorrigeerd.
Assembler-crash (XCS-1761) De avr-as-assembler is mogelijk gecrasht toen de compiler onder Ubuntu 18 werd uitgevoerd.
Objecten niet gewist (XCS-1752) Niet-geïnitialiseerde objecten met een statische opslagduur zijn mogelijk niet gewist door de runtime-opstartcode.
Conflicterende apparaatspecificatie genegeerd (XCS-1749) De compiler genereerde geen fout wanneer meerdere apparaatspecificatie-opties werden gebruikt en verschillende apparaten aangaf.
Geheugenbeschadiging door heap (XCS-1748) Het heap_start-symbool was onjuist ingesteld, waardoor de kans bestond dat gewone variabelen door de heap werden beschadigd.
Linker-verplaatsingsfout (XCS-1739) Er kan een linker-verplaatsingsfout zijn opgetreden wanneer de code een rjmp of rcall bevatte met een doel op precies 4 k bytes afstand.

Versie 2.00

Geen.

Bekende problemen

De volgende zijn beperkingen in de werking van de compiler. Dit kunnen algemene codeerbeperkingen zijn, of
afwijkingen van de informatie in de gebruikershandleiding. Het(de) label(s) tussen haakjes in de titel zijn de identificatie van dat nummer in de trackingdatabase. Dit kan handig zijn als u contact moet opnemen met de ondersteuning. De items die geen labels hebben, zijn beperkingen die de modus operandi beschrijven en die waarschijnlijk permanent van kracht blijven.

MPLAB X IDE-integratie

MPLAB IDE-integratie Als Compiler vanuit MPLAB IDE moet worden gebruikt, moet u eerst MPLAB IDE installeren voordat u Compiler installeert.

Codegeneratie

PA-geheugentoewijzing mislukt (XCS-2881) Bij gebruik van de procedurele abstractie-optimizers kan de linker geheugentoewijzingsfouten rapporteren wanneer de codegrootte dicht bij de hoeveelheid beschikbaar programmageheugen op het apparaat ligt, ook al zou het programma in de beschikbare ruimte moeten passen.
Niet zo slim Smart-IO (XCS-2872) De smart-io-functie van de compiler genereert geldige maar suboptimale code voor de sprintfunctie als de coast-data-in-proem-functie is uitgeschakeld of als het apparaat al zijn flash in kaart heeft gebracht in het datageheugen.
Nog minder slimme Smart-IO (XCS-2869) De smart-io-functie van de compiler genereert geldige maar suboptimale code wanneer de opties -floe en -fno-built tin beide worden gebruikt.
Suboptimale alleen-lezen gegevensplaatsing (XCS-2849) De linker is momenteel niet op de hoogte van de APPCODE- en APPDATA-geheugensecties, noch van de [No-]Read-While-Write-divisies in de geheugenmap. Als gevolg hiervan is er een kleine kans dat de linker alleen-lezen gegevens toewijst aan een ongeschikt geheugengebied. De kans op misplaatste gegevens neemt toe als de coast-data-in-pragma-functie is ingeschakeld, vooral als de coast-data-in-config-mapped-proem-functie ook is ingeschakeld. Deze functies kunnen indien nodig worden uitgeschakeld.
Voorwerp file verwerkingsopdracht (XCS-2863) De volgorde waarin objecten files die door de linker worden verwerkt, kunnen verschillen op basis van het gebruik van procedurele abstractie-optimalisaties (optie -mpa). Dit zou alleen van invloed zijn op code die zwakke functies in meerdere modules definieert.
Linkerfout met absoluut (XCS-2777) Wanneer een object absoluut is gemaakt op een adres aan het begin van RAM en er ook niet-geïnitialiseerde objecten zijn gedefinieerd, kan er een linkerfout worden geactiveerd.
Korte activerings-ID's (XCS-2775) Voor ATA5700/2-apparaten zijn de PHID0/1-registers alleen gedefinieerd als 16 bits breed in plaats van 32 bits breed.
Linker crasht bij het aanroepen van symbool (XCS-2758) De linker kan vastlopen als de stuurprogrammaoptie -merlad wordt gebruikt wanneer de broncode een symbool aanroept dat is gedefinieerd met de linkeroptie -Wl, –defsym.
Onjuiste initialisatie (XCS-2679) Er is een discrepantie tussen waar de initiële waarden voor sommige globale/statische byte-sized objecten in het gegevensgeheugen worden geplaatst en waar de variabelen tijdens runtime worden benaderd.
verkeerd gestart stelt leeg in (XCS-2652) In gevallen waarin een onderwerpreeks voor conversie door vermeld () een schijnbaar getal met drijvende komma in exponentiële indeling bevat en er een onverwacht teken na een e-teken staat, verwijst het lege adres, indien aanwezig, naar het teken erna de e en niet de e zelf. Voor bijvample: vermeld(“hooey”, leeg); resulteert in leeg wijzen naar het x-teken.
Slechte indirecte functieaanroepen (XCS-2628) In sommige gevallen kunnen functieaanroepen via een functieaanwijzer die is opgeslagen als onderdeel van een structuur mislukken.
strtof retourneert nul voor hexadecimale floats (XCS-2626) De bibliotheekfuncties strtof () et al en scanf () et al, zullen altijd een hexadecimaal getal met drijvende komma dat geen exponent specificeert, converteren naar
nul. Voor bijvample: stator(“Uil”, &leeg); retourneert de waarde 0, niet 1.
Onnauwkeurige stack advisor-berichten (XCS-2542, XCS-2541) In sommige gevallen wordt de stack advisor-waarschuwing met betrekking tot recursie of onbepaalde gebruikte stack (mogelijk door het gebruik van alloca()) niet uitgezonden.
Fout met dubbele interruptcode (XCS-2421) Waar meer dan één interruptfunctie dezelfde body heeft, kan de compiler de uitvoer voor de ene interruptfunctie de andere laten aanroepen. Dit zal ertoe leiden dat alle met call-cobbered geregistreerde registers onnodig worden opgeslagen en dat de interrupts worden ingeschakeld nog voordat de epiloog van de huidige interrupt-handler is uitgevoerd, wat kan leiden tot codefouten.
Const-objecten niet in programmageheugen (XCS-2408) Voor avrxmega3- en avertins-projecten worden niet-geïdealiseerde const-objecten in het gegevensgeheugen geplaatst, ook al suggereert een waarschuwing dat ze in het programmageheugen zijn geplaatst. Dit heeft geen invloed op apparaten waarvan het programmageheugen niet is toegewezen aan de gegevensgeheugenruimte, noch op objecten die worden geïnitialiseerd.
Slechte uitvoer met ongeldig DFP-pad (XCS-2376) Als de compiler wordt aangeroepen met een ongeldig DFP-pad en een 'specificatie' file bestaat voor het geselecteerde apparaat, rapporteert de compiler niet het ontbrekende apparaatfamiliepakket en selecteert in plaats daarvan de 'specificatie' file, wat vervolgens kan leiden tot een ongeldige uitvoer. De 'specificatie' files zijn mogelijk niet up-to-date met de gedistribueerde DFP's en waren alleen bedoeld voor gebruik met interne compilertests.
Geheugenoverlap onopgemerkt (XCS-1966) De compiler detecteert de geheugenoverlap niet van objecten die absoluut zijn gemaakt op een adres (via at ()) en andere objecten die de sectie ()-specificatie gebruiken en die aan hetzelfde adres zijn gekoppeld.
Storing met bibliotheekfuncties en _meme (XCS-1763) Aangeroepen limbische float-functies met een argument in de adresruimte _memo kunnen mislukken. Merk op dat bibliotheekroutines worden aangeroepen door sommige C-operators, dus bijvoorbeeldample, wordt de volgende code beïnvloed: return regFloatVar > memxFloatVar;
Beperkte limbische implementatie (AVRTC-731) Voor de ATTiny4/5/9/10/20/40-producten is de standaard C/Math-bibliotheekimplementatie in limbisch zeer beperkt of niet aanwezig.
Beperkingen programmageheugen (AVRTC-732) Programmageheugenafbeeldingen van meer dan 128 kb worden ondersteund door de toolchain; er zijn echter gevallen bekend waarin de linker wordt afgebroken zonder relaxatie en zonder een nuttige foutmelding in plaats van de vereiste functie-stubs te genereren wanneer de optie -relax wordt gebruikt.
Beperkingen voor naamruimte (AVRTC-733) Benoemde adresruimten worden ondersteund door de toolchain, onderhevig aan de beperkingen die worden vermeld in de sectie Special Type Qualifiers van de gebruikershandleiding.
Tijdzones De bibliotheekfuncties gaan uit van GMT en ondersteunen geen lokale tijdzones, dus lokale tijd () retourneert dezelfde tijd als gummite (), bijvoorbeeldampik.

KLANTENSERVICE

file:///Toepassingen/microehip/xc8/v 2 .40/docs/Read me_X C 8_ voor een VR. htm

Documenten / Bronnen

MICROCHIP MPLAB XC8 C-compilersoftware [pdf] Handleiding van de eigenaar
MPLAB XC8 C, MPLAB XC8 C Compilersoftware, Compilersoftware, Software

Referenties

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *