MICROCHIP MPLAB XC8 C компиляторлық бағдарламалық құрал
БҰЛ ҚҰЖАТ МИКРОЧІП AVR ҚҰРЫЛҒЫЛАРЫН МАҚСАНДАҒАН КЕЗДЕ MPLAB XC8 C ҚҰРАСТЫРУШЫСЫНА ҚАТЫСТЫ МАҢЫЗДЫ АҚПАРАТТЫ БАР.
БҰЛ БАҒДАРЛАМАЛЫҚ ҚҰРАЛДЫ ҚОСУ БҰРЫН ОҚЫП ШЫҒЫҢЫЗ. ЕГЕР СІЗ 8 биттік PIC ҚҰРЫЛҒЫЛАРЫ ҮШІН КОМПИЛЬЕРДІ ПАЙДАЛАНСАҢЫЗ, PIC ҚҰЖАТЫНЫҢ MPLAB XC8 C КОМПИЛЬЕРІНІҢ ШЫҒАРУ ЕСКЕРТПЕСІН ҚАРАҢЫЗ.
Біттіview
Кіріспе
Microchip MPLAB® XC8 C компиляторының бұл шығарылымында бірнеше жаңа мүмкіндіктер, қателерді түзету және жаңа құрылғы қолдауы бар.
Құрылған күні
Бұл компилятор нұсқасының ресми құрастырылған күні – 3 жылдың 2022 шілдесі.
Алдыңғы нұсқа
MPLAB XC8 C компиляторының алдыңғы нұсқасы 2.39 жылдың 27 қаңтарында жасалған функционалдық қауіпсіздік компиляторы 2022 болды. Алдыңғы стандартты компилятор 2.36 жылдың 27 қаңтарында жасалған 2022 нұсқасы болды.
Функционалдық қауіпсіздік жөніндегі нұсқаулық
MPLAB XC компиляторларына арналған функционалдық қауіпсіздік нұсқаулығы функционалдық қауіпсіздік лицензиясын сатып алған кезде құжаттамалар бумасында қолжетімді.
Құрамдас лицензиялар мен нұсқалар
AVR MCU құралдарына арналған MPLAB® XC8 C компиляторы GNU General Public License (GPL) бойынша жазылған және таратылады, бұл оның бастапқы коды еркін таратылады және жалпыға қолжетімді дегенді білдіреді. GNU GPL бойынша құралдардың бастапқы кодын Microchip файлдарынан бөлек жүктеп алуға болады webсайт. GNU GPL нұсқасын мына жерден оқи аласыз file орнату каталогының ішкі каталогында орналасқан. GPL негізінде жатқан принциптерді жалпы талқылауды осы жерден табуға болады. Тақырып үшін берілген қолдау коды files, сілтеме сценарийлері және орындау уақыты кітапханалары меншікті код болып табылады және GPL бойынша қамтылмайды.
Бұл компилятор GCC 5.4.0 нұсқасының, binutils 2.26 нұсқасының іске асырылуы болып табылады және avr-libc 2.0.0 нұсқасын пайдаланады.
Жүйе талаптары
MPLAB XC8 C компиляторы және ол пайдаланатын лицензиялық бағдарламалық құрал төмендегілердің 64-биттік нұсқаларын қоса алғанда, әртүрлі операциялық жүйелер үшін қол жетімді: Microsoft Windows 10 кәсіби басылымдары; Ubuntu 18.04; және macOS 10.15.5. Windows жүйесіне арналған екілік файлдар кодпен қол қойылды. Mac OS үшін екілік файлдар кодпен қол қойылған және нотариалды куәландырылған.
Желілік лицензия серверін іске қосып жатсаңыз, лицензия серверін орналастыру үшін компиляторлар қолдайтын операциялық жүйелері бар компьютерлер ғана пайдаланылуы мүмкін. xclm 2.0 нұсқасынан бастап желілік лицензия серверін Microsoft Windows Server платформасында орнатуға болады, бірақ лицензиялық сервер операциялық жүйенің сервер нұсқасында іске қосылуы қажет емес.
Қолдау көрсетілетін құрылғылар
Бұл компилятор шығарылым кезінде белгілі барлық 8-биттік AVR MCU құрылғыларын қолдайды. Барлық қолдау көрсетілетін құрылғылардың тізімін (компилятордың doc каталогында) қараңыз. Мыналар files сонымен қатар әрбір құрылғы үшін конфигурация бит параметрлерін тізімдейді.
Басылымдар және лицензияны жаңарту
MPLAB XC8 компиляторын лицензияланған (PRO) немесе лицензиясыз (Тегін) өнім ретінде белсендіруге болады. Компиляторды лицензиялау үшін белсендіру кілтін сатып алу қажет. Лицензия Тегін өніммен салыстырғанда оңтайландырудың жоғары деңгейіне мүмкіндік береді. Лицензиясыз компилятор лицензиясыз шексіз жұмыс істей алады.
MPLAB XC8 Functional Safety компиляторы Microchip-тен сатып алынған функционалды қауіпсіздік лицензиясымен іске қосылуы керек. Бұл лицензиясыз компилятор жұмыс істемейді. Іске қосылғаннан кейін кез келген оңтайландыру деңгейін таңдап, компилятордың барлық мүмкіндіктерін пайдалануға болады. MPLAB XC функционалдық қауіпсіздік компиляторының бұл шығарылымы желілік сервер лицензиясын қолдайды.
Лицензия түрлері және компиляторды лицензиямен орнату туралы ақпаратты MPLAB XC C компиляторларын орнату және лицензиялау (DS50002059) құжатын қараңыз.
Орнату және белсендіру
Сондай-ақ, осы компиляторға қосылған соңғы лицензия менеджері туралы маңызды ақпаратты Көшіру мәселелері және шектеулер бөлімдерін қараңыз.
MPLAB IDE пайдаланылса, осы құралды орнатпас бұрын, ең соңғы MPLAB X IDE 5.0 немесе одан кейінгі нұсқасын орнатуды ұмытпаңыз. Компиляторды орнатпас бұрын IDE-ден шығыңыз. .exe (Windows), .run (Linux) немесе қолданба (macOS) компилятор орнатушы қолданбасын іске қосыңыз, мысалы, XC8-1.00.11403-windows.exe және экрандағы нұсқауларды орындаңыз.
Әдепкі орнату каталогы ұсынылады. Егер сіз Linux пайдалансаңыз, компиляторды терминал арқылы және түбірлік тіркелгіден орнатуыңыз керек. Әкімші артықшылықтары бар macOS тіркелгісі арқылы орнатыңыз.
Белсендіру енді орнату үшін бөлек жүзеге асырылады. Қосымша ақпарат алу үшін MPLAB® XC C Compilers (DS52059) үшін лицензия менеджері құжатын қараңыз.
Бағалау лицензиясы бойынша компиляторды іске қосуды таңдасаңыз, бағалау мерзімі аяқталғаннан кейін 14 күн ішінде компиляция кезінде ескерту аласыз. Егер сіз HPA жазылымы аяқталғаннан кейін 14 күн ішінде болсаңыз, дәл осындай ескерту беріледі.
XC желілік лицензия сервері бөлек орнатушы болып табылады және бір пайдаланушыға арналған компилятор орнатушысына кірмейді.
XC License Manager енді қалқымалы желі лицензияларының роумингіне қолдау көрсетеді. Ұялы байланыс пайдаланушыларына бағытталған бұл мүмкіндік қалқымалы лицензияға қысқа уақыт ішінде желіден шығуға мүмкіндік береді. Бұл мүмкіндікті пайдалана отырып, сіз желіден ажыратып, әлі де MPLAB XC компиляторын пайдалана аласыз. Бұл мүмкіндік туралы қосымша ақпарат алу үшін XCLM орнатуының құжат қалтасын қараңыз. MPLAB X IDE роумингті визуалды басқару үшін Лицензиялар терезесін (Құралдар > Лицензиялар) қамтиды.
Орнату мәселелерін шешу
Windows операциялық жүйелерінің кез келгенінде компиляторды орнату кезінде қиындықтар туындаса, келесі ұсыныстарды орындап көріңіз.
- Орнатуды әкімші ретінде іске қосыңыз.
- Орнатушы қолданбасының рұқсаттарын «Толық басқару» күйіне орнатыңыз. (Тінтуірдің оң жақ түймешігін басыңыз file, Сипаттар, Қауіпсіздік қойындысын таңдаңыз, пайдаланушыны таңдаңыз, өңдеу.)
- Уақытша қалтаның рұқсаттарын «Толық басқару!
Уақытша қалтаның орнын анықтау үшін Run пәрменіне %temp% теріңіз (Windows логотиптік пернесі + R). Бұл ашады file сол каталогты көрсететін шолушы диалогы және сол қалтаның жолын анықтауға мүмкіндік береді.
Компиляторлық құжаттама
Компилятордың пайдаланушы нұсқаулығын скриншотта көрсетілгендей MPLAB X IDE бақылау тақтасындағы көк анықтама түймешігін басқан кезде браузерде ашылатын HTML бетінен ашуға болады.
8-биттік AVR мақсаттары үшін құрастырып жатсаңыз, AVR® MCU үшін MPLAB® XC8 C компиляторының пайдаланушы нұсқаулығы осы архитектураға қолданылатын компилятор опциялары мен мүмкіндіктері туралы ақпаратты қамтиды.
Тұтынушыларды қолдау
Microchip осы компилятор нұсқасына қатысты қате туралы есептерді, ұсыныстарды немесе пікірлерді құптайды. Қате туралы есептерді немесе мүмкіндік сұрауларын қолдау жүйесі арқылы жіберіңіз.
Құжаттаманы жаңарту
MPLAB XC8 құжаттамасының онлайн және жаңартылған нұсқалары үшін Microchip онлайн техникалық құжаттамасына кіріңіз. webсайт.
Осы шығарылымдағы жаңа немесе жаңартылған AVR құжаттамасы:
- MUSL авторлық құқық ескертуі
- MPLAB XC C компиляторларын орнату және лицензиялау (М нұсқасы)
- Енгізілген инженерлерге арналған MPLAB XC8 пайдаланушы нұсқаулығы – AVR MCU (ревизия А)
- AVR MCU үшін MPLAB XC8 C компиляторының пайдаланушы нұсқаулығы (F нұсқасы)
- Microchip Бірыңғай стандартты кітапхана анықтамалық нұсқаулығы (В нұсқасы)
Microchip Unified Standard Library Анықтамалық нұсқаулығы Microchip Unified Standard Library арқылы анықталған функциялардың әрекетін және интерфейсін, сондай-ақ кітапхана түрлері мен макростарды мақсатты пайдалануды сипаттайды. Бұл ақпараттың кейбірі бұрын AVR® MCU үшін MPLAB® XC8 C компиляторының пайдаланушы нұсқаулығында қамтылған. Құрылғыға арналған кітапхана туралы ақпарат әлі де осы компилятор нұсқаулығында қамтылған.
Егер сіз 8 биттік құрылғылармен және MPLAB XC8 C компиляторымен жұмысты енді бастасаңыз, ендірілген инженерлерге арналған MPLAB® XC8 пайдаланушы нұсқаулығы – AVR® MCUs (DS50003108) MPLAB X IDE жүйесінде жобаларды орнату және кодты жазу туралы ақпарат бар. бірінші MPLAB XC8 C жобаңыз үшін. Бұл нұсқаулық енді компилятормен бірге таратылады.
Hamate пайдаланушы нұсқаулығы осы шығарылымдағы docs каталогына енгізілген. Бұл нұсқаулық Hamate бағдарламасын дербес қолданба ретінде іске қосатындарға арналған.
Жаңалықтар
Төменде компилятор қолдайтын жаңа AVR мақсатты мүмкіндіктері берілген. Ішкі тақырыпшалардағы нұсқа нөмірі келесі мүмкіндіктерге қолдау көрсететін бірінші компилятор нұсқасын көрсетеді.
2.40 нұсқасы
Жаңа құрылғыны қолдау Қолдау енді келесі AVR бөліктері үшін қолжетімді: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64, AVR28EA64 және AVR32EA64.
Жақсартылған процедуралық абстракция Процедуралық абстракцияны (ҚБ) оңтайландыру құралы функцияны шақыру нұсқаулығын қамтитын кодты (қоңырауды шақыру ) ) сипаттайтын етіп жетілдірілді. Бұл стек аргументтерді беру немесе функциядан қайтару мәнін алу үшін пайдаланылмаса ғана орын алады. Стек айнымалы аргумент тізімі бар функцияны шақырғанда немесе осы мақсат үшін тағайындалған регистрлерге қарағанда көбірек аргументтерді қабылдайтын функцияны шақырғанда пайдаланылады. Бұл мүмкіндікті monk-pa-outline-cals опциясы арқылы өшіруге болады немесе процедуралық абстракцияны нысан үшін толығымен өшіруге болады file немесе -monk-pa-on- арқылы функцияfile және -mo.-pa-on-функциясы тиісінше немесе nipa атрибутын ( nipa спецификациясы) функциялармен таңдамалы түрде пайдалану арқылы
Кодты қамту макросы Егер жарамды mcodecov опциясы көрсетілсе, компилятор енді __CODECOV макросын анықтайды.
Жадты брондау опциясы Енді xc8-cc драйвері AVR мақсаттарын құру кезінде -mreserve=space@start: end опциясын қабылдайды. Бұл опция көрсетілген жад ауқымын деректерде немесе бағдарлама жады кеңістігінде сақтайды, бұл байланыстырушының осы аймақтағы кодты немесе нысандарды толтыруын болдырмайды.
Ақылдырақ смарт IO Smart IO функцияларына бірнеше жақсартулар енгізілді, оның ішінде printf негізгі кодына жалпы түзетулер енгізілді, %n түрлендіру спецификаторын тәуелсіз нұсқа ретінде қарастырады, сұраныс бойынша vararg pop режимдерін байланыстырады, IO функциясының аргументтерін өңдеу үшін мүмкіндігінше қысқарақ деректер түрлерін пайдаланады. , және өріс ені мен дәлдігін өңдеуде ортақ кодты факторинг. Бұл код пен деректерді айтарлықтай үнемдеуге, сондай-ақ IO орындау жылдамдығын арттыруға әкелуі мүмкін.
2.39 нұсқасы (Функционалдық қауіпсіздік шығарылымы)
Желілік сервер лицензиясы MPLAB XC8 функционалдық қауіпсіздік компиляторының бұл шығарылымы желілік сервер лицензиясын қолдайды.
2.36 нұсқасы
Жоқ.
2.35 нұсқасы
Жаңа құрылғыны қолдау Қолдау келесі AVR бөліктері үшін қолжетімді: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 және AVR64DD32.
Жақсартылған контекстті ауыстыру Жаңа -mcall-isr-prologues опциясы үзу функцияларының енгізу кезінде регистрлерді сақтау жолын және үзу процедурасы аяқталған кезде сол регистрлердің қалпына келтіру жолын өзгертеді. Ол -mcall-prologues опциясына ұқсас жұмыс істейді, бірақ тек үзу функцияларына (ISR) әсер етеді.
Одан да жақсартылған контекстті ауыстыру Жаңа -mgas-isr-prologues опциясы кішігірім үзу қызмет көрсету тәртібі үшін жасалған мәтінмәндік қышу кодын басқарады. Қосылған кезде, бұл мүмкіндік ассемблерге тізілімді пайдалану үшін ISR сканерлеуін және қажет болған жағдайда осы пайдаланылған регистрлерді сақтауын қамтамасыз етеді.
Конфигурацияланатын флэш картасы AVR DA және AVR DB жанұясындағы кейбір құрылғыларда SFR (мысалы, FLMAP) бар, ол бағдарлама жадының қай 32k бөлімі деректер жадына салыстырылатынын көрсетеді. Жаңа – mconst-data-in-config-mapped-proem опциясы байланыстырушының бір 32k бөлімде барлық кемшіліктері туралы білікті деректерді орналастыруы және бұл деректердің деректер жады кеңістігінде салыстырылуын қамтамасыз ету үшін сәйкес SFR регистрін автоматты түрде инициализациялауы үшін пайдаланылуы мүмкін. , онда ол тиімдірек қолжетімді болады.
Microchip Бірыңғай стандартты кітапханалары Барлық MPLAB XC компиляторлары енді MPLAB XC8 осы шығарылымымен қол жетімді Microchip Unified Standard Library бірге болады. MPLAB® XC8 C компиляторының пайдаланушы нұсқаулығы/немесе AVR® MCU енді осы стандартты функцияларға арналған құжаттаманы қамтымайды. Бұл ақпаратты енді Microchip Бірыңғай стандартты кітапханасының анықтамалық нұсқаулығынан табуға болады. Бұрын avr-libc арқылы анықталған кейбір функциялар енді қолжетімді емес екенін ескеріңіз. (Кітапхананы қараңыз):'. функционалдығы…)
Smart IO Жаңа біріккен кітапханалардың бөлігі ретінде басып шығару және сканерлеу отбасыларындағы IO функциялары енді осы функциялардың бағдарламада қалай пайдаланылғанына негізделген әрбір құрастыруда теңшелетін жасалады. Бұл бағдарлама пайдаланатын ресурстарды айтарлықтай азайтуы мүмкін.
Smart IO көмек опциясы Смарт IO функцияларына (мысалы, printf () немесе scanf () ) шақыруларды талдау кезінде компилятор пішім жолынан әрқашан анықтай алмайды немесе шақыру үшін қажет түрлендіру спецификаторларын аргументтерден шығара алмайды. Бұрын компилятор әрқашан ешқандай болжам жасамайтын және толық жұмыс істейтін IO функцияларының соңғы бағдарлама кескінімен байланыстырылғанын қамтамасыз ететін. Жаңа – msmart-io-format=fmt опциясы қосылды, осылайша компиляторды оның орнына қолдануы екіұшты болып табылатын смарт IO функциялары пайдаланатын түрлендіру спецификаторлары туралы пайдаланушы хабардар ете алады, бұл тым ұзақ IO режимдерінің қосылуына жол бермейді. (Толығырақ ақпарат алу үшін smart-io-пішім опциясын қараңыз.)
Арнайы бөлімдерді орналастыру Бұрын -Wl, –section-start опциясы сілтеме сценарийі бірдей атпен шығыс бөлімін анықтаған кезде ғана көрсетілген бөлімді сұралған мекенжайға орналастырды. Бұлай болмаған кезде, бөлім сілтемеші таңдаған мекенжайға орналастырылды және опция негізінен еленбейді. Енді сілтеме сценарийі бөлімді анықтамаса да, опция барлық теңшелетін бөлімдер үшін орындалады. Дегенмен, стандартты бөлімдер үшін мұндай . мәтін, . bss немесе . деректер болса, ең жақсы сәйкес келетін бөлгіш әлі де олардың орналасуын толық басқара алады және опция ешқандай әсер етпейді. Пайдаланушы нұсқаулығында сипатталғандай -Wl, -Tsection=add опциясын пайдаланыңыз.
2.32 нұсқасы
Стек нұсқаулығы PRO компилятор лицензиясымен қол жетімді, компилятордың стекке нұсқау мүмкіндігін бағдарлама пайдаланатын кез келген стектің максималды тереңдігін бағалау үшін пайдалануға болады. Ол бағдарламаның шақыру графигін құрастырады және талдайды, әрбір функцияның стек пайдалануын анықтайды және есеп шығарады, одан бағдарлама пайдаланатын стектердің тереңдігі туралы қорытынды жасауға болады. Бұл мүмкіндік -mchp-stack-usage пәрмен жолы опциясы арқылы қосылады. Орындаудан кейін стекті пайдаланудың қысқаша мазмұны басып шығарылады. Стек туралы егжей-тегжейлі есеп картада қол жетімді file, оны әдеттегі жолмен сұрауға болады.
Жаңа құрылғыны қолдау Қолдау келесі AVR бөліктері үшін қол жетімді: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32, AVR28DB64.
Қайтарылған құрылғыны қолдау Қолдау келесі AVR бөліктері үшін енді қолжетімсіз: AVR16DA28, AVR16DA32 және, AVR16DA48.
2.31 нұсқасы
Жоқ.
2.30 нұсқасы
Деректерді инициализациялауды болдырмаудың жаңа опциясы Жаңа -mno-data-ini t драйвері опциясы деректерді инициализациялауға және bss бөлімдерін тазалауға жол бермейді. Ол құрастырудағы do_ copy_ деректерінің және d o_ clear_ bss таңбаларының шығуын басу арқылы жұмыс істейді. files, бұл өз кезегінде байланыстырушының сол тәртіптерді қосуына жол бермейді.
Жетілдірілген оңтайландырулар Оңтайландырудың бірқатар жақсартулары жасалды, соның ішінде артық қайтару нұсқауларын алып тастау, егер бит болса, өткізіп жіберу нұсқауынан кейінгі кейбір секірістерді жою және жақсартылған процедуралық абстракция және осы процесті қайталау мүмкіндігі.
Осы оңтайландырулардың кейбірін басқару үшін енді қосымша опциялар қол жетімді, атап айтқанда -f бөлімі анкерлері, бұл бір таңбаға қатысты орындалатын статикалық нысандарға қатынасуға мүмкіндік береді; -mpai derations=n, ол процедуралық абстракция итерацияларының санын әдепкіден 2-ден өзгертуге мүмкіндік береді; және, -mpa- қоңырау құны- shortcall, ол неғұрлым агрессивті процедуралық абстракцияны орындайды, байланыстырушы ұзақ қоңырауларды босаңсытады деген үмітпен. Бұл соңғы опция негізгі болжамдар орындалмаса, код өлшемін ұлғайта алады.
Жаңа құрылғыны қолдау Қолдау келесі AVR бөліктері үшін қол жетімді: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 және AVR128DB.
Қайтарылған құрылғыны қолдау Келесі AVR бөліктері үшін қолдау бұдан былай қолжетімсіз: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617, және ATA664251.
2.29 нұсқасы (Функционалдық қауіпсіздік шығарылымы)
Тақырып file компилятордың кірістірілген құрылғылары үшін Компилятордың MISRA сияқты тіл сипаттамаларына сәйкес келуін қамтамасыз ету үшін, тақырыбы fileарқылы автоматты түрде қосылады , жаңартылды. Бұл тақырыпта _buil tin _avrnop () және _buil tin_ avr кідіріс_ циклдары () сияқты барлық кірістірілген функциялардың прототиптері бар. Кейбір кірістірілген құрылғылар MISRA сәйкес келмеуі мүмкін; компилятор пәрмен жолына define _Xe_ STRICT_ MISRA қосу арқылы оларды алып тастауға болады. Бекітілген ен түрлерін пайдалану үшін кірістірілген құрылғылар мен олардың декларациялары жаңартылды.
2.20 нұсқасы
Жаңа құрылғыны қолдау Қолдау келесі AVR бөліктері үшін қолжетімді: ATTINY1624, ATTINY1626 және ATTINY1627.
Жақсырақ ең қолайлы бөлу Компилятордағы ең жақсы сәйкестендіру бөлгіші (BFA) жақсартылды, осылайша бөлімдер жақсырақ оңтайландыруға мүмкіндік беретін ретпен бөлінеді. BFA енді аталған мекенжай кеңістігін қолдайды және деректерді инициализациялауды жақсырақ өңдейді.
Жақсартылған процедуралық абстракция Процедуралық абстракцияны оңтайландырулар енді көбірек код тізбегінде орындалады. Бұл оңтайландыру код өлшемін ұлғайтуы мүмкін алдыңғы жағдайлар оңтайландыру кодын байланыстырушының қоқыс жинау процесі туралы хабардар ету арқылы шешілді.
AVR құрастырушысының болмауы AVR Assembler енді бұл таратуға қосылмайды.
2.19 нұсқасы (Функционалдық қауіпсіздік шығарылымы)
Жоқ.
2.10 нұсқасы
Кодты қамту Бұл шығарылым жобаның бастапқы кодының орындалу дәрежесін талдауды жеңілдететін кодты қамту мүмкіндігін қамтиды. Оны қосу үшін -mcodecov=ram опциясын пайдаланыңыз. Бағдарламаны аппараттық құралыңызда орындағаннан кейін кодты қамту туралы ақпарат құрылғыда жинақталады және оны MPLAB X IDE кодты қамту плагині арқылы тасымалдауға және көрсетуге болады. Бұл плагин туралы ақпаратты алу үшін IDE құжаттамасын қараңыз. #pragma mcodecov келесі функцияларды қамтуды талдаудан шығару үшін пайдаланылуы мүмкін. Ең дұрысы прагманың басында қосылуы керек file оны толығымен алып тастау үшін file қамтуды талдаудан. Баламалы түрде, ( (mcodecov) ) атрибуты нақты функцияны қамту талдауынан шығару үшін пайдаланылуы мүмкін.
Құрылғы сипаттамасы files Жаңа құрылғы file avr chipinfo деп аталады. html компилятор таратуының docs каталогында орналасқан. Бұл file компилятор қолдайтын барлық құрылғыларды тізімдейді. Құрылғы атауын нұқыңыз, ол осы құрылғыға арналған барлық рұқсат етілген конфигурация бит параметрін/мән жұптарын көрсететін бетті ашады.amples.
Процедуралық абстракция Құрастырушы кодтың жалпы блоктарын сол блоктың шығарылған көшірмесіне шақырулармен алмастыратын процедуралық абстракцияны оңтайландырулар компиляторға қосылды. Оларды 2, 3 немесе оңтайландыруларды таңдаған кезде компилятор автоматты түрде шақыратын бөлек қолданба арқылы орындалады. Бұл оңтайландырулар код өлшемін азайтады, бірақ олар орындау жылдамдығын және кодты жөндеу мүмкіндігін азайтуы мүмкін.
Процедуралық абстракцияны -mno-pa опциясын пайдаланып жоғары оңтайландыру деңгейлерінде өшіруге болады немесе -mpa арқылы төменгі оңтайландыру деңгейлерінде (лицензияңызға байланысты) қосуға болады. Оны нысан үшін өшіруге болады file -mno-pa-on- пайдалануfile=fileатын немесе функция= функциясын -mno-pa пайдалану арқылы функция үшін өшірілген.
Бастапқы кодтың ішінде процедуралық абстракцияны функцияның анықтамасымен _attribute_ ( (nopa)) пайдалану арқылы немесе төлсипатқа ( ((nopa, noinline)) кеңейтетін _nopa пайдалану арқылы функция үшін өшіруге болады және осылайша функцияның кірістіруінің орын алуына жол бермейді. және кірістірілген кодтың абстракциясы бар.
Прагмада бит қолдауын құлыптау #pragma конфигурациясын енді AVR құлыптау биттерін, сондай-ақ басқа конфигурация биттерін көрсету үшін пайдалануға болады. Avr чипінің ақпаратын тексеріңіз. html file (жоғарыда аталған) осы прагмамен бірге пайдалану үшін параметр/мән жұптары үшін.
Жаңа құрылғыны қолдау Қолдау келесі бөліктерге қол жетімді: AVR28DA128, AVR64DA128, AVR32DA128 және AVR48DA128.
2.05 нұсқасы
Сіздің ақшаңызға көбірек бит Бұл компилятордың және лицензия менеджерінің macOS нұсқасы енді 64 биттік қолданба болып табылады. Бұл компилятордың MacOS жүйесінің соңғы нұсқаларында ескертусіз орнатылып, іске қосылуын қамтамасыз етеді.
Бағдарлама жадындағы Const объектілері. Енді компилятор жедел жадта емес, конст-квалификацияланған объектілерді бағдарламаның Flash жадына орналастыра алады. Компилятор конст-квалификацияланған жаһандық деректер бағдарламаның флэш-жадында сақталуы және бұл деректерге сәйкес бағдарлама жады нұсқаулары арқылы тікелей және жанама түрде қол жеткізуге болатындай өзгертілді. Бұл жаңа мүмкіндік әдепкі бойынша қосылған, бірақ оны -mno-const-data-in-progmem опциясы арқылы өшіруге болады. avrxmega3 және avrtiny архитектуралары үшін бұл мүмкіндік талап етілмейді және әрқашан өшіріледі, өйткені бағдарлама жады осы құрылғылардың деректер мекенжай кеңістігінде салыстырылады.
Стандартты тегін Бұл компилятордың лицензияланбаған (тегін) нұсқалары енді 2-деңгейді қоса алғанда, оңтайландыруға мүмкіндік береді. Бұл стандартты лицензияны пайдалану арқылы бұрын мүмкін болатын нәтижеге ұқсас, бірақ бірдей болмаса да, шығаруға мүмкіндік береді.
AVRASM2 қош келдіңіз 2-биттік құрылғыларға арналған AVRASM8 ассемблері енді XC8 компилятор орнатушысына қосылған. Бұл ассемблерді XC8 компиляторы пайдаланбайды, бірақ қолжазба құрастыру көзіне негізделген жобалар үшін қол жетімді.
Жаңа құрылғыны қолдау Қолдау келесі бөліктерге қол жетімді: ATMEGA1608, ATMEGA1609, ATMEGA808 және ATMEGA809.
2.00 нұсқасы
Жоғарғы деңгейлі драйвер xc8-cc деп аталатын жаңа драйвер енді алдыңғы avr-gcc драйвері мен xc8 драйверінің үстінде отырады және ол мақсатты құрылғыны таңдау негізінде сәйкес компиляторды шақыра алады. Бұл драйвер GCC стиліндегі опцияларды қабылдайды, олар орындалып жатқан компиляторға аударылады немесе оған беріледі. Бұл драйвер кез келген AVR немесе PIC мақсаттыларымен ұқсас семантикасы бар ұқсас опциялар жинағын пайдалануға мүмкіндік береді және осылайша компиляторды шақырудың ұсынылатын жолы болып табылады. Қажет болса, ескі avr-gcc драйверін бұрынғы компилятор нұсқаларында қабылданған ескі стиль опциялары арқылы тікелей шақыруға болады.
Жалпы C интерфейсі Бұл компилятор енді MPLAB Common C интерфейсіне сәйкес келеді, бұл бастапқы кодты барлық MPLAB XC компиляторларында оңайырақ тасымалдауға мүмкіндік береді. -mext=cci опциясы көптеген тіл кеңейтімдері үшін балама синтаксисті қосатын осы мүмкіндікті сұрайды.
Жаңа кітапханашы Жаңа кітапхана драйвері алдыңғы PIC кітапханашысы мен AVR avr-ar кітапханашысының үстінде орналасқан. Бұл драйвер GCC мұрағатшы стиліндегі опцияларды қабылдайды, олар орындалып жатқан кітапханашыға аударылады немесе оған беріледі. Жаңа драйвер кез келген PIC немесе AVR кітапханасын жасау немесе манипуляциялау үшін ұқсас семантикасы бар ұқсас опциялар жиынтығын пайдалануға мүмкіндік береді. file және осылайша кітапханашыны шақырудың ұсынылатын жолы болып табылады. Бұрынғы жобалар үшін қажет болса, алдыңғы кітапханашыны бұрынғы компилятор нұсқаларында қабылдаған ескі стиль опциялары арқылы тікелей шақыруға болады.
Көші-қон мәселелері
Төменде компилятор басқаша өңдейтін мүмкіндіктер берілген. Кодты осы компилятор нұсқасына тасымалдайтын болса, бұл өзгерістер бастапқы кодты өзгертуді қажет етуі мүмкін. Ішкі тақырыпшалардағы нұсқа нөмірі келесі өзгертулерді қолдау үшін бірінші компилятор нұсқасын көрсетеді.
2.40 нұсқасы
Жоқ.
2.39 нұсқасы (Функционалдық қауіпсіздік шығарылымы)
Жоқ.
2.36 нұсқасы
Жоқ.
2.35 нұсқасы
Жолдық негіздерді өңдеу (XCS-2420) Басқа XC компиляторларымен сәйкестікті қамтамасыз ету үшін, strtol () және т.б. сияқты XC8 string-to функциялары, егер көрсетілген база 36-дан үлкен болса, енді кіріс жолын түрлендіруге әрекет жасамайды және оның орнына errno мәнін EINVAL мәніне орнатады. С стандарты осы негізгі мәннен асып кеткен кездегі функциялардың әрекетін көрсетпейді.
Сәйкес емес жылдамдықты оңтайландырулар 3-деңгейдегі оңтайландыруларды таңдау кезінде процедуралық абстракцияны оңтайландырулар қосылды (-03). Бұл оңтайландырулар код жылдамдығы есебінен код өлшемін азайтады, сондықтан орындалмауы керек. Осы оңтайландыру деңгейін пайдаланатын жобалар осы шығарылыммен құрастырылған кезде код өлшемі мен орындау жылдамдығындағы айырмашылықтарды көруі мүмкін.
Кітапхананың функционалдығы Көптеген стандартты C кітапханасы функцияларының коды енді Microchip Бірыңғай стандартты кітапханасынан алынған, ол бұрынғы avr-libc кітапханасымен салыстырғанда кейбір жағдайларда басқа мінез-құлық көрсетуі мүмкін. Мысалыample, float пішімінің спецификаторлары үшін пішімделген IO қолдауын қосу үшін lprintf_flt кітапханасына (-print _flt опциясы) сілтеме жасау қажет емес. Microchip Unified Standard Library смарт IO мүмкіндіктері бұл опцияны артық етеді. Сонымен қатар, флэште const жолдарында жұмыс істейтін жол және жад функциялары (мысалы, strcpy_P () және т. Стандартты C процедуралары (мысалы, strcpy ()) бағдарлама жадысындағы const-деректер мүмкіндігі қосылғанда, мұндай деректермен дұрыс жұмыс істейді.
2.32 нұсқасы
Жоқ.
2.31 нұсқасы
Жоқ.
2.30 нұсқасы
Жоқ.
2.29 нұсқасы (Функционалдық қауіпсіздік шығарылымы)
Жоқ.
2.20 нұсқасы
DFP орналасуы өзгертілді Компилятор енді DFP (Device Family Packs) пайдаланатын басқа орналасуды болжайды. Бұл ескі DFP бұл шығарылыммен жұмыс істемеуі мүмкін екенін және ескі құрастырушылар соңғы DFP файлдарын пайдалана алмайтынын білдіреді.
2.19 нұсқасы (Функционалдық қауіпсіздік шығарылымы)
Жоқ.
2.10 нұсқасы
Жоқ
2.05 нұсқасы
Программа жадындағы Const объектілері Әдепкі бойынша, const-квалификацияланған нысандар бағдарлама жадына орналастырылады және оларға қол жетімді болады (мұнда сипатталғандай) . Бұл жобаңыздың өлшеміне және орындалу жылдамдығына әсер етеді, бірақ жедел жадты пайдалануды азайтуы керек. Бұл мүмкіндікті қажет болса, -mnoconst-da ta-in-progmem опциясы арқылы өшіруге болады.
2.00 нұсқасы
Конфигурация сақтандырғыштары Құрылғы конфигурациясының сақтандырғыштары енді сақтандырғыш күйін анықтау үшін конфигурация прагмасы арқылы бағдарламалануы мүмкін, содан кейін сақтандырғыш күйін анықтау үшін мән жұптары орнатылады, мысалы
#pragma конфигурациясы WDT0N = SET
#pragma конфигурациясы B0DLEVEL = B0DLEVEL_4V3
Абсолюттік объектілер мен функциялар Енді объектілер мен функцияларды CCI _at (адрес) спецификаторы арқылы жадтағы белгілі бір мекенжайға орналастыруға болады, мысалыample: #include int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Бұл спецификатордың аргументі бірінші байт немесе нұсқау орналастырылатын мекенжайды көрсететін тұрақты мән болуы керек. ЖЖҚ мекенжайлары 0x800000 ығысу арқылы көрсетіледі. Бұл мүмкіндікті пайдалану үшін CCI қосыңыз.
Жаңа үзіліс функциясы синтаксисі Компилятор енді C функциялары үзіліс өңдеушілері екенін көрсету үшін CCI үзіліс (сан) спецификаторын қабылдайды. Спецификатор үзу нөмірін қабылдайды, мысалыample: #include void үзіліс(SPI STC_ vect _num) spi Isr(жарамсыз) {…}
Түзетілген мәселелер
Төменде компиляторға енгізілген түзетулер берілген. Олар жасалған кодтағы қателерді түзетуі немесе компилятор жұмысын пайдаланушы нұсқаулығында көзделген немесе көрсетілгенге өзгертуі мүмкін. Ішкі тақырыптардағы нұсқа нөмірі келесі мәселелерге арналған түзетулерді қамтитын бірінші компилятор нұсқасын көрсетеді. Тақырыптағы жақшадағы белгі(лер) бақылау дерекқорындағы мәселенің сәйкестендіруі болып табылады. Қолдау қызметіне хабарласу қажет болса, бұлар пайдалы болуы мүмкін.
Кейбір құрылғыға қатысты мәселелер құрылғымен байланысты Device Family Pack (DFP) ішінде түзетілетінін ескеріңіз. DFP-ге енгізілген өзгерістер туралы ақпаратты және соңғы бумаларды жүктеп алу үшін MPLAB бума реттеушісін қараңыз.
2.40 нұсқасы
Тым еркін (XCS-2876) -mrelax опциясын пайдаланған кезде компилятор кейбір бөлімдерді бірге бөлмеді, нәтижесінде кодтың оңтайлы өлшемдері аз болды. Бұл жаңа MUSL кітапханаларын пайдаланған кодпен немесе әлсіз таңбалармен орын алған болуы мүмкін.
Карталау мүмкіндігі ескертуде көрсетілгендей өшірілмеген (XCS-2875) Конфигурациядағы шығын деректері mappedprogmem мүмкіндігі қосылып жатқан проемдегі шығын деректері мүмкіндігіне тәуелді. Егер cost-data-ipconfig-mapped-proem мүмкіндігі опцияны пайдалану арқылы анық қосылған болса және шығын-деректер-inprogmem мүмкіндігі өшірілген болса, минус деректері-конфигурация-карталанған- деген ескерту хабарына қарамастан, сілтеме қадамы сәтсіз аяқталды. proem мүмкіндігі автоматты түрде өшірілді, бұл мүлдем дұрыс емес. Бұл жағдайда const-data-in-config-mapped-proem мүмкіндігі енді толығымен өшірілген.
DFP NVMCTRL (XCS-2848) дұрыс қатынасу үшін өзгертеді AVR64EA құрылғылары пайдаланатын іске қосу коды NVMCTRL регистрінің Конфигурацияны өзгертуден қорғау (CCP) астында екенін және IO SFR-ді const-data-in configmapped-proem компиляторы пайдаланатын бетке орната алмағанын ескермеді. ерекшелігі. AVR-Ex_DFP 2.2.55 нұсқасында жасалған өзгертулер іске қосу кодын осы регистрге дұрыс жазуға мүмкіндік береді.
DFP флэш салыстыруды болдырмау үшін өзгертеді (XCS-2847) AVR128DA28/32/48/64 Silicon Errata (DS80000882) құжатында хабарланған жарқылды салыстыру құрылғысының мүмкіндігіне қатысты мәселені шешу жолы орындалды. const-data-in-config-mapped-proem компилятор мүмкіндігі әдепкі бойынша зардап шеккен құрылғылар үшін қолданылмайды және бұл өзгеріс AVR-Ex_DFP 2.2.160 нұсқасында пайда болады.
sinhf немесе coshf көмегімен құрастыру қатесі (XCS-2834) sinhf () немесе coshf () кітапхана функцияларын пайдалану әрекеттері анықталмаған сілтемені сипаттайтын сілтеме қатесіне әкелді. Сілтеме берілген жетіспейтін функция енді компилятор таратуына қосылды.
Nopa көмегімен қателерді құру (XCS-2833) Ассемблер атауы () ретінде көрсетілген функциямен nopa төлсипатын пайдалану ассемблерден қате туралы хабарларды тудырды. Бұл комбинация мүмкін емес.
Көрсеткіш аргументтері бар вариативтік функция қатесі (XCS-2755, XCS-2731) Аргументтердің айнымалы саны бар функциялар 24-биттік (_memo түрі) көрсеткіштердің айнымалы дәлелдер тізімінде проемдегі шығын деректері мүмкіндігі қосылған кезде жіберілуін күтеді. Деректер жадына көрсеткіш болған аргументтер 16 разрядты нысандар ретінде жіберіліп, соңында олар оқылған кезде кодтың сәтсіздігін тудырды. Cons data- in-proem мүмкіндігі қосылғанда, барлық 16 биттік көрсеткіштер дәлелдері енді 24 биттік көрсеткіштерге түрлендіріледі. strtoxxx кітапханасының функциялары орындалмады (XCS-2620) const-data-in-proem мүмкіндігі қосылғанда, strtoxxx кітапханасының функцияларындағы enter параметрі бағдарлама жадында жоқ бастапқы жол аргументтері үшін дұрыс жаңартылмады.
Жарамсыз трансляциялар туралы ескертулер (XCS-2612) Компилятор енді «өндірістік шығындар» мүмкіндігі қосылған болса және жол литералының мекенжайы деректер мекенжай кеңістігіне анық түрде шығарылса (const квалификациясын тастайды), мысалы, қате шығарады.ample, (uint8 t *) «Сәлем әлем!». Егер const деректер көрсеткіші деректер мекенжай кеңістігіне нақты шығарылған кезде мекенжай жарамсыз болуы мүмкін болса, ескерту мәселе болып табылады.
Басталмаған const нысандарын орналастыру (XCS-2408) Бағдарлама жадының барлығын немесе бір бөлігін деректер мекенжай кеңістігіне салыстыратын құрылғыларда инициализацияланбаған const және const v olatile нысандары бағдарлама жадына орналастырылмады. Бұл құрылғылар үшін мұндай объектілер енді бағдарлама жадына орналастырылып, олардың жұмысын басқа құрылғылармен үйлесімді етеді.
2.39 нұсқасы (Функционалдық қауіпсіздік шығарылымы)
Жоқ.
2.36 нұсқасы
Кешіктіру кезінде қате (XCS-2774) Әдепкі Еркін режимді оңтайландырулардағы шамалы өзгерістер операнд өрнектерінің кідірістің кірістірілген функцияларына тұрақты жиналуын болдырмайды, нәтижесінде олар байланыссыз ретінде қарастырылып, қатені тудырды: _buil tin avr delay_ cycles күтеді ac ompile уақыттың бүтін тұрақтысы.
2.35 нұсқасы
_at (XCS-2653) арқылы қатарлас бөлу Бірдей атаумен және at () қолданатын бөлімдегі бірнеше нысандарды қатар орналастыру дұрыс жұмыс істемеді. Мысалыample: constchararrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[ ] at tri butte ((section(“.my s eke”))) = {Oxen, Ox FE }; aril кейін бірден arr2 қою керек еді.
Бөлімнің бастапқы мекенжайларын көрсету (XCS-2650) -Wal, –section-start опциясы бөлімдерді ұсынылған бастапқы мекенжайға үнсіз орналастыра алмады. Бұл мәселе кез келген теңшелетін атаулары бар бөлімдер үшін түзетілді; дегенмен, ол стандартты бөлімдер үшін жұмыс істемейді, мысалы. мәтін немесе . bss, оны -Wl, -T опциясы арқылы орналастыру керек.
Босаңсу кезінде байланыстырушы бұзылады (XCS-2647) -relax оңтайландыруы қосылғанда және қол жетімді жадқа сәйкес келмейтін код немесе деректер бөлімдері болғанда, байланыстырушы бұзылды. Енді мұндай жағдайда оның орнына қате туралы хабарлар шығарылады.
Нашар EEPROM қатынасы (XCS-2629) -monist-data-in-proem опциясы қосылғанда (бұл әдепкі күй) Mega құрылғыларында leproma _read_ блоктау тәртібі дұрыс жұмыс істемеді, нәтижесінде EEPROM жады дұрыс оқылмады.
Жарамсыз жадты бөлу (XCS-2593, XCS-2651) -Мәтін немесе -Тата сілтемесі опциясы (мысалы,ample -Wl драйвер опциясы арқылы өтті) көрсетілген, сәйкес мәтін/деректер аймағының шығу тегі жаңартылды; дегенмен, соңғы мекенжай сәйкесінше реттелмеді, бұл аймақтың мақсатты құрылғының жады ауқымынан асып кетуіне әкелуі мүмкін.
Жарамсыз ATtiny үзу коды (XCS-2465) Tatin құрылғылары үшін құрастырылған кезде және оңтайландырулар өшірілген (-00), үзу функциялары диапазоннан тыс операндты ассемблер хабарламаларын іске қосқан болуы мүмкін.
Опциялар өткізілмейді (XCS-2452) -Wl опциясын бірнеше, үтірмен бөлінген сілтеме опцияларымен пайдаланған кезде, байланыстырушы опциялардың барлығы сілтемешіге берілмеді.
Бағдарлама жадын жанама оқу қатесі (XCS-2450) Кейбір жағдайларда компилятор көрсеткіштен бағдарлама жадына екі байт мәнді оқу кезінде ішкі қате (танылмаған insn) жасады.
2.32 нұсқасы
Кітапханаға екінші кіру сәтсіз аяқталды (XCS-2381) xc8-ar нұсқасының Windows нұсқасын шақыру. exe кітапханасының мұрағатшысы бар кітапхана мұрағатына екінші рет кіру үшін қате туралы хабардың атын өзгерту мүмкін болмағандықтан сәтсіз болуы мүмкін.
2.31 нұсқасы
Түсініксіз компилятор қателері (XCS-2367) Жүйенің уақытша каталогы нүктені қамтитын жолға орнатылған Windows платформаларында жұмыс істегенде'.' таңба болса, компилятор орындай алмаған болуы мүмкін.
2.30 нұсқасы
Жаһандық белгілер сызбадан кейін қате орналастырылды (XCS-2299) Процедуралық абстракция арқылы шығарылатын жинақ реттіліктері ішінде жаһандық белгілерді орналастыратын қолмен жазылған құрастыру коды дұрыс қайта орналаспаған болуы мүмкін.
Тыныштандыратын апат (XCS-2287) -merlad опциясын пайдалану, секіріп релаксацияны оңтайландырулар бөлімнің соңында жоқ ret нұсқаулығын жоюға әрекет жасағанда, байланыстырғыштың істен шығуына себеп болуы мүмкін.
Белгілерді мәндер ретінде оңтайландыру кезінде бұзылу (XCS-2282) «Мәндер ретіндегі белгілер» GNU C тілінің кеңейтімін пайдаланатын код Outlined VMA ауқымын түзету қатесі бар процедуралық абстракцияны оңтайландырулардың бұзылуына себеп болуы мүмкін.
Тұрақты емес (XCS-2271) Бастау () және басқа функциялардың прототиптері -monist-data inprogmem мүмкіндігі өшірілгенде, қайтарылған жол көрсеткіштерінде стандартты емес құнның жіктеуішін енді көрсетпеңіз. avrxmega3 және avertin құрылғыларында бұл мүмкіндік біржола қосылатынын ескеріңіз.
Жоғалған инициализаторлар (XCS-2269) Аударма бірлігіндегі бірнеше айнымалылар бөлімге орналастырылған кезде (бөлім немесе төлсипатты ((бөлім))) пайдаланып және мұндай бірінші айнымалы нөлге тең инициализацияланған немесе инициализатор болмаған кезде, сол аударма бірлігіндегі басқа айнымалылар үшін инициализаторлар сол бөлімге орналастырылғандар жоғалды.
2.29 нұсқасы (Функционалдық қауіпсіздік шығарылымы)
Жоқ.
2.20 нұсқасы
Ұзын командалармен қате (XCS-1983) AVR нысанасын пайдаланған кезде, компилятор a белгісімен тоқтаған болуы мүмкін file қате табылмады, егер пәрмен жолы өте үлкен болса және тырнақшалар, кері қиғаш сызықтар және т.б.
Тағайындалмаған жол деректер бөлімі (XCS-1920) AVR сілтемесі avrxmega3 және avrtiny архитектуралары үшін құрастыру кезінде реттелетін родата бөлімдері үшін жадты тағайындай алмады, бұл жадтың қабаттасу қателерін тудыруы мүмкін.
2.19 нұсқасы (Функционалдық қауіпсіздік шығарылымы)
Жоқ.
2.10 нұсқасы
Орын ауыстыру қателері (XCS-1891) Ең жақсы сәйкес келетін бөлгіш байланыстырушы релаксациядан кейін бөлімдер арасында жад «саңылауларын» қалдырды. Жадты бөлшектеуден басқа, бұл компьютерге қатысты секірулерге немесе қоңыраулардың ауқымнан шығуына байланысты байланыстырушы орнын ауыстыру ақауларының болу мүмкіндігін арттырды.
Релаксация арқылы өзгертілмеген нұсқаулар (XCS-1889) Мақсаттары босаңсыған кезде қол жеткізуге болатын секіру немесе шақыру нұсқаулары үшін сілтеме релаксациясы орын алған жоқ.
Жоқ функционалдық (XCSE-388) Бірнеше анықтамалар clock_ div_ t және clock_prescale_set () сияқты ATmega324PB, ATmega328PB, ATtiny441 және ATtiny841 сияқты құрылғылар үшін анықталмаған.
Макростар жоқ Алдын ала өңдеуші macros_ xcs _MODE_, _xcs VERSION, _xc және xcs компилятор арқылы автоматты түрде анықталмаған. Бұлар қазір қолжетімді.
2.05 нұсқасы
Ішкі компилятор қатесі (XCS-1822) Windows жүйесінде құрастыру кезінде кодты оңтайландыру кезінде ішкі компилятор қатесі пайда болуы мүмкін.
ЖЖҚ толып кетуі анықталмады (XCS-1800, XCS-1796) Қол жетімді жедел жадтан асатын бағдарламаларды компилятор кейбір жағдайларда анықтамады, нәтижесінде орындалу уақыты кодының сәтсіздігі орын алды.
Қабылданбаған флэш-жад (XCS-1792) avrxmega3 және avrtiny құрылғылары үшін флэш-жад бөліктері MPLAB X IDE арқылы бағдарламаланбаған болуы мүмкін.
Негізгі орындалмау (XCS-1788) Бағдарламада анықталған жаһандық айнымалылар болмаған кейбір жағдайларда іске қосу коды шықпады және негізгі () функцияға ешқашан қол жеткізілмеді.
Жад туралы қате ақпарат (XCS-1787) avrxmega3 және avrtiny құрылғылары үшін avr өлшемді бағдарлама тек оқуға арналған деректер бағдарлама жадының орнына жедел жадты тұтынатынын хабарлады.
Бағдарлама жады дұрыс емес оқылады (XCS-1783) Деректер мекенжай кеңістігіне салыстырылған және PROGMEM макросы/атрибутының көмегімен нысандарды анықтайтын бағдарламалық жады бар құрылғылар үшін құрастырылған жобалар бұл нысандарды қате мекенжайдан оқыған болуы мүмкін.
Атрибуттары бар ішкі қате (XCS-1773) Меңзер нысандарын келесімен анықтасаңыз, ішкі қате орын алды
_at () немесе атрибут() таңбалауыштары көрсеткіш аты мен сілтеме жасалған түр арасындағы, мысалыampле, таңба *
_at ( 0x80015 0) cp; Енді мұндай код кездескен жағдайда ескерту беріледі.
Негізгі орындалмау (XCS-1780, XCS-1767, XCS-1754) EEPROM айнымалы мәндерін пайдалану немесе конфигурация прагмасының көмегімен сақтандырғыштарды анықтау негізгі () мәніне жеткенге дейін орындалу уақытының іске қосу кодында қате деректерді инициализациялауды және/немесе бағдарламаның орындалуын бұғаттауды тудыруы мүмкін.
Кішкентай құрылғылардағы сақтандырғыш қатесі (XCS-1778, XCS-1742) Attiny4/5/9/10/20/40 құрылғыларында сақтандырғыш ұзындығы олардың тақырыбында көрсетілген қате болды. fileсақтандырғыштарды анықтайтын кодты құру әрекеті кезінде сілтеме қателеріне әкелетін с.
Сегменттеу ақаулығы (XCS-1777) Үздік сегменттеу қатесі түзетілді.
Ассемблер апаты (XCS-1761) Компилятор Ubuntu 18 астында іске қосылған кезде avr-as ассемблері бұзылған болуы мүмкін.
Нысандар тазартылмаған (XCS-1752) Басталмаған статикалық сақтау ұзақтығы нысандары орындау уақытының іске қосу коды арқылы тазаланбаған болуы мүмкін.
Қайшылықты құрылғы сипаттамасы еленбейді (XCS-1749) Бірнеше құрылғы спецификациясының опциялары пайдаланылғанда және әртүрлі құрылғыларды көрсеткенде, компилятор қате жасамады.
Үйме арқылы жадтың бұзылуы (XCS-1748) Heap_ start таңбасы дұрыс орнатылмаған, нәтижесінде үйме арқылы кәдімгі айнымалылардың бүліну мүмкіндігі туды.
Сілтемені ауыстыру қатесі (XCS-1739) Сілтемені ауыстыру қатесі кодта rjmp немесе мақсатты дәл 4к байт қашықтықта орналасқан rc Call болған кезде шығарылған болуы мүмкін.
2.00 нұсқасы
Жоқ.
Белгілі мәселелер
Төменде компилятор жұмысындағы шектеулер берілген. Бұл жалпы кодтау шектеулері болуы мүмкін немесе
пайдаланушы нұсқаулығындағы ақпараттан ауытқулар. Тақырыптағы жақшадағы белгі(лер) бақылау дерекқорындағы мәселенің сәйкестендіруі болып табылады. Қолдау қызметіне хабарласу қажет болса, бұл пайдалы болуы мүмкін. Белгілері жоқ элементтер режим операциясын сипаттайтын шектеулер болып табылады және олар біржола күшінде қалуы мүмкін.
MPLAB X IDE интеграциясы
MPLAB IDE интеграциясы Егер компилятор MPLAB IDE жүйесінен пайдаланылса, компиляторды орнатпас бұрын MPLAB IDE орнату керек.
Код жасау
PA жадын бөлу қатесі (XCS-2881) Процедуралық абстракцияны оңтайландырғыштарды пайдаланған кезде, бағдарлама қол жетімді кеңістікті сыйдыра алуы керек болса да, код өлшемі құрылғыдағы қолжетімді бағдарлама жадының көлеміне жақын болғанда байланыстырушы жадты бөлу қателері туралы хабарлауы мүмкін.
Ақылды емес Smart-IO (XCS-2872) Компилятордың smart-io мүмкіндігі спринт функциясы үшін жарамды, бірақ оңтайлы емес кодты жасайды, егер жағалаудағы деректер мүмкіндігі өшірілген болса немесе құрылғыда оның барлық флэш деректер жадында салыстырылған болса.
Одан да аз ақылды Smart-IO (XCS-2869) Компилятордың smart-io мүмкіндігі -floe және -fno-buil қаңылтыр опциялары пайдаланылған кезде жарамды, бірақ оңтайлы емес кодты жасайды.
Тек оқуға арналған оңтайлы емес деректерді орналастыру (XCS-2849) Байланыстырушы қазіргі уақытта APPCODE және APPDATA жады бөлімдерін немесе жад картасындағы [Жоқ-]Оқу-Орындау-Жазу бөлімдерін білмейді. Нәтижесінде, байланыстырушы жадтың жарамсыз аймағында тек оқуға арналған деректерді бөлу мүмкіндігі аз болады. Егер прагмадағы жағалау деректері мүмкіндігі қосылған болса, қате орналастырылған деректер мүмкіндігі артады, әсіресе конфигурациядағы-карталанған-проэмдегі жағалау деректері мүмкіндігі де қосылған болса. Қажет болса, бұл мүмкіндіктерді өшіруге болады.
Нысан file өңдеу тапсырысы (XCS-2863) Нысандардың орналасу реті files байланыстырушы өңдейтін болады процедуралық абстракцияны оңтайландыруларды (-mpa опциясы) пайдалану негізінде әр түрлі болуы мүмкін. Бұл бірнеше модульдерде әлсіз функцияларды анықтайтын кодқа ғана әсер етеді.
Абсолютті сілтеме қатесі (XCS-2777) ЖЖҚ басындағы мекенжайда нысан абсолютті болған кезде және инициализацияланбаған нысандар да анықталғанда, сілтеме қатесі іске қосылуы мүмкін.
Қысқа ояту идентификаторлары (XCS-2775) ATA5700/2 құрылғылары үшін PHID0/1 регистрлері ені 16 бит емес, ені 32 бит ретінде ғана анықталады.
Таңбаға қоңырау шалу кезінде байланыстырғыштың бұзылуы (XCS-2758) Бастапқы код -Wl, –defsym байланыстырушы опциясы арқылы анықталған таңбаны шақырғанда -merlad драйвер опциясы пайдаланылса, сілтеме істен шығуы мүмкін.
Қате инициализация (XCS-2679) Кейбір жаһандық/статикалық байт өлшемді нысандардың бастапқы мәндерінің деректер жадында орналастырылатын жері мен айнымалы мәндерге орындау уақытында қатынасатын жері арасында сәйкессіздік бар.
дұрыс емес іске қосылды бос орнатады (XCS-2652) Көрсетілген () бойынша түрлендіруге арналған тақырып жолында экспоненциалды пішімдегі қалқымалы нүктелі сан болып көрінетін және e таңбасынан кейін күтпеген таңба болған жағдайда, бос мекенжай, егер берілген болса, келесі таңбаны көрсетеді. e емес, e өзі. Мысалыample: мәлімделген («hooey», бос); х таңбасына бос меңзейді.
Нашар жанама функция шақырулары (XCS-2628) Кейбір жағдайларда құрылымның бөлігі ретінде сақталған функция көрсеткіші арқылы жасалған функция шақырулары сәтсіз болуы мүмкін.
strtof он алтылық қалқымалы мәндер үшін нөлді қайтарады (XCS-2626) strtof () және т.б. және scanf () және т.б. кітапхана функциялары әрқашан көрсеткішті көрсетпейтін он алтылық өзгермелі нүкте санын түрлендіреді.
нөл. Мысалыample: stator («Үкі», &бос); 0 емес, 1 мәнін қайтарады.
Стек кеңесшісінің дұрыс емес хабар алмасуы (XCS-2542, XCS-2541) Кейбір жағдайларда пайдаланылған рекурсияға немесе анықталмаған стекке (мүмкін alloca() пайдалану арқылы) қатысты стек кеңесшісі ескертуі шығарылмайды.
Үзіліс кодының қайталануының сәтсіздігі (XCS-2421) Бірнеше үзу функциясының денесі бірдей болса, компиляторда бір үзу функциясының екіншісін шақыру үшін шығыс болуы мүмкін. Бұл барлық қоңырау шалу регистрлерінің қажетсіз сақталуына әкеледі және үзілістер ағымдағы үзу өңдеушісінің эпилогы іске қосылмай тұрып қосылады, бұл кодтың сәтсіздігіне әкелуі мүмкін.
Бағдарлама жадында жоқ Const объектілері (XCS-2408) avrxmega3 және avertins жобалары үшін ескертпе олардың бағдарлама жадына орналастырылғанын білдірсе де, реттелмеген const нысандары деректер жадына орналастырылады. Бұл деректер жады кеңістігінде салыстырылған бағдарлама жады жоқ құрылғыларға әсер етпейді және инициализацияланған кез келген нысанға әсер етпейді.
Жарамсыз DFP жолы бар қате шығыс (XCS-2376) Егер компилятор жарамсыз DFP жолы және "спецификация" арқылы шақырылса file таңдалған құрылғы үшін бар болса, компилятор құрылғының жетіспейтін топтамасы туралы есеп бермейді және оның орнына «спецификацияны» таңдайды file, бұл кейін жарамсыз нәтижеге әкелуі мүмкін. «спецификация» files таратылған DFP-мен жаңартылмауы мүмкін және тек ішкі компилятор сынағымен пайдалануға арналған.
Жадтың қабаттасуы анықталмады (XCS-1966) Компилятор мекенжайда абсолютті жасалған нысандардың (() арқылы) және бөлім () спецификаторын қолданатын және бір мекенжайға байланыстырылған басқа нысандардың жадының қабаттасуын анықтамайды.
Кітапхана функциялары мен _meme (XCS-1763) ақаулығы _memo мекенжай кеңістігінде аргументі бар лимбиялық қалқымалы функциялар сәтсіз болуы мүмкін. Кітапхана процедуралары кейбір C операторларынан шақырылатынын ескеріңіз, мысалы, мысалыample, келесі код әсер етеді: қайтару regFloatVar > memxFloatVar;
Шектеулі лимбиялық іске асыру (AVRTC-731) ATTiny4/5/9/10/20/40 өнімдері үшін стандартты C / Math кітапханасының лимбиялық нұсқасы өте шектеулі немесе жоқ.
Бағдарлама жады шектеулері (AVRTC-732) 128 кб-тан асатын бағдарлама жады суреттеріне құралдар тізбегі қолдау көрсетеді; дегенмен, -relax опциясы пайдаланылған кезде қажетті функция түйіршіктерін жасаудың орнына релаксациясыз және пайдалы қате туралы хабарсыз байланыстырғышты тоқтатудың белгілі даналары бар.
Атау кеңістігінің шектеулері (AVRTC-733) Атаулы мекенжай кеңістіктері пайдаланушы нұсқаулығының Арнайы типті сараптау бөлімінде айтылған шектеулерге сәйкес құралдар тізбегі арқылы қолдау көрсетеді.
Уақыт белдеулері The кітапхана функциялары GMT уақытын қабылдайды және жергілікті уақыт белдеулерін қолдамайды, осылайша жергілікті уақыт () гуммитпен бірдей уақытты қайтарады, мысалы,ampле.
ТҰТЫНУШЫЛАРҒА ҚОЛДАУ
file:///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ VR үшін. htm
Құжаттар / Ресурстар
![]() |
MICROCHIP MPLAB XC8 C компиляторлық бағдарламалық құрал [pdf] Пайдаланушы нұсқаулығы MPLAB XC8 C, MPLAB XC8 C Compiler Software, Compiler Software, Software |