MICROCHIP MPLAB XC8 C fordítószoftver
EZ A DOKUMENTUM FONTOS INFORMÁCIÓKAT TARTALMAZ AZ MPLAB XC8 C FORDÍTÓVAL KAPCSOLATBAN, HA A MIKROCHIP AVR ESZKÖZÖK CÉLZÉSE ESETÉN.
KÉRJÜK, OLVASSA EL EZT A SZOFTVER FUTATÁSA ELŐTT. HA 8 BITES KÉP ESZKÖZÖKHEZ HASZNÁLJA A FORDÍTÓT, HA 8 BITES KÉP ESZKÖZÖKHEZ HASZNÁLJA, HASZNÁLJA A FORMÁLÓT.
Felettview
Bevezetés
A Microchip MPLAB® XC8 C fordító ezen kiadása számos új funkciót, hibajavítást és új eszköztámogatást tartalmaz.
Építési dátum
A fordítóverzió hivatalos fordítási dátuma 3. július 2022.
Előző verzió
Az MPLAB XC8 C fordító előző verziója 2.39, egy funkcionális biztonsági fordító, 27. január 2022-én készült el. Az előző szabványos fordító a 2.36-os verzió volt, 27. január 2022-én.
Funkcionális biztonsági kézikönyv
A funkcionális biztonsági licenc megvásárlásakor a dokumentációs csomagban megtalálható az MPLAB XC fordítók Funkcionális biztonsági kézikönyve.
Összetevők licencei és verziói
Az MPLAB® XC8 C Compiler for AVR MCU-k eszközeit a GNU General Public License (GPL) alatt írják és terjesztik, ami azt jelenti, hogy a forráskódja szabadon terjeszthető és elérhető a nyilvánosság számára. A GNU GPL alá tartozó eszközök forráskódja külön letölthető a Microchip-től webwebhely. A GNU GPL-t a file named a telepítési könyvtár alkönyvtárában található. A GPL alapelveinek általános ismertetése itt található. A fejléchez biztosított támogatási kód files, linker szkriptek és futásidejű könyvtárak védett kódok, és a GPL nem vonatkozik rájuk.
Ez a fordító a GCC 5.4.0-s verziója, a binutils 2.26-os verziója, és az avr-libc 2.0.0-s verzióját használja.
Rendszerkövetelmények
Az MPLAB XC8 C fordító és az általa használt licencszoftver számos operációs rendszerhez elérhető, beleértve a következők 64 bites verzióit: Microsoft Windows 10 professzionális kiadásai; Ubuntu 18.04; és macOS 10.15.5. A Windows bináris fájljai kóddal aláírva. A mac OS bináris fájljai kóddal aláírva és közjegyzővel hitelesítettek.
Ha hálózati licenckiszolgálót futtat, csak a fordítók által támogatott operációs rendszerrel rendelkező számítógépek használhatók a licenckiszolgáló hosztolására. Az xclm 2.0-s verziójától kezdve a hálózati licenckiszolgáló telepíthető Microsoft Windows Server platformra, de a licenckiszolgálónak nem kell futnia az operációs rendszer kiszolgálói verzióján.
Támogatott eszközök
Ez a fordító támogatja az összes, a kiadás idején ismert 8 bites AVR MCU eszközt. Lásd (a fordító doc könyvtárában) az összes támogatott eszköz listáját. Ezek files az egyes eszközök konfigurációs bitbeállításait is felsorolja.
Kiadások és licencfrissítések
Az MPLAB XC8 fordító aktiválható licencelt (PRO) vagy licenc nélküli (ingyenes) termékként. A fordító licenceléséhez aktiváló kulcsot kell vásárolnia. A licenc magasabb szintű optimalizálást tesz lehetővé, mint az ingyenes termék. Egy licenc nélküli fordítóprogram korlátlan ideig üzemeltethető licenc nélkül.
Az MPLAB XC8 Functional Safety fordítót a Microchiptől vásárolt funkcionális biztonsági licenccel kell aktiválni. A fordítóprogram nem működik ezen engedély nélkül. Az aktiválás után bármelyik optimalizálási szintet kiválaszthatja, és használhatja a fordító összes funkcióját. Az MPLAB XC Functional Safety Compiler ezen kiadása támogatja a hálózati szerver licencet.
Tekintse meg az MPLAB XC C fordítók telepítése és licencelése (DS50002059) című dokumentumot a licenctípusokkal és a licenccel rendelkező fordító telepítésével kapcsolatos információkért.
Telepítés és aktiválás
Tekintse meg az Áttelepítési problémák és korlátozások című részt is, ahol fontos információk találhatók a fordítóhoz mellékelt legújabb licenckezelővel kapcsolatban.
Ha MPLAB IDE-t használ, az eszköz telepítése előtt feltétlenül telepítse a legújabb MPLAB X IDE 5.0-s vagy újabb verzióját. A fordító telepítése előtt lépjen ki az IDE-ből. Futtassa az .exe (Windows), .run (Linux) vagy alkalmazás (macOS) fordítótelepítő alkalmazást, pl. XC8-1.00.11403-windows.exe, és kövesse a képernyőn megjelenő utasításokat.
Az alapértelmezett telepítési könyvtár ajánlott. Ha Linuxot használ, akkor a fordítót terminál használatával és root fiókból kell telepítenie. Telepítés rendszergazdai jogosultságokkal rendelkező macOS-fiókkal.
Az aktiválás most a telepítéstől külön történik. További információkért tekintse meg a License Manager for MPLAB® XC C Compilers (DS52059) dokumentumot.
Ha úgy dönt, hogy a fordítóprogramot a kiértékelési licenc alatt futtatja, akkor a fordítás során figyelmeztetést kap, ha 14 napon belül van az értékelési időszak végétől. Ugyanezt a figyelmeztetést adjuk ki, ha HPA-előfizetése lejártát követő 14 napon belül van.
Az XC Network License Server egy külön telepítő, és nem szerepel az egyfelhasználós fordító telepítőjében.
Az XC License Manager mostantól támogatja a lebegő hálózati licencek barangolását. Ez a mobilfelhasználókat célzó funkció lehetővé teszi, hogy egy lebegő licenc rövid időre kilépjen a hálózatból. Ezzel a funkcióval lekapcsolhatja a hálózatot, és továbbra is használhatja az MPLAB XC fordítót. A funkcióval kapcsolatos további információkért tekintse meg az XCLM-telepítés doc mappáját. Az MPLAB X IDE tartalmaz egy Licencek ablakot (Eszközök > Licencek) a barangolás vizuális kezeléséhez.
Telepítési problémák megoldása
Ha nehézségekbe ütközik a fordító telepítése bármely Windows operációs rendszer alatt, próbálja meg a következő javaslatokat.
- Futtassa a telepítést rendszergazdaként.
- A telepítő alkalmazás engedélyeit állítsa „Teljes vezérlés” értékre. (Kattintson jobb gombbal a file, válassza a Tulajdonságok, a Biztonság fület, válassza ki a felhasználót, és szerkessze.)
- Állítsa be a temp mappa engedélyeit a „Full Control!
A temp mappa helyének meghatározásához írja be a %temp% parancsot a Futtatás parancsba (Windows logó + R billentyű). Ezzel megnyílik a file Explorer párbeszédpanel, amely megmutatja a könyvtárat, és lehetővé teszi a mappa elérési útjának meghatározását.
Fordító dokumentáció
A fordító felhasználói útmutatói a képernyőképen látható módon a böngészőben megnyíló HTML-oldalról nyithatók meg, amikor az MPLAB X IDE irányítópultján a kék súgó gombra kattint.
Ha 8 bites AVR célokra épít, az MPLAB® XC8 C fordító felhasználói kézikönyve az AVR® MCU-hoz információkat tartalmaz azokról a fordító opciókról és szolgáltatásokról, amelyek erre az architektúrára vonatkoznak.
Ügyfélszolgálat
A Microchip szívesen fogadja a hibajelentéseket, javaslatokat vagy megjegyzéseket a fordítóverzióval kapcsolatban. Kérjük, irányítsa a hibajelentéseket vagy a funkciókra vonatkozó kéréseket a támogatási rendszeren keresztül.
Dokumentációs frissítések
Az MPLAB XC8 dokumentáció online és legfrissebb verzióiért látogassa meg a Microchip online műszaki dokumentációját. webtelek.
Új vagy frissített AVR-dokumentáció ebben a kiadásban:
- MUSL szerzői jogi megjegyzés
- MPLAB XC C fordítók telepítése és licencelése (M változat)
- MPLAB XC8 felhasználói kézikönyv beágyazott mérnökök számára – AVR MCU-k (A változat)
- Az MPLAB XC8 C fordító felhasználói útmutatója az AVR MCU-hoz (F változat)
- Microchip Unified Standard Library Reference Guide (B változat)
A Microchip Unified Standard Library Reference Guide leírja a Microchip Unified Standard Library által meghatározott funkciók viselkedését és interfészét, valamint a könyvtártípusok és makrók tervezett használatát. Ezen információk egy része korábban az MPLAB® XC8 C Compiler User!s Guide for AVR® MCU-ban szerepelt. Az eszközspecifikus könyvtári információkat továbbra is tartalmazza ez a fordítói útmutató.
Ha még csak most kezdi használni a 8 bites eszközöket és az MPLAB XC8 C fordítót, az MPLAB® XC8 User!s Guide for Embedded Engineers – AVR® MCUs (DS50003108) információkat tartalmaz az MPLAB X IDE projektek beállításáról és a kód írásáról. az első MPLAB XC8 C projektjéhez. Ezt az útmutatót most a fordítóval együtt terjesztik.
A Hamate felhasználói kézikönyv a kiadás docs könyvtárában található. Ez az útmutató azoknak készült, akik a Hamate-et önálló alkalmazásként futtatják.
Újdonságok
A következő új AVR-cél funkciók, amelyeket a fordító már támogat. Az alcímekben található verziószám az első olyan fordítóverziót jelöli, amely támogatja a következő funkciókat.
2.40 verzió
Új készülék támogatása A következő AVR-alkatrészek támogatása már elérhető: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32, AVR64, AVR48.
Továbbfejlesztett eljárási absztrakció A procedural abstraction (PA) optimalizáló eszközt továbbfejlesztették, így a függvényhívási utasítást tartalmazó kód (hívás visszahívása) körvonalazható. Ez csak akkor történik meg, ha a verem nem argumentumokat ad át a függvénynek, és nem kap visszatérési értéket a függvénytől. A verem akkor használatos, amikor változó argumentumlistával rendelkező függvényt hívunk meg, vagy ha olyan függvényt hívunk meg, amely több argumentumot vesz fel, mint ahány regiszter van erre a célra. Ez a funkció letiltható a monk-pa-outline-calls opcióval, vagy a procedurális absztrakció teljesen letiltható egy objektumnál file vagy működjön a -monk-pa-on- használatávalfile és -mo.-pa-on-függvény, vagy a nipa attribútum (nipa specifikátor) szelektív használatával a függvényekkel
Kódlefedettség makró A fordító most meghatározza a __CODECOV makrót, ha érvényes mcodecov beállítás van megadva.
Memóriafoglalási lehetőség Az xc8-cc illesztőprogram mostantól elfogadja a -mreserve=space@start: end opciót az AVR-célok építésekor. Ez az opció lefoglalja a megadott memóriatartományt az adat- vagy programmemória területén, megakadályozva, hogy a linker kódot vagy objektumokat töltsön fel ezen a területen.
Okosabb intelligens IO Számos fejlesztés történt a Smart IO funkciókban, beleértve a printf alapkód általános módosításait, a %n konverziós specifikátor független változatként való kezelését, a vararg pop rutinok igény szerinti összekapcsolását, rövidebb adattípusok használatát, ahol lehetséges az IO függvény argumentumainak kezelésére. , valamint a faktorálás közös kódja a mezőszélességben és a precíziós kezelésben. Ez jelentős kód- és adatmegtakarítást eredményezhet, valamint növelheti az IO végrehajtási sebességét.
2.39-es verzió (Funkcionális biztonsági kiadás)
Hálózati szerver licenc Az MPLAB XC8 Functional Safety Compiler jelen kiadása támogatja a hálózati szerver licencet.
2.36 verzió
Egyik sem.
2.35 verzió
Új készülék támogatása Támogatás érhető el a következő AVR alkatrészekhez: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 és AVR64DD32.
Továbbfejlesztett kontextusváltás Az új -mcall-isr-prologues beállítás megváltoztatja, hogy a megszakítási függvények hogyan mentik el a regisztereket a belépéskor, és hogyan állnak vissza ezek a regiszterek, amikor a megszakítási rutin véget ér. Hasonlóan működik, mint az -mcall-prologues opció, de csak a megszakítási függvényekre (ISR) van hatással.
Még továbbfejlesztett kontextusváltás Az új -mgas-isr-prologues beállítás szabályozza a kis megszakítási szolgáltatásrutinokhoz generált itch kódot. Ha engedélyezve van, ez a funkció az összeszerelővel ellenőrzi az ISR-t a regiszterhasználat szempontjából, és csak szükség esetén menti el ezeket a használt regisztereket.
Konfigurálható flash leképezés Az AVR DA és az AVR DB család egyes eszközei SFR-rel (pl. FLMAP) rendelkeznek, amely meghatározza, hogy a programmemória melyik 32 ezer szakasza kerüljön leképezésre az adatmemóriába. Az új – mconst-data-in-config-mapped-proem opció használható arra, hogy a linker az összes hátrányos minősítésű adatot egy 32k-s szakaszba helyezze, és automatikusan inicializálja a megfelelő SFR-regisztert, hogy biztosítsa, hogy ezek az adatok az adatmemóriatérbe kerüljenek. , ahol hatékonyabban lesz elérhető.
Microchip Unified Standard Libraries Minden MPLAB XC fordító megoszt egy Microchip Unified Standard Library könyvtárat, amely már elérhető az MPLAB XC8 jelen kiadásával. Az MPLAB® XC8 C Compiler Felhasználói kézikönyv/vagy az AVR® MCU már nem tartalmazza ezeknek a szabványos funkcióknak a dokumentációját. Ezek az információk most a Microchip Unified Standard Library Reference Guide-ban találhatók. Vegye figyelembe, hogy néhány, az avr-libc által korábban meghatározott funkció már nem érhető el. (Lásd Könyvtár):'. funkcionalitás…)
Intelligens IO Az új egyesített könyvtárak részeként a nyomtatási és szkennelési családok IO-függvényei mostantól egyedileg generálódnak az egyes buildeken, attól függően, hogy ezeket a funkciókat hogyan használják a programban. Ez jelentősen csökkentheti a program által felhasznált erőforrásokat.
Intelligens IO-segítő lehetőség Az intelligens IO-függvények (mint például a printf () vagy a scanf () ) hívásainak elemzésekor a fordító nem mindig tudja meghatározni a formátum karakterláncból, vagy az argumentumokból következtetni a hívás által igényelt konverziós specifikációkra. Korábban a fordító mindig nem tett feltételezéseket, és gondoskodott arról, hogy a teljes mértékben működőképes IO-függvények be legyenek kapcsolva a végső programképbe. Egy új – msmart-io-format=fmt opció került hozzáadásra, hogy a fordítót ehelyett a felhasználó tájékoztassa az intelligens IO-függvények által használt konverziós specifikációkról, amelyek használata nem egyértelmű, így elkerülhető a túl hosszú IO-rutinok összekapcsolása. (További részletekért lásd a smart-io-formátum opciót.)
Egyedi szakaszok elhelyezése Korábban a -Wl, –section-start opció csak akkor helyezte el a megadott szakaszt a kért címre, amikor a linker parancsfájl azonos nevű kimeneti szakaszt definiált. Ha ez nem így történt, a szakaszt a linker által kiválasztott címre helyezték el, és a lehetőséget lényegében figyelmen kívül hagyták. Mostantól ez az opció minden egyéni szakaszra érvényes, még akkor is, ha a linker szkript nem határozza meg a szakaszt. Ne feledje azonban, hogy a szabványos szakaszok esetében, mint a . szöveg, . bss vagy . adatok, a legjobban illeszkedő allokátor továbbra is teljes mértékben irányítja az elhelyezésüket, és az opciónak nincs hatása. Használja a -Wl, -Tsection=add opciót a használati útmutatóban leírtak szerint.
2.32 verzió
Stack Útmutató A PRO fordítólicenccel elérhető fordító veremvezető funkciója felhasználható a program által használt verem maximális mélységének becslésére. Összeállítja és elemzi egy program hívási grafikonját, meghatározza az egyes függvények veremhasználatát, és jelentést készít, amelyből következtetni lehet a program által használt veremek mélységére. Ez a szolgáltatás az -mchp-stack-usage parancssori kapcsolóval engedélyezhető. A végrehajtás után kinyomtatja a veremhasználat összegzését. Részletes veremjelentés a térképen érhető el file, mely a megszokott módon igényelhető.
Új eszközök támogatása a következő AVR alkatrészekhez érhető el: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32.
Visszahúzott eszköztámogatás Támogatás már nem elérhető a következő AVR alkatrészekhez: AVR16DA28, AVR16DA32 és, AVR16DA48.
2.31 verzió
Egyik sem.
2.30 verzió
Új lehetőség az adatok inicializálásának megakadályozására Az új -mno-data-init illesztőprogram-beállítás megakadályozza az adatok inicializálását és a bss szakaszok törlését. Úgy működik, hogy elnyomja a do_ copy_ data és d o_ clear_ bss szimbólumok kimenetét az assemblyben files, ami viszont megakadályozza, hogy a linker bevonja ezeket a rutinokat.
Továbbfejlesztett optimalizálás Számos optimalizálási fejlesztést hajtottak végre, beleértve a redundáns visszatérési utasítások eltávolítását, a bit-ha-kihagyás utasítást követő ugrások eltávolítását, valamint a jobb eljárási absztrakciót és a folyamat iterálhatóságát.
Mostantól további opciók állnak rendelkezésre ezen optimalizálás némelyikének vezérlésére, különösen -f szakasz horgonyok, amelyek lehetővé teszik a statikus objektumok elérését egy szimbólumhoz képest; -mpai derations=n, amely lehetővé teszi az eljárási absztrakciós iterációk számának megváltoztatását az alapértelmezett 2-ről; és -mpa- call cost- shortcall, amely agresszívebb procedurális absztrakciót hajt végre, abban a reményben, hogy a linker ellazíthatja a hosszú hívásokat. Ez az utolsó lehetőség növelheti a kód méretét, ha a mögöttes feltételezések nem valósulnak meg.
Új készülék támogatása Támogatás érhető el a következő AVR alkatrészekhez: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 és AVR128DB64 és AVRXNUMXDB.
Visszahúzott eszköz támogatása A következő AVR alkatrészekhez már nem áll rendelkezésre támogatás: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, 664251ATAXNUMXC, és.
2.29-es verzió (Funkcionális biztonsági kiadás)
Fejléc file beépített fordítóprogramokhoz Annak biztosítására, hogy a fordító megfeleljen a nyelvi specifikációknak, például a MISRA-nak, a fejléc file, amelyet automatikusan tartalmaz , Frissítve lett. Ez a fejléc tartalmazza az összes beépített funkció prototípusát, mint például a _buil tin _avrnop () és _buil tin_ avr delay_ cycles () . Előfordulhat, hogy egyes beépített elemek nem MISRA-kompatibilisek; ezek elhagyhatók a define _Xe_ STRICT_ MISRA hozzáadásával a fordító parancssorába. A beépített modulokat és azok deklarációit frissítettük, hogy fix szélességű típusokat használjanak.
2.20 verzió
Új készülék támogatása Támogatás érhető el a következő AVR alkatrészekhez: ATTINY1624, ATTINY1626 és ATTINY1627.
Jobban illeszkedő elosztás A fordítóprogramban a legjobb illeszkedési allokátor (BFA) továbbfejlesztésre került, így a szakaszok olyan sorrendben kerülnek kiosztásra, amely jobb optimalizálást tesz lehetővé. A BFA mostantól támogatja az elnevezett címtereket, és jobban kezeli az adatok inicializálását.
Továbbfejlesztett eljárási absztrakció Az eljárási absztrakciós optimalizálásokat most több kódszekvencián hajtják végre. Azokat a korábbi helyzeteket, amikor ez az optimalizálás növelhette a kódméretet, úgy kezelték, hogy az optimalizáló kódot tudatta a linker szemétgyűjtési folyamatával.
Az AVR Assembler hiánya Az AVR Assembler már nem része ennek a disztribúciónak.
2.19-es verzió (Funkcionális biztonsági kiadás)
Egyik sem.
2.10 verzió
Kódlefedettség Ez a kiadás tartalmaz egy kódlefedettségi funkciót, amely megkönnyíti a projekt forráskódjának végrehajtásának mértékének elemzését. Használja a -mcodecov=ram kapcsolót az engedélyezéséhez. A program végrehajtása után a hardveren a kódlefedettség információi összegyűjtésre kerülnek az eszközben, és ezt egy kódlefedettségi beépülő modulon keresztül átviheti és megjelenítheti az MPLAB X IDE-re. Erről a bővítményről az IDE dokumentációjában találhat információkat. A #pragma mcodecov felhasználható a következő függvények kizárására a lefedettségelemzésből. Ideális esetben a pragmát a szöveg elejére kell hozzáadni file hogy kizárja azt az egészet file a fedezetelemzésből. Alternatív megoldásként az attribútum ( (mcodecov) ) használható egy adott függvény kizárására a lefedettségi elemzésből.
Eszköz leírása files Egy új készülék file avr chipinfo néven. html a fordítói terjesztés docs könyvtárában található. Ez file felsorolja a fordító által támogatott összes eszközt. Kattintson egy eszköz nevére, és megnyílik egy oldal, amelyen látható az adott eszköz összes megengedett konfigurációs bitbeállítása/értékpárja, pl.amples.
Eljárási absztrakció Az eljárási absztrakciós optimalizálások, amelyek az összeállítási kód általános blokkjait a blokk kibontott példányának hívásaival helyettesítik, hozzáadásra kerültek a fordítóhoz. Ezeket egy külön alkalmazás hajtja végre, amelyet a fordító automatikusan meghív a 2., 3. vagy XNUMX. szintű optimalizálás kiválasztásakor. Ezek az optimalizálások csökkentik a kód méretét, de csökkenthetik a végrehajtási sebességet és a kód hibakereshetőségét.
Az eljárási absztrakció letiltható magasabb optimalizálási szinteken a -mno-pa kapcsolóval, vagy engedélyezhető alacsonyabb optimalizálási szinteken (a licenctől függően) a -mpa használatával. Egy objektumnál letiltható file az -mno-pa-on- használatávalfile=filenév, vagy letiltható egy függvénynél a -mno-pa on function= függvény használatával.
A forráskódon belül a procedurális absztrakció letiltható egy függvénynél az _attribute_ ( (nopa)) használatával a függvény definíciójával, vagy a _nopa használatával, amely attribútummá ( (nopa, noinline)) bővül, és így megakadályozza a függvény beillesztését. és ott van a beépített kód absztrakciója.
Reteszelő bit támogatás a pragmában A #pragma config most már használható az AVR zárbitek, valamint a többi konfigurációs bit megadására. Ellenőrizze az avr chip információit. html file (fent említettük) az ehhez a gyakorlathoz használandó beállítás/érték párokhoz.
Új készülék támogatása Támogatás a következő alkatrészekhez érhető el: AVR28DA128, AVR64DA128, AVR32DA128 és AVR48DA128.
2.05 verzió
Még több darab a pénzéért Ennek a fordítónak és licenckezelőnek a macOS-verziója immár 64 bites alkalmazás. Ez biztosítja, hogy a fordítóprogram figyelmeztetés nélkül települjön és fusson a macOS legújabb verzióin.
Const objektumok a programmemóriában A fordító most már elhelyezheti a const minősítésű objektumokat a program Flash memóriájában, nem pedig a RAM-ban. A fordító úgy lett módosítva, hogy a const-minősítésű globális adatok a program flash memóriájában tárolódnak, és ezek az adatok közvetlenül és közvetve elérhetők legyenek a megfelelő programmemória utasítások segítségével. Ez az új funkció alapértelmezés szerint engedélyezve van, de letiltható a -mno-const-data-in-progmem kapcsolóval. Avrxmega3 és avrtiny architektúrák esetén ez a szolgáltatás nem szükséges, és mindig le van tiltva, mivel a programmemória ezeknek az eszközöknek az adatcímterébe van leképezve.
Normál ingyen Ennek a fordítónak a licenc nélküli (ingyenes) verziói immár lehetővé teszik az optimalizálást a 2. szintig bezárólag. Ez hasonló, bár nem azonos kimenetet tesz lehetővé, mint amilyen korábban a szabványos licenc használatával volt lehetséges.
Üdvözöljük AVRASM2 Az AVRASM2 összeszerelő 8 bites eszközökhöz most már benne van az XC8 fordító telepítőjében. Ezt az assemblert az XC8 fordító nem használja, de kézírásos összeállítási forráson alapuló projektekhez elérhető.
Új készülék támogatása Támogatás a következő alkatrészekhez érhető el: ATMEGA1608, ATMEGA1609, ATMEGA808 és ATMEGA809.
2.00 verzió
Legfelső szintű sofőr A korábbi avr-gcc illesztőprogram és az xc8 meghajtó felett egy új, xc8-cc nevű illesztőprogram található, és a céleszköz kiválasztása alapján hívhatja a megfelelő fordítót. Ez az illesztőprogram elfogadja a GCC-stílusú opciókat, amelyeket vagy lefordítanak a végrehajtott fordítóhoz, vagy átadják a fordítónak. Ez az illesztőprogram lehetővé teszi, hogy hasonló, hasonló szemantikával rendelkező opciókat használjunk bármilyen AVR vagy PIC célponthoz, ezért ez az ajánlott mód a fordító meghívására. Ha szükséges, a régi avr-gcc illesztőprogram közvetlenül hívható a korábbi fordítói verziókban elfogadott régi stílusú opciókkal.
Közös C interfész Ez a fordító most már megfelel az MPLAB Common C Interface-nek, lehetővé téve a forráskód könnyebb áthelyezését az összes MPLAB XC fordítón. A -mext=cci opció kéri ezt a funkciót, lehetővé téve az alternatív szintaxist számos nyelvi kiterjesztéshez.
Új könyvtáros sofőr Egy új könyvtáros-illesztőprogram került a korábbi PIC-könyvtáros és az AVR-avr-ar könyvtáros fölé. Ez az illesztőprogram elfogadja a GCC-archiver-stílusú opciókat, amelyeket vagy lefordítanak, vagy átadnak a végrehajtandó könyvtárosnak. Az új illesztőprogram lehetővé teszi, hogy hasonló, hasonló szemantikával rendelkező beállításokat használjunk bármilyen PIC vagy AVR könyvtár létrehozásához vagy kezeléséhez. file és így a könyvtáros megidézésének ajánlott módja. Ha az örökölt projektekhez szükséges, az előző könyvtárat közvetlenül meg lehet hívni a korábbi fordítói verziókban elfogadott régi típusú beállításokkal.
Migrációs problémák
Az alábbiakban felsoroljuk azokat a funkciókat, amelyeket a fordító most másképp kezel. Ezek a változtatások szükségessé tehetik a forráskód módosítását, ha a kódot erre a fordítóverzióra viszi át. Az alcímekben található verziószám az első olyan fordítóverziót jelöli, amely támogatja a következő változtatásokat.
2.40 verzió
Egyik sem.
2.39-es verzió (Funkcionális biztonsági kiadás)
Egyik sem.
2.36 verzió
Egyik sem.
2.35 verzió
String-to-bázisok kezelése (XCS-2420) A többi XC fordítóval való konzisztencia érdekében az XC8 string-to függvények, mint például az strtol () stb., többé nem kísérlik meg a bemeneti karakterlánc konvertálását, ha a megadott bázis nagyobb, mint 36, és ehelyett az errno értéket EINVAL értékre állítja. A C szabvány nem határozza meg a függvények viselkedését ezen alapérték túllépése esetén.
Nem megfelelő sebesség optimalizálás Az eljárási absztrakciós optimalizálás engedélyezve volt a 3. szintű optimalizálás (-03) kiválasztásakor. Ezek az optimalizálások csökkentik a kód méretét a kódsebesség rovására, ezért nem lett volna szabad végrehajtani. Az ezt az optimalizálási szintet használó projektek eltéréseket tapasztalhatnak a kódméretben és a végrehajtási sebességben, ha ezzel a kiadással készülnek.
Könyvtári funkciók Számos szabványos C könyvtári funkció kódja most a Microchip Unified Standard Library-jából származik, amely bizonyos körülmények között eltérő viselkedést mutathat, mint a korábbi avr-libc könyvtár. Plample, már nem szükséges az lprintf_flt könyvtárban hivatkozni (-print _flt opció), hogy bekapcsolja a formázott IO támogatást a float formátumú specifikációkhoz. A Microchip Unified Standard Library intelligens IO funkciói redundánssá teszik ezt a lehetőséget. Ezenkívül a _p utótagú rutinok használata a string- és memóriafüggvényekhez (pl. strcpy_P () stb.), amelyek a flash-ben a const karakterláncokon működnek, már nem szükségesek. A szabványos C rutinok (pl. strcpy ()) megfelelően működnek az ilyen adatokkal, ha a const-data-in-program-memory szolgáltatás engedélyezve van.
2.32 verzió
Egyik sem.
2.31 verzió
Egyik sem.
2.30 verzió
Egyik sem.
2.29-es verzió (Funkcionális biztonsági kiadás)
Egyik sem.
2.20 verzió
Módosult a DFP elrendezése A fordító most a DFP-k (Device Family Pack) által használt elrendezést feltételezi. Ez azt jelenti, hogy egy régebbi DFP esetleg nem működik ezzel a kiadással, és a régebbi fordítók nem fogják tudni használni a legújabb DFP-ket.
2.19-es verzió (Funkcionális biztonsági kiadás)
Egyik sem.
2.10 verzió
Egyik sem
2.05 verzió
Const objektumok a programmemóriában Ne feledje, hogy az alapértelmezés szerint az állandó minősítésű objektumok a programmemóriában helyezkednek el és érhetők el (az itt leírtak szerint). Ez hatással lesz a projekt méretére és végrehajtási sebességére, de csökkenti a RAM-használatot. Ez a funkció szükség esetén letiltható a -mnoconst-da ta-in-progmem kapcsolóval.
2.00 verzió
Konfigurációs biztosítékok Az eszköz konfigurációs biztosítékai most egy konfigurációs pragma segítségével programozhatók, amelyet beállítás-érték párok követnek a biztosíték állapotának meghatározásához, pl.
#pragma config WDT0N = BEÁLLÍTÁS
#pragma config B0DLEVEL = B0DLEVEL_4V3
Abszolút objektumok és függvények Az objektumok és funkciók mostantól meghatározott címre helyezhetők a memóriában a CCI _at (cím) specifikátor használatával, pl.ample: #include int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } A specifikáció argumentumának olyan állandónak kell lennie, amely azt a címet jelenti, amelyre az első bájt vagy utasítás kerül. A RAM-címeket 0x800000 eltolás jelzi. Engedélyezze a CCI-t a funkció használatához.
Új megszakítási függvény szintaxis A fordító most elfogadja a CCI megszakítás (szám) specifikátort, jelezve, hogy a C függvények megszakításkezelők. A specifikátor egy megszakítási számot vesz fel, plample: #include void interrupt(SPI STC_ vect _num) spi Isr(void) { … }
Javított problémák
Az alábbiakban a fordítóprogramban elvégzett javításokat ismertetjük. Ezek kijavíthatják a generált kód hibáit, vagy megváltoztathatják a fordító működését a használati útmutató által tervezett vagy meghatározott módon. Az alcímekben található verziószám az első olyan fordítóverziót jelzi, amely a következő problémákra javításokat tartalmaz. A címben szereplő zárójelben szereplő címke(ek) a probléma azonosítását jelentik a nyomkövetési adatbázisban. Ezek hasznosak lehetnek, ha kapcsolatba kell lépnie az ügyfélszolgálattal.
Vegye figyelembe, hogy bizonyos eszközspecifikus problémákat az eszközhöz társított Device Family Pack (DFP) javított. Tekintse meg az MPLAB Pack Managert a DFP-ken végrehajtott módosításokról és a legújabb csomagok letöltéséről.
2.40 verzió
Túl laza (XCS-2876) A -mrelax opció használatakor a fordító nem osztott ki egyes szakaszokat, ami kevésbé optimális kódméretet eredményezett. Ez történhetett olyan kóddal, amely az új MUSL könyvtárakat használta, vagy gyenge szimbólumokkal.
A leképezési funkció nincs letiltva a figyelmeztetés szerint (XCS-2875) A költségadatok a konfigurációban mappedprogmem szolgáltatás attól függ, hogy a költség-adat-in-proem szolgáltatás engedélyezve van. Ha a cost-data-ipconfig-mapped-proem szolgáltatás kifejezetten engedélyezve volt az opció használatával, és a költség-adat-inprogmem szolgáltatás le van tiltva, akkor a linklépés sikertelen volt, annak ellenére, hogy figyelmeztető üzenetet kapott, amely szerint a cons data-in-config-mapped- A proem funkció automatikusan le lett tiltva, ami nem volt teljesen helyes. A const-data-in-config-mapped-proem szolgáltatás ebben a helyzetben teljesen le van tiltva.
A DFP módosítja az NVMCTRL megfelelő elérését (XCS-2848) Az AVR64EA eszközök által használt futásidejű indítási kód nem vette figyelembe, hogy az NVMCTRL regiszter Configuration Change Protection (CCP) alatt volt, és nem tudta beállítani az IO SFR-t a const-data-in configmapped-proem fordító által használt oldalra. funkció. Az AVR-Ex_DFP 2.2.55-ös verziójában végrehajtott változtatások lehetővé teszik, hogy a futásidejű indítókód helyesen írjon ebbe a regiszterbe.
DFP-módosítások a Flash-leképezés elkerülése érdekében (XCS-2847) Az AVR128DA28/32/48/64 Silicon Errata (DS80000882) dokumentumban bejelentett flash-leképezési eszközzel kapcsolatos probléma megoldása megtörtént. A const-data-in-config-mapped-proem fordító funkció alapértelmezés szerint nem kerül alkalmazásra az érintett eszközökön, és ez a változás az AVR-Ex_DFP 2.2.160-as verziójában jelenik meg.
Összeépítési hiba sinhf vagy coshf esetén (XCS-2834) A sinhf () vagy coshf () függvénykönyvtári függvények használatára tett kísérletek hivatkozási hibát eredményeztek, ami egy meghatározatlan hivatkozást írt le. A hivatkozott hiányzó függvény most bekerült a fordítói disztribúcióba.
Összeépítési hibák a nopa segítségével (XCS-2833) A nopa attribútum használata olyan függvénnyel, amelynek az assembler neve a () jellel lett megadva, hibaüzeneteket váltott ki az assemblertől. Ez a kombináció nem lehetséges.
Variadic függvényhiba mutató argumentumokkal (XCS-2755, XCS-2731) A változó számú argumentummal rendelkező függvények 24 bites (_memo típusú) mutatók átadását várják a változó argumentumlistában, ha a költségadatok a proemben funkció engedélyezve van. Az adatmemóriára mutató argumentumok 16 bites objektumokként kerültek átadásra, ami kódhibát okozott a végső beolvasásukkor. Ha a cons data-in-proem szolgáltatás engedélyezve van, az összes 16 bites pointers argumentum most 24 bites mutatóvá alakul. Az strtoxxx könyvtár funkciói meghiúsulnak (XCS-2620) Amikor a const-data-in-proem szolgáltatás engedélyezve volt, az strtoxxx könyvtárfüggvények enter paramétere nem frissült megfelelően a programmemóriában nem lévő forráskarakterlánc argumentumokhoz.
Figyelmeztetések érvénytelen öntvényekre (XCS-2612) A fordító most hibát ad ki, ha a költség-in-proem szolgáltatás engedélyezve van, és egy karakterlánc-literál címe kifejezetten az adatcímtérbe kerül (eldobja a const minősítőt), pl.ample, (uint8 t *) „Hello World!”. Figyelmeztetést jelent, ha a cím érvénytelen lehet, amikor egy const adatmutatót kifejezetten az adatcímtérbe öntöttek.
Inicializálatlan const objektumok elhelyezése (XCS-2408) Az inicializálatlan const és const v olatile objektumok nem kerültek a programmemóriába olyan eszközökön, amelyek programmemóriájuk egészét vagy egy részét az adatcímtérbe képezik le. Ezeknél az eszközöknél az ilyen objektumok most a programmemóriában vannak elhelyezve, így működésük összhangban van más eszközökkel.
2.39-es verzió (Funkcionális biztonsági kiadás)
Egyik sem.
2.36 verzió
Hiba késleltetéskor (XCS-2774) Az alapértelmezett szabad mód optimalizálásaiban történt kisebb változtatások megakadályozták az operanduskifejezések állandó összehajtását a késleltetés beépített függvényeihez, ami azt eredményezte, hogy a rendszer nem érintkezőként kezeli őket, és kiváltja a hibát: _buil tin avr delay_ cycles ac ompile idő egész állandó.
2.35 verzió
Folyamatos kiosztás a _at használatával (XCS-2653) Több objektum egymás melletti kiosztása egy azonos nevű szakaszban a () at () használatával nem működött megfelelően. Plample: constchararrl [ ] at tri butte ((sect on(.miss”)))) at (Ox50 0 ) = {Oxo , Ox CD} ; költség char arr2[ ] at tri butte ((szakasz(.my s eke”)))) = {Ökör, Ökör FE }; Az arr2-t közvetlenül az aril után kellett volna elhelyezni.
Szakasz kezdőcímének megadása (XCS-2650) A -Wal, -section-start opció csendben nem tudta elhelyezni a szakaszokat a kijelölt kezdési címen. Ezt a problémát minden egyéni elnevezésű szakasz esetében kijavítottuk; azonban nem fog működni egyetlen szabványos szakasznál sem, például . szöveg vagy . bss, amelyet -Wl, -T opcióval kell elhelyezni.
A linker összeomlik pihenés közben (XCS-2647) Amikor a -relax optimalizálás engedélyezve volt, és voltak kód- vagy adatrészek, amelyek nem fértek el a rendelkezésre álló memóriába, a linker összeomlott. Most ilyen körülmények között hibaüzenetek jelennek meg helyette.
Rossz EEPROM hozzáférés (XCS-2629) A leproma _read_ blokk rutin nem működött megfelelően a Mega eszközökön, amikor a -monist-data-in-proem opció engedélyezve volt (ez az alapértelmezett állapot), ami az EEPROM memória olvasási hibát okoz.
Érvénytelen memóriafoglalás (XCS-2593, XCS-2651) Amikor a -Text vagy -Tata linker opció (plampA -Wl illesztőprogram-beállítással áthaladva) van megadva, a megfelelő szöveg-/adatrégió eredete frissítve lett; azonban a végcím nem lett ennek megfelelően beállítva, ami oda vezethet, hogy a régió meghaladta a céleszköz memóriatartományát.
Érvénytelen ATtiny megszakítási kód (XCS-2465) Amikor a Tatin eszközökhöz készült, és az optimalizálás letiltásra került (-00), a megszakítási függvények operandus tartományon kívüli összeszerelő üzeneteket válthattak ki.
Az opciók nem kerülnek átadásra (XCS-2452) Ha a -Wl opciót több, vesszővel elválasztott linker beállítással használja, nem minden linker opció került át a linkerbe.
Hiba a programmemória közvetett olvasásakor (XCS-2450) Egyes esetekben a fordító belső hibát (felismerhetetlen insn) produkált, amikor két bájtos értéket olvasott ki egy mutatóból a programmemóriába.
2.32 verzió
A könyvtár második elérése sikertelen (XCS-2381) Az xc8-ar Windows verziójának meghívása. exe könyvtárarchívum másodszori elérése egy meglévő könyvtári archívumhoz előfordulhat, hogy nem sikerült átnevezni hibaüzenetet.
2.31 verzió
Megmagyarázhatatlan fordítói hibák (XCS-2367) Ha olyan Windows platformon fut, ahol a rendszer ideiglenes könyvtára egy pontot tartalmazó elérési útra volt beállítva.' karaktert, előfordulhat, hogy a fordító nem tudta végrehajtani.
2.30 verzió
Globális címkék rossz helyen a körvonalazás után (XCS-2299) Előfordulhat, hogy a kézzel írt összeállítási kód, amely globális címkéket helyez el az eljárási absztrakcióval kizárt összeállítási szekvenciákon belül, nem lett megfelelően áthelyezve.
Pihentető ütközés (XCS-2287) A -merlad opció használata okozhatta a linker összeomlását, amikor a farokugrás relaxációs optimalizálása megpróbálta eltávolítani a ret utasításokat, amelyek nem voltak a szakasz végén.
Összeomlás a címkék értékként való optimalizálásakor (XCS-2282) A „Címkék mint értékek” GNU C nyelvi bővítményt használó kód az eljárási absztrakciós optimalizálás összeomlását okozhatta, és a VMA tartományok körvonalazott javítási hibája miatt.
Nem olyan állandó (XCS-2271) A prototípusok az induláshoz () és egyéb funkciókhoz többé ne adja meg a nem szabványos költségminősítőt a visszaadott karakterlánc-mutatókon, ha a -monist-data inprogmem szolgáltatás le van tiltva. Ne feledje, hogy az avrxmega3 és avertin eszközöknél ez a funkció tartósan engedélyezve van.
Elveszett inicializálók (XCS-2269) Ha egy fordítási egységben egynél több változót helyeztek el egy szakaszban (szakasz vagy attribútum ((szakasz))) használatával, és az első ilyen változó nulla volt, vagy nem volt inicializálója, akkor ugyanazon fordítási egység más változóihoz inicializálók amelyek ugyanabba a szakaszba kerültek, elvesztek.
2.29-es verzió (Funkcionális biztonsági kiadás)
Egyik sem.
2.20 verzió
Hiba a hosszú parancsoknál (XCS-1983) AVR-cél használatakor a fordító leállhatott a-val file nem található hiba, ha a parancssor rendkívül nagy volt, és speciális karaktereket tartalmazott, például idézőjeleket, fordított perjeleket stb.
Hozzá nem rendelt rodata szakasz (XCS-1920) Az AVR linker nem tudott memóriát hozzárendelni az egyéni rodata szakaszokhoz az avrxmega3 és avrtiny architektúrák építésekor, ami memóriaátfedési hibákat okozhat
2.19-es verzió (Funkcionális biztonsági kiadás)
Egyik sem.
2.10 verzió
Áthelyezési hibák (XCS-1891) A legjobban illeszkedő allokátor az volt, hogy memória "lyukakat" hagyott a szakaszok között a linker relaxációja után. A memória töredezettsége mellett ez megnövelte annak lehetőségét, hogy a pc-relatív ugrások vagy a hívások hatótávolságon kívülre kerülésével kapcsolatos linker-áthelyezési hibák forduljanak elő.
A relaxációval nem átalakított utasítások (XCS-1889) A linker-relaxáció nem fordult elő olyan ugrás- vagy hívásutasításoknál, amelyek céljai elérhetővé válnak, ha ellazulnak.
Hiányzó funkcionalitás (XCSE-388) Több definíció innen , mint például a clock_ div_ t és a clock_prescale_set (), nem voltak meghatározva az eszközökhöz, beleértve az ATmega324PB, ATmega328PB, ATtiny441 és ATtiny841.
Hiányzó makrók Az előfeldolgozó makrókat_ xcs _MODE_, _xcs VERSION, _xc és xcs nem határozta meg automatikusan a fordító. Ezek már elérhetőek.
2.05 verzió
Belső fordítói hiba (XCS-1822) Windows alatti építkezéskor előfordulhat, hogy belső fordítói hiba keletkezett a kód optimalizálásakor.
RAM túlcsordulás nem észlelhető (XCS-1800, XCS-1796) A fordító bizonyos esetekben nem észlelte azokat a programokat, amelyek meghaladták a rendelkezésre álló RAM-ot, ami futásidejű kódhibát eredményezett.
Kihagyott flash memória (XCS-1792) Az avrxmega3 és avrtiny eszközök esetében előfordulhat, hogy a flash memória egyes részeit programozatlanul hagyta az MPLAB X IDE.
A fő végrehajtásának sikertelensége (XCS-1788) Egyes helyzetekben, amikor a programban nem voltak globális változók definiálva, a futásidejű indítási kód nem jött ki, és a fő () függvényt nem sikerült elérni.
Helytelen memóriainformáció (XCS-1787) Az avrxmega3 és avrtiny eszközök esetében az avr-size program arról számolt be, hogy az írásvédett adatok RAM-ot fogyasztanak programmemória helyett.
Helytelen programmemória olvasás (XCS-1783) Előfordulhat, hogy az adatcímtérbe leképezett programmemóriával rendelkező eszközökhöz fordított projektek, amelyek a PROGMEM makró/attribútum használatával definiálnak objektumokat, rossz címről olvashatták be ezeket az objektumokat.
Belső hiba az attribútumokkal (XCS-1773) Belső hiba történt, ha mutatóobjektumokat definiált a
_at () vagy attribútum() tokenek a mutató neve és a hivatkozott típus között, plample, char*
_at ( 0x80015 0) cp; Ilyen kód észlelése esetén figyelmeztetés jelenik meg.
A fő végrehajtásának sikertelensége (XCS-1780, XCS-1767, XCS-1754) Az EEPROM-változók használata vagy a biztosítékok definiálása a konfigurációs pragma használatával hibás adatinicializálást és/vagy leblokkolhatta a programvégrehajtást a futásidejű indítókódban, mielőtt elérte volna a fő () .
Biztosítékhiba apró eszközöknél (XCS-1778, XCS-1742) Az attiny4/5/9/10/20/40 eszközök fejlécében helytelen biztosítékhossz volt megadva files amelyek linkerhibákhoz vezetnek, amikor olyan kódot próbálnak létrehozni, amely biztosítékokat definiált.
Szegmentációs hiba (XCS-1777) Egy időszakos szegmentálási hiba kijavításra került.
Az Assembler összeomlik (XCS-1761) Az avr-as assembler összeomolhatott, amikor a fordító Ubuntu 18 alatt futott.
Az objektumok nem törölve (XCS-1752) Előfordulhat, hogy az inicializálatlan statikus tárolási időtartam objektumokat nem törölte a futásidejű indítási kód.
Az ütköző eszközspecifikáció figyelmen kívül hagyva (XCS-1749) A fordító nem generált hibát, amikor több eszközspecifikációs opciót használtak, és különböző eszközöket jeleztek.
Memóriasérülés halom által (XCS-1748) A heap_ start szimbólum helytelenül volt beállítva, ami azt eredményezte, hogy a halom megsértheti a közönséges változókat.
Linker áthelyezési hiba (XCS-1739) A linker áthelyezési hibát jelezhetett, amikor a kód rjmp-t vagy rcallt tartalmazott, amelynek célpontja pontosan 4 KB-ra van.
2.00 verzió
Egyik sem.
Ismert problémák
A következő korlátozások vonatkoznak a fordító működésére. Ezek lehetnek általános kódolási korlátozások, ill
a felhasználói kézikönyvben szereplő információktól való eltérések. A címben szereplő zárójelben szereplő címke(ek) a probléma azonosítását jelentik a nyomkövetési adatbázisban. Ez hasznos lehet, ha kapcsolatba kell lépnie az ügyfélszolgálattal. Azok az elemek, amelyek nem rendelkeznek címkével, korlátozások, amelyek leírják a működési módot, és valószínűleg tartósan érvényben maradnak.
MPLAB X IDE integráció
MPLAB IDE integráció Ha a Compiler-t az MPLAB IDE-ből kívánja használni, akkor telepítenie kell az MPLAB IDE-t a Compiler telepítése előtt.
Kódgenerálás
PA memóriafoglalási hiba (XCS-2881) Az eljárási absztrakció-optimalizálók használatakor a linker memóriakiosztási hibákat jelenthet, ha a kód mérete közel van az eszközön rendelkezésre álló programmemória mennyiségéhez, még akkor is, ha a programnak el kell férnie a rendelkezésre álló helyhez.
Nem túl okos Smart-IO (XCS-2872) A fordító smart-io funkciója érvényes, de nem optimális kódot generál a sprint funkcióhoz, ha a coast-data-in-proem funkció le van tiltva, vagy ha az eszköz összes flash-je az adatmemóriában van leképezve.
Még kevésbé okos Smart-IO (XCS-2869) A fordító smart-io funkciója érvényes, de nem optimális kódot generál, ha a -floe és az -fno-buil tin opciókat is használja.
Szuboptimális, csak olvasható adatelhelyezés (XCS-2849) A linker jelenleg nem ismeri az APPCODE és APPDATA memóriarészeket, sem a [No-]Read-While-Write felosztást a memóriatérképen. Ennek eredményeként kicsi az esélye, hogy a linker csak olvasható adatokat foglaljon le a memória nem megfelelő területén. A helytelenül elhelyezett adatok valószínűsége megnő, ha a tengerparti adatok a pragmában funkció engedélyezve van, különösen akkor, ha a tengerparti adatok a konfigurációban-mapped-proem funkció is engedélyezve van. Ezek a funkciók szükség esetén letilthatók.
Objektum file rendelés feldolgozása (XCS-2863) Az objektumok sorrendje fileA linker által feldolgozott s-ek eltérhetnek az eljárási absztrakciós optimalizálás használatától függően (-mpa opció). Ez csak azt a kódot érinti, amely több modulban gyenge funkciókat határoz meg.
Linker hiba abszolút értékkel (XCS-2777) Ha egy objektumot abszolutizáltak egy címen a RAM elején, és inicializálatlan objektumokat is definiáltak, linker hiba léphet fel.
Rövid ébresztési azonosítók (XCS-2775) Az ATA5700/2 eszközök esetében a PHID0/1 regiszterek 16 bit helyett csak 32 bit szélesek.
Linker összeomlik a szimbólum hívásakor (XCS-2758) A linker összeomolhat, ha a -merlad illesztőprogram opciót használják, amikor a forráskód olyan szimbólumot hív meg, amelyet a -Wl, –defsym linker paraméterrel definiáltak.
Helytelen inicializálás (XCS-2679) Eltérés van aközött, hogy egyes globális/statikus bájt méretű objektumok kezdeti értékei hol helyezkednek el az adatmemóriában, és aközött, hogy a változók hol lesznek elérhetők futás közben.
helytelenül elindítva üresre van állítva (XCS-2652) Azokban az esetekben, amikor a () által megadott karakterlánc egy lebegőpontos számot tartalmaz exponenciális formátumban, és egy váratlan karakter van az e karakter után, akkor az üres cím, ha megadja, a következő karakterre mutat. az e és nem maga az e. Plample: stated(“hoey”, üres); üresen fog mutatni az x karakterre.
Hibás közvetett függvényhívások (XCS-2628) Egyes esetekben a struktúra részeként tárolt függvénymutatón keresztül végrehajtott függvényhívások meghiúsulhatnak.
Az strtof nullát ad vissza hexadecimális lebegőpontokhoz (XCS-2626) Az strtof () et al és a scanf () et al könyvtári függvények mindig a kitevőt nem meghatározó hexadecimális lebegőpontos számokat konvertálják
nulla. Plample: állórész("Bagoly", &üres); 0 értéket ad vissza, nem 1-et.
Pontatlan verem-tanácsadói üzenet (XCS-2542, XCS-2541) Egyes esetekben a veremtanácsadó figyelmeztetés a rekurzióra vagy a használt határozatlan veremre vonatkozóan (esetleg az alloca() használatával) nem kerül kiadásra.
Hiba duplikált megszakítási kóddal (XCS-2421) Ha egynél több megszakítási függvénynek ugyanaz a törzse, akkor előfordulhat, hogy a fordító az egyik megszakítási függvény kimenetét meghívja a másikat. Ez azt eredményezi, hogy az összes hívásblokkolt regiszter szükségtelenül mentésre kerül, és a megszakítások még az aktuális megszakításkezelő epilógusának lefutása előtt engedélyezve lesznek, ami kódhibához vezethet.
Const objektumok nincsenek a programmemóriában (XCS-2408) Az avrxmega3 és az avertins projektek esetében a nem idealizált const objektumok az adatmemóriába kerülnek, még akkor is, ha egy figyelmeztetés azt sugallja, hogy a programmemóriában vannak elhelyezve. Ez nem érinti azokat az eszközöket, amelyeknek nincs programmemóriája hozzárendelve az adatmemóriaterülethez, és nem érinti az inicializált objektumokat sem.
Hibás kimenet érvénytelen DFP-útvonallal (XCS-2376) Ha a fordító érvénytelen DFP-útvonallal és „specifikációval” van meghívva file létezik a kiválasztott eszközön, a fordító nem jelenti a hiányzó eszközcsalád-csomagot, hanem a „specifikációt” választja file, ami érvénytelen kimenethez vezethet. A "specifikáció" fileElőfordulhat, hogy nem naprakészek az elosztott DFP-kkel, és csak belső fordítói teszteléshez készültek.
A memória átfedése nem észlelhető (XCS-1966) A fordító nem észleli a memória átfedését egy címen abszolút (a () címen keresztül) és más objektumok között a () szakasz-specifikátor használatával, és amelyek ugyanahhoz a címhez kapcsolódnak.
Hiba a könyvtári funkciókkal és a _meme-vel (XCS-1763) Az úgynevezett limbikus lebegő függvények, amelyek argumentuma a _memo címtérben található, meghiúsulhatnak. Vegye figyelembe, hogy a könyvtári rutinokat néhány C operátor hívja meg, így plample, a következő kód érintett: return regFloatVar > memxFloatVar;
Korlátozott limbikus megvalósítás (AVRTC-731) Az ATTiny4/5/9/10/20/40 termékek esetében a standard C / Math könyvtár limbikus megvalósítása nagyon korlátozott, vagy nincs jelen.
Programmemória korlátozások (AVRTC-732) Az eszközlánc támogatja a 128 kb-nál nagyobb programmemória-képeket; ismertek azonban arra, hogy a linker lazítás és hasznos hibaüzenet nélkül megszakad, ahelyett, hogy a szükséges függvénycsonkokat generálná a -relax kapcsoló használatakor.
Névtér korlátozások (AVRTC-733) A nevesített címtereket az eszközlánc támogatja, a felhasználói útmutató Speciális típusminősítők című részében említett korlátozások függvényében.
Időzónák A A könyvtári funkciók feltételezik a GMT-t, és nem támogatják a helyi időzónákat, így a helyi idő () ugyanazt az időt adja vissza, mint a gummite (), pl.ample.
ÜGYFÉL TÁMOGATÁS
file:///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ for A VR. htm
Dokumentumok / Források
![]() |
MICROCHIP MPLAB XC8 C fordítószoftver [pdf] Használati utasítás MPLAB XC8 C, MPLAB XC8 C fordítószoftver, fordítószoftver, szoftver |