MICROCHIP - логотипMPLAB XC8 C Compiler Version 2.39 AVR MCU үчүн релиз эскертүүлөрү
Колдонуучунун колдонмосу

БУЛ ДОКУМЕНТ МИКРОЧЫП AVR ТҮЗМӨЛӨРҮН БҮГҮНДӨГӨН MPLAB XC8 C ТҮЗҮҮЧҮГҮНӨ ТИЕШЕЛҮҮ МААНИЛҮҮ МААЛЫМАТТЫ БАР. БУЛ ПРОГРАММАНЫ ИШТЕГЕНДИН АЛДЫНДА ОКУҢУЗ.
ЭГЕР СИЗ 8-БИТ PIC ТҮЗМӨЛӨРҮ ҮЧҮН КОМПИЛЬЯЕРДИ КОЛДОНСОҢУЗ, MPLAB XC8 C КОМПИЛИЯТЫНЫН PIC ДОКУМЕНТ ҮЧҮН ЧЫГАРЫЛУУ ЭСКЕРТҮҮЛӨРҮН КАРАҢЫЗ.

Бүттүview

1.1. Киришүү
Microchip MPLAB® XC8 C компиляторунун бул релизи бул компилятордун v2.36 релизине негизделген жана азыр Network Server Лицензиясын колдогон функционалдык коопсуздук компилятору.
1.2. Чыккан датасы
Бул компилятордун версиясынын расмий релиз датасы 27-январь 2022-жыл.
1.3. Мурунку версия
Мурунку MPLAB XC8 C компиляторунун версиясы 2.36, 25-жылдын 2022-январында чыгарылган.
1.4. Функционалдык коопсуздук боюнча колдонмо
MPLAB XC компиляторлору үчүн Функционалдык коопсуздук боюнча колдонмо сиз функционалдык коопсуздук лицензиясын сатып алганыңызда документтер пакетинде жеткиликтүү.
1.5. Компоненттик лицензиялар жана версиялар® ал MPLAB
AVR MCUs куралдары үчүн XC8 C Compiler GNU General Public License (GPL) астында жазылган жана таратылган, бул анын баштапкы коду эркин таратылып, жалпыга жеткиликтүү дегенди билдирет.
GNU GPL астындагы куралдардын баштапкы кодун Microchip'тен өзүнчө жүктөп алса болот webсайт. Сиз GNU GPLди орнотуу лицензияңыз.txt avr/doc каталогуңуздун подкаталогунда жайгашкан файлдан окуй аласыз. GPLдин негизин түзгөн принциптердин жалпы талкуусун бул жерден тапса болот.
Башкы файлдар, шилтемелөөчү скрипттер жана иштөө мезгилинин китепканалары үчүн берилген колдоо коду менчик код болуп саналат жана GPL астында камтылбайт.
Бул компилятор GCC 5.4.0 версиясынын, binutils 2.26 версиясынын ишке ашырылышы жана avr-libc 2.0.0 версиясын колдонот.
1.6. Системалык талаптар
MPLAB XC8 C компилятору жана ал колдонгон лицензиялоочу программалык камсыздоо ар кандай операциялык системалар үчүн жеткиликтүү, анын ичинде төмөнкүлөрдүн 64 биттик версиялары: Microsoft Windows 10 профессионалдык чыгарылыштары; Ubuntu 18.04; жана macOS 10.15.5. Windows үчүн экилик коддор кол коюлган. MacOS үчүн экилик коддуу кол коюлган жана нотариалдык жактан күбөлөндүрүлгөн.
Эгер сиз тармактык лицензия серверин иштетип жатсаңыз, компиляторлор колдогон операциялык системалары бар компьютерлер гана лицензия серверин жайгаштыруу үчүн колдонулушу мүмкүн. xclm 2.0 версиясынан тартып, тармактык лицензия серверин Microsoft Windows Server платформасында орнотууга болот, бирок лицензия сервери операциялык системанын сервердик версиясында иштеши керек эмес.
1.7. Түзмөктөр колдоого алынат
Бул компилятор релиз учурунда белгилүү болгон бардык 8-бит AVR MCU түзмөктөрүн колдойт. Караңыз (компилятордо avr_chipinfo.html каталог) бардык колдоого алынган түзмөктөрдүн тизмеси. Бул файлдар ошондой эле ар бир түзмөк үчүн конфигурация бит документинин жөндөөлөрүн тизмелейт.
1.8. Басылмалар жана лицензияны жаңыртуу
MPLAB XC8 компилятору лицензияланган (PRO) же лицензияланбаган (акысыз) продукт катары жандырылышы мүмкүн. Сиз компиляторду лицензиялоо үчүн активдештирүү ачкычын сатып алышыңыз керек. Лицензия Акысыз продуктка салыштырмалуу жогорку деңгээлдеги оптималдаштырууга мүмкүндүк берет. Лицензиясыз компилятор лицензиясыз чексиз иштетилет.
MPLAB XC8 Functional Safety компилятору Microchipден сатылып алынган функционалдык коопсуздук лицензиясы менен иштетилиши керек. Бул лицензиясыз компилятор иштебейт. Иштетилгенден кийин, сиз каалаган оптималдаштыруу деңгээлин тандап, компилятордун бардык мүмкүнчүлүктөрүн колдоно аласыз. MPLAB XC Functional Safety бул чыгарылыш
Compiler Network Server License колдойт.
Лицензия түрлөрү жана компиляторду лицензия менен орнотуу жөнүндө маалымат алуу үчүн MPLAB XC C Compilers (DS50002059) документин орнотуу жана лицензиялоону караңыз.
1.9. Орнотуу жана жандыруу
Ошондой эле бул компиляторго камтылган акыркы лицензия менеджери жөнүндө маанилүү маалымат алуу үчүн Миграция маселелери жана чектөөлөр бөлүмдөрүн караңыз.
MPLAB IDE колдонсоңуз, бул куралды орнотуудан мурун эң акыркы MPLAB X IDE 5.0 же андан кийинки версиясын орнотуңуз. Компиляторду орнотуудан мурун IDEден чыкыңыз. (Windows), (Linux) же (macOS) .exe .run .app компилятор орнотуучу тиркемесин иштетиңиз, мисалы, экрандагы көрсөтмөлөрдү аткарыңыз.
XC8-1.00.11403-windows.exe
Демейки орнотуу каталогу сунушталат. Эгерде сиз Linux колдонуп жатсаңыз, компиляторду терминал аркылуу жана түпкү каттоо эсебинен орнотуу керек. Администратор артыкчылыктары бар macOS каттоо эсеби аркылуу орнотуңуз.
Иштетүү азыр орнотуу үчүн өзүнчө жүргүзүлөт. Көбүрөөк маалымат алуу үчүн MPLAB® XC C Compilers (DS52059) үчүн License Manager документин караңыз.
Эгерде сиз компиляторду баалоо лицензиясынын алкагында иштетүүнү тандасаңыз, баалоо мезгили аяктагандан кийин 14 күндүн ичинде сиз компиляция учурунда эскертүү аласыз. Эгер сиз HPA жазылууңуз аяктагандан кийин 14 күндүн ичинде болсоңуз, ошол эле эскертүү берилет.
XC Network License Server өзүнчө орнотуучу жана бир колдонуучу компиляторду орнотуучуга кирбейт.
XC License Manager азыр калкыма тармак лицензияларынын роумингин колдойт. Мобилдик колдонуучуларга багытталган бул функция калкып жүрүүчү лицензияга тармактан кыска убакытка чыгууга мүмкүндүк берет. Бул функцияны колдонуу менен, сиз тармактан ажыратып, дагы эле MPLAB XC компиляторду колдоно аласыз. Бул функция тууралуу көбүрөөк билүү үчүн XCLM орнотуусунун документ папкасын караңыз.
MPLAB X IDE роумингди визуалдык башкаруу үчүн Лицензиялар терезесин (Куралдар > Лицензиялар) камтыйт.

1.9.1. Орнотуу маселелерин чечүү
Эгерде сиз Windows операциялык системаларынын кайсынысы болбосун компиляторду орнотууда кыйынчылыктарга туш болсоңуз, төмөнкү сунуштарды колдонуп көрүңүз.

  • Орнотууну администратор катары иштетиңиз.
  • Орнотуучу колдонмонун уруксаттарын "Толук башкарууга" коюңуз. (Файлды оң баскыч менен чыкылдатыңыз, "Касиеттер", "Коопсуздук" өтмөгү, колдонуучуну тандаңыз, түзөтүңүз.)
  • Убактылуу папкага уруксаттарды “Толук башкаруу!
  • Убактылуу папканын жайгашкан жерин аныктоо үчүн Run буйругун териңиз (Windows логотип баскычы + R). %temp% Бул ошол каталогду көрсөткөн файл изилдөөчүнүн диалогун ачат жана ал папканын жолун аныктоого мүмкүндүк берет.

1.10. Compiler Documentation

MICROCHIP MPLAB XC8 C Compiler Version 2.39 AVR MCU үчүн релиз эскертүүлөрү - документСкриншотто көрсөтүлгөндөй, MPLAB X IDE панелиндеги көк жардам баскычын басканда, компилятордун колдонуучу колдонмолорун браузериңизде ачылуучу HTML барагынан ачууга болот.
Эгер сиз 8 биттик AVR максаттары үчүн куруп жатсаңыз, AVR үчүн MPLAB® XC8 C Compiler Колдонуучунун® колдонмосу
MCU бул архитектурага тиешелүү компилятордун параметрлери жана функциялары жөнүндө маалыматты камтыйт.

1.11. Кардарларды колдоо кызматы
Микрочип бул компилятордун версиясына байланыштуу мүчүлүштүктөрдүн отчетторун, сунуштарын же комментарийлерин кабыл алат. Колдоо системасы аркылуу мүчүлүштүктөр тууралуу кабарларды же функция сурамдарын багыттаңыз.

Документация жаңыртуулары

MPLAB XC8 документтеринин онлайн жана заманбап версиялары үчүн Microchip's Online сайтына кириңиз.
Техникалык документация webсайт.
Бул чыгарылыштагы жаңы же жаңыртылган AVR документтери:
MPLAB® XC C Compilers (DS50002059) версиясын орнотуу жана лицензиялоо L
Microchip Unified Standard Library Reference Guide микрочиптин бирдиктүү стандарттык китепканасы тарабынан аныкталган функциялардын жүрүм-турумун жана интерфейсин, ошондой эле китепкана түрлөрүн жана макросторду максаттуу пайдаланууну сүрөттөйт. Бул маалыматтын кээ бирлери мурда AVR үчүн MPLA® XC8 C Compiler User!s Guide® камтылган.
MCU. Түзмөккө тиешелүү китепкана маалыматы дагы эле бул компилятор колдонмосунда камтылган.
Hexmate Колдонуучунун колдонмосу бул чыгарылыштагы каталогго киргизилген. Бул колдонмо Hexmate өз алдынча тиркеме катары иштеткен документтер үчүн арналган.
Кийинки бөлүмдөр компилятор менен кошо берилген колдонуучунун колдонмолорунда табылган оңдоолорду жана кошумча маалыматты берет.

2.1. smart-io-формат опциясы
-msmart-io-format=fmt fmt опциясы, мында форматталган IO конверсиясынын спецификацияларын камтыган сап, тизмеленген спецификациялар акылдуу IO функциялары тарабынан колдонулуп жатканын компиляторго кабарлайт.
Коддун өлчөмүн азайтуу үчүн, компилятор бул функцияларга бардык чалуулар боюнча чогултулган формат саптарында бар конверсия спецификацияларынын негизинде акылдуу IO функцияларынын басып чыгаруу жана сканерлөө үй-бүлөлөрү менен байланышкан китепкана кодун ыңгайлаштырат. Бул функция толугу менен автоматтык жана аны өчүрүүгө болбойт.
Кээ бир учурларда, компилятор форматталган IO функциясынын чакыруусунан колдонуу маалыматын аныктай албайт. Эгер опция колдонулган болсо, бул функциялар үчүн керектүү конвертациялоо спецификациялары саптан алынат; антпесе, компилятор -msmart-io-format=fmt fmt функциялары кандайча колдонулуп жатканы жөнүндө эч кандай божомолдорду жасабайт жана толугу менен форматталган IO функциялары программанын акыркы сүрөтү менен байланыштырылышын камсыздайт.
Мисалы үчүнampле, акылдуу IO функцияларына төмөнкү чалууларды карап көрүңүз.

vscanf(“%d:%li”, va_list1);
vprintf(“%-s%d”, va_list2);
vprintf(fmt1, va_list3);// түшүнүксүз колдонуу
vscanf(fmt2, va_list4);// түшүнүксүз колдонуу

Акыркы эки чалууну иштетип жатканда, компилятор формат саптарынан да, аргументтерден да колдонуу маалыматын чыгара албайт. Мындай учурларда, -msmart-io-format опциясын колдонсо болот жана мүмкүн болушунча оптималдуу форматталган I0 функцияларын түзүүгө мүмкүндүк берет, ошентип программанын код өлчөмүн азайтат. Мисалы үчүнample, эгерде fmtl жана fmt2 көрсөткөн формат саптары чогуу "%d", "%i" жана " % s" конвертациялоо спецификаторлорун гана колдонсо, -msmart-io-format=fmt="%d%i%s ” вариантын чыгаруу керек.

Реңк саптары ар кандай жарактуу конверсия спецификациясын, анын ичинде желектерди жана модификаторлорду камтышы мүмкүн (мисалыample “%-13. 91s”) жана колдонулушу эки ача болгон функциялар тарабынан колдонулгандарды так чагылдырышы керек. спецификацияны киргизбөө бит форматталган I0 функциялары тарабынан колдонулган аргумент коддун бузулушуна алып келиши мүмкүн.
Эгерде fmt бош сап болсо же эч кандай көрүнүктүү өзгөртүү спецификациясын камтыса, эскертүү берилип, толук функционалдык форматталган I0 функциялары программанын акыркы сүрөтүнө байланыштырылган.
Бул параметр буйрук сабында бир нече жолу колдонулушу мүмкүн. Ар бир вариантта колдонулган конверсиянын спецификациялары топтолгон.

2.2. omit-frame-pointer Опция
– f omit- кадр-көрсөткүч опциясы компиляторго стектеги объекттерге жетүү үчүн стек көрсөткүчүн түздөн-түз колдонууну жана мүмкүн болсо кадр регистрин сактаган, инициализациялоочу жана калыбына келтирүүчү кодду өткөрүп жиберүүнү буйруйт. Ал бардык нөл эмес оптималдаштыруу деңгээлдеринде автоматтык түрдө иштетилет.
Опцияны жокко чыгаруу, -fno-omit- кадр көрсөткүчүн колдонуу, оптималдаштырылган кодду оңдоого жардам берет; бирок бул параметр кадр көрсөткүчү дайыма колдонула тургандыгына кепилдик бербейт.

2.3. unroll-loops Жолдор
– funrol I-циклдери жана -(unroll-all-loops опциялары циклдердеги бутактануу кечигүүлөрүн алып салууга аракет кылган ылдамдыкка багытталган оптималдаштырууну көзөмөлдөйт. Ачылган циклдер, адатта, чоңураак код өлчөмүнүн эсебинен түзүлгөн коддун аткарылуу ылдамдыгын жогорулатат.
– funrol I-loops опциясы циклдерди ачат, мында итерациялардын санын компиляция убагында же код циклге киргенде аныктоого болот. -funroll-all-loops опциясы агрессивдүү, бардык циклдерди, атүгүл итерациялардын саны белгисиз болсо дагы. Аткаруу ылдамдыгын жакшыртууда адатта – funrol 1-loops опциясына караганда азыраак эффективдүү.

2.4. май-Ito-объекттери Опция
– f fat-1 to-obj ects опциясы компилятор май объектисин түзүүнү суранат files, алар экөөнү тең камтыйт
объект коду жана GIMPLE (GCC ички өкүлчүлүктөрүнүн бири), уникалдуу ELF бөлүмдөрүнө жазылган. Мындай объектилер files -flto опциясы тарабынан көзөмөлдөнгөн стандарттык шилтеме убактысын оптимизатору колдонгон жана колдонбогон долбоорлор менен байланыштыра турган китепкана коду үчүн пайдалуу.
Бул параметрдин – fno-fat-lto-objects формасы, эгерде эч кандай параметр көрсөтүлбөсө, демейки болуп саналат, объекттин кодун объектке киргизүүнү басат fileс, натыйжада тезирээк куруу. Бирок, мындай объект files ар дайым стандарттуу шилтеме убактысын оптималдаштыруучу аркылуу байланыштырылышы керек.

2.5. Ito-бөлүм опциясы
The – flto-partiti on=a Igo ri thm параметр объектти бөлүү үчүн колдонулган алгоритмди башкарат files шилтеме-убакыт оптималдаштыруучу иштеп жатканда. Аргументи эч ким бөлүүнү толугу менен өчүрбөйт жана шилтеме убактысын оптималдаштыруу кадамын түздөн-түз программанын бүт анализи (WPA) фазасынан аткарат. Иштөөнүн бул режими чоңураак компилятордун эс тутумунун талаптарынын жана куруу убактысынын узактыгынын эсебинен эң оптималдуу натыйжаларды берет, бирок бул кичинекей программаларда көйгөй болушу күмөн. Объектти бөлүү fileлар куруу ишин жакшыртат. Биринчи аргумент так бир бөлүм колдонулушу керек экенин, ал эми lto1 аргументи түпнуска булак тарабынан айтылгандарды чагылдырган бөлүүнү белгилейт. fileс. Демейки аргумент тең салмактуу, ал мүмкүн болгондо бирдей өлчөмдөгү бөлүктөргө бөлүүнү аныктайт.

2.6. 3.6.11 Бөлүмүнө кошумча Карталанган шилтемелердин параметрлери
-wl, – бөлүм-старт =сек tion=addr -wl компилятор драйверинин опциясын колдонуу менен жеткиликтүү болгон кеңири колдонулган шилтемелердин параметрлеринин таблицасында жок. Бул параметр көрсөтүлгөн дарекке ылайыкташтырылган бөлүмдөрдү жайгаштырууга мүмкүндүк берет. Аны стандарттык бөлүмдөрдү жайгаштыруу үчүн колдонууга болбойт, мисалы ( . data, . BSS, . текст), ал -wl, -'r опциясын колдонуу менен жайгаштырылышы керек.

2.7. 4.14.2 Бөлүмгө түзөтүү Бөлүнгөн бөлүмдү өзгөртүү жана байланыштыруу
Колдонуучунун колдонмосунун бул бөлүмүндө камтылган маалыматка каршы, бул релиздеги компиляторго киргизилген өзгөртүүлөр эми ыңгайлаштырылган бөлүмдөрдү -w1, – секта ион- start=section=acicir параметр жана шилтеме скрипт өзгөртүүсүз.

Эмне жаңылык

Төмөнкү жаңы AVR максаттуу өзгөчөлүктөрү азыр компилятор колдойт. Почтачалардагы версия номери кийинки функцияларды колдоо үчүн компилятордун биринчи версиясын көрсөтөт.

3.1. Версия 2.39 (Функционалдык коопсуздук релизи)
Network Server License MPLAB XC8 Functional Safety Compiler бул релиз Network Server License колдойт.

3.2. Версия 2.36 
Жок.
3.3. Версия 2.35 
Жаңы түзмөктү колдоо төмөнкү AVR бөлүктөрү үчүн жеткиликтүү: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 жана AVR64DD32.
Жакшыртылган контекстти которуу Жаңы -mcall-isr-prologues опциясы үзгүлтүккө учуроо функцияларынын регистрлерди киргизүүдө кантип сактай турганын жана үзгүлтүккө учуратуу тартиби аяктаганда ал регистрлер кантип калыбына келтирилерин өзгөртөт. Бул -mcall-prologues опциясына окшош иштейт, бирок үзгүлтүккө учуратуу функцияларына (ISRs) гана таасир этет.
Контекстти которуу дагы жакшырды жаңы -mgas-isr-прологдор параметр кичинекей үзгүлтүккө учуратуу кызмат көрсөтүүлөрү үчүн түзүлгөн контексттик которуштуруу кодун көзөмөлдөйт. Иштетилгенде, бул функция ассемблер реестрди колдонуу үчүн ISRди сканерлейт жана керек болсо, бул колдонулган регистрлерди гана сактайт.
Конфигурациялануучу флэш-карталоо AVR DA жана AVR DB үй-бүлөсүндөгү кээ бир түзмөктөрдө SFR (мисалы, FLMAP) бар, ал программа эстутумунун кайсы 32к бөлүгү маалымат эстутумуна түшүрүлөөрүн аныктайт. Жаңы - mconst-data-in-config-mapped-progmem опциясы шилтеме берүүчүнүн бардык минус t-квалификациялуу берилиштерин бир 32k бөлүмгө жайгаштыруу үчүн колдонулушу мүмкүн жана бул маалыматтардын маалыматтарга дал келишин камсыз кылуу үчүн тиешелүү SFR реестрин автоматтык түрдө инициализациялоо эстутум мейкиндиги, анда ал натыйжалуураак жеткиликтүү болот.

Микрочиптин бирдиктүү стандарттык китепканалары Бардык MPLAB XC компиляторлору Микрочиптин бирдиктүү стандарттык китепканасын бөлүшүшөт, ал азыр MPLAB XC8 бул чыгарылышында жеткиликтүү. The MPLAB® XC8 C компилятору
AVR үчүн Колдонуучунун колдонмосу® MCU мындан ары бул стандарттык функциялар үчүн документтерди камтыйт. Бул маалыматты азыр тапса болот Microchip Unified Standard Library Reference Guide. Мурда avr-libc тарабынан аныкталган айрым функциялар мындан ары жеткиликсиз экенин эске алыңыз. (Караңыз Китепкананын функциялары.)
Smart I0 Жаңы бирдиктүү китепканалардын бир бөлүгү катары printf жана scanf үй-бүлөлөрүндөгү JO функциялары азыр бул функциялардын программада кандайча колдонулушунун негизинде ар бир түзүүдө жекече түзүлөт. Бул программа тарабынан колдонулган ресурстарды олуттуу кыскарта алат.
Smart I0 жардам опциясы Акылдуу I0 функцияларына (мисалы, printf () же scanf ()) чалууларды талдоодо, компилятор формат саптарынан дайыма аныктай албайт же аргументтерден чалууга талап кылынган конверсия спецификаторлорун чыгара албайт. Мурда, компилятор ар дайым эч кандай божомолдорду жасачу эмес жана программанын акыркы сүрөтү менен толук иштеген 10 функциянын байланышын камсыздайт. Жаңы – msma rt-io- format=fmt опциясы кошулду, андыктан компилятор анын ордуна акылдуу I0 функциялары тарабынан колдонулган конверсия спецификаторлорунун колдонуучусу тарабынан маалымдалышы үчүн, алардын колдонулушу бүдөмүк болуп, ашыкча узун 10 процедуранын байланыштырылышына жол бербейт. (Караңыз smart-io-формат Көбүрөөк маалымат алуу үчүн опция.)
Ыңгайлаштырылган бөлүмдөрдү жайгаштыруу Мурда -W1, –section-start опциясы шилтеме берүүчү скрипт ошол эле аталыштагы чыгаруу бөлүмүн аныктаганда гана көрсөтүлгөн бөлүмдү суралган дарекке жайгаштырчу. Андай болбогондо, бөлүм шилтеме берүүчү тандаган дарекке жайгаштырылып, параметр негизинен этибарга алынбай калган. Эми параметр шилтеме берүүчү скрипт бөлүмдү аныктабаса дагы, бардык ыңгайлаштырылган бөлүмдөр үчүн урматталат. Бирок, стандарттык бөлүмдөр үчүн, мисалы, . текст, . bss же . маалыматтар, мыкты ылайыктуу бөлүштүргүч дагы эле алардын жайгаштырылышын толук көзөмөлдөйт жана параметр эч кандай натыйжа бербейт. -wl колдонуңуз, -Tsection=addr колдонуучунун колдонмосунда сүрөттөлгөндөй параметр.

3.4. Версия 2.32
Стек жетектөөчүсү PRO компилятордун лицензиясы менен жеткиликтүү, компилятордун стек багыттоо өзгөчөлүгү программа тарабынан колдонулган ар кандай стектин максималдуу тереңдигин баалоо үчүн колдонулушу мүмкүн. Ал программанын чалуу графигин түзөт жана талдайт, ар бир функциянын стектин колдонулушун аныктайт жана программа тарабынан колдонулган стектердин тереңдигин аныктоого боло турган отчетту түзөт.
Бул өзгөчөлүк -mchp-stack- колдонуу буйрук сабы опциясы аркылуу иштетилген. Стекти колдонуунун корутундусу аткарылгандан кийин басылып чыгат. Картада деталдуу стек отчету бар file, бул кадимки жол менен суралышы мүмкүн.
Жаңы түзмөктү колдоо төмөнкү AVR бөлүктөрү үчүн жеткиликтүү: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTNY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32, AVR28DB64 жана AVR32DB32.
Төмөнкү AVR бөлүктөрү үчүн артка алынган түзмөктү колдоо Колдоо мындан ары жеткиликсиз: AVR 16DA28, AVR16DA32 жана AVR16DA48.

3.5. Версия 2.31 Жок.
3.6. Версия 2.30
Маалыматтарды инициализациялоону болтурбоо үчүн жаңы опция Жаңы -mno-data-init драйвери опциясы маалыматтарды инициализациялоону жана BSS бөлүмдөрүн тазалоону алдын алат. Ал ассамблеядагы do_copy_data жана do_clear_bss символдорунун чыгышын басуу менен иштейт files, бул өз кезегинде байланыштыруучу тарабынан ошол тартиптердин киргизилишине жол бербейт.
Өркүндөтүлгөн оптималдаштыруу Оптималдаштыруунун бир катар жакшыртуулары жасалды, анын ичинде ашыкча кайтаруу нускамаларын алып салуу, эгер бит болсо өткөрүп жиберүү инструкциясынан кийинки кээ бир секирүүлөрдү алып салуу жана жакшыртылган процедуралык абстракция жана бул процессти кайталоо мүмкүнчүлүгү.
Кошумча опциялар азыр бул оптималдаштыруунун кээ бирлерин башкаруу үчүн жеткиликтүү, атап айтканда -fsection-anchors, бул статикалык объекттерге бир символго карата аткарылууга мүмкүндүк берет; -мпа-итерациялар =n, процедуралык абстракция итерацияларынын санын демейки 2ден өзгөртүүгө мүмкүндүк берет; жана, -mpa-callcost-shortcal 1, ал дагы агрессивдүү процедуралык абстракцияны аткарат, шилтеме берүүчү узак чалууларды эс алат деген үмүттө. Бул акыркы параметр, эгерде негизги божомолдор аткарылбаса, коддун өлчөмүн көбөйтүүгө болот.
Жаңы түзмөк колдоо Колдоо төмөнкү AVR бөлүктөрү үчүн жеткиликтүү: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128, AVR28, AVR128DB32 128DB48.
Тартылган түзмөктү колдоо Төмөнкү AVR бөлүктөрүн колдоо мындан ары жеткиликтүү эмес: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, ATA664251ATAXNUMX жана.

3.7. Версия 2.29 (Функционалдык коопсуздук релизи)
Header file компилятордун бунттери үчүн Компилятор MISRA сыяктуу тил спецификацияларына шайкеш келишин камсыз кылуу үчүн баш fileтарабынан автоматтык түрдө кошулат , жаңыртылган. Бул аталышта курулган in_avr_nop ( ) жана _builtin_avr_delay_cycles () сыяктуу бардык орнотулган функциялардын прототиптери камтылган. Кээ бир орнотулган жабдыктар MISRAга туура келбеши мүмкүн; аларды компилятордун буйрук сабына аныктоо XC_STRICT MISRA кошуу менен өткөрүп жиберсе болот. Орнотулган орнотмолор жана алардын декларациялары белгиленген тууралык түрлөрүн колдонуу үчүн жаңыртылган.

3.8. Версия 2.20
Жаңы түзмөк колдоо Колдоо төмөнкү AVR бөлүктөрү үчүн жеткиликтүү: ATTINY 1624, ATTINY1626 жана ATTINY 1 627.
Жакшыраак туура бөлүштүрүү Компилятордогу эң туура бөлүштүргүч (BFA) жакшыртылды, андыктан бөлүмдөр жакшыраак оптималдаштырууга мүмкүндүк берүүчү тартипте бөлүнөт. BFA азыр аталган дарек мейкиндиктерин колдойт жана маалыматтарды инициализациялоону жакшыраак иштетет.
Жакшыртылган процедуралык абстракция Процедуралык абстракцияны оптималдаштыруу азыр көбүрөөк код ырааттуулугунда аткарылды. Бул оптималдаштыруу коддун көлөмүн көбөйтүшү мүмкүн болгон мурунку жагдайлар оптималдаштыруу кодун шилтемечинин таштанды чогултуу процессинен кабардар кылуу менен чечилген.
AVR Ассамблеясынын жоктугу AVR Assembler мындан ары бул бөлүштүрүүгө кошулбайт. 3.9. Версия 2.19 (Функционалдык коопсуздук Чыгаруу)
Жок.
3.10. Версия 2.10
Code Coverage Бул чыгарылыш долбоордун баштапкы коду канчалык деңгээлде аткарылганын анализдөөгө көмөктөшүүчү кодду камтуу өзгөчөлүгүн камтыйт. Аны иштетүү үчүн -mcodecov=ram параметрин колдонуңуз. Аппараттык жабдыңызда программа аткарылгандан кийин, коддун камтуу маалыматы аппаратта чогултулат жана бул MPLAB X IDE тарабынан код камтуу плагини аркылуу өткөрүлүп берилиши жана көрсөтүлүшү мүмкүн. Бул плагин жөнүндө маалымат алуу үчүн IDE документтерин караңыз.
#pragma nocodecov кийинки функцияларды камтуу талдоосунан чыгарып салуу үчүн колдонулушу мүмкүн. Идеалында прагма башында кошулушу керек file муну толугу менен жокко чыгаруу үчүн file камтуу талдоосунан. Же болбосо, _attribute_ ( (nocodecov)) камтуу талдоосунан белгилүү бир функцияны алып салуу үчүн колдонулушу мүмкүн.
Түзмөктүн сүрөттөмөсү files Жаңы аппарат file avr_chipinfo.html деп аталган документтин каталогунда жайгашкан

компилятордун бөлүштүрүлүшү. Бул file компилятор тарабынан колдоого алынган бардык түзмөктөрдүн тизмеси. Түзмөктүн атын чыкылдатыңыз жана ал ошол түзмөк үчүн бардык уруксат берилген конфигурация бит жөндөөлөрүн/маани жуптарын көрсөткөн баракты ачат.amples.

Процедуралык абстракция Процедуралык абстракцияны оптималдаштыруу, ал блоктун чыгарылып алынган көчүрмөсүнө чакыруулар менен монтаждык коддун жалпы блокторун алмаштыруучу компиляторго кошулду. Булар өзүнчө тиркеме тарабынан аткарылат, ал 2, 3 же деңгээлди тандоодо компилятор тарабынан автоматтык түрдө чакырылат. s оптималдаштыруу. Бул оптималдаштыруу коддун өлчөмүн азайтат, бирок алар аткаруу ылдамдыгын жана коддун мүчүлүштүктөрүн оңдоону азайтышы мүмкүн.
Процедуралык абстракцияны -mno-pa опциясын колдонуу менен оптималдаштыруунун жогорку деңгээлдеринде өчүрсө болот же -mpa аркылуу төмөнкү оптималдаштыруу деңгээлдеринде (лицензияңызга жараша) иштетилиши мүмкүн. Ал объект үчүн өчүрүлүшү мүмкүн file -mno-pa-on-f ile = колдонууfileаты, же -mno-pa-onfunotion=f колдонуу менен функция үчүн өчүрүлгөн unction.
Булак кодуңуздун ичинде процедуралык абстракцияны функциянын аныктамасы менен attribute_ ( (nopa) ) колдонуу менен же _attribute_ ( (nopa, noinline) ) чейин кеңейген nopa колдонуу менен функция үчүн өчүрүүгө болот жана ошентип функцияны киргизүүнүн ишке ашуусуна жол бербейт. жана ички коддун абстракциясы бар.
Прагмада бит колдоосун бекитүү #pragma конфигурациясын эми AVR кулпу биттерин, ошондой эле башка конфигурация биттерин көрсөтүү үчүн колдонсо болот. avr_chipinfo.html дарегин текшериңиз file (жогоруда айтылган) бул прагма менен колдонуу үчүн жөндөө/баа жуптары үчүн.
Жаңы түзмөк колдоо Колдоо төмөнкү бөлүктөр үчүн жеткиликтүү: AVR28DAl28, AVR64DAl28, AVR32DAl28 жана AVR48DAl28.

3.11. Версия 2.05
Сиздин акча үчүн көбүрөөк бит Бул компилятордун жана лицензия менеджеринин macOS версиясы азыр 64 биттик колдонмо болуп саналат. Бул компилятордун MacOSтун акыркы версияларында эскертүүсүз орнотулуп, иштешин камсыздайт.
Программанын эсиндеги Const объекттери Эми компилятор конст-квалификациялуу объекттерди оперативдүү эс тутумда эмес, программанын Flash эс тутумуна жайгаштыра алат. Компилятор cons t-квалификациялуу глобалдык маалыматтар программанын флеш эсинде сакталышы жана бул маалыматтарга тиешелүү программалык эстутум инструкциялары аркылуу түз жана кыйыр түрдө кирүүгө болот деп өзгөртүлгөн. Бул жаңы функция демейки боюнча иштетилген, бирок -mno-const-data-in-progmem опциясын колдонуу менен өчүрүүгө болот. avrxmega3 жана avrtiny архитектуралары үчүн бул функция талап кылынбайт жана ар дайым өчүрүлөт, анткени программанын эс тутуму бул түзмөктөр үчүн маалымат даректер мейкиндигине түшүрүлгөн.
Стандарттык акысыз Бул компилятордун лицензияланбаган (акысыз) версиялары эми 2-деңгээлге чейин оптималдаштырууга мүмкүндүк берет. Бул стандарттык лицензияны колдонуу менен мурда мүмкүн болгон нерсеге окшош болбосо да, чыгарууга мүмкүндүк берет.
Кош келиңиз AVRASM2 2 биттик түзүлүштөр үчүн AVRASM8 ассемблери азыр XC8 компиляторду орнотуучуга киргизилген. Бул ассемблер XC8 компилятору тарабынан колдонулбайт, бирок кол менен жазылган монтаж булагына негизделген долбоорлор үчүн жеткиликтүү.
Жаңы түзмөк колдоо Колдоо төмөнкү бөлүктөр үчүн жеткиликтүү: ATMEGA1608, ATMEGA 1609, ATMEGA808, жана ATMEGA809.

3.12. Версия 2.00
Жогорку деңгээлдеги айдоочу xc8 -cc деп аталган жаңы драйвер, азыр мурунку avr-gcc драйверинин жана xc8 драйверинин үстүндө отурат жана ал максаттуу түзмөктү тандоонун негизинде тиешелүү компиляторду чакыра алат. Бул драйвер GCC стилиндеги варианттарды кабыл алат, алар аткарылып жаткан компиляторго которулат же ага өткөрүлүп берилет. Бул драйвер каалаган AVR же PIC буталары менен окшош семантикалуу варианттардын окшош топтомун колдонууга мүмкүндүк берет жана ошондуктан компиляторду чакыруунун сунушталган жолу болуп саналат. Зарыл болсо, эски avr-gcc драйверин мурунку компилятор версияларында кабыл алган эски стилдеги опцияларды колдонуу менен түз чакырса болот.
Common C Interface Бул компилятор эми MPLAB Common C Interface менен шайкеш келиши мүмкүн, бул баштапкы кодду бардык MPLAB XC компиляторлору аркылуу оңой көчүрүүгө мүмкүндүк берет. -mext=cci параметри көптөгөн тил кеңейтүүлөрү үчүн альтернативдүү синтаксисти иштетип, бул функцияны сурайт.
Жацы китепканачы шофёр А жаңы китепканачы айдоочусу мурунку PIC китепканачысынын жана AVR avr-ar китепканачысынын үстүндө жайгашкан. Бул драйвер GCC-архивдөөчү стилиндеги варианттарды кабыл алат, алар же которулуп жаткан китепканачыга өткөрүлүп берилет. Жаңы драйвер кандайдыр бир PIC же AVR китепканасын түзүү же манипуляциялоо үчүн окшош семантика менен окшош варианттардын топтомун колдонууга мүмкүндүк берет file Ошентип, китепканачыны чакыруунун сунушталган жолу. Эгерде эски долбоорлор үчүн талап кылынса, мурунку китепканачыны түз эле мурунку компилятордун версияларында кабыл алган эски стилдеги варианттарды колдонуу менен чакырса болот.

Миграция маселелери

Төмөнкү функциялар азыр компилятор тарабынан башкача иштетилет. Кодду ушул компилятордун версиясына көчүрсө, бул өзгөртүүлөр баштапкы кодуңузга өзгөртүүнү талап кылышы мүмкүн. Почтачалардагы версиянын номери кийинки өзгөртүүлөрдү колдоо үчүн компилятордун биринчи версиясын көрсөтөт.

4.1. Версия 2.39 (Функционалдык коопсуздук релизи)
Жок.
4.2. Версия 2.36 Жок.
4.3. Версия 2.35
Саптан базаларды иштетүү (XC8-2420) Башка XC компиляторлору менен ырааттуулукту камсыз кылуу үчүн, XC8 string-to strtol () ж.б. сыяктуу функциялар, эгерде көрсөтүлгөн база 36дан чоң болсо, мындан ары киргизүү сапты түрлөөгө аракет кылбайт жана анын ордуна errno дегенди EINVAL деп коёт. C стандарты жүрүм-турумун аныктабайт бул базалык маани ашканда функциялар.
Ылдамдыкты туура эмес оптималдаштыруу 3-деңгээлдеги оптималдаштырууну тандоодо процедуралык абстракцияны оптималдаштыруу иштетилип жаткан (-03). Бул оптималдаштыруу коддун ылдамдыгынын эсебинен коддун өлчөмүн азайтат, андыктан аткарылбашы керек болчу. Бул оптималдаштыруу деңгээлин колдонгон долбоорлор бул чыгарылыш менен курулганда коддун өлчөмү жана аткаруу ылдамдыгы боюнча айырмачылыктарды көрүшү мүмкүн.
Китепкананын иштеши Көптөгөн стандарттык C китепкана функцияларынын коду азыр Microchipтин Бирдиктүү Стандарттык китепканасынан алынган, ал кээ бир жагдайларда мурунку avr-libc китепканасы бергенге салыштырмалуу башкача жүрүм-турумун көрсөтүшү мүмкүн. Мисалы үчүнample, мындан ары 1printf flt китепканасына (-1printf_flt опциясы) сүзүү форматынын спецификаторлору үчүн форматталган I0 колдоосун күйгүзүү зарыл эмес. Микрочиптин бирдиктүү стандарттык китепканасынын акылдуу 10 өзгөчөлүгү бул параметрди ашыкча кылат. Кошумчалай кетсек, флеште const саптарында иштеген сап жана эстутум функциялары (мисалы, strcpy_P ( ) ж.б.) үчүн _P суффикстүү процедураларды колдонуунун кереги жок. Стандарттык C процедуралары (мисалы, strcpy 0) программанын эс тутумундагы const-дата-дата функциясы иштетилгенде, мындай маалыматтар менен туура иштейт.

4.4. Версия 2.32
Жок.
4.5. Версия 2.31
Жок.
4.6. Версия 2.30
Жок.
4.1. Версия 2.29 (Функционалдык коопсуздук релизи)
Жок.
4.2. Версия 2.20
DFP макети өзгөртүлдү. Эми компилятор DFP (Түзмөктүн үй-бүлөлүк топтомдору) колдонгон башка макетти болжолдойт. Бул эски DFP бул чыгарылыш менен иштебей калышы мүмкүн жана эски компиляторлор эң акыркы DFPдерди колдоно албай калат дегенди билдирет.

4.3. Версия 2.19 (Функционалдык коопсуздук релизи)
Жок.
4.4. Версия 2.10 Жок
4.5. Версия 2.05
Программанын эс тутумундагы Const объекттери Демейки боюнча, const-квалификациялуу объекттер программанын эсине жайгаштырылат жана аларга кирүүгө болот (аныкы сүрөттөлгөндөй). Бул сиздин долбоордун көлөмүнө жана аткаруу ылдамдыгына таасир этет, бирок RAM колдонууну азайтышы керек. Бул функцияны, керек болсо, -mnocons t-data-in-pr ogmem опциясын колдонуу менен өчүрсө болот.

4.6. Версия 2.00
Конфигурация сактагычтары Эми прибор конфигурациясынын сактагычтарын конфигурациялоо прагмасы аркылуу программалаштырылышы мүмкүн, андан кийин сактагычтын абалын көрсөтүү үчүн маани жуптары коюлат, мисалы #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
Абсолюттук объекттер жана функциялар Объекттерди жана функцияларды эми CCI _ колдонуу менен эстутумдагы белгилүү бир дарекке жайгаштырса болот.at (дареги) спецификатор, мисалыampле:
ifinclude
int foobar (0)0300100);
char at(0x250) getID(int offset) ( Бул спецификатордун аргументи биринчи байт же инструкция жайгаштырыла турган даректи билдирген константа болушу керек. RAM даректери Ox800000 офсеттин жардамы менен көрсөтүлөт. CCIди иштетүү үчүн бул функцияны колдонуңуз.
Жаңы үзүлүү функциясынын синтаксиси Компилятор азыр CCI _ үзгүлтүксүз кабыл алат (сан) С функциялары үзгүлтүккө учураткычтар экенин көрсөтүү үчүн спецификатор. Спецификатору үзгүлтүккө учураган номерди алат, мисалыampле:

Fixed Issues

Төмөнкүлөр түзүүчүгө киргизилген оңдоолор. Булар түзүлгөн коддогу мүчүлүштүктөрдү оңдоп же компилятордун иштөөсүн колдонуучунун көрсөтмөсүндө каралган же көрсөтүлгөнгө өзгөртүшү мүмкүн. Почтачалардагы версиянын номери кийинки маселелер боюнча оңдоолорду камтыган компилятордун биринчи версиясын көрсөтөт. Аталышындагы кашаадагы энбелги(лер) бул маселенин көзөмөлдөө базасындагы идентификациясы. Колдоо кызматына кайрылуу керек болсо, булар пайдалуу болушу мүмкүн.
Кээ бир түзмөккө тиешелүү маселелер Device Family Pack (DR)) аппарат менен байланышкан. DFPге киргизилген өзгөртүүлөр жана эң акыркы топтомдорду жүктөп алуу үчүн MPLAB топтомунун менеджерин караңыз.

5.1. Версия 2.39 (Функционалдык коопсуздук релизи)
Жок.
5.2. Версия 2.36
Кечигип жатканда ката (XCS2774) Демейки Эркин режимди оптималдаштыруудагы анча-мынча өзгөрүүлөр операнддык туюнтмалардын кечиктирилген орнотулган функцияларга тынымсыз бүктөлүшүнө жол бербейт, натыйжада алар туруктуу эмес катары каралып, катаны пайда кылышкан. built in_avr_delay_cycles компиляция убактысынын бүтүн сан константасын күтөт.

5.3. Версия 2.35
Туташкан бөлүштүрүү _at (XCS2653) Бир эле аталыштагы бөлүмдө бир нече объекттердин орундарын жанаша бөлүштүрүү жана _at () колдонуу туура эмес. Мисалы үчүнampле:
const char arrl[ ] атрибуту ((".mysec") (0x500) = (OxAB, OxCD);
const char arr2[ ] атрибуту (sectionr.mysec”)= (OxEF, OxFE);
arri кийин дароо arr2 жайгаштырылышы керек болчу.
Бөлүмдүн баштоо даректерин көрсөтүү (XCS2650) The -wl, –section-start опциясы бөлүмдөрдү көрсөтүлгөн башталгыч дарекке үнсүз жайгаштыра алган жок. Бул маселе каалаган ыңгайлаштырылган бөлүмдөр үчүн чечилди; бирок ал кандайдыр бир стандарттык бөлүмдөр үчүн иштебейт, мисалы . текст же . bss, аны колдонуу менен жайгаштыруу керек -wl, -Т варианты.
Эс алуу учурунда байланыштыргыч бузулат (XCS2647) Качан -mrelax оптималдаштыруу иштетилди жана алар жеткиликтүү эстутумга туура келбеген код же маалымат бөлүмдөрү болгон, шилтеме берүүчү кыйрады. Эми, мындай шартта, анын ордуна ката билдирүүлөрү чыгарылат.
Жок жоктүшүүартка (XCS2646) The –nofallback опциясы туура эмес ишке ашырылган жана документтештирилген эмес. Эми бул компилятор лицензиясыз болсо, компилятор кайра төмөн оптималдаштыруу жөндөөсүнө түшпөсүн жана анын ордуна ката чыгарышын камсыз кылуу үчүн тандалышы мүмкүн.
Ылдамдыкты туура эмес оптималдаштыруу (XCS2637) 3-деңгээлдеги оптималдаштырууну тандоодо процедуралык абстракцияны оптималдаштыруу иштетилип жаткан (-03). Бул оптималдаштыруу коддун ылдамдыгынын эсебинен коддун өлчөмүн азайтат, андыктан аткарылбашы керек болчу.
EEPROM мүмкүнчүлүгү начар (XCS2629) -mconst-data-in-progmem опциясы иштетилгенде eeprom_read_block тартиби Xmega түзмөктөрүндө туура иштеген жок (бул демейки абал), натыйжада EEPROM эс тутуму туура окулбай калды.
Эстутум жараксыз бөлүштүрүлгөн (X03-2593, XC8-2651) Качан -Ttext же -Tdata шилтемеси опциясы (мисалыample -wl драйвер опциясы аркылуу өттү) көрсөтүлсө, тиешелүү текст/маалымат аймагы жаңыртылды; бирок, акыркы дарек тиешелүү түрдө туураланган эмес, бул аймак максаттуу түзмөктүн эс тутумунун диапазонунан ашып кетиши мүмкүн.
Ашыкча атрибуцияланган функция менен бузулуу (XC8-2580) Эгерде функция үзгүлтүккө учуратуу, сигнал же nmi атрибуттарынын бирден ашыкчасын колдонуу менен жарыя кылынса, компилятор кыйрады, мисалы, _attribute_ ( ( сигнал , үзгүлтүк ) ).
Жараксыз ATtiny үзгүлтүккө учуратуу коду (XC8-2465) ATtiny түзмөктөрүн курууда жана оптималдаштыруулар өчүрүлгөндө (-00), үзгүлтүккө учуратуу функциялары диапазондон тышкары ассемблер билдирүүлөрүн иштетиши мүмкүн.
Опциялар өтпөйт (XC8-2452) Колдонууда -wl бир нече, үтүр менен ажыратылган байланыштыргыч параметрлери бар параметр, шилтеме кылуучу опциялардын баары шилтеме берүүчүгө өткөрүлүп берилген эмес.
Программанын эс тутумун кыйыр түрдө окуу катасы (X03-2450) Кээ бир учурларда компилятор түздү көрсөткүчтөн программа эсине эки байт маанини окуп жатканда ички ката (таанылбай турган insn)

5.4. Версия 2.32
Китепканага экинчи кирүү ишке ашпай калды (X03-2381) Учурдагы китепкана архивине кирүү үчүн xc8-ar.exe китепканасынын архиваторунун Windows версиясын экинчи жолу чакыруу ката кабарынын атын өзгөртүүгө мүмкүн болбой калган болушу мүмкүн.

5.5. Версия 2.31
Түшүндүрүлбөгөн компилятордун каталары (XC8-2367) Иштеп жатканда Windows системанын убактылуу каталогу чекит камтыган жолго коюлган платформалар.' белгиси болсо, компилятор аткара албай калган болушу мүмкүн.

5.6. Версия 2.30
Глобалдык энбелгилер контурлангандан кийин туура эмес жайгаштырылды (XC8-2299) Глобалдык жайгаштырган кол менен жазылган монтаж коду процедуралык абстракция менен ажыратылган монтаж ырааттуулугу ичиндеги энбелгилер туура эмес жайгаштырылышы мүмкүн.
Эс алып жаткан кыйроо (XC8-2287) колдонуу -mrelax параметр шилтемечинин бузулушуна себеп болгон болушу мүмкүн куйрук секирүү релаксация оптималдаштыруулары а аягында болбогон ret инструкциясын алып салууга аракет кылышкан бөлүм.
Энбелгилерди баалуулуктар катары оптималдаштырууда бузулуу (XC8-2282) "Энбелгилер баалуулуктар катары" GNU C тилдин кеңейтилиши процедуралык абстракцияны оптималдаштыруунун бузулушуна алып келиши мүмкүн, ал эми Outlined VMA диапазонунда оңдоо катасы бар.
Анчалык эмес (XC8-2271) Прототиптер strstr () жана башка функциялар -mconst-data-inprogmem өзгөчөлүгү өчүрүлгөндө, кайтарылган сап көрсөткүчтөрүндө стандарттуу эмес const квалификациясын мындан ары көрсөтпөңүз. avrxmega3 жана avrtiny түзмөктөрүндө бул функция биротоло иштетилерин эске алыңыз.
Жоголгон инициализаторлор (XC8-2269) Котормодо бирден ашык өзгөрмө болгондо бирдик бөлүмгө жайгаштырылды (колдонуу менен бөлүм or атрибут ( (бөлүм) )) жана биринчи мындай өзгөрмө нөлгө инициализацияланган же инициализатор жок болсо, ошол эле бөлүмгө жайгаштырылган ошол эле котормо бирдигиндеги башка өзгөрмөлөр үчүн инициализаторлор жоголгон.

5.1. Версия 2.2 9 (Функционалдык коопсуздук релизи) Жок. 
5.2. Версия 2.20
Узун командалардагы ката (XC8-1983) AVR бутасын колдонууда компилятор lilt табылган жок ката менен токтоп калышы мүмкүн, эгерде буйрук сабы өтө чоң болсо жана тырмакчалар, арткы сызыктар ж.б.
Дайындалбаган родата бөлүмү (XC8-1920) AVR шилтемеси avrxmega3 жана avrtiny архитектураларын курууда ыңгайлаштырылган родата бөлүмдөрү үчүн эстутумду дайындай алган жок, бул эстутумдун кайталануу каталарын жаратышы мүмкүн

5.3. Версия 2.19 (Функционалдык коопсуздук релизи)
Жок.
5.4. Версия 2.10
Көчүрүү каталары (XC8-1891) Эң ылайыктуу бөлүштүргүч шилтемелер релаксациялангандан кийин бөлүмдөрдүн ортосунда эс тутумдун "тешиктерин" калтырган. Эстутумду бөлүүдөн тышкары, бул компьютерге салыштырмалуу секирүүлөргө же чалуулардын диапазондон чыгып кетишине байланыштуу шилтемелердин ордун алмаштырууда каталардын болушу ыктымалдыгын жогорулатты.
Релаксация жолу менен өзгөртүлбөгөн инструкциялар (XC8-1889) Секирүү же чакыруу инструкциялары үчүн шилтемелердин релаксациясы болгон жок, алардын максаттары жайбаракат болгондо жетүүгө болот.
Жок функционалдуулук (XC8E-3 ) Бир нече аныктамалар clock_div_t жана clock_presc ale_s et () сыяктуу ATmega324PB, ATmega328PB, ATtiny441 жана ATtiny841 сыяктуу түзмөктөр үчүн аныкталган эмес.
Жок макрос _XC 8_MODE_, XC 8 VERS ION, XC жана xc8 препроцессордук макростору компилятор тарабынан автоматтык түрдө аныкталган эмес. Булар азыр жеткиликтүү.

5.5. Версия 2.05
Ички компилятор катасы (XC8-1822) Windows астында курууда, кодду оптималдаштырууда ички компилятор катасы пайда болушу мүмкүн.
RAM ашыкчасы аныкталган жок (XC8-1800, XC8-1796) Жеткиликтүү RAMдан ашкан программалар компилятор тарабынан кээ бир кырдаалдарда аныкталган жок, натыйжада аткаруу коду иштебей калды.
Өткөрүлгөн флэш эстутум (XC8-1792) avrxmega3 жана avrtiny түзмөктөр үчүн, флеш эстутумдун бөлүктөрү MPLAB X IDE тарабынан программаланбай калган болушу мүмкүн.
Негизги аткарылбай калуу (XC8-1788) Программада эч кандай глобалдык өзгөрмөлөр аныкталбаган кээ бир учурларда, иштөө убактысынын баштоо коду чыккан жок жана негизги () функцияга эч качан жеткен жок.
Туура эмес эстутум маалыматы (XC8-1787) avrxmega3 жана avrtiny түзмөктөр үчүн, avr-өлчөмдүү программа, программанын эстутумунун ордуна акылга сыйбаган маалыматтар оперативдүү эстутумду керектеп жатканын билдирген.
Туура эмес программа эстутумунун окуусу (XC8-1783) Программа эстутуму маалымат дарек мейкиндигине жайгаштырылган жана PROGMEM макро/атрибутунун жардамы менен объекттерди аныктаган түзмөктөр үчүн түзүлгөн долбоорлор бул объекттерди туура эмес даректен окуган болушу мүмкүн.
Атрибуттар менен ички ката (XC8-1773) Эгерде сиз көрсөткүч объекттерин _at 0 же attribute() энбелгилери менен көрсөткүчтүн аты менен шилтеме кылынган түрүнүн ортосунда аныктасаңыз, ички ката кетти.ample, char * _at (0x800150) cp; Эгер мындай код жолукса, азыр эскертүү берилет.

Негизги аткарылбай калуу (XC8-1780, XC8-1767, XC8-1754) EEPROM өзгөрмөлөрүн колдонуу же конфигурация прагмасын колдонуу менен сактагычтарды аныктоо, негизги 0гө жеткенге чейин, иштөө убактысынын баштоо кодунда маалыматтын туура эмес инициализациясын жана/же программанын аткарылышын бөгөттөгөн болушу мүмкүн.

Кичинекей түзмөктөрдө сактагыч катасы (XC8-1778, XC8-1742) attiny4/5/9/10120140 түзмөктөрүнүн аталышында сактагычтын узундугу туура эмес болгон fileсактагычтарды аныктаган кодду түзүүгө аракет кылганда байланыштыргыч каталарга алып келет.

Сегменттөө катасы (XC8-1777) Үзгүлтүктүү сегментация катасы оңдолду.

Ассемблер катасы (XC8-1761) avr -as ассемблери компилятор Ubuntu 18 астында иштегенде бузулушу мүмкүн.

Объекттер тазаланган жок (XC8-1752) Башталбаган статикалык сактагычтын узактыгы объекттери иштөө убактысынын баштоо коду менен тазаланбаган болушу мүмкүн.

Карама-каршы келген түзмөктүн спецификациясы этибарга алынган жок (XC8-1749) The Түзмөктүн бир нече спецификациясынын параметрлери колдонулганда жана башка түзмөктөрдү көрсөткөндө компилятор ката жаратпай жаткан.

Үймөк менен эс тутумдун бузулушу (XC8-1748) The _heap_start символу туура эмес коюлган, натыйжада үймөк кадимки өзгөрмөлөр бузулушу мүмкүн.

Шилтемени алмаштыруу катасы (XC8-1739) Код rjmn же максаттуу 4к байт алыстыкта ​​rjmn камтылганда, шилтемени көчүрүү катасы чыгышы мүмкүн.

5.6. Версия 2.00 Жок.

Белгилүү маселелер

Төмөндө компилятордун иштөөсүндөгү чектөөлөр бар. Бул жалпы коддоо чектөөлөрү, же колдонуучунун колдонмосунда камтылган маалыматтан четтөөлөр болушу мүмкүн. Толкундагы кашаадагы энбелги(лер) бул маселенин байкоо базасындагы идентификациясы. Колдоо кызматына кайрылуу керек болсо, бул пайдалуу болушу мүмкүн. Энбелгиси жок нерселер режимди сүрөттөгөн жана биротоло күчүндө кала турган чектөөлөр болуп саналат.
6.1. MPLAB X IDE Интеграция
MPLAB IDE интеграциясы Эгерде Compiler MPLAB IDEден колдонула турган болсо, анда Compiler орнотуудан мурун MPLAB IDE орнотуу керек.
6.2. Code Generation
Туура эмес баштоо (XC8-2679) Кээ бир глобалдуу/статикалык байт-өлчөмдүү объектилердин баштапкы маанилери маалымат эстутумунда жайгаштырылган жер менен өзгөрмөлөргө иштөө убагында кире турган жердин ортосунда дал келбестик бар.
strtod endptrди туура эмес орнотту (XC8-2652) strtod () аркылуу конвертациялоо үчүн предметтик сап экспоненциалдык форматта калкыма чекиттүү санды камтыса жана e символунан кийин күтүлбөгөн символ бар учурларда, endptr дареги, эгерде берилсе, кийинки символду көрсөтөт. e эмес, е өзү. Мисалы үчүнample: strtod (“100exy”, endptr);

endptr x символун көрсөтүүгө алып келет.

Начар кыйыр функция чалуулары (X03-2628) Кээ бир учурларда, структуранын бир бөлүгү катары сакталган функция көрсөткүчү аркылуу жасалган функция чалуулары ишке ашпай калышы мүмкүн.

strtof он алтылык калкыма нөлдү кайтарат (XC8-2626) strtof () et al жана scanf () et al. китепкана функциялары ар дайым көрсөткүчтү нөлгө көрсөтпөгөн он алтылык калкыма чекиттүү санды которот. Мисалы үчүнample: strtof (“Oxl”, &endptr); 0 эмес, 1 маанисин кайтарат.
Стек кеңешчисинин так эмес билдирүүсү (XC8-2542, XC8-2541) Кээ бир учурларда, колдонулган рекурсия же аныкталбаган стек (мүмкүн alloca() колдонуу аркылуу) жөнүндө стек кеңешчиси эскертүүсү чыгарылбайт.
Кайталанма үзгүлтүккө учуроо коду (XC8-2421) Бирден ашык үзгүлтүксүз функция бирдей денеге ээ болгон учурда, компилятор бир үзгүлтүккө учуратуу функциясын экинчисин чакырышы мүмкүн. Бул бардык чалуулар менен жабылган регистрлердин кереги жок сакталып калышына алып келет жана үзгүлтүктөр учурдагы үзгүлтүккө учураткычтын эпилогу иштей электе эле иштетилет, бул коддун бузулушуна алып келиши мүмкүн.
Конст программанын эсинде жок объекттер (XC8-2408) avrxmega3 жана avrtiny долбоорлору үчүн унификацияланган const объекттери маалымат эстутумуна жайгаштырылат, бирок эскертүү алар программанын эсинде жайгаштырылганын көрсөтүп турат. Бул маалымат эстутум мейкиндигинде программалык эстутуму жок түзмөктөргө жана инициализацияланган объекттерге таасирин тийгизбейт.
Жараксыз DFP жолу менен начар чыгаруу (XCS-2376) Эгерде компилятор жараксыз DFP жолу жана "спец" менен чакырылса file тандалган түзмөк үчүн бар болсо, компилятор жетишпеген түзмөктүн үй-бүлөлүк топтомун билдирбейт жана анын ордуна "спец" тандайт file, анда жараксыз чыгарууга алып келиши мүмкүн. "спец" files бөлүштүрүлгөн DFPлер менен жаңыланбашы мүмкүн жана ички компилятордун сыналышы менен гана колдонууга арналган.
Эстутумдун дал келиши аныкталган жок (XC8-1966) Компилятор дарек боюнча абсолюттук абалга келтирилген объекттердин ( _at 0 аркылуу ) жана _ колдонуу менен башка объекттердин эс тутумунун кайталанышын аныктабай жатат.сектаion () спецификатору жана ошол эле дарекке байланышкан.
Китепкана функциялары жана _memx (XC8-1763) иштебей калды _memx дарек мейкиндигинде аргументи бар libgcc float деп аталган функциялар иштебей калышы мүмкүн. Көңүл буруңуз, китепкананын процедуралары кээ бир C операторлорунан чакырылат, мисалы, мисалыample, төмөнкү код таасир этет: return regFloatVar > memxFloatVar;
Limited libgcc ишке ашыруу (AVRTC-731) үчүн ATTiny4/5/9/10/20/40 продуктылары, libgccдеги стандарттык C / Math китепканасын ишке ашыруу өтө чектелген же жок.
Программа эстутум чектөөлөрү (AVRTC-732) 128 кбдан ашкан программалык эс тутумдагы сүрөттөр инструменттердин тизмеги тарабынан колдоого алынат; бирок, -mrelax опциясы колдонулганда, талап кылынган функциянын бүдөмүктөрүн түзүүнүн ордуна, релаксациясыз жана пайдалуу ката кабарысыз шилтемени токтотуунун белгилүү учурлары бар.
Аты мейкиндигин чектөө (AVRTC-733) Аты аталган дарек мейкиндиктери инструменттердин тизмеги тарабынан колдоого алынат, колдонуучунун колдонмосунун Атайын Тип Квалификациялары бөлүмүндө айтылган чектөөлөргө ылайык.
Убакыт алкактары The китепкана функциялары GMTти болжолдойт жана жергиликтүү убакыт алкактарын колдобойт, ошентип loca It ime 0 gmtime ( ) менен бирдей убакытты кайтарат, мисалы,ample.

Документтер / Ресурстар

MICROCHIP MPLAB XC8 C Compiler Version 2.39 AVR MCU үчүн релиз эскертүүлөрү [pdf] Колдонуучунун колдонмосу
MPLAB XC8 C Compiler Version 2.39 AVR MCU үчүн релиз эскертүүлөрү, MPLAB XC8 C, Compiler Version 2.39 AVR MCU үчүн релиз эскертүүлөрү, AVR MCU үчүн релиз эскертүүлөрү
MICROCHIP MPLAB XC8 C Compiler Version 2.39 AVR MCU үчүн релиз эскертүүлөрү [pdf] Колдонуучунун колдонмосу
MPLAB XC8 C Compiler Version 2.39 AVR MCU үчүн релиз эскертүүлөрү, MPLAB XC8 C, Compiler Version 2.39 AVR MCU үчүн релиз эскертүүлөрү, AVR MCU үчүн эскертүүлөр
MICROCHIP MPLAB XC8 C компилятору [pdf] Колдонуучунун колдонмосу
MPLAB XC8 C Compiler, MPLAB XC8 C, Compiler

Шилтемелер

Комментарий калтырыңыз

Сиздин электрондук почта дарегиңиз жарыяланбайт. Талап кылынган талаалар белгиленген *