Праграмнае забеспячэнне кампілятара MICROCHIP MPLAB XC8 C
ГЭТЫ ДАКУМЕНТ ЗДЫШЧАЕ ВАЖНУЮ ІНФАРМАЦЫЮ ДА КАМПІЛЯТАРА MPLAB XC8 C, ПРЫ ПРЫЛАДАХ AVR ад MICROCHIP.
КАЛІ ЛАСКА, ПРАЧЫТАЦЬ ЯГО ПЕРАД ЗАПУСКАМ ГЭТАГА ПРАГРАМНАГА ЗАБЕСПЯЧЭННЯ. ГЛЯДЗІЦЕ ЗАЎВАГІ ДА РЭЛІЗАЦЫІ КАМПІЛЯРА MPLAB XC8 C ДЛЯ ДАКУМЕНТА PIC, КАЛІ ВЫ ВЫКАРЫСТАЕЦЦА КАМПІЛЯТАР ДЛЯ 8-БІТНЫХ ПРЫЛАД PIC.
Скончанаview
Уводзіны
Гэты выпуск кампілятара Microchip MPLAB® XC8 C змяшчае некалькі новых функцый, выпраўленні памылак і падтрымку новых прылад.
Дата зборкі
Афіцыйная дата зборкі гэтай версіі кампілятара - 3 ліпеня 2022 г.
Папярэдняя версія
Папярэдняя версія кампілятара MPLAB XC8 C была 2.39, кампілятар функцыянальнай бяспекі, створаная 27 студзеня 2022 г. Папярэдні стандартны кампілятар была версія 2.36, пабудаваная 27 студзеня 2022 г.
Падручнік па функцыянальнай бяспекі
Кіраўніцтва па функцыянальнай бяспецы для кампілятараў MPLAB XC даступна ў пакеце дакументацыі пры куплі ліцэнзіі на функцыянальную бяспеку.
Ліцэнзіі і версіі кампанентаў
Інструменты MPLAB® XC8 C Compiler для AVR MCU напісаны і распаўсюджваюцца ў адпаведнасці з 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, вядомыя на момант выпуску. Глядзіце (у каталогу дакументаў кампілятара) спіс усіх падтрымоўваных прылад. Гэтыя files таксама пералічыць налады бітаў канфігурацыі для кожнай прылады.
Выданні і абнаўленні ліцэнзій
Кампілятар MPLAB XC8 можна актываваць як ліцэнзійны (PRO) або неліцэнзійны (бясплатны) прадукт. Вам неабходна набыць ключ актывацыі, каб ліцэнзаваць ваш кампілятар. Ліцэнзія дазваляе атрымаць больш высокі ўзровень аптымізацыі ў параўнанні з бясплатным прадуктам. Неліцэнзійны кампілятар можа працаваць неабмежаваны час без ліцэнзіі.
Кампілятар функцыянальнай бяспекі MPLAB XC8 павінен быць актываваны з дапамогай ліцэнзіі функцыянальнай бяспекі, набытай у 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, вы павінны ўсталяваць кампілятар з дапамогай тэрмінала і з уліковага запісу root. Усталяваць з дапамогай уліковага запісу macOS з правамі адміністратара.
Актывацыя цяпер праводзіцца асобна ад усталявання. Для атрымання дадатковай інфармацыі глядзіце дакумент Менеджэр ліцэнзій для кампілятараў MPLAB® XC C (DS52059).
Калі вы вырашыце запусціць кампілятар пад ацэначнай ліцэнзіяй, вы атрымаеце папярэджанне падчас кампіляцыі, калі застанецца 14 дзён пасля заканчэння ацэначнага перыяду. Тое ж папярэджанне выдаецца, калі вы знаходзіцеся на працягу 14 дзён пасля заканчэння падпіскі HPA.
Сервер сеткавых ліцэнзій XC з'яўляецца асобнай праграмай усталёўкі і не ўваходзіць у праграму ўстаноўкі кампілятара для аднаго карыстальніка.
Менеджэр ліцэнзій XC цяпер падтрымлівае роўмінг плаваючых сеткавых ліцэнзій. Прызначаная для карыстальнікаў мабільных прылад, гэтая функцыя дазваляе плаваючай ліцэнзіі на кароткі час адключыцца ад сеткі. Выкарыстоўваючы гэтую функцыю, вы можаце адключыцца ад сеткі і па-ранейшаму выкарыстоўваць ваш кампілятар MPLAB XC. Глядзіце тэчку doc для ўстаноўкі XCLM для атрымання дадатковай інфармацыі аб гэтай функцыі. MPLAB X IDE уключае акно ліцэнзій (Інструменты > Ліцэнзіі) для візуальнага кіравання роўмінгам.
Рашэнне праблем з устаноўкай
Калі ў вас узніклі цяжкасці з усталяваннем кампілятара пад любой з аперацыйных сістэм Windows, паспрабуйце наступныя прапановы.
- Запусціце ўстаноўку ад імя адміністратара.
- Усталюйце дазволы праграмы ўстаноўкі на «Поўны кантроль». (Пстрыкніце правай кнопкай мышы file, абярыце Уласцівасці, укладка Бяспека, абярыце карыстальніка, адрэдагуйце.)
- Усталюйце дазволы для часовай папкі на «Поўны кантроль!
Каб вызначыць месцазнаходжанне часовай тэчкі, увядзіце %temp% у каманду «Выканаць» (клавіша з лагатыпам Windows + R). Гэта адкрые a file дыялогавае акно правадыра, якое паказвае гэты каталог і дазволіць вам вызначыць шлях да гэтай тэчкі.
Дакументацыя кампілятара
Кіраўніцтва карыстальніка кампілятара можна адкрыць са старонкі HTML, якая адкрываецца ў вашым браўзеры, калі націснуць сінюю кнопку даведкі на панэлі MPLAB X IDE, як паказана на скрыншоце.
Калі вы ствараеце для 8-бітных мэт AVR, Кіраўніцтва карыстальніка кампілятара MPLAB® XC8 C для AVR® MCU змяшчае інфармацыю аб параметрах і функцыях кампілятара, прыдатных да гэтай архітэктуры.
Падтрымка кліентаў
Microchip вітае паведамленні аб памылках, прапановы або каментарыі адносна гэтай версіі кампілятара. Калі ласка, накіроўвайце любыя паведамленні аб памылках або запыты аб функцыях праз сістэму падтрымкі.
Абнаўленне дакументацыі
Каб даведацца аб актуальных версіях дакументацыі MPLAB XC8 у Інтэрнэце, наведайце Інтэрнэт-тэхнічную дакументацыю Microchip. webсайт.
Новая або абноўленая дакументацыя AVR у гэтым выпуску:
- Паведамленне аб аўтарскіх правах MUSL
- Устаноўка і ліцэнзаванне кампілятараў MPLAB XC C (рэвізія M)
- Кіраўніцтва карыстальніка MPLAB XC8 для інжынераў па ўбудавальных сістэмах - AVR MCU (рэвізія A)
- Кіраўніцтва карыстальніка кампілятара MPLAB XC8 C для AVR MCU (рэвізія F)
- Даведачнае кіраўніцтва па адзінай стандартнай бібліятэцы Microchip (рэвізія B)
Даведачнае кіраўніцтва па адзінай стандартнай бібліятэцы Microchip апісвае паводзіны і інтэрфейс функцый, вызначаных адзінай стандартнай бібліятэкай Microchip, а таксама мэтавае выкарыстанне тыпаў бібліятэк і макрасаў. Частка гэтай інфармацыі раней утрымлівалася ў Кіраўніцтве карыстальніка кампілятара MPLAB® XC8 C для AVR® MCU. Інфармацыя пра бібліятэку канкрэтнага прылады па-ранейшаму змяшчаецца ў гэтым кіраўніцтве кампілятара.
Калі вы толькі пачынаеце працаваць з 8-разраднымі прыладамі і кампілятарам MPLAB XC8 C, у Кіраўніцтве карыстальніка MPLAB® XC8 для інжынераў па ўбудаваных сістэмах – AVR® MCU (DS50003108) ёсць інфармацыя аб наладжванні праектаў у MPLAB X IDE і напісанні кода. для вашага першага праекта MPLAB XC8 C. Гэта кіраўніцтва зараз распаўсюджваецца разам з кампілятарам.
Кіраўніцтва карыстальніка Hamate было ўключана ў каталог дакументаў гэтага выпуску. Гэта кіраўніцтва прызначана для тых, хто выкарыстоўвае Hamate як асобнае прыкладанне.
Што новага
Ніжэй прыведзены новыя функцыі AVR-target, якія зараз падтрымлівае кампілятар. Нумар версіі ў падзагалоўках паказвае першую версію кампілятара, якая падтрымлівае наступныя функцыі.
Версія 2.40
Падтрымка новых прылад Зараз даступная падтрымка для наступных частак AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32 і AVR64EA48.
Палепшаная працэдурная абстракцыя Інструмент аптымізацыі працэдурнай абстракцыі (PA) быў палепшаны, каб можна было акрэсліць код, які змяшчае інструкцыю выкліку функцыі (адкліканне выкліку)). Гэта адбудзецца толькі ў тым выпадку, калі стэк не выкарыстоўваецца ні для перадачы аргументаў, ні для атрымання вяртанага значэння з функцыі. Стэк выкарыстоўваецца пры выкліку функцыі са спісам зменных аргументаў або пры выкліку функцыі, якая прымае больш аргументаў, чым ёсць рэгістраў, прызначаных для гэтай мэты. Гэтую функцыю можна адключыць з дапамогай опцыі monk-pa-outline-calls, або працэдурную абстракцыю можна цалкам адключыць для аб'екта file або функцыя з дапамогай -monk-pa-on-file і -mo.-pa-on-function адпаведна, або выкарыстоўваючы атрыбут nipa (спецыфікатар nipa) выбарачна з функцыямі
Макрас ахопу кода Кампілятар цяпер вызначае макрас __CODECOV, калі ўказана сапраўдная опцыя mcodecov.
Варыянт рэзервавання памяці Драйвер xc8-cc цяпер будзе прымаць опцыю -mreserve=space@start: end пры зборцы для мэт AVR. Гэты параметр рэзервуе ўказаны дыяпазон памяці альбо ў прасторы дадзеных, альбо ў памяці праграм, не дазваляючы кампаноўшчыку запаўняць код або аб'екты ў гэтай вобласці.
Разумней разумны 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 кантралюе кантэкстны код itch, згенераваны для невялікіх працэдур абслугоўвання перапыненняў. Калі гэтая функцыя ўключана, асэмблер будзе сканаваць ISR на наяўнасць рэгістраў і захоўваць гэтыя выкарыстаныя рэгістры толькі пры неабходнасці.
Наладжвальнае флэш-адлюстраванне Некаторыя прылады сямейства AVR DA і AVR DB маюць SFR (напрыклад, FLMAP), які вызначае, які 32k раздзел праграмнай памяці будзе адлюстраваны ў памяці дадзеных. Новая опцыя – mconst-data-in-config-mapped-proem можа быць выкарыстана, каб кампаноўшчык змясціў усе кваліфікаваныя даныя мінусаў у адзін раздзел 32k і аўтаматычна ініцыялізаваў адпаведны рэгістр SFR, каб пераканацца, што гэтыя даныя адлюстроўваюцца ў прасторы памяці даных , дзе доступ да яго будзе больш эфектыўным.
Уніфікаваныя стандартныя бібліятэкі Microchip Усе кампілятары MPLAB XC будуць сумесна выкарыстоўваць уніфікаваную стандартную бібліятэку Microchip, якая цяпер даступная ў гэтым выпуску MPLAB XC8. Кіраўніцтва карыстальніка кампілятара MPLAB® XC8 C/або AVR® MCU больш не ўключае дакументацыю для гэтых стандартных функцый. Цяпер гэтую інфармацыю можна знайсці ў Даведачным кіраўніцтве па адзінай стандартнай бібліятэцы Microchip. Звярніце ўвагу, што некаторыя функцыі, раней вызначаныя avr-libc, больш недаступныя. (Гл. Librar):'. функцыянальнасць...)
Разумны IO У рамках новых уніфікаваных бібліятэк функцыі ўводу-вываду ў сем'ях друку і сканавання цяпер ствараюцца на заказ для кожнай зборкі ў залежнасці ад таго, як гэтыя функцыі выкарыстоўваюцца ў праграме. Гэта можа істотна скараціць рэсурсы, якія выкарыстоўваюцца праграмай.
Опцыя дапамогі Smart IO Пры аналізе выклікаў разумных функцый уводу-вываду (такіх як printf () або scanf () ), кампілятар не заўсёды можа вызначыць з радка фармату або вывесці з аргументаў тыя спецыфікатары пераўтварэння, якія патрабуюцца для выкліку. Раней кампілятар заўсёды не рабіў ніякіх здагадак і гарантаваў, што поўнафункцыянальныя функцыі ўводу-выводу былі звязаны ў канчатковы вобраз праграмы. Была дададзена новая опцыя – msmart-io-format=fmt, каб замест гэтага карыстальнік мог інфармаваць кампілятар пра спецыфікатары пераўтварэння, якія выкарыстоўваюцца разумнымі функцыямі ўводу-вываду, выкарыстанне якіх неадназначнае, што прадухіляе звязванне празмерна доўгіх працэдур уводу-выводу. (Падрабязней глядзіце параметр фармату 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, AVR32DB28, AVR64DB32 і AVR32DB48.
Адкліканая падтрымка прылады Падтрымка больш не даступны для наступных частак AVR: AVR16DA28, AVR16DA32 і AVR16DA48.
Версія 2.31
Няма.
Версія 2.30
Новая опцыя для прадухілення ініцыялізацыі даных Новая опцыя драйвера -mno-data-ini t прадухіляе ініцыялізацыю даных і ачыстку раздзелаў bss. Ён працуе шляхам падаўлення вываду do_ copy_ data і d o_ clear_ bss сімвалаў у зборцы files, што, у сваю чаргу, прадухіліць уключэнне гэтых падпраграм кампаноўшчыкам.
Палепшаная аптымізацыя Быў зроблены шэраг паляпшэнняў аптымізацыі, у тым ліку выдаленне залішніх інструкцый вяртання, выдаленне некаторых пераходаў пасля інструкцыі пропуску, калі біт-ёсць, а таксама палепшаная працэдурная абстракцыя і магчымасць ітэрацыі гэтага працэсу.
Цяпер даступныя дадатковыя параметры для кіравання некаторымі з гэтых аптымізацый, у прыватнасці -f якары раздзелаў, якія дазваляюць выконваць доступ да статычных аб'ектаў адносна аднаго сімвала; -mpai derations=n, што дазваляе змяняць колькасць ітэрацый працэдурнай абстракцыі з 2 па змаўчанні; і, -mpa- call cost- shortcall, які выконвае больш агрэсіўную працэдурную абстракцыю ў надзеі, што лінкер можа паслабіць доўгія выклікі. Гэты апошні варыянт можа павялічыць памер кода, калі асноўныя дапушчэнні не рэалізаваны.
Падтрымка новых прылад Падтрымка даступная для наступных частак AVR: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 і AVR128DB64.
Падтрымка ўцягнутых прылад Падтрымка больш недаступная для наступных частак AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C і ATA664251.
Версія 2.29 (выпуск функцыянальнай бяспекі)
Загаловак file для ўбудаваных кампілятараў Каб пераканацца, што кампілятар можа адпавядаць спецыфікацыям мовы, такім як MISRA, загаловак file, які аўтаматычна ўключаецца , быў абноўлены. Гэты загаловак змяшчае прататыпы для ўсіх убудаваных функцый, такіх як _buil tin _avrnop () і _buil tin_ avr delay_ cycles (). Некаторыя ўбудаваныя элементы могуць не адпавядаць MISRA; іх можна апусціць, дадаўшы азначэнне _Xe_ STRICT_ MISRA у камандны радок кампілятара. Убудаваныя модулі і іх аб'явы былі абноўлены для выкарыстання тыпаў з фіксаванай шырынёй.
Версія 2.20
Падтрымка новых прылад Падтрымка даступная для наступных частак AVR: ATTINY1624, ATTINY1626 і ATTINY1627.
Лепшае размеркаванне Лепшы размеркавальнік (BFA) у кампілятары быў палепшаны так, што раздзелы размяшчаюцца ў парадку, які дазваляе лепш аптымізаваць. BFA цяпер падтрымлівае найменныя адрасныя прасторы і лепш апрацоўвае ініцыялізацыю даных.
Палепшаная працэдурная абстракцыя Аптымізацыя працэдурнай абстракцыі цяпер выконваецца на большай колькасці кодавых паслядоўнасцей. Папярэднія сітуацыі, калі гэтая аптымізацыя магла павялічыць памер кода, вырашаліся шляхам інфармавання кода аптымізацыі аб працэсе зборкі смецця кампаноўшчыка.
Адсутнасць AVR Assembler Асэмблер AVR больш не ўваходзіць у гэты дыстрыбутыў.
Версія 2.19 (выпуск функцыянальнай бяспекі)
Няма.
Версія 2.10
Ахоп кода Гэты выпуск уключае функцыю ахопу кода, якая палягчае аналіз ступені выканання зыходнага кода праекта. Выкарыстоўвайце параметр -mcodecov=ram, каб уключыць яго. Пасля выканання праграмы на вашым абсталяванні інфармацыя аб пакрыцці кода будзе сабрана ў прыладзе, і гэта можа быць перададзена і адлюстравана ў IDE MPLAB X праз плагін пакрыцця кода. Глядзіце дакументацыю IDE для атрымання інфармацыі аб гэтым плагіне. #pragma mcodecov можа выкарыстоўвацца для выключэння наступных функцый з аналізу пакрыцця. У ідэале прагма павінна быць дададзена ў пачатку file каб выключыць гэта цалкам file з аналізу пакрыцця. У якасці альтэрнатывы атрыбут ( (mcodecov)) можа выкарыстоўвацца для выключэння пэўнай функцыі з аналізу ахопу.
Апісанне прылады files Новая прылада file называецца avr chipinfo. html знаходзіцца ў каталогу docs дыстрыбутыва кампілятара. гэта file пералічвае ўсе прылады, якія падтрымліваюцца кампілятарам. Пстрыкніце назву прылады, і адкрыецца старонка, на якой будуць паказаны ўсе дапушчальныя пары біт канфігурацыі/значэнне для гэтай прылады, напрыкладampлес.
Працэдурная абстракцыя У кампілятар былі дададзены аптымізацыі працэдурных абстракцый, якія замяняюць агульныя блокі кода зборкі выклікамі вынятай копіі гэтага блока. Яны выконваюцца асобным дадаткам, якое аўтаматычна выклікаецца кампілятарам пры выбары ўзроўню 2, 3 або аптымізацыі. Гэтыя аптымізацыі памяншаюць памер кода, але яны могуць знізіць хуткасць выканання і магчымасць адладкі кода.
Працэдурную абстракцыю можна адключыць на больш высокіх узроўнях аптымізацыі з дапамогай опцыі -mno-pa або ўключыць на больш нізкіх узроўнях аптымізацыі (у залежнасці ад вашай ліцэнзіі) з дапамогай -mpa. Яго можна адключыць для аб'екта file выкарыстоўваючы -mno-pa-on-file=fileімя або адключана для функцыі з дапамогай -mno-pa на function= function.
У вашым зыходным кодзе працэдурная абстракцыя можа быць адключана для функцыі з дапамогай _attribute_ ( (nopa)) з азначэннем функцыі або з дапамогай _nopa, які пашыраецца да атрыбуту ( (nopa, noinline)) і, такім чынам, прадухіляе ўбудаванне функцыі і існуе абстракцыя ўбудаванага кода.
Падтрымка біта блакіроўкі ў прагме Цяпер канфігурацыю #pragma можна выкарыстоўваць для ўказання бітаў блакіроўкі AVR, а таксама іншых бітаў канфігурацыі. Праверце інфармацыю аб чыпе avr. html file (згаданы вышэй) для пар параметр/значэнне для выкарыстання з гэтай прагмай.
Падтрымка новых прылад Падтрымка даступная для наступных частак: AVR28DA128, AVR64DA128, AVR32DA128 і AVR48DA128.
Версія 2.05
Больш біт за вашы грошы Версія гэтага кампілятара і менеджэра ліцэнзій для macOS цяпер з'яўляецца 64-разрадным дадаткам. Гэта гарантуе, што кампілятар будзе ўсталяваны і запушчаны без папярэджанняў у апошніх версіях macOS.
Канстантныя аб'екты ў памяці праграмы Цяпер кампілятар можа размяшчаць канстантныя аб'екты ў флэш-памяці праграмы, а не ў аператыўнай памяці. Кампілятар быў зменены так, што канстантныя глабальныя даныя захоўваюцца ў флэш-памяці праграмы, і да гэтых даных можна атрымаць прамы або ўскосны доступ з дапамогай адпаведных інструкцый праграмнай памяці. Гэтая новая функцыя ўключана па змаўчанні, але яе можна адключыць з дапамогай параметра -mno-const-data-in-progmem. Для архітэктур avrxmega3 і avrtiny гэтая функцыя не патрабуецца і заўсёды адключана, паколькі памяць праграмы адлюстроўваецца ў адраснай прасторы дадзеных для гэтых прылад.
Стандарт бясплатна Неліцэнзійныя (бясплатныя) версіі гэтага кампілятара цяпер дазваляюць аптымізаваць да і ўключна ўзровень 2. Гэта дазволіць аналагічны, хоць і не ідэнтычны, выхад таму, які раней быў магчымы пры выкарыстанні стандартнай ліцэнзіі.
Вітаем AVRASM2 Асэмблер AVRASM2 для 8-разрадных прылад цяпер уключаны ў праграму ўстаноўкі кампілятара 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 libr і бібліятэкара AVR avr-ar. Гэты драйвер прымае параметры ў стылі архіватара GCC, якія альбо перакладаюцца, альбо перадаюцца бібліятэкару, які выконваецца. Новы драйвер дазваляе выкарыстоўваць падобны набор опцый з падобнай семантыкай для стварэння або маніпулявання любой бібліятэкай PIC або AVR file і, такім чынам, з'яўляецца рэкамендаваным спосабам выклікаць бібліятэкара. Калі патрабуецца для састарэлых праектаў, папярэдняга бібліятэкара можна выклікаць непасрэдна з выкарыстаннем параметраў старога стылю, якія прымаліся ў больш ранніх версіях кампілятара.
Праблемы міграцыі
Ніжэй прыведзены функцыі, якія зараз апрацоўваюцца кампілятарам па-рознаму. Гэтыя змены могуць запатрабаваць мадыфікацыі вашага зыходнага кода пры пераносе кода на гэтую версію кампілятара. Нумар версіі ў падзагалоўках паказвае першую версію кампілятара, якая падтрымлівае наступныя змены.
Версія 2.40
Няма.
Версія 2.39 (выпуск функцыянальнай бяспекі)
Няма.
Версія 2.36
Няма.
Версія 2.35
Апрацоўка радкоў-баз (XCS-2420) Для забеспячэння ўзгодненасці з іншымі кампілятарамі XC функцыі string-to XC8, такія як strtol () і г. д., больш не будуць спрабаваць пераўтварыць уваходны радок, калі ўказаная база большая за 36, і замест гэтага ўсталююць для errno значэнне EINVAL. Стандарт C не вызначае паводзіны функцый пры перавышэнні гэтага базавага значэння.
Неадпаведная аптымізацыя хуткасці Аптымізацыя працэдурнай абстракцыі была ўключана пры выбары аптымізацыі ўзроўню 3 (-03). Гэтыя аптымізацыі памяншаюць памер кода за кошт хуткасці кода, таму не павінны былі праводзіцца. Праекты, якія выкарыстоўваюць гэты ўзровень аптымізацыі, могуць бачыць адрозненні ў памеры кода і хуткасці выканання пры стварэнні з гэтым выпускам.
Функцыянальнасць бібліятэкі Код для многіх стандартных функцый бібліятэкі C цяпер узяты з уніфікаванай стандартнай бібліятэкі Microchip, якая пры некаторых абставінах можа адрознівацца ад паводзін ранейшай бібліятэкі avr-libc. Напрыкладample, больш не трэба спасылацца на бібліятэку lprintf_flt (параметр -print _flt), каб уключыць падтрымку адфарматаванага ўводу-выводу для спецыфікатараў float-format. Разумныя функцыі ўводу-выводу Microchip Unified Standard Library робяць гэтую опцыю лішняй. Акрамя таго, выкарыстанне працэдур з суфіксам _p для радкоў і функцый памяці (напрыклад, strcpy_P () і г.д..), якія працуюць з канстантнымі радкамі ў флэш-памяці, больш не патрэбна. Стандартныя працэдуры C (напрыклад, strcpy ()) будуць правільна працаваць з такімі дадзенымі, калі функцыя const-data-in-program-memory уключана.
Версія 2.32
Няма.
Версія 2.31
Няма.
Версія 2.30
Няма.
Версія 2.29 (выпуск функцыянальнай бяспекі)
Няма.
Версія 2.20
Зменены макет DFP Цяпер кампілятар мяркуе іншы макет, які выкарыстоўваецца DFP (пакеты сямейства прылад). Гэта будзе азначаць, што стары DFP можа не працаваць з гэтым выпускам, і старыя кампілятары не змогуць выкарыстоўваць апошнія DFP.
Версія 2.19 (выпуск функцыянальнай бяспекі)
Няма.
Версія 2.10
Няма
Версія 2.05
Канстантныя аб'екты ў памяці праграмы Звярніце ўвагу, што па змаўчанні аб'екты з канстантамі будуць змешчаны і даступныя ў памяці праграмы (як апісана тут). Гэта паўплывае на памер і хуткасць выканання вашага праекта, але павінна паменшыць выкарыстанне аператыўнай памяці. Гэтую функцыю можна адключыць пры неабходнасці з дапамогай параметра -mnoconst- da ta-in-progmem.
Версія 2.00
Засцерагальнікі канфігурацыі Засцерагальнікі канфігурацыі прылады цяпер можна запраграмаваць з дапамогай прагмы канфігурацыі, за якой ідуць пары значэнняў налады для ўказання стану засцерагальніка, напрыклад
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Абсалютныя аб'екты і функцыі Цяпер аб'екты і функцыі можна размяшчаць па пэўным адрасе ў памяці з дапамогай спецыфікатара CCI _at (адрас), напрыкладample: #ўключыць int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Аргумент гэтага спецыфікатара павінен быць канстантай, якая прадстаўляе адрас, па якім будзе размешчаны першы байт або інструкцыя. Адрасы аператыўнай памяці пазначаюцца са зрушэннем 0x800000. Уключыце CCI, каб выкарыстоўваць гэтую функцыю.
Новы сінтаксіс функцыі перапынення Цяпер кампілятар прымае спецыфікатар перапынення CCI (num), каб паказаць, што функцыі C з'яўляюцца апрацоўшчыкамі перапыненняў. Спецыфікатар прымае нумар перапынення, напрыкладample: #ўключыць void interrupt(SPI STC_ vect _num) spi Isr(void) { … }
Выпраўленыя праблемы
Ніжэй прыведзены выпраўленні, якія былі ўнесены ў кампілятар. Яны могуць выправіць памылкі ў згенераваным кодзе або змяніць працу кампілятара ў адпаведнасці з тым, што было прызначана або вызначана кіраўніцтвам карыстальніка. Нумар версіі ў падзагалоўках паказвае першую версію кампілятара, якая змяшчае выпраўленні наступных праблем. Метка(-і) у дужках у назве - гэта ідэнтыфікацыя праблемы ў базе дадзеных адсочвання. Гэта можа спатрэбіцца, калі вам трэба звярнуцца ў службу падтрымкі.
Звярніце ўвагу, што некаторыя праблемы, звязаныя з прыладай, выпраўлены ў пакеце сямейства прылад (DFP), звязаным з прыладай. Глядзіце MPLAB Pack Manager для атрымання інфармацыі пра змены, унесеныя ў DFP, і для загрузкі апошніх пакетаў.
Версія 2.40
Занадта расслаблена (XCS-2876) Пры выкарыстанні параметра -mrelax кампілятар не размяркоўваў некаторыя раздзелы разам, што прывяло да менш аптымальных памераў кода. Гэта магло адбыцца з кодам, які выкарыстоўваў новыя бібліятэкі MUSL, або са слабымі сімваламі.
Функцыя адлюстравання не адключана, як сказана ў папярэджанні (XCS-2875) Функцыя mappedprogmem даных аб кошце ў канфігурацыі залежыць ад уключанай функцыі даных аб кошце ў праграме. Калі функцыя cost-data-ipconfig-mapped-proem была відавочна ўключана з дапамогай опцыі, а функцыя cost-data-inprogmem была адключана, этап спалучэння не ўдаўся, нягледзячы на папярэджанне аб тым, што мінусы data- in-config-mapped- функцыя proem была аўтаматычна адключана, што было не зусім правільна. У гэтай сітуацыі функцыя const-data-in-config-mapped-proem цяпер цалкам адключана.
Змены DFP для правільнага доступу да NVMCTRL (XCS-2848) Код запуску падчас выканання, які выкарыстоўваецца прыладамі AVR64EA, не ўлічваў, што рэестр NVMCTRL знаходзіўся пад абаронай ад змены канфігурацыі (CCP) і не мог усталяваць SFR IO для старонкі, якая выкарыстоўваецца кампілятарам configmapped-proem const-data-in. асаблівасць. Змены, зробленыя ў 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 з функцыяй, імя асэмблера якой вызначана з дапамогай as (), выклікала паведамленні пра памылку ад асэмблера. Такое спалучэнне немагчыма.
Збой варыяцыйнай функцыі з аргументамі-указальнікамі (XCS-2755, XCS-2731) Функцыі са зменнай колькасцю аргументаў чакаюць перадачы 24-бітных (тып _memo) паказальнікаў у спісе зменных аргументаў, калі ўключана функцыя даных аб выдатках у праграме. Аргументы, якія былі ўказальнікамі на памяць дадзеных, перадаваліся як 16-бітныя аб'екты, што выклікала збой кода пры іх канчатковым чытанні. Калі функцыя cons data- in-proem уключана, усе аргументы 16-бітных паказальнікаў цяпер пераўтвараюцца ў 24-бітныя паказальнікі. Збой бібліятэчных функцый strtoxxx (XCS-2620) Калі функцыя const-data-in-proem была ўключана, параметр уводу ў бібліятэчных функцыях strtoxxx не абнаўляўся належным чынам для зыходных радковых аргументаў, якія адсутнічаюць у памяці праграмы.
Абвесткі аб няправільных злепках (XCS-2612) Цяпер кампілятар выдасць памылку, калі ўключана функцыя кошту ў праграме і адрас радковага літэрала відавочна пераведзены ў адрасную прастору даных (выдаленне кваліфікатара const), напрыкладample, (uint8 t *) «Прывітанне, свет!». Папярэджанне з'яўляецца праблемай, калі адрас можа быць несапраўдным, калі канстантны паказальнік даных відавочна пераводзіцца ў адрасную прастору даных.
Размяшчэнне неініцыялізаваных канстантных аб'ектаў (XCS-2408) Неініцыялізаваныя аб'екты const і const v volatile не змяшчаліся ў памяць праграм на прыладах, якія адлюстроўваюць усю або частку памяці праграм у адрасную прастору даных. Для гэтых прылад такія аб'екты цяпер змяшчаюцца ў памяць праграм, што робіць іх працу ўзгодненай з іншымі прыладамі.
Версія 2.39 (выпуск функцыянальнай бяспекі)
Няма.
Версія 2.36
Памылка пры затрымцы (XCS-2774) Нязначныя змены ў аптымізацыі бясплатнага рэжыму па змаўчанні прадухілілі пастаяннае згортванне выразаў аперанда ва ўбудаваныя функцыі затрымкі, у выніку чаго яны разглядаліся як некантактныя і выклікалі памылку: _buil tin avr delay_ cycles expects 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 }; павінен быў размясціць arr2 адразу пасля aril.
Указанне пачатковых адрасоў раздзелаў (XCS-2650) Параметр -Wal, –section-start ціха не мог размясціць раздзелы па прызначаным пачатковым адрасе. Гэта праблема была выпраўлена для ўсіх раздзелаў з карыстацкімі назвамі; аднак гэта не будзе працаваць для стандартных раздзелаў, такіх як . тэкст або . bss, які павінен быць размешчаны з дапамогай опцыі -Wl, -T.
Збой лінкера падчас адпачынку (XCS-2647) Калі аптымізацыя -relax была ўключана і былі раздзелы кода або даных, якія не змяшчаліся ў даступнай памяці, кампаноўшчык даваў збой. Цяпер пры такіх абставінах замест гэтага выдаюцца паведамленні пра памылкі.
Дрэнны доступ да EEPROM (XCS-2629) Працэдура блока leproma _read_ не працавала належным чынам на прыладах Mega, калі была ўключана опцыя -monist-data-in-proem (што з'яўляецца станам па змаўчанні), у выніку чаго памяць EEPROM не чыталася правільна.
Няправільнае размеркаванне памяці (XCS-2593, XCS-2651) Калі параметр спасылкі -Text або -Tata (напрыклад,ampфайл, перададзены з выкарыстаннем параметра драйвера -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) Прататыпы для starts () і іншых функцый з больш не вызначаць кваліфікатар нестандартнай кошту на вяртаемых радковых паказальніках, калі функцыя -monist-data inprogmem адключана. Звярніце ўвагу, што для прылад avrxmega3 і avertin гэтая функцыя пастаянна ўключана.
Страчаныя ініцыялізатары (XCS-2269) Калі больш чым адна зменная ў адзінцы перакладу была змешчана ў раздзел (з выкарыстаннем раздзела або атрыбута ((section))), і першая такая зменная была ініцыялізавана нулем або не мела ініцыялізатара, ініцыялізатары для іншых зменных у той жа адзінцы перакладу якія былі змешчаны ў тым жа раздзеле, былі страчаны.
Версія 2.29 (выпуск функцыянальнай бяспекі)
Няма.
Версія 2.20
Памылка доўгіх каманд (XCS-1983) Пры выкарыстанні мэты AVR кампілятар мог спыніцца на a file памылка не знойдзена, калі камандны радок быў вельмі вялікі і ўтрымліваў спецыяльныя сімвалы, такія як двукоссі, зваротныя касыя рысы і г.д.
Непрызначаны раздзел rodata (XCS-1920) Кампаноўшчыку AVR не ўдалося прызначыць памяць для карыстальніцкіх раздзелаў rodata пры зборцы для архітэктур avrxmega3 і avrtiny, што можа выклікаць памылкі перакрыцця памяці
Версія 2.19 (выпуск функцыянальнай бяспекі)
Няма.
Версія 2.10
Памылкі перамяшчэння (XCS-1891) Найлепшым размеркавальнікам было пакіданне «дзірак» у памяці паміж раздзеламі пасля паслаблення лінкера. Акрамя фрагментацыі памяці, гэта павялічвала верагоднасць збояў у перамяшчэнні кампаноўшчыка, звязаных са скачкамі адносна ПК або выхадам выклікаў за межы дыяпазону.
Інструкцыі, не ператвораныя паслабленнем (XCS-1889) Рэлаксацыя лінкера не адбылася для інструкцый па пераходзе або выкліку, чые мэты становяцца даступнымі, калі іх паслабіць.
Прапаў без вестак функцыянальнасць (XCSE-388) Некалькі азначэнняў ад , такія як clock_ div_ t і clock_prescale_set (), не былі вызначаны для прылад, у тым ліку ATmega324PB, ATmega328PB, ATtiny441 і ATtiny841.
Адсутнічаюць макрасы Макрасы прэпрацэсара_ xcs _MODE_, _xcs VERSION, _xc і xcs не былі аўтаматычна вызначаны кампілятарам. Яны цяпер даступныя.
Версія 2.05
Унутраная памылка кампілятара (XCS-1822) Пры зборцы пад Windows пры аптымізацыі кода магла ўзнікнуць унутраная памылка кампілятара.
Перапаўненне аператыўнай памяці не выяўлена (XCS-1800, XCS-1796) Праграмы, якія перавышалі даступную аператыўную памяць, у некаторых сітуацыях не выяўляліся кампілятарам, што прыводзіла да збою кода падчас выканання.
Апушчаная флэш-памяць (XCS-1792) Для прылад avrxmega3 і avrtiny частка флэш-памяці магла быць пакінута незапраграмаванай у MPLAB X IDE.
Збой у выкананні main (XCS-1788) У некаторых сітуацыях, калі праграма не мела вызначаных глабальных зменных, код запуску падчас выканання не закрываўся і функцыя main () ніколі не была дасягнута.
Няправільная інфармацыя аб памяці (XCS-1787) Для прылад avrxmega3 і avrtiny праграма avr-size паведамляла, што даныя толькі для чытання спажываюць аператыўную памяць замест праграмнай памяці.
Няправільнае чытанне памяці праграмы (XCS-1783) Праекты, скампіляваныя для прылад з праграмнай памяццю, адлюстраванай у адраснай прасторы даных і якія вызначаюць аб'екты з дапамогай макраса/атрыбута PROGMEM, маглі счытваць гэтыя аб'екты з няправільнага адраса.
Унутраная памылка з атрыбутамі (XCS-1773) Адбылася ўнутраная памылка, калі вы вызначылі аб'екты-паказальнікі з дапамогай
_at () або attribute() токены паміж імем паказальніка і разыменаваным тыпам, напрыкладample, char *
_at (0x80015 0) cp; Цяпер пры выяўленні такога кода выдаецца папярэджанне.
Збой у выкананні main (XCS-1780, XCS-1767, XCS-1754) Выкарыстанне зменных EEPROM або вызначэнне засцерагальнікаў з дапамогай прагмы канфігурацыі магло прывесці да няправільнай ініцыялізацыі даных і/або блакіроўкі выканання праграмы ў кодзе запуску падчас выканання перад дасягненнем main ().
Памылка засцерагальніка з маленькімі прыладамі (XCS-1778, XCS-1742) Прылады attiny4/5/9/10/20/40 мелі няправільную даўжыню засцерагальніка, указаную ў іх загалоўку files, якія прыводзяць да памылак кампаноўшчыка пры спробе пабудаваць код, які вызначае fuses.
Памылка сегментацыі (XCS-1777) Была выпраўлена перыядычная памылка сегментацыі.
Збой асэмблера (XCS-1761) Асэмблер avr-as мог выйсці з ладу, калі кампілятар запускаўся пад Ubuntu 18.
Аб'екты не ачышчаны (XCS-1752) Неініцыялізаваныя аб'екты працягласці статычнага захоўвання маглі не быць ачышчаны кодам запуску падчас выканання.
Канфлікт спецыфікацыі прылады праігнараваны (XCS-1749) Кампілятар не ствараў памылку, калі выкарыстоўваліся некалькі параметраў спецыфікацыі прылады і паказвалі розныя прылады.
Пашкоджанне памяці кучай (XCS-1748) Сімвал heap_ start быў усталяваны няправільна, што прывяло да магчымасці пашкоджання звычайных зменных кучай.
Памылка перамяшчэння спасылкі (XCS-1739) Памылка перамяшчэння кампаноўшчыка магла ўзнікнуць, калі код утрымліваў rjmp або rcall з мэтай роўна ў 4 КБ.
Версія 2.00
Няма.
Вядомыя праблемы
Ніжэй прыведзены абмежаванні ў працы кампілятара. Гэта могуць быць агульныя абмежаванні кадавання або
адхіленні ад інфармацыі, якая змяшчаецца ў кіраўніцтве карыстальніка. Метка(-і) у дужках у назве - гэта ідэнтыфікацыя праблемы ў базе дадзеных адсочвання. Гэта можа спатрэбіцца, калі вам трэба звярнуцца ў службу падтрымкі. Тыя элементы, якія не маюць цэтлікаў, з'яўляюцца абмежаваннямі, якія апісваюць рэжым працы і якія, верагодна, застануцца ў сіле пастаянна.
Інтэграцыя MPLAB X IDE
Інтэграцыя MPLAB IDE Калі кампілятар будзе выкарыстоўвацца з MPLAB IDE, вы павінны ўсталяваць MPLAB IDE перад устаноўкай кампілятара.
Генерацыя кода
Збой размеркавання памяці PA (XCS-2881) Пры выкарыстанні аптымізатараў працэдурных абстракцый кампаноўшчык можа паведамляць пра памылкі размеркавання памяці, калі памер кода блізкі да аб'ёму даступнай праграмнай памяці на прыладзе, нават калі праграма павінна быць у стане змясціць даступную прастору.
Не такі разумны Smart-IO (XCS-2872) Функцыя разумнага ўводу-выводу кампілятара згенеруе сапраўдны, але не аптымальны код для функцыі спрынту, калі функцыя ўзгаднення даных у праекце была адключана або калі ўся флэш-памяць прылады адлюстравана ў памяці даных.
Яшчэ менш разумны Smart-IO (XCS-2869) Функцыя smart-io кампілятара згенеруе сапраўдны, але неаптымальны код, калі выкарыстоўваюцца абодва параметры -floe і -fno-buil tin.
Неаптымальнае размяшчэнне дадзеных толькі для чытання (XCS-2849) Кампаноўшчык у цяперашні час не ведае аб раздзелах памяці APPCODE і APPDATA, а таксама аб раздзелах [No-]Read-While-Write у карце памяці. У выніку існуе невялікая верагоднасць таго, што кампаноўшчык можа размясціць дадзеныя толькі для чытання ў непрыдатнай вобласці памяці. Верагоднасць недарэчных даных павялічваецца, калі ўключана функцыя coast-data-in-pragma, асабліва калі таксама ўключана функцыя coast-data-in-config-mapped-proem. Пры неабходнасці гэтыя функцыі можна адключыць.
Аб'ект file заказ на апрацоўку (XCS-2863) Парадак аб'ектаў files, якія будуць апрацоўвацца лінкерам, могуць адрознівацца ў залежнасці ад выкарыстання аптымізацыі працэдурных абстракцый (параметр -mpa). Гэта паўплывае толькі на код, які вызначае слабыя функцыі ў некалькіх модулях.
Памылка лінкера з абсалютам (XCS-2777) Калі аб'ект быў зроблены абсалютным па адрасе ў пачатку аператыўнай памяці і таксама былі вызначаны неініцыялізаваныя аб'екты, можа быць выклікана памылка кампаноўшчыка.
Кароткія ідэнтыфікатары абуджэння (XCS-2775) Для прылад ATA5700/2 рэгістры PHID0/1 вызначаюцца толькі як шырыня 16 бітаў, а не 32 бітаў.
Збой лінкера пры выкліку сімвала (XCS-2758) Компоновщик можа выйсці з ладу, калі параметр драйвера -merlad выкарыстоўваецца, калі зыходны код выклікае сімвал, які быў вызначаны з дапамогай параметра линкера -Wl, –defsym.
Няправільная ініцыялізацыя (XCS-2679) Існуе неадпаведнасць паміж месцам размяшчэння пачатковых значэнняў для некаторых глабальных/статычных аб'ектаў памерам у байт у памяці даных і месцам доступу да зменных падчас выканання.
запушчаны няправільна, наборы пустыя (XCS-2652) У выпадках, калі тэматычны радок для пераўтварэння з дапамогай stated () утрымлівае тое, што выглядае як лік з плаваючай кропкай у экспаненцыяльным фармаце і ёсць нечаканы сімвал пасля сімвала e, тады пусты адрас, калі ён прадстаўлены, будзе паказваць на сімвал пасля е, а не само е. Напрыкладample: заяўлена (“гой”, пусты); прывядзе да пустога паказу на сімвал x.
Дрэнныя ўскосныя выклікі функцый (XCS-2628) У некаторых выпадках выклікі функцый, зробленыя праз указальнік функцыі, які захоўваецца як частка структуры, могуць быць няўдалымі.
strtof вяртае нуль для шаснаццатковых значэнняў (XCS-2626) Бібліятэчныя функцыі strtof () et al і scanf () et al заўсёды будуць пераўтвараць шаснаццатковае лік з плаваючай кропкай, якое не вызначае паказчык, у
нуль. Напрыкладample: stator(“Сава”, &пусто); верне значэнне 0, а не 1.
Няправільны абмен паведамленнямі саветніка па стэку (XCS-2542, XCS-2541) У некаторых выпадках папярэджанне саветніка па стэку адносна выкарыстання рэкурсіі або нявызначанага стэка (магчыма, праз выкарыстанне alloca()) не выдаецца.
Памылка з дублікатам кода перапынення (XCS-2421) Калі больш чым адна функцыя перапынення мае аднолькавае цела, кампілятар можа мець вывад для выкліку адной функцыі перапынення другой. Гэта прывядзе да таго, што ўсе сапсаваныя выклікамі рэгістры будуць захаваны без неабходнасці, і перапыненні будуць уключаны нават да таго, як спрацуе эпілог бягучага апрацоўшчыка перапынення, што можа прывесці да збою кода.
Канстантныя аб'екты адсутнічаюць у памяці праграмы (XCS-2408) Для праектаў avrxmega3 і avertins неідэалізаваныя канстантныя аб'екты змяшчаюцца ў памяць даных, нават калі папярэджанне паказвае, што яны былі змешчаны ў памяць праграм. Гэта не паўплывае на прылады, якія не маюць праграмнай памяці, адлюстраванай у прасторы памяці даных, і не паўплывае ні на які ініцыялізаваны аб'ект.
Няправільны вынік з няправільным шляхам DFP (XCS-2376) Калі кампілятар выклікаецца з няправільным шляхам DFP і «спецыфікацыяй» file існуе для выбранай прылады, кампілятар не паведамляе пра адсутны пакет сямейства прылад і замест гэтага выбірае «спецыфікацыю» file, што можа прывесці да несапраўднага вываду. "спецыфікацыя" files маглі не абнаўляцца з размеркаванымі DFP і былі прызначаны толькі для ўнутранага тэставання кампілятара.
Перакрыцце памяці не выяўлена (XCS-1966) Кампілятар не выяўляе перакрыцця памяці аб'ектаў, зробленых абсалютнымі па адрасе (праз at ()) і іншых аб'ектаў, якія выкарыстоўваюць спецыфікатар раздзела () і якія звязаны з тым жа адрасам.
Збой у функцыях бібліятэкі і _meme (XCS-1763) Выкліканыя лімбічныя функцыі float з аргументам у адраснай прасторы _memo могуць даць збой. Звярніце ўвагу, што працэдуры бібліятэкі выклікаюцца з некаторых аператараў C, так, напрыкладample, закрануты наступны код: return regFloatVar > memxFloatVar;
Абмежаванае лімбічнае ўкараненне (AVRTC-731) Для прадуктаў ATTiny4/5/9/10/20/40 рэалізацыя стандартнай бібліятэкі C / Math у limbic вельмі абмежаваная або адсутнічае.
Абмежаванні праграмнай памяці (AVRTC-732) Вобразы праграмнай памяці памерам больш за 128 кб падтрымліваюцца інструментальнай ланцугом; аднак, вядомыя выпадкі перапынення кампаноўшчыка без паслаблення і без карыснага паведамлення пра памылку, а не генерацыі неабходных заглушак функцый, калі выкарыстоўваецца параметр -relax.
Абмежаванне прасторы імёнаў (AVRTC-733) Найменныя адрасныя прасторы падтрымліваюцца ланцугом інструментаў з улікам абмежаванняў, згаданых у раздзеле "Кваліфікатары спецыяльных тыпаў" кіраўніцтва карыстальніка.
Часавыя паясы The функцыі бібліятэкі мяркуюць GMT і не падтрымліваюць мясцовыя часавыя паясы, таму мясцовы час () будзе вяртаць той жа час, што і гумміт (), напрыкладampле.
ПАДТРЫМКА КЛІЕНТАЎ
file:///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ для A VR. htm
Дакументы / Рэсурсы
![]() |
Праграмнае забеспячэнне кампілятара MICROCHIP MPLAB XC8 C [pdfКіраўніцтва карыстальніка Праграмнае забеспячэнне кампілятара MPLAB XC8 C, праграмнае забеспячэнне MPLAB XC8 C, праграмнае забеспячэнне кампілятара, праграмнае забеспячэнне |