MICROCHIP MPLAB XC8 C -kääntäjäohjelmisto 

MICROCHIP MPLAB XC8 C -kääntäjäohjelmisto

TÄMÄ ASIAKIRJA SISÄLTÄÄ TÄRKEITÄ TIETOJA MPLAB XC8 C -KÄÄNTÄJÄLLE KOSKEVAT MIKROSIRUAVR-LAITTEET.
LUE SE ENNEN TÄMÄN OHJELMISTON KÄYTTÖÄ. KATSO KUVA-ASIAKIRJAN MPLAB XC8 C -KÄÄNTÄJÄN JULKAISUTIEDOT, JOS KÄYTÄT KÄÄNTÄJÄÄ 8-BITTISILLE PIC-LAITTEILLE.

Sisällys piilottaa

Yliview

Johdanto

Tämä Microchip MPLAB® XC8 C -kääntäjän julkaisu sisältää useita uusia ominaisuuksia, virheenkorjauksia ja uuden laitetuen.

Rakennuspäivämäärä

Tämän kääntäjäversion virallinen rakennuspäivä on 3.

Aiempi versio

Edellinen MPLAB XC8 C -kääntäjäversio oli 2.39, toiminnallinen turvakääntäjä, rakennettu 27. Edellinen vakiokääntäjä oli versio 2022, rakennettu 2.36.

Toiminnallisen turvallisuuden käsikirja

MPLAB XC -kääntäjien toiminnallisen turvallisuuden käsikirja on saatavilla dokumentaatiopaketissa, kun ostat toiminnallisen turvallisuuden lisenssin.

Komponenttien lisenssit ja versiot

MPLAB® XC8 C Compiler for AVR MCU -työkalut on kirjoitettu ja jaettu GNU General Public License (GPL) -lisenssillä, mikä tarkoittaa, että sen lähdekoodia levitetään vapaasti ja se on yleisön saatavilla. GNU GPL:n alaisten työkalujen lähdekoodi voidaan ladata erikseen Microchipistä websivusto. Voit lukea GNU GPL:n kohdasta file nimeltä sijaitsee asennushakemistosi alihakemistossa. Yleisen keskustelun GPL:n taustalla olevista periaatteista löytyy täältä. Otsikossa on tukikoodi files, linkkikomentosarjat ja ajonaikaiset kirjastot ovat omaa koodia, eivätkä ne kuulu GPL:n piiriin.

Tämä kääntäjä on GCC-version 5.4.0, binutils-version 2.26 toteutus ja käyttää avr-libc-versiota 2.0.0.

Järjestelmävaatimukset

MPLAB XC8 C -kääntäjä ja sen käyttämä lisenssiohjelmisto ovat saatavilla useille käyttöjärjestelmille, mukaan lukien 64-bittiset versiot seuraavista: Microsoft Windows 10:n ammattiversiot; Ubuntu 18.04; ja macOS 10.15.5. Windowsin binaarit on allekirjoitettu koodilla. Mac OS:n binaarit on allekirjoitettu ja notaroitu.

Jos käytät verkkolisenssipalvelinta, vain tietokoneita, joissa on kääntäjien tukema käyttöjärjestelmä, voidaan käyttää lisenssipalvelimen isännöimiseen. xclm-versiosta 2.0 lähtien verkkolisenssipalvelin voidaan asentaa Microsoft Windows Server -alustalle, mutta lisenssipalvelimen ei tarvitse toimia käyttöjärjestelmän palvelinversiossa.

Tuetut laitteet

Tämä kääntäjä tukee kaikkia julkaisuhetkellä tunnettuja 8-bittisiä AVR MCU -laitteita. Katso (kääntäjän doc-hakemistosta) luettelo kaikista tuetuista laitteista. Nämä files luettelee myös kunkin laitteen konfigurointibittiasetukset.

Painokset ja lisenssipäivitykset

MPLAB XC8 -kääntäjä voidaan aktivoida lisensoiduksi (PRO) tai lisensoimattomaksi (ilmaiseksi) tuotteeksi. Sinun on ostettava aktivointiavain kääntäjäsi lisensoimiseksi. Lisenssi mahdollistaa korkeamman tason optimoinnin verrattuna ilmaistuotteeseen. Lisensoimatonta kääntäjää voidaan käyttää toistaiseksi ilman lisenssiä.

MPLAB XC8 Functional Safety -kääntäjä on aktivoitava Microchipiltä ostetulla toiminnallisen turvallisuuden lisenssillä. Kääntäjä ei toimi ilman tätä lisenssiä. Kun olet aktivoinut, voit valita minkä tahansa optimointitason ja käyttää kaikkia kääntäjän ominaisuuksia. Tämä MPLAB XC Functional Safety Compiler -versio tukee verkkopalvelinlisenssiä.
Katso MPLAB XC C -kääntäjien asennus ja lisensointi (DS50002059) -asiakirjasta tietoja lisenssityypeistä ja kääntäjän asennuksesta lisenssillä.

Asennus ja aktivointi

Katso myös Migration Issues and Limitations -osioista tärkeitä tietoja tämän kääntäjän mukana toimitetusta uusimmasta lisenssinhallinnasta.
Jos käytät MPLAB IDE:tä, muista asentaa uusin MPLAB X IDE -versio 5.0 tai uudempi ennen tämän työkalun asentamista. Lopeta IDE ennen kääntäjän asentamista. Suorita .exe (Windows), .run (Linux) tai app (macOS) kääntäjän asennusohjelma, esim. XC8-1.00.11403-windows.exe ja noudata näytön ohjeita.
Oletusasennushakemistoa suositellaan. Jos käytät Linuxia, sinun on asennettava kääntäjä käyttämällä päätettä ja root-tililtä. Asenna käyttämällä macOS-tiliä, jolla on järjestelmänvalvojan oikeudet.

Aktivointi suoritetaan nyt erikseen asennuksesta. Katso lisätietoja asiakirjasta License Manager for MPLAB® XC C Compilers (DS52059).

Jos päätät käyttää kääntäjää arviointilisenssillä, saat nyt varoituksen kääntämisen aikana, kun olet 14 päivän sisällä arviointijaksosi päättymisestä. Sama varoitus annetaan, jos olet 14 päivän sisällä HPA-tilauksesi päättymisestä.

XC Network License Server on erillinen asennusohjelma, eikä se sisälly yhden käyttäjän kääntäjän asennusohjelmaan.

XC License Manager tukee nyt kelluvien verkkolisenssien verkkovierailua. Tämä mobiilikäyttäjille suunnattu ominaisuus mahdollistaa kelluvan lisenssin poistumisen verkosta lyhyeksi ajaksi. Tämän ominaisuuden avulla voit katkaista yhteyden verkkoon ja silti käyttää MPLAB XC -kääntäjääsi. Katso XCLM-asennuksen doc-kansiosta lisätietoja tästä ominaisuudesta. MPLAB X IDE sisältää Lisenssi-ikkunan (Työkalut > Lisenssit) verkkovierailujen visuaalista hallintaa varten.

Asennusongelmien ratkaiseminen

Jos sinulla on vaikeuksia asentaa kääntäjää johonkin Windows-käyttöjärjestelmään, kokeile seuraavia ehdotuksia.

  • Suorita asennus järjestelmänvalvojana.
  • Aseta asennusohjelman käyttöoikeuksiksi "Täysi hallinta". (Napsauta hiiren kakkospainikkeella file, valitse Ominaisuudet, Suojaus-välilehti, valitse käyttäjä, muokkaa.)
  • Aseta tilapäisen kansion käyttöoikeudet "Full Control!

Voit määrittää temp-kansion sijainnin kirjoittamalla Suorita-komentoon %temp% (Windows-näppäin + R). Tämä avaa a file Explorer-valintaikkuna, joka näyttää kyseisen hakemiston ja jonka avulla voit määrittää kansion polun.

Kääntäjän dokumentaatio

Kääntäjän käyttöohjeet voidaan avata HTML-sivulta, joka aukeaa selaimessasi, kun napsautat sinistä ohjepainiketta MPLAB X IDE -hallintapaneelissa kuvakaappauksen mukaisesti.

Kääntäjän dokumentaatio
Jos rakennat 8-bittisille AVR-kohteille, MPLAB® XC8 C Compiler User's Guide for AVR® MCU sisältää tietoja kääntäjävaihtoehdoista ja ominaisuuksista, joita voidaan soveltaa tähän arkkitehtuuriin.

Asiakastuki

Microchip toivottaa tervetulleeksi tätä kääntäjäversiota koskevat vikailmoitukset, ehdotukset tai kommentit. Lähetä kaikki vikailmoitukset tai ominaisuuspyynnöt tukijärjestelmän kautta.

Dokumentaation päivitykset

Katso MPLAB XC8 -dokumentaation online-versiot ja ajantasaiset versiot Microchipin teknisestä online-dokumentaatiosta websivusto.

Uusi tai päivitetty AVR-dokumentaatio tässä julkaisussa:

  • MUSL:n tekijänoikeusilmoitus
  • MPLAB XC C -kääntäjien asentaminen ja lisensointi (versio M)
  • MPLAB XC8 User!s Guide sulautetuille insinööreille – AVR MCU:t (versio A)
  • MPLAB XC8 C -kääntäjän käyttöopas AVR MCU:lle (versio F)
  • Microchip Unified Standard Library -viiteopas (versio B)

Microchip Unified Standard Library Reference Guide -oppaassa kuvataan Microchip Unified Standard Library -kirjaston määrittelemien toimintojen käyttäytyminen ja käyttöliittymä sekä kirjastotyyppien ja makrojen käyttötarkoitus. Osa näistä tiedoista sisältyi aiemmin MPLAB® XC8 C Compiler User!s -oppaaseen AVR® MCU:lle. Laitekohtaiset kirjastotiedot sisältyvät edelleen tähän kääntäjäoppaaseen.

Jos olet vasta aloittamassa 8-bittisten laitteiden ja MPLAB XC8 C -kääntäjän käyttöä, MPLAB® XC8 User!s Guide for Embedded Engineers – AVR® MCUs (DS50003108) sisältää tietoa projektien määrittämisestä MPLAB X IDE:ssä ja koodin kirjoittamisesta. ensimmäiselle MPLAB XC8 C -projektillesi. Tämä opas on nyt jaettu kääntäjän mukana.

Hamate User's Guide on sisällytetty tämän julkaisun docs-hakemistoon. Tämä opas on tarkoitettu niille, jotka käyttävät Hamatea erillisenä sovelluksena.

Mitä uutta

Seuraavat ovat uusia AVR-kohdeominaisuuksia, joita kääntäjä tukee nyt. Alaotsikoissa oleva versionumero ilmaisee ensimmäisen kääntäjän version, joka tukee seuraavia ominaisuuksia.

Versio 2.40

Uuden laitteen tuki Tuki on nyt saatavilla seuraaville AVR-osille: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32EA64, AVR48.
Parannettu menettelyllinen abstraktio Proseduurin abstraktion (PA) optimointityökalua on parannettu siten, että koodi, joka sisältää funktiokutsukäskyn (puhelun palautus)) voidaan hahmotella. Tämä tapahtuu vain, jos pinoa ei käytetä argumenttien välittämiseen funktiolle tai palautusarvon saamiseksi funktiosta. Pinoa käytetään kutsuttaessa funktiota, jossa on muuttuja-argumenttilista, tai kutsuttaessa funktiota, joka ottaa enemmän argumentteja kuin tähän tarkoitukseen on varattu rekistereitä. Tämä ominaisuus voidaan poistaa käytöstä käyttämällä monk-pa-outline-calls -vaihtoehtoa tai proseduaalinen abstraktio voidaan poistaa kokonaan käytöstä objektille file tai käytä -monk-pa-on-file ja -mo.-pa-on-function tai käyttämällä nipa-attribuuttia (nipa specifier) ​​valikoivasti funktioiden kanssa

Koodipeittomakro Kääntäjä määrittää nyt makron __CODECOV, jos kelvollinen mcodecov-vaihtoehto on määritetty.

Muistivarausvaihtoehto xc8-cc-ajuri hyväksyy nyt -mreserve=space@start: end -vaihtoehdon rakentaessaan AVR-kohteita. Tämä vaihtoehto varaa määritetyn muistialueen joko data- tai ohjelmamuistitilaan, estäen linkittäjää täyttämästä koodia tai objekteja tälle alueelle.

Älykkäämpi älykäs IO Smart IO -toimintoihin on tehty useita parannuksia, mukaan lukien yleiset mukautukset printf-ydinkoodiin, %n muunnosmääritteen käsitteleminen itsenäisenä muunnelmana, vararg pop -rutiinien linkittäminen pyynnöstä, lyhyempien tietotyyppien käyttäminen IO-funktion argumenttien käsittelyssä. , ja factoring yhteinen koodi kentän leveys ja tarkkuuskäsittely. Tämä voi johtaa merkittäviin koodin ja tiedon säästöihin sekä lisätä IO:n suoritusnopeutta.

Versio 2.39 (toiminnallisen turvallisuuden julkaisu)

Verkkopalvelimen lisenssi Tämä MPLAB XC8 Functional Safety Compiler -versio tukee verkkopalvelinlisenssiä.

Versio 2.36

Ei mitään.

Versio 2.35

Uuden laitteen tuki Tuki on saatavilla seuraaville AVR-osille: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 ja AVR64DD32.

Parannettu kontekstin vaihto Uusi vaihtoehto -mcall-isr-prologues muuttaa sitä, miten keskeytysfunktiot tallentavat rekistereitä saapuessaan ja kuinka kyseiset rekisterit palautetaan keskeytysrutiinin päättyessä. Se toimii samalla tavalla kuin vaihtoehto -mcall-prologues, mutta vaikuttaa vain keskeytystoimintoihin (ISR).

Vielä parempi kontekstin vaihto Uusi -mgas-isr-prologues -vaihtoehto ohjaa pienille keskeytyspalvelurutiineille luotuja konteksteja. Kun tämä ominaisuus on käytössä, kokoaja tarkistaa ISR:stä rekisterin käytön ja tallentaa vain nämä käytetyt rekisterit tarvittaessa.

Muokattava flash-kartoitus Joissakin AVR DA- ja AVR DB -perheen laitteissa on SFR (esim. FLMAP), joka määrittää, mikä 32k:n osa ohjelmamuistia kartoitetaan datamuistiin. Uutta - mconst-data-in-config-mapped-proem -vaihtoehtoa voidaan käyttää linkittäjän sijoittamaan kaikki huonot tiedot yhteen 32k-osaan ja alustamaan automaattisesti asiaankuuluva SFR-rekisteri varmistaakseen, että nämä tiedot kartoitetaan datamuistitilaan. , jossa se on käytettävissä tehokkaammin.

Microchip Unified Standard Libraries Kaikki MPLAB XC -kääntäjät jakavat Microchip Unified Standard -kirjaston, joka on nyt saatavilla tämän MPLAB XC8 -julkaisun kanssa. MPLAB® XC8 C Compiler -käyttöopas/tai AVR® MCU ei enää sisällä näiden vakiotoimintojen dokumentaatiota. Nämä tiedot löytyvät nyt Microchip Unified Standard Library -viiteoppaasta. Huomaa, että jotkin avr-libc:n aiemmin määrittämät toiminnot eivät ole enää käytettävissä. (Katso Kirjasto):'. toiminnallisuus…)

Älykäs IO Osana uusia yhdistettyjä kirjastoja tulostus- ja skannausperheiden IO-toiminnot luodaan nyt räätälöityinä jokaisessa koontiversiossa sen mukaan, miten näitä toimintoja käytetään ohjelmassa. Tämä voi vähentää huomattavasti ohjelman käyttämiä resursseja.
Älykäs IO-apuvaihtoehto Analysoidessaan kutsuja älykkäille IO-funktioille (kuten printf () tai scanf () ), kääntäjä ei aina voi määrittää muotomerkkijonon perusteella tai päätellä argumenteista kutsun vaatimia muunnosmäärityksiä. Aiemmin kääntäjä ei aina tehnyt oletuksia ja varmisti, että täysin toimivat IO-toiminnot linkitettiin lopulliseen ohjelmakuvaan. Uusi – msmart-io-format=fmt -vaihtoehto on lisätty, jotta kääntäjälle voidaan sen sijaan ilmoittaa älykkäiden IO-toimintojen käyttämät muunnosmääritykset, joiden käyttö on epäselvää, mikä estää liian pitkien IO-rutiinien linkittämistä. (Katso lisätietoja Smart-io-format-vaihtoehdosta.)

Mukautettujen osien sijoittaminen Aiemmin vaihtoehto -Wl, -section-start sijoitti määritetyn osan pyydettyyn osoitteeseen vain, kun linkkikomentosarja määritteli samannimisen tulososion. Kun näin ei ollut, osio sijoitettiin linkittäjän valitsemaan osoitteeseen ja vaihtoehto jätettiin olennaisesti huomiotta. Nyt vaihtoehtoa kunnioitetaan kaikissa mukautetuissa osissa, vaikka linkittäjäkomentosarja ei määrittäisi osaa. Huomaa kuitenkin, että standardiosien, kuten . tekstiä,. bss tai . parhaiten sopivalla allokaattorilla on edelleen täydellinen hallinta sijoittelunsa suhteen, eikä vaihtoehdolla ole vaikutusta. Käytä vaihtoehtoa -Wl, -Tsection=add, kuten on kuvattu käyttöoppaassa.

Versio 2.32

Pinoopastus Saatavana PRO-kääntäjän lisenssillä, kääntäjän pinon ohjausominaisuutta voidaan käyttää arvioimaan minkä tahansa ohjelman käyttämän pinon enimmäissyvyyttä. Se rakentaa ja analysoi ohjelman kutsukaavion, määrittää kunkin funktion pinon käytön ja tuottaa raportin, josta voidaan päätellä ohjelman käyttämien pinojen syvyys. Tämä ominaisuus otetaan käyttöön komentorivivalinnan -mchp-stack-usage kautta. Suorituksen jälkeen tulostetaan yhteenveto pinon käytöstä. Yksityiskohtainen pinoraportti löytyy kartasta file, jota voi pyytää tavalliseen tapaan.

Uusien laitteiden tuki Tuki on saatavana seuraaville AVR-osille: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64.

Retracted laitetuki Tuki ei ole enää saatavilla seuraaville AVR-osille: AVR16DA28, AVR16DA32 ja AVR16DA48.

Versio 2.31

Ei mitään.

Versio 2.30

Uusi vaihtoehto tietojen alustuksen estämiseksi Uusi -mno-data-init ohjainvaihtoehto estää tietojen alustuksen ja bss-osien tyhjentämisen. Se toimii estämällä do_ copy_ datan ja d o_ clear_ bss -symbolien tulostuksen kokoonpanossa files, mikä puolestaan ​​estää linkkerin sisällyttämästä näitä rutiineja mukaan.

Parannetut optimoinnit Useita optimointiin on tehty parannuksia, mukaan lukien redundanttien palautuskäskyjen poistaminen, joidenkin hyppyjen poistaminen ohitus-jos-bit-is -käskyn jälkeen sekä parannettu proseduurin abstraktio ja kyky iteroida tätä prosessia.

Lisäasetukset ovat nyt saatavilla joidenkin näiden optimointien ohjaamiseen, erityisesti -f-osion ankkurit, jotka mahdollistavat pääsyn staattisiin objekteihin yhden symbolin suhteen; -mpai derations=n, joka mahdollistaa proseduuraalisen abstraktion iteraatioiden määrän muuttamisen oletusarvosta 2; ja -mpa- call cost- shortcall, joka suorittaa aggressiivisemman menettelyllisen abstraktion siinä toivossa, että linkittäjä voi rentoutua pitkiä puheluita. Tämä viimeinen vaihtoehto voi lisätä koodin kokoa, jos taustalla olevat oletukset eivät toteudu.

Uuden laitteen tuki Tuki on saatavilla seuraaville AVR-osille: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 ja AVR128DB64 ja AVRXNUMXDBXNUMX.

Sisäänvedetyn laitteen tuki Tuki ei ole enää saatavilla seuraaville AVR-osille: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, ja 664251ATA.

Versio 2.29 (toiminnallisen turvallisuuden julkaisu)

Otsikko file sisäänrakennetuille kääntäjälle Varmistaakseen, että kääntäjä pystyy noudattamaan kielimäärityksiä, kuten MISRA, otsikko file, jonka mukana tulee automaattisesti , on päivitetty. Tämä otsikko sisältää prototyypit kaikille sisäänrakennetuille toiminnoille, kuten _buil tin _avrnop () ja _buil tin_ avr delay_ cycles () . Jotkut sisäänrakennetut laitteet eivät ehkä ole MISRA-yhteensopivia; nämä voidaan jättää pois lisäämällä define _Xe_ STRICT_ MISRA kääntäjän komentoriville. Sisäänrakennetut sovellukset ja niiden ilmoitukset on päivitetty käyttämään kiinteän levyisiä tyyppejä.

Versio 2.20

Uuden laitteen tuki Tuki on saatavilla seuraaville AVR-osille: ATTINY1624, ATTINY1626 ja ATTINY1627.

Parempi parhaiten sopiva jako Kääntäjän best fit allokaattoria (BFA) on parannettu siten, että osat allokoidaan paremman optimoinnin mahdollistavassa järjestyksessä. BFA tukee nyt nimettyjä osoiteavaruuksia ja käsittelee paremmin tietojen alustuksen.

Parannettu menettelyllinen abstraktio Proseduurin abstraktiooptimoinnit suoritetaan nyt useammille koodisekvensseille. Aiemmat tilanteet, joissa tämä optimointi on saattanut kasvattaa koodin kokoa, on ratkaistu saattamalla optimointikoodi tietoiseksi linkittäjän roskienkeräysprosessista.

AVR Assemblerin puuttuminen AVR Assembler ei enää sisälly tähän jakeluun.

Versio 2.19 (toiminnallisen turvallisuuden julkaisu)

Ei mitään.

Versio 2.10

Code Coverage Tämä julkaisu sisältää koodin peittoominaisuuden, joka helpottaa projektin lähdekoodin suoritustason analysointia. Ota se käyttöön vaihtoehdolla -mcodecov=ram. Kun ohjelma on suoritettu laitteistollasi, koodipeittotiedot kootaan laitteeseen, ja ne voidaan siirtää MPLAB X IDE:hen ja näyttää ne koodipeittolisäosan kautta. Katso lisätietoja tästä laajennuksesta IDE-dokumentaatiosta. #pragma mcodecovia voidaan käyttää sulkemaan pois myöhempiä toimintoja kattavuusanalyysistä. Ihannetapauksessa pragma tulisi lisätä kappaleen alkuun file sulkea pois koko tuon file kattavuusanalyysistä. Vaihtoehtoisesti attribuuttia ( (mcodecov) ) voidaan käyttää tietyn funktion jättämiseen pois kattavuusanalyysistä.

Laitteen kuvaus files Uusi laite file nimeltään avr chipinfo. html sijaitsee kääntäjäjakelun docs-hakemistossa. Tämä file listaa kaikki kääntäjän tukemat laitteet. Napsauta laitteen nimeä ja se avaa sivun, joka näyttää kaikki kyseisen laitteen sallitut konfigurointibittiasetukset/arvoparit, esim.amples.

Proseduurillinen abstraktio Kääntäjään on lisätty prosessin abstraktiooptimointia, joka korvaa yleiset kokoonpanokoodin lohkot kutsuilla kyseisen lohkon purettuun kopioon. Nämä suoritetaan erillisellä sovelluksella, jonka kääntäjä käynnistää automaattisesti valitessaan tason 2, 3 tai tason optimointia. Nämä optimoinnit pienentävät koodin kokoa, mutta ne voivat vähentää suoritusnopeutta ja koodin virheenkorjaustavuutta.
Proseduurin abstraktio voidaan poistaa käytöstä korkeammilla optimointitasoilla käyttämällä optiota -mno-pa, tai se voidaan ottaa käyttöön alemmilla optimointitasoilla (lisenssisi mukaan) käyttämällä -mpa. Se voidaan poistaa käytöstä objektin osalta file käyttämällä -mno-pa-on-file=filenimi tai poistettu käytöstä funktiolle komennolla -mno-pa on function=.
Lähdekoodissasi funktion proseduurin abstraktio voidaan poistaa käytöstä käyttämällä _attribuuttia_ ( (nopa)) funktion määritelmän kanssa tai käyttämällä _nopaa, joka laajenee attribuutiksi ( (nopa, noinline)) ja estää siten funktion siivoamisen ja siinä on upotetun koodin abstraktio.
Lukitusterän tuki pragmassa #pragma configilla voidaan nyt määrittää AVR-lukitusbitit sekä muut konfigurointibitit. Tarkista avr-sirun tiedot. html file (mainittu yllä) tämän käytännön kanssa käytettäville asetus/arvo-pareille.
Uuden laitteen tuki Tuki on saatavilla seuraaville osille: AVR28DA128, AVR64DA128, AVR32DA128 ja AVR48DA128.

Versio 2.05

Enemmän palasia rahallesi Tämän kääntäjän ja lisenssien hallinnan macOS-versio on nyt 64-bittinen sovellus. Tämä varmistaa, että kääntäjä asentuu ja toimii ilman varoituksia macOS:n uusimmissa versioissa.
Const-objektit ohjelmamuistissa Kääntäjä voi nyt sijoittaa const-hyväksytyt objektit ohjelman Flash-muistiin sen sijaan, että ne olisivat RAM-muistissa. Kääntäjää on muokattu niin, että const-hyväksytty globaali data tallennetaan ohjelman flash-muistiin ja näihin tietoihin pääsee suoraan ja epäsuorasti käyttämällä asianmukaisia ​​ohjelmamuistin ohjeita. Tämä uusi ominaisuus on oletuksena käytössä, mutta se voidaan poistaa käytöstä -mno-const-data-in-progmem-vaihtoehdolla. Avrxmega3- ja avrtiny-arkkitehtuureissa tätä ominaisuutta ei vaadita ja se on aina poissa käytöstä, koska ohjelmamuisti on yhdistetty näiden laitteiden data-osoiteavaruuteen.
Standardi ilmaiseksi Tämän kääntäjän lisensoimattomat (ilmaiset) versiot sallivat nyt optimoinnin tasolle 2 asti. Tämä mahdollistaa samanlaisen, vaikkakaan ei identtisen, tulosteen kuin mitä aiemmin oli mahdollista käyttää vakiolisenssillä.
Tervetuloa AVRASM2 AVRASM2-asentaja 8-bittisille laitteille sisältyy nyt XC8-kääntäjän asennusohjelmaan. XC8-kääntäjä ei käytä tätä kokoonpanoohjelmaa, mutta se on saatavilla projekteihin, jotka perustuvat käsinkirjoitettuun kokoonpanolähteeseen.
Uuden laitteen tuki Tuki on saatavilla seuraaville osille: ATMEGA1608, ATMEGA1609, ATMEGA808 ja ATMEGA809.

Versio 2.00

Huipputason kuljettaja Uusi ohjain, nimeltään xc8-cc, istuu nyt edellisen avr-gcc-ohjaimen ja xc8-ohjaimen yläpuolella, ja se voi kutsua sopivaa kääntäjää kohdelaitteen valinnan perusteella. Tämä ajuri hyväksyy GCC-tyyliset valinnat, jotka joko käännetään tai välitetään suoritettavalle kääntäjälle. Tämä ajuri sallii samankaltaisten valintojen ja samankaltaisen semantiikan käytön minkä tahansa AVR- tai PIC-kohteen kanssa ja on siksi suositeltava tapa käynnistää kääntäjä. Tarvittaessa vanhaa avr-gcc-ohjainta voidaan kutsua suoraan käyttämällä vanhan tyylin valintoja, jotka se hyväksyi aiemmissa kääntäjäversioissa.

Yhteinen C-liitäntä Tämä kääntäjä voi nyt olla MPLAB Common C Interface -liittymän mukainen, mikä mahdollistaa lähdekoodin siirtämisen helpommin kaikkien MPLAB XC -kääntäjien kesken. Valinta -mext=cci pyytää tätä ominaisuutta, mikä mahdollistaa vaihtoehtoisen syntaksin useille kielilaajennuksille.

Uusi kirjastonhoitajan kuljettaja Uusi kirjastonhoitajan kuljettaja on sijoitettu edellisen PIC-kirjastonhoitajan ja AVR-avr-ar-kirjastonhoitajan yläpuolelle. Tämä ohjain hyväksyy GCC-arkistointityyliset vaihtoehdot, jotka joko käännetään tai välitetään suoritettavalle kirjastonhoitajalle. Uusi ohjain mahdollistaa samankaltaisten vaihtoehtojen käyttämisen samankaltaisilla semantiikalla minkä tahansa PIC- tai AVR-kirjaston luomiseen tai muokkaamiseen. file ja on siksi suositeltava tapa kutsua kirjastonhoitaja. Jos vanhoissa projekteissa vaaditaan, edellinen kirjastonhoitaja voidaan kutsua suoraan käyttämällä vanhan tyylin valintoja, jotka se hyväksyi aiemmissa kääntäjäversioissa.

Muuttoliikeongelmat

Seuraavat ovat ominaisuuksia, joita kääntäjä käsittelee nyt eri tavalla. Nämä muutokset saattavat edellyttää muutoksia lähdekoodiisi, jos siirrät koodia tähän kääntäjäversioon. Alaotsikoissa oleva versionumero ilmaisee ensimmäisen kääntäjän version, joka tukee seuraavia muutoksia.

Versio 2.40

Ei mitään.

Versio 2.39 (toiminnallisen turvallisuuden julkaisu)

Ei mitään.

Versio 2.36

Ei mitään.

Versio 2.35

Merkkijonojen käsittely (XCS-2420) Johdonmukaisuuden varmistamiseksi muiden XC-kääntäjien kanssa XC8-merkkijono-funktiot, kuten strtol () jne., eivät enää yritä muuntaa syötemerkkijonoa, jos määritetty kanta on suurempi kuin 36, ja asettaa sen sijaan errno-arvoksi EINVAL. C-standardi ei määrittele funktioiden käyttäytymistä, kun tämä perusarvo ylittyy.

Epäasianmukaiset nopeuden optimoinnit Proseduurin abstraktion optimointi otettiin käyttöön valittaessa tason 3 optimointia (-03). Nämä optimoinnit pienentävät koodin kokoa koodin nopeuden kustannuksella, joten niitä ei olisi pitänyt suorittaa. Tätä optimointitasoa käyttävät projektit saattavat nähdä eroja koodin koossa ja suoritusnopeudessa, kun ne on rakennettu tällä julkaisulla.

Kirjaston toiminnallisuus Monien standardi C-kirjastotoimintojen koodi tulee nyt Microchipin Unified Standard Librarysta, joka saattaa joissain olosuhteissa käyttäytyä eri tavalla kuin entinen avr-libc-kirjasto. esimample, ei enää tarvitse linkittää lprintf_flt-kirjastossa (-print _flt -vaihtoehto) ottaaksesi käyttöön alustetun IO-tuen float-muodon määrityksille. Microchip Unified Standard Libraryn älykkäät IO-ominaisuudet tekevät tästä vaihtoehdosta tarpeettoman. Lisäksi _p-liiteisten rutiinien käyttö merkkijono- ja muistifunktioille (esim. strcpy_P () jne. . ), jotka toimivat const-merkkijonoilla flashissa, eivät ole enää tarpeen. Vakio C-rutiinit (esim. strcpy ()) toimivat oikein tällaisten tietojen kanssa, kun const-data-in-program-memory -ominaisuus on käytössä.

Versio 2.32

Ei mitään.

Versio 2.31

Ei mitään.

Versio 2.30

Ei mitään.

Versio 2.29 (toiminnallisen turvallisuuden julkaisu)

Ei mitään.

Versio 2.20

DFP-asettelu muutettu Kääntäjä olettaa nyt toisenlaisen asettelun, jota DFP:t (Device Family Packs) käyttävät. Tämä tarkoittaa, että vanhempi DFP ei välttämättä toimi tämän julkaisun kanssa, eivätkä vanhemmat kääntäjät voi käyttää uusimpia DFP:itä.

Versio 2.19 (toiminnallisen turvallisuuden julkaisu)

Ei mitään.

Versio 2.10

Ei mitään

Versio 2.05

Const-objektit ohjelmamuistissa Huomaa, että oletuksena const-hyväksytyt objektit sijoitetaan ja niitä käytetään ohjelmamuistissa (kuten tässä on kuvattu). Tämä vaikuttaa projektisi kokoon ja suoritusnopeuteen, mutta sen pitäisi vähentää RAM-muistin käyttöä. Tämä ominaisuus voidaan tarvittaessa poistaa käytöstä -mnoconst-da ta-in-progmem -vaihtoehdolla.

Versio 2.00

Konfigurointisulakkeet Laitteen konfigurointisulakkeet voidaan nyt ohjelmoida käyttämällä konfigurointipragmaa, jota seuraa asetusarvo-pareja sulakkeen tilan määrittämiseksi, esim.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Absoluuttiset objektit ja funktiot Objektit ja funktiot voidaan nyt sijoittaa tiettyyn osoitteeseen muistissa käyttämällä CCI _at (osoite) -määritteitä, esim.ample: #sisällytä int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Tämän määritteen argumentin on oltava vakio, joka edustaa osoitetta, johon ensimmäinen tavu tai käsky sijoitetaan. RAM-osoitteet ilmaistaan ​​käyttämällä siirtymää 0x800000. Ota CCI käyttöön tämän ominaisuuden käyttämiseksi.
Uusi keskeytysfunktion syntaksi Kääntäjä hyväksyy nyt CCI-keskeytyksen (num) -määritteen osoittamaan, että C-funktiot ovat keskeytyskäsittelijöitä. Määrittäjä ottaa keskeytysnumeron, esimample: #sisällytä void keskeytys(SPI STC_ vect _num) spi Isr(void) { … }

Korjatut ongelmat

Seuraavassa on korjauksia, jotka on tehty kääntäjälle. Nämä voivat korjata luodussa koodissa olevia bugeja tai muuttaa kääntäjän toimintaa käyttöoppaassa tarkoitetuksi tai määritellyksi. Alaotsikoissa oleva versionumero ilmaisee ensimmäisen kääntäjän version, joka sisältää korjauksia seuraaviin ongelmiin. Otsikon suluissa olevat tarrat ovat kyseisen ongelman tunniste seurantatietokannassa. Nämä voivat olla hyödyllisiä, jos sinun on otettava yhteyttä tukeen.

Huomaa, että jotkin laitekohtaiset ongelmat on korjattu laitteeseen liittyvässä Device Family Packissa (DFP). Katso MPLAB Pack Managerista tietoja DFP:ihin tehdyistä muutoksista ja lataa uusimmat paketit.

Versio 2.40

Liian rento (XCS-2876) Käytettäessä -mrelax-vaihtoehtoa kääntäjä ei jakanut joitain osia yhteen, mikä johti vähemmän optimaalisiin koodikokoihin. Tämä on saattanut tapahtua koodilla, joka käytti uusia MUSL-kirjastoja, tai heikkojen symbolien kanssa.
Karttatoimintoa ei ole poistettu käytöstä varoituksen mukaisesti (XCS-2875) Cost-data-in-config mappedprogmem-ominaisuus riippuu siitä, että kustannustiedot-in-proem-ominaisuus on käytössä. Jos cost-data-ipconfig-mapped-proem-ominaisuus oli eksplisiittisesti käytössä valinnalla ja kustannustiedot-inprogmem-ominaisuus poistettiin käytöstä, linkitysvaihe epäonnistui huolimatta varoitusviestistä, jossa todettiin, että cons data-in-config-mapped- proem-ominaisuus oli automaattisesti poistettu käytöstä, mikä ei ollut täysin oikein. Const-data-in-config-mapped-proem-ominaisuus on nyt täysin poissa käytöstä tässä tilanteessa.
DFP muuttaa NVMCTRL:n käyttöä (XCS-2848) AVR64EA-laitteiden käyttämä ajonaikainen käynnistyskoodi ei ottanut huomioon sitä, että NVMCTRL-rekisteri oli Configuration Change Protection (CCP) -suojauksen alaisena, eikä se pystynyt asettamaan IO SFR:ää sivulle, jota const-data-in configmapped-proem-kääntäjä käyttää. ominaisuus. AVR-Ex_DFP-versiossa 2.2.55 tehdyt muutokset sallivat ajonaikaisen käynnistyskoodin kirjoittaa oikein tähän rekisteriin.
DFP-muutokset Flash-kartoituksen välttämiseksi (XCS-2847) AVR128DA28/32/48/64 Silicon Errata (DS80000882) raportoitu flash-kartoituslaitteen ongelman kiertotapa on otettu käyttöön. Const-data-in-config-mapped-proem-kääntäjäominaisuutta ei käytetä oletuksena laitteissa, joita asia koskee, ja tämä muutos näkyy AVR-Ex_DFP-versiossa 2.2.160.
Koonnosvirhe sinhf:n tai coshf:n kanssa (XCS-2834) Yritykset käyttää sinhf ()- tai coshf () -kirjastofunktioita johtivat linkkivirheeseen, joka kuvaa määrittelemätöntä viittausta. Puuttuva funktio, johon viitataan, on nyt sisällytetty kääntäjäjakaumaan.
Koontivirheet nopalla (XCS-2833) Nopa-attribuutin käyttäminen funktion kanssa, jonka kokoonpanijan nimi on määritetty käyttämällä asemmenttia () laukaisevia virheilmoituksia assemblerilta. Tämä yhdistelmä ei ole mahdollinen.
Vaihtelevan funktion virhe osoitinargumenteilla (XCS-2755, XCS-2731) Funktiot, joissa on vaihteleva määrä argumentteja, odottavat 24-bittisten (_memo-tyyppisten) osoittimien välittyvän muuttujaargumenttiluettelossa, kun kustannustiedot-in-proem-ominaisuus on käytössä. Argumentit, jotka olivat osoittimia tietomuistiin, välitettiin 16-bittisinä objekteina, mikä aiheutti koodivirheen, kun ne lopulta luettiin. Kun miinukset data-in-proem -ominaisuus on käytössä, kaikki 16-bittisten osoittimien argumentit muunnetaan nyt 24-bittisiksi osoittimiksi. strtoxxx-kirjaston toiminnot epäonnistuvat (XCS-2620) Kun const-data-in-proem-ominaisuus oli käytössä, strtoxxx-kirjastotoimintojen enter-parametria ei päivitetty oikein lähdemerkkijonoargumenteille, jotka eivät ole ohjelmamuistissa.
Hälytykset virheellisistä heitoista (XCS-2612) Kääntäjä antaa nyt virheilmoituksen, jos cost-in-proem-ominaisuus on käytössä ja merkkijonoliteraalin osoite on eksplisiittisesti välitetty data-osoiteavaruuteen (konst-tunnisteen pudottaminen), esim.ample, (uint8 t *) "Hei maailma!". Varoitus on ongelma, jos osoite saattaa olla virheellinen, kun const-dataosoitin suoraviivataan data-osoiteavaruuteen.
Alustamattomien const-objektien sijoittaminen (XCS-2408) Alustamattomia const- ja const v haihtuvia objekteja ei ole sijoitettu ohjelmamuistiin laitteissa, jotka yhdistävät koko ohjelmamuistinsa tai osan siitä data-osoiteavaruuteen. Näissä laitteissa tällaiset objektit sijoitetaan nyt ohjelmamuistiin, mikä tekee niiden toiminnasta yhdenmukaista muiden laitteiden kanssa.

Versio 2.39 (toiminnallisen turvallisuuden julkaisu)

Ei mitään.

Versio 2.36

Virhe viivästyessä (XCS-2774) Pienet muutokset oletusvapaan tilan optimoinnissa estivät operandilausekkeiden jatkuvan taittamisen viive-sisäänrakennettuihin funktioihin, jolloin niitä käsiteltiin ei-kontakteina ja laukaisi virhe: _buil tin avr delay_ cycles odottaa ac ompile aika kokonaisluku vakio.

Versio 2.35

Jatkuva kohdistaminen käyttämällä _at (XCS-2653) Useiden objektipaikkojen peräkkäinen allokointi samannimisessä osiossa ja käyttämällä osoitteessa () ei toiminut oikein. esimample: constchararrl [ ] at tri butte ((sect on(.miss”)))) at (Ox50 0 ) = {Oxo , Ox CD} ; hinta char arr2[ ] at tri butte ((osa(.my s eke”)))) = {Härkä, härkä FE }; olisi pitänyt asettaa arr2 välittömästi aril:n jälkeen.
Osion aloitusosoitteiden määrittäminen (XCS-2650) -Wal, -osion aloitusvaihtoehto ei onnistunut sijoittamaan osia nimettyyn aloitusosoitteeseen. Tämä ongelma on korjattu kaikille mukautetuille osioille. se ei kuitenkaan toimi minkään vakioosion, kuten . tekstiä tai. bss, joka on sijoitettava käyttämällä -Wl, -T vaihtoehtoa.
Linkkeri kaatuu rentoutuessaan (XCS-2647) Kun -relax-optimointi otettiin käyttöön ja siellä oli koodi- tai dataosia, jotka eivät mahtuneet käytettävissä olevaan muistiin, linkki kaatui. Nyt tällaisessa tilanteessa sen sijaan annetaan virheilmoituksia.
Huono EEPROM-käyttö (XCS-2629) Leproma _read_ block -rutiini ei toiminut oikein Mega-laitteissa, kun -monist-data-in-proem -vaihtoehto oli käytössä (joka on oletustila), mikä johti siihen, että EEPROM-muistia ei lueta oikein.
Virheellinen muistin varaus (XCS-2593, XCS-2651) Kun -Teksti- tai -Tata-linkkerivaihtoehto (esimample läpäisty käyttämällä -Wl-ohjainvaihtoehtoa) on määritetty, vastaava teksti-/tietoalueen alkuperä päivitettiin; loppuosoitetta ei kuitenkaan säädetty vastaavasti, mikä olisi voinut johtaa siihen, että alue ylittää kohdelaitteen muistialueen.
Virheellinen ATtiny-keskeytyskoodi (XCS-2465) Kun rakennettiin Tatin-laitteille ja optimoinnit poistettiin käytöstä (-00), keskeytystoiminnot ovat saattaneet laukaista operandin alueen ulkopuolella kokoajan viestejä.
Vaihtoehdot eivät mene läpi (XCS-2452) Käytettäessä -Wl-vaihtoehtoa useiden pilkuilla eroteltujen linkkerivaihtoehtojen kanssa, kaikkia linkkivaihtoehtoja ei välitetty linkkerille.
Virhe luettaessa ohjelmamuistia (XCS-2450) Joissakin tapauksissa kääntäjä tuotti sisäisen virheen (tunnistamaton insn) lukiessaan kahden tavun arvon osoittimesta ohjelmamuistiin

Versio 2.32

Kirjaston toinen käyttö epäonnistuu (XCS-2381) xc8-ar:n Windows-version kutsuminen. exe-kirjaston arkistointiohjelma toisen kerran päästäkseen olemassa olevaan kirjasto-arkistoon on saattanut epäonnistua virheilmoituksen vuoksi, jonka nimeäminen ei onnistu.

Versio 2.31

Selittämättömät kääntäjävirheet (XCS-2367) Kun käytössä on Windows-ympäristöissä, joissa järjestelmän väliaikainen hakemisto oli asetettu polkuun, joka sisälsi pisteen.' merkkiä, kääntäjä ei ehkä onnistunut suorittamaan.

Versio 2.30

Yleiset etiketit väärin ääriviivauksen jälkeen (XCS-2299) Käsin kirjoitettua kokoonpanokoodia, joka sijoittaa globaaleja tarroja kokoonpanosekvensseihin, jotka huomioidaan proseduurin abstraktin avulla, ei ehkä ole sijoitettu oikein.
Rentouttava kolari (XCS-2287) Valinnan -merlad käyttäminen on saattanut aiheuttaa linkkerin kaatumisen, kun hännänhypyn rentoutumisen optimointi yritti poistaa ret-käskyt, jotka eivät olleet osan lopussa.
Kaatuu, kun tunnisteita optimoidaan arvoiksi (XCS-2282) Koodi, jossa on käytetty "Labels as Values" GNU C -kielilaajennusta, on saattanut aiheuttaa prosessin abstraktion optimoinnin kaatumisen, ja Outlined VMA range spans -korjausvirhe.
Ei niin vakio (XCS-2271) Alkujen () ja muiden toimintojen prototyypit älä enää määritä ei-standardista kustannusten määrittämää palautetuissa merkkijonoosoittimissa, kun -monist-data inprogmem -ominaisuus on poistettu käytöstä. Huomaa, että avrxmega3- ja avertin-laitteissa tämä ominaisuus on pysyvästi käytössä.
Kadonneet alustuslaitteet (XCS-2269) Kun useampi kuin yksi muuttuja käännösyksikössä sijoitettiin osioon (käyttäen osiota tai attribuuttia ((section))), ja ensimmäinen tällainen muuttuja oli nollaalustettu tai sillä ei ollut alustinta, muiden muuttujien alustajat samassa käännösyksikössä samaan osioon sijoitetut katosivat.

Versio 2.29 (toiminnallisen turvallisuuden julkaisu)

Ei mitään.

Versio 2.20

Virhe pitkissä komennoissa (XCS-1983) Käytettäessä AVR-kohdetta kääntäjä on saattanut pysähtyä a file ei löydy -virhettä, jos komentorivi oli erittäin suuri ja sisälsi erikoismerkkejä, kuten lainausmerkkejä, kenoviivaa jne.
Määrittämätön rodata-osio (XCS-1920) AVR-linkkeri ei pystynyt osoittamaan muistia mukautetuille rodata-osille rakennettaessa avrxmega3- ja avrtiny-arkkitehtuuria, mikä saattaa aiheuttaa muistin päällekkäisvirheitä

Versio 2.19 (toiminnallisen turvallisuuden julkaisu)

Ei mitään.

Versio 2.10

Siirtovirheet (XCS-1891) Sopivin allokaattori oli jättää muistin "reikiä" osien väliin linkkerin rentoutumisen jälkeen. Muistin pirstoutumisen lisäksi tämä lisäsi linkereiden uudelleensijoitushäiriöiden mahdollisuutta, jotka liittyvät pc-suhteellisiin hyppyihin tai puheluiden jäämiseen kantaman ulkopuolelle.
Ohjeet, joita rentoutuminen ei muunna (XCS-1889) Linkkerin rentoutumista ei tapahtunut hyppy- tai kutsuohjeille, joiden kohteet ovat saavutettavissa rentoutuessaan.
Puuttuu toiminnallisuus (XCSE-388) Useita määritelmiä , kuten clock_ div_ t ja clock_prescale_set (), ei määritetty laitteille, mukaan lukien ATmega324PB, ATmega328PB, ATtiny441 ja ATtiny841.
Puuttuvat makrot Kääntäjä ei määrittänyt automaattisesti esiprosessorimakroja_ xcs _MODE_, _xcs VERSION, _xc ja xcs. Nämä ovat nyt saatavilla.

Versio 2.05

Sisäinen kääntäjävirhe (XCS-1822) Kun rakennetaan Windowsin alla, sisäinen kääntäjävirhe on saatettu syntyä optimoitaessa koodia.
RAM-muistin ylivuotoa ei havaittu (XCS-1800, XCS-1796) Kääntäjä ei joissain tilanteissa havainnut ohjelmia, jotka ylittivät käytettävissä olevan RAM-muistin, mikä johti ajonaikaiseen koodivirheeseen.
Flash-muisti puuttuu (XCS-1792) Avrxmega3- ja avrtiny-laitteissa MPLAB X IDE on voinut jättää osia flash-muistista ohjelmoimatta.
Pääohjelman suorittaminen epäonnistui (XCS-1788) Joissakin tilanteissa, joissa ohjelmalle ei ollut määritetty globaaleja muuttujia, ajonaikainen käynnistyskoodi ei poistunut eikä pääfunktiota () koskaan saavutettu.
Väärät muistitiedot (XCS-1787) Avrxmega3- ja avrtiny-laitteissa avr-size-ohjelma ilmoitti, että vain luku -tiedot kuluttavat RAM-muistia ohjelmamuistin sijaan.
Virheellinen ohjelmamuistin luku (XCS-1783) Projektit, jotka on käännetty laitteille, joiden ohjelmamuisti on yhdistetty data-osoiteavaruuteen ja jotka määrittelevät objekteja PROGMEM-makro/attribuutilla, ovat saattaneet lukea nämä objektit väärästä osoitteesta.
Sisäinen virhe attribuuttien kanssa (XCS-1773) Tapahtui sisäinen virhe, jos määritit osoitinobjekteja
_at ()- tai attribuutti()-merkit osoittimen nimen ja viittauksen poiston tyypin välissä, esimample, char *
_at ( 0x80015 0) cp; Nyt annetaan varoitus, jos tällainen koodi havaitaan.
Main (XCS-1780, XCS-1767, XCS-1754) suorittaminen epäonnistui EEPROM-muuttujien käyttäminen tai sulakkeiden määrittäminen config pragman avulla on saattanut aiheuttaa virheellisen tietojen alustuksen ja/tai lukita ohjelman suorituksen ajonaikaisessa käynnistyskoodissa, ennen kuin saavutettiin pää () .
Sulakevirhe pienissä laitteissa (XCS-1778, XCS-1742) Attiny4/5/9/10/20/40-laitteiden otsikossa oli määritetty väärä sulakkeen pituus files, jotka johtavat linkkerivirheisiin yritettäessä rakentaa koodia, joka määrittää sulakkeet.
Segmentointivirhe (XCS-1777) Satunnainen segmentointivika on korjattu.
Assembler kaatuu (XCS-1761) Avr-as-asentaja on saattanut kaatua, kun kääntäjää ajettiin Ubuntu 18:lla.
Objekteja ei ole poistettu (XCS-1752) Ajonaikainen käynnistyskoodi ei ehkä ole tyhjentänyt alustamattomia staattisen tallennuskeston objekteja.
Ristiriitainen laitemääritys ohitettu (XCS-1749) Kääntäjä ei luonut virhettä, kun useita laitemääritysvaihtoehtoja käytettiin ja ne osoittivat eri laitteita.
Muistin korruptio keon takia (XCS-1748) Kason_aloitussymboli oli asetettu väärin, mikä johti siihen, että kasa voi vahingoittaa tavallisia muuttujia.
Linkkerin siirtovirhe (XCS-1739) Linkkerin uudelleensijoitusvirhe on saatettu lähettää, kun koodi sisälsi rjmp- tai rc-puhelun, jonka kohde oli tasan 4 kt:n päässä.

Versio 2.00

Ei mitään.

Tunnetut ongelmat

Seuraavat ovat kääntäjän toiminnan rajoituksia. Nämä voivat olla yleisiä koodausrajoituksia tai
poikkeamat käyttöoppaan sisältämistä tiedoista. Otsikon suluissa olevat tarrat ovat kyseisen ongelman tunniste seurantatietokannassa. Tästä voi olla hyötyä, jos sinun on otettava yhteyttä tukeen. Kohteet, joissa ei ole tunnisteita, ovat toimintatapaa kuvaavia rajoituksia, jotka todennäköisesti pysyvät voimassa pysyvästi.

MPLAB X IDE -integrointi

MPLAB IDE -integraatio Jos Compileria käytetään MPLAB IDE:stä, sinun on asennettava MPLAB IDE ennen kääntäjän asentamista.

Koodin luominen

PA-muistin varausvirhe (XCS-2881) Proseduurin abstraktiooptimoijia käytettäessä linkkeri saattaa raportoida muistin varausvirheistä, kun koodin koko on lähellä laitteen käytettävissä olevan ohjelmamuistin määrää, vaikka ohjelman pitäisi mahtua käytettävissä olevaan tilaan.
Ei niin älykäs Smart-IO (XCS-2872) Kääntäjän smart-io-ominaisuus generoi kelvollisen, mutta epäoptimaalisen koodin sprinttitoiminnolle, jos coast-data-in-proem-ominaisuus on poistettu käytöstä tai jos laitteen kaikki flash-muisti on yhdistetty datamuistiin.
Vielä vähemmän älykäs Smart-IO (XCS-2869) Kääntäjän smart-io-ominaisuus luo kelvollisen, mutta epäoptimaalisen koodin, kun käytetään -floe- ja -fno-buil tin -vaihtoehtoja.
Epäoptimaalinen vain luku -tietojen sijoittelu (XCS-2849) Linkkeri ei tällä hetkellä ole tietoinen muistikartan APPCODE- ja APPDATA-muistiosista eikä [No-]Read-While-Write-osista. Tämän seurauksena on pieni mahdollisuus, että linkki voi varata vain luku -dataa sopimattomalle muistialueelle. Väärin sijoitetun datan mahdollisuus kasvaa, jos rannikko-data-in-pragma-ominaisuus on käytössä, varsinkin jos rannikko-data-in-config-mapped-proem-ominaisuus on myös käytössä. Nämä ominaisuudet voidaan tarvittaessa poistaa käytöstä.
Esine file käsittelytilaus (XCS-2863) Objektien järjestys fileLinkkerin käsittelemät s voivat vaihdella proseduurien abstraktiooptimointien käytön mukaan (-mpa-vaihtoehto). Tämä vaikuttaisi vain koodiin, joka määrittelee useiden moduulien heikkoja toimintoja.
Linkkerivirhe absoluuttisen kanssa (XCS-2777) Kun objekti on tehty absoluuttiseksi RAM-muistin alussa olevassa osoitteessa ja myös alustamattomia objekteja on määritetty, linkkivirhe saattaa laukaista.
Lyhyet herätystunnukset (XCS-2775) ATA5700/2-laitteissa PHID0/1-rekisterit määritellään vain 16 bitin levyisiksi 32 bitin sijasta.
Linkittäjä kaatui soitettaessa symboli (XCS-2758) Linkki saattaa kaatua, jos -merlad driver -vaihtoehtoa käytetään, kun lähdekoodi kutsuu symbolia, joka on määritetty käyttämällä -Wl, -defsym linker -vaihtoehtoa.
Virheellinen alustus (XCS-2679) Joidenkin globaalien/staattisten tavukokoisten objektien alkuarvot sijoitetaan datamuistiin ja missä muuttujia käytetään ajon aikana, on ristiriita.
aloitettu väärin asettaa tyhjäksi (XCS-2652) Tapauksissa, joissa muunnettava aihemerkkijono ilmoitetulla () -merkillä sisältää liukulukuluvun eksponentiaalisessa muodossa ja e-merkin jälkeen on odottamaton merkki, tyhjä osoite, jos se on annettu, osoittaa seuraavaan merkkiin. e eikä itse e. esimample: todettu("hui", tyhjä); johtaa tyhjään osoittamiseen x-merkkiin.
Virheelliset epäsuorat funktiokutsut (XCS-2628) Joissakin tapauksissa osana rakennetta tallennetun funktioosoittimen kautta tehdyt funktiokutsut saattavat epäonnistua.
strtof palauttaa nollan heksadesimaalilaskuille (XCS-2626) Kirjastofunktiot strtof () et al ja scanf () et al muuntaa aina heksadesimaalisen liukulukuluvun, joka ei määritä eksponenttia
nolla. esimample: staattori("Pöllö", &tyhjä); palauttaa arvon 0, ei 1.
Virheellinen pinon neuvontaviesti (XCS-2542, XCS-2541) Joissakin tapauksissa pinon neuvonantajan varoitusta käytetystä rekursiosta tai määrittämättömästä pinosta (mahdollisesti käyttämällä alloca()) ei lähetetä.
Virhe kaksinkertaisessa keskeytyskoodissa (XCS-2421) Jos useammalla kuin yhdellä keskeytysfunktiolla on sama runko, kääntäjä voi kutsua yhden keskeytysfunktion lähtöä toiselle. Tämä johtaa siihen, että kaikki puhelujen peittämät rekisterit tallennetaan tarpeettomasti ja keskeytykset otetaan käyttöön jo ennen kuin nykyisen keskeytyskäsittelijän epilogi on suoritettu, mikä voi johtaa koodin epäonnistumiseen.
Const-objektit eivät ole ohjelmamuistissa (XCS-2408) Avrxmega3- ja avertins-projekteissa unidealisoimattomia const-objekteja sijoitetaan tietomuistiin, vaikka varoitus viittaa siihen, että ne on sijoitettu ohjelmamuistiin. Tämä ei vaikuta laitteisiin, joissa ei ole ohjelmamuistia yhdistettynä tietomuistitilaan, eikä se vaikuta alustettuihin objekteihin.
Virheellinen tulos, jossa on virheellinen DFP-polku (XCS-2376) Jos kääntäjää kutsutaan virheellisellä DFP-polulla ja "määrityksellä" file on olemassa valitulle laitteelle, kääntäjä ei ilmoita puuttuvasta laiteperhepaketista vaan valitsee sen sijaan 'spec' file, mikä voi sitten johtaa virheelliseen ulostuloon. "Spec" files eivät ehkä ole ajan tasalla jaettujen DFP:iden kanssa, ja ne on tarkoitettu käytettäväksi vain sisäisen kääntäjien testaamiseen.
Muistin päällekkäisyyttä ei havaittu (XCS-1966) Kääntäjä ei havaitse osoitteeseen absoluuttisiksi tehtyjen (osoitteen () kautta) ja muiden samaan osoitteeseen linkitettyjen objektien (osion () määritteen avulla) muistin päällekkäisyyttä.
Virhe kirjastotoimintojen ja _meme (XCS-1763) kanssa Kutsutut limbiset float-funktiot, joiden argumentti on _memo-osoiteavaruudessa, saattavat epäonnistua. Huomaa, että kirjastorutiineja kutsutaan joistakin C-operaattoreista, joten esimample, vaikuttaa seuraavaan koodiin: return regFloatVar > memxFloatVar;
Rajoitettu limbinen toteutus (AVRTC-731) ATTiny4/5/9/10/20/40-tuotteissa C / Math -kirjaston standarditoteutus limbisessä muodossa on hyvin rajoitettua tai ei ollenkaan.
Ohjelmamuistin rajoitukset (AVRTC-732) Työkaluketju tukee yli 128 kb:n ohjelmamuistikuvia; on kuitenkin tunnettuja tapauksia, joissa linkkeri keskeyttää ilman rentoutumista ja ilman hyödyllistä virheilmoitusta sen sijaan, että se generoisi vaaditut funktion tyngät, kun -relax-vaihtoehtoa käytetään.
Nimitilan rajoitukset (AVRTC-733) Työkaluketju tukee nimettyjä osoiteavaruuksia, jollei käyttöoppaan kohdassa Erikoistyyppimäärittäjät mainituista rajoituksista muuta johdu.
Aikavyöhykkeet The kirjastotoiminnot olettavat GMT:tä eivätkä tue paikallisia aikavyöhykkeitä, joten paikallinen aika () palauttaa saman ajan kuin gummite (), esim.ample.

ASIAKASTUKI

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

Asiakirjat / Resurssit

MICROCHIP MPLAB XC8 C -kääntäjäohjelmisto [pdfKäyttöopas
MPLAB XC8 C, MPLAB XC8 C kääntäjäohjelmisto, kääntäjäohjelmisto, ohjelmisto

Viitteet

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *