Софтвер за компајлер на MICROCHIP MPLAB XC8 C
ОВОЈ ДОКУМЕНТ СОДРЖИ ВАЖНИ ИНФОРМАЦИИ ВО ВРСКА СО КОМПАЈЛЕРОТ MPLAB XC8 C КОГА ГИ НАСТАНЕТЕ МИКРОЧИП AVR УРЕДИ.
ВЕ МОЛИМЕ ПРОЧИТАЈТЕ ГО ПРЕД ДА ГО ВКЛУЧИТЕ ОВОЈ СОФТВЕР. ВИДЕТЕ ГИ ЗАБЕЛЕШКИТЕ ЗА ОБЈАВУВАЊЕ НА КОМПАЈЛЕРОТ MPLAB XC8 C ЗА ДОКУМЕНТ ЗА СЛИКА АКО ГО КОРИСТЕТЕ КОМПАЈЛЕРОТ ЗА 8-БИТНИ СЛИКА УРЕДИ.
Во текот наview
Вовед
Ова издание на компајлерот Microchip MPLAB® XC8 C содржи неколку нови функции, поправени грешки и поддршка за нов уред.
Датум на градба
Официјалниот датум на изградба на оваа верзија на компајлерот е 3 јули 2022 година.
Претходна верзија
Претходната верзија на компајлерот MPLAB XC8 C беше 2.39, функционален безбедносен компајлер, изграден на 27 јануари 2022 година. Претходниот стандарден компајлер беше верзијата 2.36, изградена на 27 јануари 2022 година.
Прирачник за функционална безбедност
Прирачник за функционална безбедност за компајлерите MPLAB XC е достапен во пакетот документација кога купувате лиценца за функционална безбедност.
Лиценци и верзии за компоненти
Компајлерот MPLAB® XC8 C за алатките AVR MCU се напишани и дистрибуирани под GNU General Public License (GPL) што значи дека неговиот изворен код е слободно дистрибуиран и достапен за јавноста. Изворниот код за алатките под GNU GPL може да се преземе одделно од Microchip's 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 OShave се потпишани со код и заверени на нотар.
Ако користите мрежен сервер за лиценца, може да се користат само компјутери со оперативни системи поддржани од компајлерите за да бидат домаќини на серверот за лиценца. Од xclm верзијата 2.0, серверот за мрежна лиценца може да се инсталира на платформа на Microsoft Windows Server, но серверот за лиценца не треба да работи на серверска верзија на оперативниот систем.
Поддржани уреди
Овој компајлер ги поддржува сите 8-битни AVR MCU уреди познати во моментот на објавување. Видете (во директориумот за документи на компајлерот) за список на сите поддржани уреди. Овие fileИсто така, се наведени поставките за конфигурациските битови за секој уред.
Изданија и надградби на лиценци
Компајлерот MPLAB XC8 може да се активира како лиценциран (ПРО) или нелиценциран (Бесплатен) производ. Треба да купите клуч за активирање за да го лиценцирате вашиот компајлер. Лиценцата овозможува повисоко ниво на оптимизација во споредба со бесплатниот производ. Нелиценциран компајлер може да се работи на неодредено време без лиценца.
Компајлерот MPLAB XC8 Functional Safety мора да се активира со лиценца за функционална безбедност купена од Microchip. Компајлерот нема да работи без оваа лиценца. Откако ќе се активира, можете да изберете кое било ниво на оптимизација и да ги користите сите карактеристики на компајлерот. Ова издание на компајлерот за функционална безбедност MPLAB XC ја поддржува лиценцата за мрежен сервер.
Видете го документот Инсталирање и лиценцирање MPLAB XC C C Compilers (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 на „Целосна контрола!
За да ја одредите локацијата на папката temp, внесете %temp% во командата Run (копче со лого на Windows + R). Ова ќе отвори а file Дијалогот на Explorer кој го прикажува тој директориум и ќе ви овозможи да ја одредите патеката на таа папка.
Документација на компајлерот
Корисничките водичи на компајлерот може да се отворат од страницата HTML што се отвора во вашиот прелистувач кога ќе кликнете на синото копче за помош во контролната табла MPLAB X IDE, како што е наведено на сликата од екранот.
Ако градите за 8-битни AVR цели, Упатството за корисникот на компајлерот MPLAB® XC8 C за AVR® MCU содржи информации за оние опции и карактеристики на компајлерот што се применливи за оваа архитектура.
Поддршка за корисници
Микрочип ги поздравува извештаите, предлозите или коментарите за грешки во врска со оваа верзија на компајлерот. Ве молиме насочете ги сите извештаи за грешки или барања за функции преку Системот за поддршка.
Ажурирања на документација
За онлајн и ажурирани верзии на документацијата MPLAB XC8, посетете ја онлајн техничката документација на Microchip webсајт.
Нова или ажурирана AVR документација во ова издание:
- Известување за авторски права MUSL
- Инсталирање и лиценцирање на компајлери MPLAB XC C (ревизија М)
- Водич за корисници на MPLAB XC8 за вградени инженери – AVR MCU (ревизија А)
- Упатство за корисникот на компајлерот MPLAB XC8 C за AVR MCU (ревизија F)
- Референтен водич за унифицирана стандардна библиотека за микрочип (ревизија Б)
Референтниот водич за унифицирана стандардна библиотека за микрочип го опишува однесувањето и интерфејсот со функциите дефинирани од Унифицираната стандардна библиотека на микрочипот, како и намената за употреба на типовите и макроата на библиотеката. Некои од овие информации порано беа содржани во Упатството за корисникот на компајлерот MPLAB® XC8 C за AVR® MCU. Информациите за библиотеката специфични за уредот сè уште се содржани во овој водич за компајлерот.
Ако штотуку почнувате со 8-битни уреди и MPLAB XC8 C компајлерот, MPLAB® XC8 User!s Guide for Embedded Engineers – AVR® MCUs (DS50003108) има информации за поставување проекти во MPLAB X IDE и пишување код за вашиот прв проект MPLAB XC8 C. Овој водич сега е дистрибуиран со компајлерот.
Упатството за корисници на Hamate е вклучено во директориумот со документи во ова издание. Овој водич е наменет за оние кои ја користат Hamate како самостојна апликација.
Што има ново
Следниве се новите AVR-целни карактеристики што сега ги поддржува компајлерот. Бројот на верзијата во поднасловите ја означува првата верзија на компајлерот што ги поддржува карактеристиките што следат.
Верзија 2.40
Поддршка за нов уред Поддршката сега е достапна за следните AVR делови: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64DD28, AVR64DD32. R64EA48.
Подобрена процедурална апстракција Алатката за оптимизација на процедурална апстракција (PA) е подобрена, така што кодот што содржи инструкција за повикување функција (повикување повик)) може да се наведе. Ова ќе се случи само ако магацинот не се користи за пренесување аргументи или за добивање повратна вредност од функцијата. Стекот се користи кога се повикува функција со список со променливи аргументи или кога се повикува функција која зема повеќе аргументи отколку што има регистри наменети за оваа намена. Оваа функција може да се оневозможи користејќи ја опцијата monk-pa-outline-calls или процедуралната апстракција може целосно да се оневозможи за некој објект file или функционира со користење на -monk-pa-on-file и -mo.-pa-on-функција соодветно, или со користење на атрибутот nipa ( спецификатор nipa) селективно со функции
Макро за покривање на кодот Компајлерот сега го дефинира макрото __CODECOV ако е наведена валидна опција mcodecov.
Опција за резервација на меморија Возачот на xc8-cc сега ќе ја прифати опцијата -mreserve=space@start: end кога гради цели за AVR. Оваа опција го задржува наведениот опсег на меморија или во меморискиот простор за податоци или програма, спречувајќи го поврзувачот да пополни код или објекти во оваа област.
Попаметен паметен IO Направени се неколку подобрувања на функциите Smart IO, вклучително и општи измени во основниот код на printf, третирајќи го спецификаторот за конверзија %n како независна варијанта, поврзување во vararg поп рутини на барање, користејќи пократки типови податоци каде што е можно за справување со аргументите на функцијата 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 може да се користи за поврзувачот да ги смести сите квалификувани податоци во еден дел од 32 k и автоматски да го иницијализира релевантниот регистар SFR за да се осигура дека овие податоци се мапирани во просторот за меморија на податоци. , каде што ќе се пристапи поефективно.
Унифицирани стандардни библиотеки за микрочип Сите компајлери MPLAB XC ќе споделуваат Унифицирана стандардна библиотека за микрочип, која сега е достапна со ова издание на MPLAB XC8. Упатството за корисникот на компајлерот MPLAB® XC8 C/или AVR® MCU повеќе не ја вклучува документацијата за овие стандардни функции. Оваа информација сега може да се најде во Референтниот водич за унифицирана стандардна библиотека за микрочип. Забележете дека некоја функционалност претходно дефинирана од avr-libc веќе не е достапна. (Види Библиотека):'. функционалност...)
Паметна IO Како дел од новите унифицирани библиотеки, функциите на IO во фамилиите за печатење и скенирање сега се генерираат прилагодено на секоја верзија, врз основа на тоа како овие функции се користат во програмата. Ова може значително да ги намали ресурсите што ги користи програмата.
Опција за помош за паметна IO Кога се анализираат повиците до паметните IO функции (како printf () или scanf () ), компајлерот не може секогаш да ги одреди од низата за формат или да заклучи од аргументите за спецификаторите за конверзија што ги бара повикот. Претходно, компајлерот секогаш не правеше никакви претпоставки и гарантираше дека целосно функционалните IO функции се поврзани со конечната слика на програмата. Додадена е нова опција – msmart-io-format=fmt, така што компајлерот може да биде информиран од корисникот за спецификаторите за конверзија што ги користат паметните IO функции чија употреба е двосмислена, спречувајќи премногу долги IO рутини да бидат поврзани. (Видете ја опцијата smart-io-format за повеќе детали.)
Поставување сопствени делови Претходно, опцијата -Wl, –section-start го поставуваше наведениот дел на бараната адреса само кога скриптата за поврзување дефинираше излезен дел со исто име. Кога тоа не беше случај, делот беше поставен на адреса избрана од поврзувачот и опцијата во суштина беше игнорирана. Сега опцијата ќе биде почитувана за сите прилагодени делови, дури и ако скриптата за поврзување не го дефинира делот. Забележете, сепак, дека за стандардните делови, како . текст,. бсс или . податоци, алокаторот најдобро одговара сè уште ќе има целосна контрола врз нивната поставеност, а опцијата нема да има ефект. Користете ја опцијата -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, AVRXNUMXBDBD AVRXNUMXDBXNUMX.
Поддршка за повлечен уред Поддршка повеќе не е достапен за следните делови 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- call cost- shortcall, што врши поагресивна процедурална апстракција, со надеж дека поврзувачот може да ги релаксира долгите повици. Оваа последна опција може да ја зголеми големината на кодот доколку не се реализираат основните претпоставки.
Поддршка за нов уред Поддршката е достапна за следните AVR делови: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, 128DAV48
Поддршка за повлечен уред Поддршката веќе не е достапна за следните делови за AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616TAC, ATA6617, ATA.
Верзија 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 Assembler веќе не е вклучен во оваа дистрибуција.
Верзија 2.19 (Функционално безбедносно ослободување)
Никој.
Верзија 2.10
Покриеност на кодот Ова издание вклучува функција за покривање код што ја олеснува анализата на степенот до кој изворниот код на проектот е извршен. Користете ја опцијата -mcodecov=ram за да ја овозможите. По извршувањето на програмата на вашиот хардвер, информациите за покриеноста на кодот ќе се соберат во уредот, а тоа може да се пренесе и да се прикаже од MPLAB X IDE преку приклучок за покривање код. Видете ја документацијата 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 на функција= функција.
Внатре во вашиот изворен код, процедуралната апстракција може да се оневозможи за функцијата со користење на _атрибутот_ ( (nopa)) со дефиницијата на функцијата, или со користење _nopa, кој се проширува до атрибутот ( (nopa, noinline)) и на тој начин спречува да се изврши вметнување на функцијата и има апстракција на вграден код.
Поддршка за заклучување во прагма Конфигурацијата #pragma сега може да се користи за одредување на битовите за заклучување AVR, како и за другите битови за конфигурација. Проверете ги информациите за чипот avr. html file (споменато погоре) за паровите поставки/вредности што ќе се користат со оваа прагма.
Поддршка за нов уред Поддршката е достапна за следните делови: AVR28DA128, AVR64DA128, AVR32DA128 и AVR48DA128.
Верзија 2.05
Повеќе битови за вашиот долар MacOS верзијата на овој компајлер и менаџер на лиценци сега е 64-битна апликација. Ова ќе осигури дека компајлерот ќе инсталира и ќе работи без предупредувања на последните верзии на macOS.
Const објекти во програмската меморија Компајлерот сега може да постави објекти квалификувани за const во програмата Flash меморија, наместо да ги има во RAM меморијата. Компајлерот е изменет така што глобалните податоци квалификувани за const се складираат во програмската флеш меморија и до овие податоци може директно и индиректно да се пристапи со помош на соодветните инструкции за програмска меморија. Оваа нова функција е стандардно овозможена, но може да се оневозможи користејќи ја опцијата -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 и библиотекар AVR avr-ar. Овој двигател прифаќа опции во стилот на архивирање на GCC, кои се преведуваат или се пренесуваат до библиотекарот што се извршува. Новиот драјвер дозволува сличен сет на опции со слична семантика да се користи за креирање или манипулирање со која било библиотека PIC или AVR file и затоа е препорачаниот начин за повикување на библиотекар. Доколку е потребно за наследни проекти, претходниот библиотекар може да се повика директно со користење на опциите од стар стил што ги прифатил во претходните верзии на компајлерот.
Прашања за миграција
Следниве се карактеристики со кои сега компајлерот постапува поинаку. Овие промени може да бараат измена на вашиот изворен код ако го префрлите кодот на оваа верзија на компајлерот. Бројот на верзијата во поднасловите ја означува првата верзија на компајлерот што ги поддржува промените што следат.
Верзија 2.40
Никој.
Верзија 2.39 (Функционално безбедносно ослободување)
Никој.
Верзија 2.36
Никој.
Верзија 2.35
Ракување со бази од низа до (XCS-2420) За да се обезбеди конзистентност со другите XC компајлери, функциите XC8 string-to, како strtol () итн., повеќе нема да се обидуваат да конвертираат влезна низа ако наведената база е поголема од 36 и наместо тоа ќе го постават errno на EINVAL. Стандардот C не го специфицира однесувањето на функциите кога оваа основна вредност е надмината.
Несоодветни оптимизации за брзина Процедуралните оптимизации за апстракција беа овозможени при изборот на оптимизации на ниво 3 (-03). Овие оптимизации ја намалуваат големината на кодот на сметка на брзината на кодот, па затоа не требаше да се изврши. Проектите што го користат ова ниво на оптимизација може да видат разлики во големината на кодот и брзината на извршување кога ќе бидат изградени со ова издание.
Функционалност на библиотеката Кодот за многу од стандардните функции на библиотеката C сега доаѓа од Унифицираната стандардна библиотека на Microchip, која може да покаже различно однесување во некои околности во споредба со она што го дава поранешната библиотека avr-libc. За прampзатоа, повеќе не е неопходно да се поврзувате во библиотеката lprintf_flt (опција -print _flt) за да се вклучи форматирана поддршка за IO за спецификатори на float-формат. Паметните IO карактеристики на Унифицираната стандардна библиотека за микрочип ја прават оваа опција излишна. Дополнително, употребата на рутини со суфикс _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
Const објекти во програмската меморија Забележете дека по дифолт, конст-квалификуваните објекти ќе бидат поставени и пристапени во програмската меморија (како што е опишано овде). Ова ќе влијае на големината и брзината на извршување на вашиот проект, но треба да ја намали употребата на RAM меморија. Оваа функција може да се оневозможи, доколку е потребно, користејќи ја опцијата -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) { … } Аргументот на овој спецификатор мора да биде константа што ја претставува адресата на која ќе биде поставен првиот бајт или инструкција. Адресите на RAM меморијата се означени со користење на поместување од 0x800000. Овозможете CCI да ја користи оваа функција.
Нова синтакса на функцијата за прекин Компајлерот сега го прифаќа спецификаторот CCI интерапт (num) за да покаже дека функциите C се управувачи со прекини. Спецификаторот зема број на прекин, на прample: #вклучи празен прекин (SPI STC_ vect _num) spi Isr(void) { … }
Поправени проблеми
Следниве се корекции кои се направени на компајлерот. Овие може да ги поправат грешките во генерираниот код или да ја променат работата на компајлерот на онаа што била наменета или специфицирана во упатството за корисникот. Бројот на верзијата во поднасловите ја означува првата верзија на компајлерот што содржи поправки за проблемите што следат. Етикетите во загради во насловот се идентификација на тој проблем во базата на податоци за следење. Овие може да бидат корисни ако треба да контактирате со поддршката.
Имајте предвид дека некои проблеми специфични за уредот се поправени во семејниот пакет на уреди (DFP) поврзан со уредот. Видете го Управникот со пакети MPLAB за информации за промените направени во DFP и за преземање на најновите пакети.
Верзија 2.40
Премногу опуштено (XCS-2876) При користење на опцијата -mrelax, компајлерот не доделуваше некои делови заедно, што резултираше со помалку оптимални големини на кодот. Ова може да се случило со код што ги користел новите MUSL библиотеки или со слаби симболи.
Функцијата за мапирање не е оневозможена како што е наведено во предупредувањето (XCS-2875) Функцијата „cost-data-in-config mappedprogmem“ зависи од овозможената функција „cost-data-in-proem“. Ако функцијата cost-data-ipconfig-mapped-proem беше експлицитно овозможена со користење на опцијата и функцијата cost-data-inprogmem беше оневозможена, чекорот за поврзување не успеа, и покрај предупредувачката порака во која се наведува дека лошите податоци- in-config-mapped- Proem функцијата беше автоматски оневозможена, што не беше сосема точно. Функцијата const-data-in-config-mapped-proem сега е целосно оневозможена во оваа ситуација.
DFP се менува за правилен пристап до NVMCTRL (XCS-2848) Кодот за стартување за време на траење што го користат уредите AVR64EA не зеде предвид дека регистарот NVMCTRL е под заштита од промена на конфигурацијата (CCP) и не можеше да го постави IO SFR на страницата што ја користи компајлерот const-data-in configmapped-proem карактеристика. Промените направени во верзијата 2.2.55 на AVR-Ex_DFP ќе овозможат кодот за стартување за време на траење правилно да се запише во овој регистар.
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) покажувачи да бидат префрлени во списокот со аргументи на променливи кога е овозможена карактеристиката cost-data-in-proem. Аргументите кои беа покажувачи на меморијата на податоци се пренесуваа како 16-битни објекти, предизвикувајќи неуспех на кодот кога тие на крајот беа прочитани. Кога е овозможена карактеристиката против податоци-во-проем, сите аргументи на 16-битни покажувачи сега се претвораат во 24-битни покажувачи. Функциите на библиотеката strtoxxx не успеаја (XCS-2620) Кога беше овозможена функцијата const-data-in-proem, параметарот за внесување во функциите на библиотеката strtoxxx не беше правилно ажуриран за аргументите на изворната низа што не се во програмската меморија.
Известувања за неважечки фрлања (XCS-2612) Компајлерот сега ќе издаде грешка ако е овозможена функцијата cost-in-proem и адресата на стринг буквално е експлицитно пренесена во просторот за адреси на податоци (исфрлање на квалификаторот const), на пр.ample, (uint8 t *) „Здраво свет!“. Се појавува предупредување ако адресата може да биде неважечка кога покажувачот на податоци const е експлицитно фрлен во просторот за адреси на податоци.
Поставување на неиницијализирани конст објекти (XCS-2408) Неиницијализираните конст и конституционални објекти не се ставаа во програмската меморија на уредите што ја мапираат целата или дел од нивната програмска меморија во просторот за адреси на податоци. За овие уреди, таквите објекти сега се ставаат во програмската меморија, со што нивната работа е конзистентна со другите уреди.
Верзија 2.39 (Функционално безбедносно ослободување)
Никој.
Верзија 2.36
Грешка при одложување (XCS-2774) Малите промени во стандардните оптимизации на слободен режим спречија постојано преклопување на операндовите изрази на вградените функции за одложување, што резултираше со нив да се третираат како неконтактни и да се активира грешката: _buil tin avr delay_ cycles очекува ac ompile временска целобројна константа.
Верзија 2.35
Континуирана распределба користејќи _at (XCS-2653) Континуираната распределба на повеќе места на објекти во дел со исто име и користење на () не функционираше правилно. За прample: constchararrl [ ] at tri butte ((sect on(.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; цена char arr2[ ] at tri butte ((section(.my s eke”))) = {Oxen, Ox FE }; требаше да го постави arr2 веднаш по арил.
Одредување адреси за почеток на делот (XCS-2650) Опцијата -Wal, -section-start тивко не успеваше да постави делови на номинираната почетна адреса. Овој проблем е поправен за секциите со прилагодено име; сепак, нема да работи за ниеден стандарден дел, како на пр. текст или . bss, кој мора да биде поставен со користење на опцијата -Wl, -T.
Линкерот се урива кога се релаксира (XCS-2647) Кога оптимизацијата -релакс беше овозможена и имаше делови за код или податоци што не се вклопуваа во достапната меморија, поврзувачот падна. Сега, во таква околност, наместо тоа се издаваат пораки за грешка.
Лош 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) Повикување на верзијата на Windows на xc8-ar. 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-поврзувачот не успеа да додели меморија за приспособени делови на 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, можеби се појавила внатрешна грешка на компајлерот при оптимизирање на кодот.
Не е откриен прелевање на RAM меморија (XCS-1800, XCS-1796) Програмите што ја надминуваат достапната RAM меморија не беа откриени од компајлерот во некои ситуации, што резултираше со неуспех на кодот за извршување.
Испуштена флеш меморија (XCS-1792) За уредите avrxmega3 и avrtiny, делови од флеш меморијата можеби се оставени непрограмирани од MPLAB X IDE.
Неуспех да се изврши главната (XCS-1788) Во некои ситуации кога програмата немаше дефинирани глобални променливи, кодот за стартување за време на траење не излезе и главната () функција никогаш не беше постигната.
Неточни информации за меморијата (XCS-1787) За уредите avrxmega3 и avrtiny, програмата со големина на avr известуваше дека податоците само за читање трошат RAM наместо програмска меморија.
Неправилно читање на програмската меморија (XCS-1783) Проектите компајлирани за уреди со програмска меморија мапирана во просторот за адреси на податоци и кои дефинираат објекти користејќи го макрото/атрибутот PROGMEM можеби ги прочитале овие објекти од погрешна адреса.
Внатрешна грешка со атрибути (XCS-1773) Настана внатрешна грешка ако сте ги дефинирале објектите на покажувачот со
_at () или атрибут() токени помеѓу името на покажувачот и дереференцираниот тип, на прample, char *
_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) Асамблерот avr-as можеби паднал кога компајлерот бил воден под Ubuntu 18.
Објектите не се исчистени (XCS-1752) Неиницијализираните објекти за времетраење на статичкото складирање можеби не се исчистени со кодот за стартување за време на траење.
Конфликтната спецификација на уредот е игнорирана (XCS-1749) Компајлерот не генерирал грешка кога се користеле повеќе опции за спецификација на уредот и означувале различни уреди.
Оштетување на меморијата со куп (XCS-1748) Симболот heap_ start беше погрешно поставен, што резултираше со можност обичните променливи да бидат оштетени од купот.
Грешка при преместување на поврзувачот (XCS-1739) Можеби е емитирана грешка при преместување на поврзувачот кога кодот содржел rjmp или rccal со цел на точно 4k бајти.
Верзија 2.00
Никој.
Познати прашања
Следниве се ограничувања во работата на компајлерот. Тоа може да се општи ограничувања за кодирање или
отстапувања од информациите содржани во упатството за корисникот. Етикетите во загради во насловот се идентификација на тој проблем во базата на податоци за следење. Ова може да биде од корист ако треба да контактирате со поддршката. Оние ставки што немаат ознаки се ограничувања што го опишуваат режимот на работа и кои веројатно ќе останат во сила трајно.
Интеграција на MPLAB X IDE
Интеграција на MPLAB IDE Ако компајлерот треба да се користи од MPLAB IDE, тогаш мора да инсталирате MPLAB IDE пред да го инсталирате компајлерот.
Генерирање на кодови
Неуспех во распределбата на PA меморија (XCS-2881) Кога се користат оптимизаторите за процедурална апстракција, поврзувачот може да пријави грешки во распределбата на меморијата кога големината на кодот е блиску до количината на достапна програмска меморија на уредот, иако програмата треба да може да одговара на достапниот простор.
Не толку паметен Smart-IO (XCS-2872) Функцијата smart-io на компајлерот ќе генерира валиден, но неоптимален код за функцијата спринт ако функцијата coast-data-in-proem е оневозможена или ако уредот го има целиот свој блиц мапиран во меморијата на податоци.
Уште помалку паметен Smart-IO (XCS-2869) Функцијата smart-io на компајлерот ќе генерира валиден, но неоптимален код кога ќе се користат и двете опции -floe и -fno-buil.
Неоптимално поставување податоци само за читање (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) Кога објектот е апсолутен на адресата на почетокот на RAM меморијата, а исто така се дефинирани неиницијализирани објекти, може да се активира грешка во поврзувачот.
ИД за кратко будење (XCS-2775) За уредите ATA5700/2, регистрите PHID0/1 се дефинирани само како широки 16 бита, наместо 32 бита.
Пад на поврзувачот при повикување симбол (XCS-2758) Поврзувачот може да се сруши ако се користи опцијата -merlad driver кога изворниот код повикува симбол што е дефиниран со помош на опцијата за поврзување -Wl, –defsym.
Неточна иницијализација (XCS-2679) Постои несовпаѓање помеѓу местото каде што почетните вредности за некои глобални/статички објекти со големина на бајт се сместени во податочната меморија и каде ќе се пристапи до променливите при извршување.
започна погрешно поставува празно (XCS-2652) Во случаи кога предметната низа за конверзија со наведеното () содржи она што се чини дека е број со подвижна запирка во експоненцијален формат и има неочекуван знак по знакот e, тогаш празната адреса, доколку е дадена, ќе покажува на знакот по е-то, а не самото е. За прample: наведено („hooey“, празно); ќе резултира со празно покажување на знакот x.
Лоши индиректни функциски повици (XCS-2628) Во некои случаи, повиците на функции направени преку функциски покажувач зачуван како дел од структурата може да не успеат.
strtof враќа нула за хексадецимални плови (XCS-2626) Функциите на библиотеката strtof () et al и scanf () et al, секогаш ќе конвертираат хексадецимален број со подвижна запирка што не одредува експонент на
нула. За прample: статор („Був“, &празен); ќе ја врати вредноста 0, а не 1.
Неточни пораки за советник за стек (XCS-2542, XCS-2541) Во некои случаи, предупредувањето на советникот за стек во врска со рекурзија или неодредено стек што се користи (можно преку употреба на alloca()) не се емитува.
Неуспех со дупликат код за прекин (XCS-2421) Онаму каде што повеќе од една функција за прекин има исто тело, компајлерот може да има излез за едната функција за прекин на другата. Ова ќе резултира со непотребно зачувување на сите регистри со откачени повици, а прекините ќе бидат овозможени дури и пред да се изврши епилогот на тековниот управувач со прекини, што може да доведе до откажување на кодот.
Const објекти кои не се во програмската меморија (XCS-2408) За проектите avrxmega3 и avertins, неидеалните конст објекти се ставаат во меморијата на податоци, иако предупредувањето сугерира дека се сместени во програмската меморија. Ова нема да влијае на уредите кои немаат програмска меморија мапирана во просторот за меморија на податоци, ниту пак ќе влијае на кој било објект што е иницијализиран.
Лош излез со неважечка патека DFP (XCS-2376) Ако компајлерот е повикан со неважечка патека DFP и „спецификација“ file постои за избраниот уред, компајлерот не го пријавува семејниот пакет на уреди што недостасува и наместо тоа ја избира „спецификацијата“ file, што потоа може да доведе до неважечки излез. „Спецификациите“ files можеби не се ажурирани со дистрибуираните DFP и биле наменети за употреба само со внатрешно тестирање на компајлерот.
Неоткриено преклопување на меморијата (XCS-1966) Компајлерот не го детектира мемориското преклопување на објектите направени апсолутно на адреса (преку на ()) и други објекти користејќи го спецификаторот секција () и кои се поврзани со истата адреса.
Неуспех со функциите на библиотеката и _meme (XCS-1763) Наречените лимбички float функции со аргумент во просторот за адреси _memo може да не успеат. Забележете дека библиотечните рутини се повикуваат од некои C оператори, така, на прampле, следниов код е засегнат: врати regFloatVar > memxFloatVar;
Ограничена лимбичка имплементација (AVRTC-731) За производите ATTiny4/5/9/10/20/40, стандардната имплементација на библиотеката C / Math во лимбик е многу ограничена или не е присутна.
Ограничувања на програмската меморија (AVRTC-732) Сликите на програмската меморија над 128 kb се поддржани од синџирот на алатки; сепак, постојат познати случаи на прекини на поврзувачот без релаксација и без корисна порака за грешка наместо да се генерираат потребните функциски никулци кога се користи опцијата -релакс.
Ограничувања на просторот за имиња (AVRTC-733) Именуваните адресни простори се поддржани од синџирот на алатки, предмет на ограничувањата споменати во делот за упатство за корисникот Квалификатори за специјални типови.
Временски зони На функциите на библиотеката претпоставуваат GMT и не поддржуваат локални временски зони, така што локалното време () ќе го врати истото време како gummite (), на пр.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 компајлер софтвер, компајлер софтвер, софтвер |