MICROCHIP MPLAB XC8 C Compiler программасы
БУЛ ДОКУМЕНТ МИКРОЧЫП AVR ТҮЗМӨЛӨРҮН БҮГҮНДӨГӨН MPLAB XC8 C ТҮЗҮҮЧҮГҮНӨ ТИЕШЕЛҮҮ МААНИЛҮҮ МААЛЫМАТТЫ БАР.
БУЛ ПРОГРАММАНЫ ИШТЕГЕНДИН АЛДЫНДА ОКУҢУЗ. ЭГЕР СИЗ 8 БИТ PIC ТҮЗМӨЛӨРҮ ҮЧҮН КОМПИЛЬЕРДИ КОЛДОНСОҢУЗ, PIC ДОКУМЕНТ ҮЧҮН MPLAB XC8 C КОМПИЛЬЕРИНИН ЧЫГАРЫЛУУ ЭСКЕРТҮҮЛӨРҮН КАРАҢЫЗ.
Бүттүview
Introduction
Microchip MPLAB® XC8 C компиляторунун бул чыгарылышы бир нече жаңы функцияларды, мүчүлүштүктөрдү оңдоолорду жана жаңы аппаратты колдоону камтыйт.
Курулуш датасы
Бул компилятор версиясынын расмий түзүлгөн күнү 3-жылдын 2022-июлунда.
Мурунку версия
Мурунку MPLAB XC8 C компилятор версиясы 2.39-жылдын 27-январында курулган функционалдык коопсуздук компилятору 2022 болчу. Мурунку стандарттуу компилятор 2.36-жылдын 27-январында курулган 2022 версиясы болгон.
Функционалдык коопсуздук боюнча колдонмо
MPLAB XC компиляторлору үчүн Функционалдык коопсуздук боюнча колдонмо сиз функционалдык коопсуздук лицензиясын сатып алганыңызда документтер пакетинде жеткиликтүү.
Компоненттик лицензиялар жана версиялар
AVR MCUs куралдары үчүн MPLAB® XC8 C Compiler GNU General Public License (GPL) астында жазылган жана таратылган, бул анын баштапкы коду эркин таратылып, жалпыга жеткиликтүү дегенди билдирет. GNU GPL астындагы куралдардын баштапкы кодун Microchip'тен өзүнчө жүктөп алса болот webсайт. GNU GPLди окуй аласыз file аттуу сиздин орнотуу каталогуңуздун подкаталогунда жайгашкан. GPLдин негизин түзгөн принциптердин жалпы талкуусун бул жерден тапса болот. Колдоо коду баш үчүн берилген files, шилтеме берүүчү скрипттер жана иштөө убагы китепканалары проприетардык код жана GPL астында камтылбайт.
Бул компилятор GCC 5.4.0 версиясынын, binutils 2.26 версиясынын ишке ашырылышы жана avr-libc 2.0.0 версиясын колдонот.
Системалык талаптар
MPLAB XC8 C компилятору жана ал колдонгон лицензиялоочу программалык камсыздоо ар кандай операциялык системалар үчүн жеткиликтүү, анын ичинде төмөнкүлөрдүн 64 биттик версиялары: Microsoft Windows 10 профессионалдык чыгарылыштары; Ubuntu 18.04; жана macOS 10.15.5. Windows үчүн экилик коддор кол коюлган. Mac OShave үчүн экилик коддор кол коюлган жана нотариалдык жактан күбөлөндүрүлгөн.
Эгер сиз тармактык лицензия серверин иштетип жатсаңыз, компиляторлор колдогон операциялык системалары бар компьютерлер гана лицензия серверин жайгаштыруу үчүн колдонулушу мүмкүн. xclm 2.0 версиясынан тартып, тармактык лицензия серверин Microsoft Windows Server платформасында орнотууга болот, бирок лицензия сервери операциялык системанын сервердик версиясында иштеши керек эмес.
Колдоого алынган түзмөктөр
Бул компилятор релиз учурунда белгилүү болгон бардык 8-бит AVR MCU түзмөктөрүн колдойт. Бардык колдоого алынган түзмөктөрдүн тизмесин көрүү үчүн (компилятордун doc каталогунда) караңыз. Булар fileс ошондой эле ар бир түзмөк үчүн конфигурация бит орнотууларын тизмелейт.
Басылмалар жана лицензияны жаңыртуу
MPLAB XC8 компилятору лицензияланган (PRO) же лицензияланбаган (акысыз) продукт катары жандырылышы мүмкүн. Сиз компиляторду лицензиялоо үчүн активдештирүү ачкычын сатып алышыңыз керек. Лицензия Акысыз продуктка салыштырмалуу жогорку деңгээлдеги оптималдаштырууга мүмкүндүк берет. Лицензиясы жок компилятор лицензиясыз чексиз иштей алат.
MPLAB XC8 Functional Safety компилятору Microchipден сатылып алынган функционалдык коопсуздук лицензиясы менен иштетилиши керек. Бул лицензиясыз компилятор иштебейт. Иштетилгенден кийин, сиз каалаган оптималдаштыруу деңгээлин тандап, компилятордун бардык мүмкүнчүлүктөрүн колдоно аласыз. MPLAB XC Functional Safety Compiler бул релиз Network Server License колдойт.
Лицензия түрлөрү жана компиляторду лицензия менен орнотуу жөнүндө маалымат алуу үчүн MPLAB XC C Compilers (DS50002059) документин орнотуу жана лицензиялоону караңыз.
Орнотуу жана активдештирүү
Ошондой эле бул компиляторго камтылган акыркы лицензия менеджери жөнүндө маанилүү маалымат алуу үчүн Миграция маселелери жана чектөөлөр бөлүмдөрүн караңыз.
MPLAB IDE колдонсоңуз, бул куралды орнотуудан мурун эң акыркы MPLAB X IDE 5.0 же андан кийинки версиясын орнотуңуз. Компиляторду орнотуудан мурун IDEден чыкыңыз. .exe (Windows), .run (Linux) же колдонмо (macOS) компилятор орнотуучу тиркемесин иштетиңиз, мисалы, XC8-1.00.11403-windows.exe жана экрандагы көрсөтмөлөрдү аткарыңыз.
Демейки орнотуу каталогу сунушталат. Эгерде сиз Linux колдонуп жатсаңыз, компиляторду терминал аркылуу жана түпкү каттоо эсебинен орнотуу керек. Администратор артыкчылыктары бар macOS каттоо эсеби аркылуу орнотуңуз.
Иштетүү азыр орнотуу үчүн өзүнчө жүргүзүлөт. Көбүрөөк маалымат алуу үчүн MPLAB® XC C Compilers (DS52059) үчүн License Manager документин караңыз.
Эгерде сиз компиляторду баалоо лицензиясынын алкагында иштетүүнү тандасаңыз, баалоо мезгили аяктагандан кийин 14 күндүн ичинде сиз компиляция учурунда эскертүү аласыз. Эгер сиз HPA жазылууңуз аяктагандан кийин 14 күндүн ичинде болсоңуз, ошол эле эскертүү берилет.
XC Network License Server өзүнчө орнотуучу жана бир колдонуучу компиляторду орнотуучуга кирбейт.
XC License Manager азыр калкыма тармак лицензияларынын роумингин колдойт. Мобилдик колдонуучуларга багытталган бул функция калкып жүрүүчү лицензияга тармактан кыска убакытка чыгууга мүмкүндүк берет. Бул функцияны колдонуу менен, сиз тармактан ажыратып, дагы эле MPLAB XC компиляторду колдоно аласыз. Бул функция тууралуу көбүрөөк билүү үчүн XCLM орнотуусунун документ папкасын караңыз. MPLAB X IDE роумингди визуалдык башкаруу үчүн Лицензиялар терезесин (Куралдар > Лицензиялар) камтыйт.
Орнотуу маселелерин чечүү
Эгерде сиз Windows операциялык системаларынын кайсынысына болбосун компиляторду орнотууда кыйынчылыктарга туш болсоңуз, төмөнкү сунуштарды колдонуп көрүңүз.
- Орнотууну администратор катары иштетиңиз.
- Орнотуучу колдонмонун уруксаттарын "Толук башкарууга" коюңуз. (Оң баскычты чыкылдатыңыз file, "Касиеттер", "Коопсуздук" өтмөгүн, колдонуучуну тандаңыз, түзөтүңүз.)
- Убактылуу папкага уруксаттарды “Толук башкаруу!
Убактылуу папканын жайгашкан жерин аныктоо үчүн Run буйругуна %temp% териңиз (Windows логотип баскычы + R). Бул ачат file ошол каталогду көрсөткөн изилдөөчүнүн диалогу жана ал папканын жолун аныктоого мүмкүндүк берет.
Compiler Documentation
Скриншотто көрсөтүлгөндөй, MPLAB X IDE панелиндеги көк жардам баскычын басканда, компилятордун колдонуучу колдонмолорун браузериңизде ачылуучу HTML барагынан ачууга болот.
Эгер сиз 8 биттик AVR максаттары үчүн куруп жатсаңыз, AVR® MCU үчүн MPLAB® XC8 C Compiler Колдонуучунун колдонмосунда ушул архитектурага тиешелүү компилятордун параметрлери жана функциялары жөнүндө маалымат камтылган.
Кардарларды колдоо
Микрочип бул компилятордун версиясына байланыштуу мүчүлүштүктөрдүн отчетторун, сунуштарын же комментарийлерин кабыл алат. Колдоо системасы аркылуу мүчүлүштүктөр тууралуу кабарларды же функция сурамдарын багыттаңыз.
Документация жаңыртуулары
MPLAB XC8 документациясынын онлайн жана заманбап версиялары үчүн Microchipтин онлайн техникалык документациясына кириңиз. webсайт.
Бул чыгарылыштагы жаңы же жаңыртылган AVR документтери:
- MUSL автордук укук эскертүүсү
- MPLAB XC C компиляторлорун орнотуу жана лицензиялоо (М ревизиясы)
- Камтылган инженерлер үчүн MPLAB XC8 Колдонуучунун колдонмосу – AVR MCUs (ревизия А)
- AVR MCU үчүн MPLAB XC8 C Compiler Колдонуучунун колдонмосу (F-ревизиясы)
- Микрочиптин бирдиктүү стандарттык китепканасынын маалымдама колдонмосу (В ревизиясы)
Microchip Unified Standard Library Reference Guide микрочиптин бирдиктүү стандарттык китепканасы тарабынан аныкталган функциялардын жүрүм-турумун жана интерфейсин, ошондой эле китепкана түрлөрүн жана макросторду максаттуу пайдаланууну сүрөттөйт. Бул маалыматтын айрымдары мурда MPLAB® XC8 C Compiler Колдонуучунун AVR® MCU үчүн колдонмосунда камтылган. Түзмөккө тиешелүү китепкана маалыматы дагы эле бул компилятордук колдонмодо камтылган.
Эгер сиз 8 биттик түзмөктөр жана MPLAB XC8 C компилятору менен жаңыдан иштеп жатсаңыз, MPLAB® XC8 Колдонуучунун орнотулган инженерлер үчүн колдонмосу – AVR® MCUs (DS50003108) MPLAB X IDEде долбоорлорду түзүү жана код жазуу боюнча маалыматка ээ. биринчи MPLAB XC8 C долбооруңуз үчүн. Бул колдонмо азыр компилятор менен бөлүштүрүлөт.
Hamate Колдонуучунун колдонмосу бул чыгарылыштагы docs каталогуна киргизилген. Бул колдонмо Hamate өз алдынча тиркеме катары иштеткендер үчүн арналган.
Эмне жаңылык
Төмөндө компилятор азыр колдогон жаңы AVR максаттуу өзгөчөлүктөрү бар. Почтачалардагы версия номери кийинки функцияларды колдоо үчүн компилятордун биринчи версиясын көрсөтөт.
Версия 2.40
Жаңы түзмөктү колдоо Колдоо азыр төмөнкү AVR бөлүктөрү үчүн жеткиликтүү: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA, AVR28EA64 жана AVR32EA.
Жакшыртылган процедуралык абстракция Процедуралык абстракция (ПБ) оптималдаштыруу куралы жакшыртылган, ошондуктан функцияны чакыруу инструкциясын камтыган код (чакырууну кайра чакырып алуу) ) сүрөттөлүшү мүмкүн. Бул стек аргументтерди өткөрүү жана функциядан кайтаруу маанисин алуу үчүн колдонулбаса гана болот. Стек өзгөрмөлүү аргументтердин тизмеси бар функцияны чакырганда же бул максат үчүн дайындалган регистрлерден көбүрөөк аргумент алган функцияны чакырганда колдонулат. Бул функцияны Monk-pa-Outline-Cals опциясы аркылуу өчүрсө болот, же процедуралык абстракция объект үчүн толугу менен өчүрүлүшү мүмкүн file же -monk-pa-on- колдонуу менен иштейтfile жана -mo.-pa-on-function, же nipa атрибутун ( nipa спецификациясын) функциялар менен тандап алуу менен
Код камтуу макросу Эгерде жарактуу mcodecov параметри көрсөтүлгөн болсо, компилятор эми __CODECOV макросун аныктайт.
Эстутум ээлөө опциясы Эми xc8-cc драйвери AVR максаттарын курууда -mreserve=space@start: end опциясын кабыл алат. Бул параметр көрсөтүлгөн эстутум диапазонун маалымат же программа эс тутумунун мейкиндигинде сактайт, бул шилтемени бул аймакта кодду же объекттерди толтуруусуна жол бербейт.
Акылдуураак акылдуу IO Smart IO функцияларына бир нече жакшыртуулар киргизилди, анын ичинде printf негизги кодуна жалпы өзгөртүүлөр киргизилди, %n конверсия спецификаторун көз карандысыз вариант катары кароо, суроо-талап боюнча vararg поп режимдерин байланыштыруу, IO функциясынын аргументтерин иштетүү үчүн мүмкүн болсо кыскараак маалымат түрлөрүн колдонуу , жана талаанын туурасы жана тактык менен иштөөдө жалпы кодду факторинг. Бул олуттуу кодду жана маалыматтарды үнөмдөөгө алып келиши мүмкүн, ошондой эле IO аткаруу ылдамдыгын жогорулатуу.
Версия 2.39 (Функционалдык коопсуздук релизи)
Network Server License MPLAB XC8 Functional Safety Compiler бул релиз Network Server License колдойт.
Версия 2.36
Жок.
Версия 2.35
Жаңы түзмөктү колдоо Колдоо төмөнкү AVR бөлүктөрү үчүн жеткиликтүү: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 жана AVR64DD32.
Жакшыртылган контекстти которуу Жаңы -mcall-isr-prologues опциясы үзгүлтүккө учуроо функцияларынын регистрлерди киргизүүдө кантип сактай турганын жана үзгүлтүккө учуратуу тартиби аяктаганда ал регистрлер кантип калыбына келтирилерин өзгөртөт. Бул -mcall-prologues опциясына окшош иштейт, бирок үзгүлтүккө учуратуу функцияларына (ISRs) гана таасир этет.
Контекстти которуу дагы жакшырды Жаңы -mgas-isr-prologues параметри кичинекей үзгүлтүккө учураган тейлөө процедуралары үчүн түзүлгөн контексттердин кычыштыруу кодун көзөмөлдөйт. Иштетилгенде, бул функция ассемблер реестрди колдонуу үчүн ISRди сканерлейт жана керек болсо, бул колдонулган регистрлерди гана сактайт.
Конфигурациялануучу флеш карта AVR DA жана AVR DB үй-бүлөлөрүндөгү кээ бир түзмөктөрдө SFR (мисалы, FLMAP) бар, ал программа эстутумунун кайсы 32к бөлүмү маалымат эстутумуна түшүрүлөөрүн аныктайт. Жаңы - mconst-data-in-config-mapped-proem опциясы шилтеме берүүчүнүн бардык кемчиликтери боюнча квалификациялуу маалыматтарды бир 32k бөлүмгө жайгаштыруу үчүн колдонулушу мүмкүн жана бул маалыматтардын эстутум мейкиндигине жайгаштырылышын камсыз кылуу үчүн тиешелүү SFR реестрин автоматтык түрдө инициализациялоо үчүн колдонулат. , анда ал натыйжалуураак жеткиликтүү болот.
Микрочиптин бирдиктүү стандарттык китепканалары Бардык MPLAB XC компиляторлору Микрочиптин бирдиктүү стандарттык китепканасын бөлүшүшөт, ал азыр MPLAB XC8дин ушул релизинде жеткиликтүү. MPLAB® XC8 C Compiler Колдонуучунун колдонмосу/же AVR® MCU мындан ары бул стандарттык функциялар үчүн документтерди камтыбайт. Бул маалыматты эми Microchip Unified Standard Library Reference Guideнен тапса болот. Мурда avr-libc тарабынан аныкталган кээ бир функциялар мындан ары жеткиликтүү эмес экенин эске алыңыз. (Кара: Китепкана):'. функционалдык…)
Smart IO Жаңы бирдиктүү китепканалардын бир бөлүгү катары, басып чыгаруу жана сканерлөө үй-бүлөлөрүндөгү IO функциялары азыр бул функциялар программада кандайча колдонулушунун негизинде ар бир түзүүдө ыңгайлаштырылган түзүлөт. Бул программа тарабынан колдонулган ресурстарды олуттуу кыскарта алат.
Smart IO жардам опциясы Акылдуу IO функцияларына (мисалы, printf () же scanf () ) чалууларды талдоодо, компилятор формат сабынан дайыма аныктай албайт же аргументтерден чалууга талап кылынган конверсия спецификаторлорун чыгара албайт. Буга чейин, компилятор ар дайым эч кандай божомолдорду жасачу эмес жана толук функционалдык IO функциялары программанын акыркы сүрөтү менен байланышканын камсыздайт. Жаңы – msmart-io-format=fmt опциясы кошулду, андыктан компилятор анын ордуна акылдуу IO функциялары тарабынан колдонулган конверсия спецификаторлорунун колдонуучусу тарабынан маалымдалып, өтө узун IO тартибин байланыштырууга жол бербейт. (Көбүрөөк маалымат үчүн smart-io-формат опциясын караңыз.)
Ыңгайлаштырылган бөлүмдөрдү жайгаштыруу Мурда -Wl, –section-start опциясы шилтеме берүүчү скрипт ошол эле аталыштагы чыгаруу бөлүмүн аныктаганда гана көрсөтүлгөн бөлүмдү суралган дарекке жайгаштырчу. Андай болбогондо, бөлүм шилтеме берүүчү тандаган дарекке жайгаштырылып, параметр негизинен этибарга алынбай калган. Эми параметр шилтеме берүүчү скрипт бөлүмдү аныктабаса дагы, бардык ыңгайлаштырылган бөлүмдөр үчүн урматталат. Бирок, стандарттык бөлүмдөр үчүн, мисалы, . текст, . bss же . маалыматтар болсо, эң туура бөлүштүргүч дагы эле алардын жайгаштырылышын толук көзөмөлдөйт жана параметр эч кандай таасир этпейт. Колдонуучунун колдонмосунда сүрөттөлгөндөй -Wl, -Tsection=кошуу опциясын колдонуңуз.
Версия 2.32
Stack Guidance PRO компилятордун лицензиясы менен жеткиликтүү, компилятордун стек багыттоо өзгөчөлүгү программа тарабынан колдонулган ар кандай стектин максималдуу тереңдигин баалоо үчүн колдонулушу мүмкүн. Ал программанын чалуу графигин түзөт жана талдайт, ар бир функциянын стектин колдонулушун аныктайт жана программа тарабынан колдонулган стектердин тереңдигин аныктоого боло турган отчетту түзөт. Бул өзгөчөлүк -mchp-stack-usage буйрук сабы опциясы аркылуу иштетилген. Стекти колдонуунун корутундусу аткарылгандан кийин басылып чыгат. Картада деталдуу стек отчету бар file, бул кадимки жол менен суралышы мүмкүн.
Жаңы түзмөктү колдоо Колдоо төмөнкү AVR бөлүктөрү үчүн жеткиликтүү: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32, AVR28DB64 жана AVR32DB32.
Тартылган түзмөктү колдоо Колдоо төмөнкү 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, AVR128DB48 жана AVR128DB.
Тартылган түзмөктү колдоо Төмөнкү AVR бөлүктөрү үчүн колдоо мындан ары жеткиликтүү эмес: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617, жана ATA664251.
Версия 2.29 (Функционалдык коопсуздук релизи)
Header file компилятордун орнотулган жабдыктары үчүн Компилятор MISRA сыяктуу тил спецификацияларына шайкеш келишин камсыздоо үчүн, баш fileтарабынан автоматтык түрдө кошулат , жаңыртылган. Бул аталыш _buil tin _avrnop () жана _buil tin_ avr кечигүү_ циклдери () сыяктуу бардык орнотулган функциялардын прототиптерин камтыйт. Кээ бир орнотулган жабдыктар MISRAга туура келбеши мүмкүн; компилятордун буйрук сабына _Xe_ STRICT_ MISRA аныктоосун кошуу менен булар жок кылынышы мүмкүн. Орнотулган орнотмолор жана алардын декларациялары белгиленген тууралык түрлөрүн колдонуу үчүн жаңыртылган.
Версия 2.20
Жаңы түзмөктү колдоо Колдоо төмөнкү AVR бөлүктөрү үчүн жеткиликтүү: ATTINY1624, ATTINY1626 жана ATTINY1627.
Жакшыраак туура бөлүштүрүү Компилятордогу эң туура бөлүштүргүч (BFA) жакшыртылды, андыктан бөлүмдөр жакшыраак оптималдаштырууга мүмкүндүк берүүчү тартипте бөлүнөт. BFA азыр аталган дарек мейкиндиктерин колдойт жана маалыматтарды инициализациялоону жакшыраак иштетет.
Жакшыртылган процедуралык абстракция Процедуралык абстракцияны оптималдаштыруу азыр көбүрөөк код ырааттуулугунда аткарылды. Бул оптималдаштыруу коддун көлөмүн көбөйтүшү мүмкүн болгон мурунку жагдайлар оптималдаштыруу кодун шилтемечинин таштанды чогултуу процессинен кабардар кылуу менен чечилген.
AVR Ассамблеясынын жоктугу AVR Assembler мындан ары бул бөлүштүрүүгө кошулбайт.
Версия 2.19 (Функционалдык коопсуздук релизи)
Жок.
Версия 2.10
Кодду камтуу Бул чыгарылыш долбоордун баштапкы коду канчалык деңгээлде аткарылганын талдоону жеңилдеткен кодду камтуу өзгөчөлүгүн камтыйт. Аны иштетүү үчүн -mcodecov=ram параметрин колдонуңуз. Аппараттык жабдыңызда программа аткарылгандан кийин, коддун камтуу маалыматы аппаратта чогултулат жана бул MPLAB X IDE тарабынан код камтуу плагини аркылуу өткөрүлүп берилиши жана көрсөтүлүшү мүмкүн. Бул плагин жөнүндө маалымат алуу үчүн IDE документтерин караңыз. #pragma mcodecov камтуу талдоосунан кийинки функцияларды алып салуу үчүн колдонулушу мүмкүн. Идеалында прагма башында кошулушу керек file муну толугу менен жокко чыгаруу үчүн file камтуу талдоосунан. Же болбосо, атрибуту ( (mcodecov)) камтуу талдоосунан белгилүү бир функцияны алып салуу үчүн колдонулушу мүмкүн.
Түзмөктүн сүрөттөмөсү files Жаңы аппарат file avr chipinfo деп аталат. html компилятордун бөлүштүрүлүшүнүн docs каталогунда жайгашкан. Бул file компилятор тарабынан колдоого алынган бардык түзмөктөрдүн тизмеси. Түзмөктүн атын чыкылдатыңыз жана ал ошол түзмөк үчүн бардык уруксат берилген конфигурация бит жөндөөлөрүн/маани жуптарын көрсөткөн баракты ачат.amples.
Процедуралык абстракция Процедуралык абстракцияны оптималдаштыруу, ал блоктун чыгарылып алынган көчүрмөсүнө чакыруулар менен монтаждык коддун жалпы блокторун алмаштыруучу компиляторго кошулду. Булар өзүнчө тиркеме тарабынан аткарылат, ал 2, 3 же оптималдаштыруу деңгээлин тандоодо компилятор тарабынан автоматтык түрдө чакырылат. Бул оптималдаштыруу коддун өлчөмүн азайтат, бирок алар аткаруу ылдамдыгын жана кодду оңдоо мүмкүнчүлүгүн азайтышы мүмкүн.
Процедуралык абстракцияны -mno-pa опциясын колдонуу менен оптималдаштыруунун жогорку деңгээлдеринде өчүрсө болот же -mpa аркылуу төмөнкү оптималдаштыруу деңгээлдеринде (лицензияңызга жараша) иштетилиши мүмкүн. Ал объект үчүн өчүрүлүшү мүмкүн file колдонуу -mno-pa-on-file=fileаталышы, же функция = функциясы боюнча -mno-pa колдонуу менен функция үчүн өчүрүлгөн.
Булак кодуңуздун ичинде процедуралык абстракцияны функциянын аныктамасы менен _attribute_ ((nopa)) колдонуу менен же атрибутка ( ((nopa, noinline)) кеңейген _nopa колдонуу менен функция үчүн иштен чыгарууга болот жана ошентип функциянын киришинин ишке ашуусуна жол бербейт. жана ички коддун абстракциясы бар.
Прагмада бит колдоосун бекитүү #pragma конфигурациясын эми AVR кулпу биттерин, ошондой эле башка конфигурация биттерин көрсөтүү үчүн колдонсо болот. Avr чип маалыматын текшерүү. html file (жогоруда айтылган) бул прагма менен колдонуу үчүн жөндөө/баа жуптары үчүн.
Жаңы түзмөктү колдоо Колдоо төмөнкү бөлүктөр үчүн жеткиликтүү: AVR28DA128, AVR64DA128, AVR32DA128, жана AVR48DA128.
Версия 2.05
Сиздин акча үчүн көбүрөөк бит Бул компилятордун жана лицензия менеджеринин macOS версиясы азыр 64 биттик колдонмо болуп саналат. Бул компилятордун MacOSтун акыркы версияларында эскертүүсүз орнотулуп, иштешин камсыздайт.
Программанын эсиндеги Const объекттери. Эми компилятор RAMда жайгаштыруунун ордуна const-квалификациялуу объекттерди программанын Flash эс тутумуна жайгаштыра алат. Компилятор конст-квалификациялуу глобалдык маалыматтар программанын флэш эс тутумунда сакталып тургандай өзгөртүлгөн жана бул маалыматтарга тиешелүү программалык эстутум көрсөтмөлөрү аркылуу түз жана кыйыр түрдө кирүүгө болот. Бул жаңы функция демейки боюнча иштетилген, бирок -mno-const-data-in-progmem опциясын колдонуу менен өчүрүүгө болот. avrxmega3 жана avrtiny архитектуралары үчүн бул функция талап кылынбайт жана ар дайым өчүрүлөт, анткени программанын эс тутуму бул түзмөктөр үчүн маалымат даректер мейкиндигине түшүрүлгөн.
Стандарттык акысыз Бул компилятордун лицензияланбаган (акысыз) версиялары эми 2-деңгээлге чейин оптималдаштырууга мүмкүндүк берет. Бул стандарттык лицензияны колдонуу менен мурда мүмкүн болгон нерсеге окшош болбосо да, чыгарууга мүмкүндүк берет.
Кош келиңиз AVRASM2 2 биттик түзүлүштөр үчүн AVRASM8 ассемблери азыр XC8 компиляторду орнотуучуга киргизилген. Бул ассемблер XC8 компилятору тарабынан колдонулбайт, бирок кол менен жазылган монтаж булагына негизделген долбоорлор үчүн жеткиликтүү.
Жаңы түзмөктү колдоо Колдоо төмөнкү бөлүктөр үчүн жеткиликтүү: ATMEGA1608, ATMEGA1609, ATMEGA808, жана ATMEGA809.
Версия 2.00
Жогорку деңгээлдеги айдоочу Xc8-cc деп аталган жаңы драйвер, азыр мурунку avr-gcc драйверинин жана xc8 драйверинин үстүндө отурат жана ал максаттуу түзмөктү тандоонун негизинде тиешелүү компиляторду чакыра алат. Бул драйвер GCC стилиндеги варианттарды кабыл алат, алар аткарылып жаткан компиляторго которулат же ага өткөрүлүп берилет. Бул драйвер каалаган AVR же PIC буталары менен окшош семантикалуу варианттардын окшош топтомун колдонууга мүмкүндүк берет жана ошондуктан компиляторду чакыруунун сунушталган жолу болуп саналат. Зарыл болсо, эски avr-gcc драйверин мурунку компилятор версияларында кабыл алган эски стилдеги опцияларды колдонуу менен түз чакырса болот.
Common C Interface Бул компилятор эми MPLAB Common C Interface менен шайкеш келиши мүмкүн, бул баштапкы кодду бардык MPLAB XC компиляторлору аркылуу оңой көчүрүүгө мүмкүндүк берет. -mext=cci параметри көптөгөн тил кеңейтүүлөрү үчүн альтернативдүү синтаксисти иштетип, бул функцияны сурайт.
Жаңы китепканачы айдоочу Жаңы китепканачы айдоочу мурунку PIC китепканачысынын жана AVR avr-ar китепканасынын жогору жагында жайгашкан. Бул драйвер GCC-архивдөөчү стилиндеги варианттарды кабыл алат, алар аткарылып жаткан китепканачыга которулат же ага өткөрүлүп берилет. Жаңы драйвер кандайдыр бир PIC же AVR китепканасын түзүү же манипуляциялоо үчүн окшош семантикага ээ болгон окшош варианттардын топтомун колдонууга мүмкүндүк берет file Ошентип, китепканачыны чакыруунун сунушталган жолу. Эгерде эски долбоорлор үчүн талап кылынса, мурунку китепканачыны түз эле мурунку компилятордун версияларында кабыл алган эски стилдеги варианттарды колдонуу менен чакырса болот.
Миграция маселелери
Төмөнкү функциялар азыр компилятор тарабынан башкача иштетилет. Кодду ушул компилятордун версиясына көчүрсө, бул өзгөртүүлөр баштапкы кодуңузга өзгөртүүнү талап кылышы мүмкүн. Почтачалардагы версиянын номери кийинки өзгөртүүлөрдү колдоо үчүн компилятордун биринчи версиясын көрсөтөт.
Версия 2.40
Жок.
Версия 2.39 (Функционалдык коопсуздук релизи)
Жок.
Версия 2.36
Жок.
Версия 2.35
Саптан базаларды иштетүү (XCS-2420) Башка XC компиляторлору менен ырааттуулукту камсыз кылуу үчүн, strtol () ж.б. сыяктуу XC8 сапка-функциялары, эгерде көрсөтүлгөн база 36дан чоң болсо, мындан ары киргизүү сапты түрлөөгө аракет кылбайт жана анын ордуна errno-ну EINVAL деп коёт. С стандарты бул базалык мааниден ашып кеткенде функциялардын жүрүм-турумун аныктабайт.
Ылдамдыкты туура эмес оптималдаштыруу 3-деңгээлдеги оптималдаштырууну тандоодо процедуралык абстракцияны оптималдаштыруу иштетилип жаткан (-03). Бул оптималдаштыруу коддун ылдамдыгынын эсебинен коддун өлчөмүн азайтат, андыктан аткарылбашы керек болчу. Бул оптималдаштыруу деңгээлин колдонгон долбоорлор бул чыгарылыш менен курулганда коддун өлчөмү жана аткаруу ылдамдыгы боюнча айырмачылыктарды көрүшү мүмкүн.
Китепкананын иштеши Көптөгөн стандарттык C китепкана функцияларынын коду азыр Microchipтин Бирдиктүү Стандарттык китепканасынан алынган, ал кээ бир жагдайларда мурунку avr-libc китепканасы бергенге салыштырмалуу башкача жүрүм-турумун көрсөтүшү мүмкүн. Мисалы үчүнample, мындан ары lprintf_flt китепканасына (-print _flt опциясы) шилтеме кылуунун зарылчылыгы жок, float форматынын спецификаторлору үчүн форматталган IO колдоосун күйгүзүү. Микрочиптин бирдиктүү стандарттык китепканасынын акылдуу IO өзгөчөлүктөрү бул параметрди ашыкча кылат. Кошумчалай кетсек, сап жана эстутум функциялары үчүн (мисалы, strcpy_P () ж.б. .. ) үчүн _p суффикстүү процедураларды колдонуу мындан ары флеште const саптарында иштеген талап кылынбайт. Стандарттык C процедуралары (мисалы, strcpy ()) программанын эс тутумундагы const-маалыматтар өзгөчөлүгү иштетилгенде, мындай маалыматтар менен туура иштейт.
Версия 2.32
Жок.
Версия 2.31
Жок.
Версия 2.30
Жок.
Версия 2.29 (Функционалдык коопсуздук релизи)
Жок.
Версия 2.20
DFP калыбы өзгөртүлдү Эми компилятор DFP (Түзмөктүн үй-бүлөлүк топтомдору) колдонгон башка макетти болжолдойт. Бул эски DFP бул чыгарылыш менен иштебей калышы мүмкүн жана эски компиляторлор эң акыркы DFPдерди колдоно албай калат дегенди билдирет.
Версия 2.19 (Функционалдык коопсуздук релизи)
Жок.
Версия 2.10
Жок
Версия 2.05
Программанын эсиндеги Const объекттери Демейки боюнча, const-квалификациялуу объекттер программанын эсине жайгаштырылат жана аларга кирүүгө болот (бул жерде сүрөттөлгөндөй). Бул сиздин долбоордун көлөмүнө жана аткаруу ылдамдыгына таасир этет, бирок RAM колдонууну азайтышы керек. Бул функцияны, керек болсо, -mnoconst-da ta-in-progmem опциясын колдонуу менен өчүрсө болот.
Версия 2.00
Конфигурация сактагычтар Түзмөктүн конфигурациясынын сактагычтары эми конфигурациялоо прагмасы аркылуу программаланышы мүмкүн, андан кийин сактагычтын абалын көрсөтүү үчүн маани жуптары коюлат, мис.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Абсолюттук объекттер жана функциялар Объекттерди жана функцияларды эми CCI _at (дареги) спецификаторунун жардамы менен эс тутумдун белгилүү дарегине жайгаштырса болот, мисалыample: #include int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Бул спецификатордун аргументи биринчи байт же инструкция жайгаштырыла турган даректи билдирген туруктуу болушу керек. RAM даректери 0x800000 офсеттин жардамы менен көрсөтүлөт. Бул функцияны колдонуу үчүн CCIди иштетиңиз.
Жаңы үзүлүү функциясынын синтаксиси Компилятор эми С функциялары үзгүлтүккө учураткычтар экенин көрсөтүү үчүн CCI үзгүлтүккө учуроочу (сан) спецификациясын кабыл алат. Спецификатору үзгүлтүккө учураган номерди алат, мисалыample: #include void үзгүлтүк (SPI STC_ vect _num) spi Isr(жараксыз) {…}
Fixed Issues
Төмөнкүлөр түзүүчүгө киргизилген оңдоолор. Булар түзүлгөн коддогу мүчүлүштүктөрдү оңдоп же компилятордун иштөөсүн колдонуучунун көрсөтмөсүндө каралган же көрсөтүлгөнгө өзгөртүшү мүмкүн. Почтачалардагы версиянын номери кийинки маселелер боюнча оңдоолорду камтыган компилятордун биринчи версиясын көрсөтөт. Аталышындагы кашаадагы энбелги(лер) бул маселенин көзөмөлдөө базасындагы идентификациясы. Колдоо кызматына кайрылуу керек болсо, булар пайдалуу болушу мүмкүн.
Түзмөккө тиешелүү кээ бир маселелер түзмөк менен байланышкан Device Family Pack (DFP) менен оңдолгонуна көңүл буруңуз. DFPге киргизилген өзгөртүүлөр жана эң акыркы топтомдорду жүктөп алуу үчүн MPLAB топтомунун менеджерин караңыз.
Версия 2.40
Өтө эркин (XCS-2876) -mrelax опциясын колдонууда, компилятор кээ бир бөлүмдөрдү чогуу бөлгөн жок, натыйжада коддун өлчөмү азыраак оптималдуу болду. Бул жаңы MUSL китепканаларын колдонгон код же алсыз символдор менен болгон болушу мүмкүн.
Карталоо өзгөчөлүгү эскертүүдө айтылгандай өчүрүлгөн эмес (XCS-2875) Config-in-config mappedprogmem өзгөчөлүгү иштетилип жаткан проэмдеги нарк-дата-дата-функциясына көз каранды. Эгер cost-data-ipconfig-mapped-proem өзгөчөлүгү параметрди колдонуу менен ачык иштетилген болсо жана cost-data-inprogmem өзгөчөлүгү өчүрүлгөн болсо, config-mapped- data- in-config-mapped- деген эскертүү билдирүүсүнө карабастан, шилтеме кадамы ишке ашпай калды. proem өзгөчөлүгү автоматтык түрдө өчүрүлгөн, бул таптакыр туура эмес. Бул кырдаалда const-data-in-config-mapped-proem өзгөчөлүгү азыр толугу менен өчүрүлгөн.
DFP NVMCTRL (XCS-2848) туура кирүү үчүн өзгөрөт AVR64EA түзмөктөрү тарабынан колдонулган ишке киргизүү коду NVMCTRL реестри Конфигурацияны өзгөртүүдөн коргоо (CCP) астында экенин жана IO SFRди const-data-in configmapped-proem компилятору колдонгон бетке коё албаганын эске алган эмес. өзгөчөлүгү. AVR-Ex_DFP 2.2.55 версиясында жасалган өзгөртүүлөр ишке киргизүү кодун бул реестрге туура жазууга мүмкүндүк берет.
Флеш картасын болтурбоо үчүн DFP өзгөрөт (XCS-2847) AVR128DA28/32/48/64 Силикон катасында (DS80000882) билдирилген флэш-карталоо түзмөгүнүн өзгөчөлүгүнө байланыштуу көйгөйдү чечүү жолу ишке ашырылды. const-data-in-config-mapped-proem компилятор өзгөчөлүгү демейки боюнча жабыркаган түзмөктөр үчүн колдонулбайт жана бул өзгөртүү AVR-Ex_DFP 2.2.160 версиясында пайда болот.
sinhf же coshf менен куруу катасы (XCS-2834) sinhf () же coshf () китепкана функцияларын колдонуу аракети аныкталбаган шилтемени сүрөттөгөн шилтеме катасына алып келди. Шилтемеленген жетишпеген функция эми компилятордун бөлүштүрүлүшүнө кошулду.
Nopa менен каталарды түзүү (XCS-2833) Nopa атрибутун () катары колдонуу менен анын ассемблер аты көрсөтүлгөн функция менен колдонуу ассемблерден ката билдирүүлөрүн пайда кылды. Бул айкалыштыруу мүмкүн эмес.
Көрсөткүч аргументтери менен вариадик функциянын катасы (XCS-2755, XCS-2731) Аргументтердин өзгөрүлмө саны бар функциялар 24 биттик (_memo түрү) көрсөткүчтөр проэмдеги чыгымдардын маалыматтары өзгөчөлүгү иштетилгенде өзгөрмө аргументтердин тизмесинде өткөрүлүшүн күтөт. Маалымат эстутумунун көрсөткүчү болгон аргументтер 16 биттик объекттер катары берилип, акыры окулганда коддун бузулушуна алып келген. Cons data- in-proem өзгөчөлүгү иштетилгенде, бардык 16-бит көрсөткүчтөрдүн аргументтери эми 24-бит көрсөткүчтөрүнө айландырылат. strtoxxx китепкана функциялары иштебей жатат (XCS-2620) const-data-in-proem функциясы иштетилгенде, strtoxxx китепкана функцияларындагы enter параметри программанын эсинде жок булак сап аргументтери үчүн туура жаңыртылган эмес.
Жараксыз трансляциялар үчүн эскертүүлөр (XCS-2612) Эми компилятор ката чыгарат, эгерде проэмдин наркы функциясы иштетилсе жана саптын литералынын дареги дайындардын дарек мейкиндигине ачык чыгарылса (const квалификаторун таштап), мисалыample, (uint8 t *) “Салам дүйнө!”. Эгер const маалымат көрсөткүчү дайындардын дарек мейкиндигине ачык түрдө чыгарылганда дарек жараксыз болушу мүмкүн болсо, эскертүү көйгөй болуп саналат.
Башталбаган const объекттерин жайгаштыруу (XCS-2408) Башталбаган const жана const v olatile объекттери программалык эстутумда программалык эстутумдун баарын же бир бөлүгүн маалымат дарек мейкиндигине түшүргөн түзмөктөрдө жайгаштырылган эмес. Бул түзүлүштөр үчүн, мындай объекттер эми программалык эстутумга жайгаштырылып, алардын иштешин башка түзмөктөр менен шайкеш кылат.
Версия 2.39 (Функционалдык коопсуздук релизи)
Жок.
Версия 2.36
Кечиктирүүдө ката (XCS-2774) Демейки Эркин режимди оптималдаштыруудагы кичине өзгөрүүлөр операнд туюнтмаларынын кечиктирүү орнотулган функцияларына тынымсыз бүктөлүшүнө жол бербейт, натыйжада алар байланышсыз катары каралып, катаны козгоду: _buil tin avr delay_ cycles ac ompile күтөт. убакыт бүтүн константасы.
Версия 2.35
_at (XCS-2653) менен катар бөлүштүрүү Бир эле аталыштагы бөлүмдө бир нече объектилердин орундарын жанаша бөлүштүрүү жана at () колдонуу туура болгон жок. Мисалы үчүнample: constchararrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[ ] at tri butte ((section(“.my s eke”))) = {Oxen, Ox FE }; aril кийин дароо arr2 коюу керек болчу.
Бөлүмдүн баштоо даректерин көрсөтүү (XCS-2650) -Wal, -section-start опциясы бөлүмдөрдү көрсөтүлгөн баштапкы дарекке унчукпай жайгаштырбай жатты. Бул маселе каалаган ыңгайлаштырылган бөлүмдөр үчүн чечилди; бирок ал кандайдыр бир стандарттык бөлүмдөр үчүн иштебейт, мисалы . текст же . bss, ал -Wl, -T опциясын колдонуу менен коюлушу керек.
Эс алуу учурунда байланыштыргыч бузулат (XCS-2647) -relax оптималдаштыруу иштетилгенде жана жеткиликтүү эстутумга туура келбеген код же маалымат бөлүмдөрү бар болгондо, шилтеме берүүчү кыйрады. Эми, мындай шартта, анын ордуна ката билдирүүлөрү чыгарылат.
Начар EEPROM мүмкүнчүлүгү (XCS-2629) -monist-data-in-proem опциясы иштетилгенде (бул демейки абал), натыйжада EEPROM эс тутуму туура окулбай калганда, leproma _read_ блоктоо тартиби Mega түзмөктөрүндө туура иштеген жок.
Эстутум туура эмес бөлүштүрүү (XCS-2593, XCS-2651) -Текст же -Тата шилтемеси опциясы болгондо (мисалыample -Wl драйвер опциясы аркылуу өттү) көрсөтүлсө, тиешелүү текст/маалымат аймагы жаңыртылды; бирок, акыркы дарек тиешелүү түрдө туураланган эмес, бул аймак максаттуу түзмөктүн эс тутумунун диапазонунан ашып кетишине алып келиши мүмкүн.
Жараксыз ATtiny үзгүлтүккө учуратуу коду (XCS-2465) Tatin түзмөктөрүн курууда жана оптималдаштыруулар өчүрүлгөндө (-00), үзгүлтүккө учуратуу функциялары диапазондон тышкары ассемблер билдирүүлөрүн козгогон болушу мүмкүн.
Опциялар өткөрүлбөй жатат (XCS-2452) -Wl опциясын бир нече үтүр менен ажыратылган байланыштыргыч опциялары менен колдонгондо, шилтеме берүүчү опциялардын баары шилтеме берүүчүгө өткөрүлүп берилген эмес.
Программа эстутумун кыйыр окуу катасы (XCS-2450) Кээ бир учурларда компилятор көрсөткүчтөн программанын эстутумуна эки байт маанини окуп жатканда ички ката (таанылбай турган insn) чыгарды.
Версия 2.32
Китепканага экинчи кирүү ишке ашпай калды (XCS-2381) xc8-ar Windows версиясын чакыруу. exe китепканасынын архивгери бар китепкананын архивине экинчи жолу кирүү үчүн ката кабарынын атын өзгөртүүгө мүмкүн болбой калган болушу мүмкүн.
Версия 2.31
Түшүндүрүлбөгөн компилятордун каталары (XCS-2367) Системанын убактылуу каталогу чекит камтыган жолго коюлган Windows платформаларында иштегенде'.' белгиси болсо, компилятор аткара албай калган болушу мүмкүн.
Версия 2.30
Глобалдык энбелгилер контурлангандан кийин туура эмес жайгаштырылды (XCS-2299) Процедуралык абстракция менен ажыратылган монтаж ырааттуулугуна глобалдык энбелгилерди жайгаштырган кол менен жазылган монтаж коду туура жайгаштырылбаган болушу мүмкүн.
Жагымдуу кыйроо (XCS-2287) -merlad опциясын колдонуу, куйруктан секирүү релаксация оптималдаштыруулары бөлүмдүн аягында болбогон ret инструкциясын алып салууга аракет кылганда байланыштыргычтын бузулушуна алып келиши мүмкүн.
Энбелгилерди маанилер катары оптималдаштырууда бузулуу (XCS-2282) "Энбелгилер баалуулуктар катары" GNU C тилинин кеңейтүүсүн колдонгон код процедуралык абстракцияны оптималдаштыруунун бузулушуна алып келиши мүмкүн, ал эми Outlined VMA диапазонунда оңдоо катасы бар.
Анчалык туруктуу эмес (XCS-2271) баштап () жана башка функциялардын прототиптери -monist-data inprogmem өзгөчөлүгү өчүрүлгөндө кайтарылган сап көрсөткүчтөрүндө стандарттуу эмес чыгымдардын квалификациясын мындан ары көрсөтпөңүз. avrxmega3 жана avertin түзмөктөрүндө бул функция биротоло иштетилгенин эске алыңыз.
Жоголгон инициализаторлор (XCS-2269) Котормо бирдигиндеги бирден ашык өзгөрмө бөлүмгө жайгаштырылса (бөлүм же атрибут ((бөлүм))) колдонуп, жана биринчи мындай өзгөрмө нөлгө инициализацияланган же инициализатор жок болсо, ошол эле котормо бирдигиндеги башка өзгөрмөлөр үчүн инициализаторлор Ошол эле бөлүмгө коюлгандар жоголду.
Версия 2.29 (Функционалдык коопсуздук релизи)
Жок.
Версия 2.20
Узун буйруктардагы ката (XCS-1983) AVR максаттуу колдонууда, компилятор а менен токтоп калышы мүмкүн file табылган жок ката, эгерде буйрук сабы өтө чоң болсо жана тырмакчалар, тескери сызыктар ж.б.
Дайындалбаган родата бөлүмү (XCS-1920) AVR шилтемеси avrxmega3 жана avrtiny архитектураларын курууда ыңгайлаштырылган родата бөлүмдөрү үчүн эстутумду дайындай алган жок, бул эстутумдун кайталануу каталарын жаратышы мүмкүн
Версия 2.19 (Функционалдык коопсуздук релизи)
Жок.
Версия 2.10
Көчүрүү каталары (XCS-1891) Эң туура бөлүштүргүч шилтемени бошоткондон кийин бөлүмдөрдүн ортосунда эс тутумдун "тешиктерин" калтырган. Эстутумду бөлүүдөн тышкары, бул компьютерге салыштырмалуу секирүү же чалуулардын диапазондон чыгып кетүүсүнө байланыштуу шилтемелердин ордун алмаштырууда каталардын болушу ыктымалдыгын жогорулатты.
Эс алуу жолу менен өзгөртүлбөгөн нускамалар (XCS-1889) Секирүү же чалуу инструкциялары үчүн шилтемелердин релаксациясы болгон жок, алардын максаттары жумшарса жетүүгө болот.
Жок функционалдуулук (XCSE-388) Бир нече аныктамалардан clock_ div_ t жана clock_prescale_set () сыяктуу ATmega324PB, ATmega328PB, ATtiny441 жана ATtiny841 сыяктуу түзмөктөр үчүн аныкталган эмес.
Макрос жок Preprocessor macros_ 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 өлчөмүндөгү программа окуу үчүн гана берилүүчү маалыматтар программанын эстутумунун ордуна оперативдүү эстутумду керектеп жатканын билдирген.
Туура эмес программа эстутуму (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 же rcчалууну камтыган максаттуу 4к байт аралыкта болгондо, шилтемени алмаштыруу катасы чыгышы мүмкүн.
Версия 2.00
Жок.
Белгилүү маселелер
Төмөндө компилятордун иштөөсүндөгү чектөөлөр бар. Бул жалпы коддоо чектөөлөр болушу мүмкүн, же
колдонуучунун колдонмосунда камтылган маалыматтан четтөөлөр. Аталышындагы кашаадагы энбелги(лер) бул маселенин көзөмөлдөө базасындагы идентификациясы. Колдоо кызматына кайрылуу керек болсо, бул пайдалуу болушу мүмкүн. Энбелгиси жок нерселер режимдин иштөөсүн сүрөттөгөн жана биротоло күчүндө кала турган чектөөлөр болуп саналат.
MPLAB X IDE интеграциясы
MPLAB IDE интеграциясы Эгерде Compiler MPLAB IDEден колдонула турган болсо, анда Compiler орнотуудан мурун MPLAB IDE орнотуу керек.
Code Generation
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-]Оку-Учурда-Жазуу бөлүмдөрүн билбейт. Натыйжада, шилтеме берүүчү эстутумдун жараксыз чөйрөсүндө окуу үчүн гана берилиштерди бөлүштүрүшү мүмкүн. Эгер прагмадагы жээк-маалыматтар өзгөчөлүгү иштетилсе, туура эмес жайгаштырылган маалыматтардын ыктымалдыгы көбөйөт, айрыкча, конфигурациядагы-карталанган-проэмдин жээгиндеги маалыматтары да иштетилген болсо. Керек болсо, бул функциялар өчүрүлүшү мүмкүн.
Объект file иштетүү тартиби (XCS-2863) Объекттердин тартиби files шилтеме берүүчү тарабынан иштетилет, процедуралык абстракцияны оптималдаштыруунун (-mpa опциясы) колдонулушуна жараша айырмаланышы мүмкүн. Бул бир нече модулдар боюнча начар функцияларды аныктаган кодго гана таасирин тийгизет.
Абсолюттук байланыштыргыч катасы (XCS-2777) Объект RAMдын башталышында даректе абсолюттук абалга келтирилгенде жана инициализацияланбаган объекттер да аныкталганда, байланыштыргыч катасы пайда болушу мүмкүн.
Кыска ойготуу ID'лери (XCS-2775) ATA5700/2 түзмөктөрү үчүн PHID0/1 регистрлери 16 бит эмес, туурасы 32 бит катары гана аныкталат.
Символ чалуу учурунда байланыштыргычтын бузулушу (XCS-2758) Булак коду -Wl, –defsym шилтеме берүүчү опциясы аркылуу аныкталган символду чакырганда -merlad драйвери опциясы колдонулса, шилтеме берүүчү бузулушу мүмкүн.
Туура эмес инициализация (XCS-2679) Кээ бир глобалдуу/статикалык байт-өлчөмдүү объектилердин баштапкы маанилери маалымат эстутумунда жайгаштырылган жер менен өзгөрмөлөргө иштөө убагында кире турган жердин ортосунда дал келбестик бар.
туура эмес башталган бош коюулар (XCS-2652) Көрсөтүлгөн () боюнча конвертациялоо үчүн предметтик сап экспоненциалдык форматта калкыма чекиттүү санды камтыса жана e символунан кийин күтүлбөгөн белги болсо, анда бош дарек, эгерде берилсе, кийинки символду көрсөтөт. e эмес, е өзү. Мисалы үчүнampле: айтылган("хоой", бош); х белгисине бош көрсөтүүгө алып келет.
Начар кыйыр функция чалуулары (XCS-2628) Кээ бир учурларда, структуранын бир бөлүгү катары сакталган функция көрсөткүчү аркылуу жасалган функция чалуулары ишке ашпай калышы мүмкүн.
strtof он алтылык калкыма нөлдү кайтарат (XCS-2626) strtof () et al жана scanf () ж.б. китепкана функциялары ар дайым көрсөткүчтү көрсөтпөгөн он алтылык калкыма чекиттүү санды өзгөртөт.
нөл. Мисалы үчүнample: stator("Үкү", & empty); 0 эмес, 1 маанисин кайтарат.
Стек кеңешчисинин так эмес билдирүүсү (XCS-2542, XCS-2541) Кээ бир учурларда, колдонулган рекурсия же аныкталбаган стек (мүмкүн alloca() колдонуу аркылуу) жөнүндө стек кеңешчиси эскертүүсү чыгарылбайт.
Кайталанма үзгүлтүккө учуроо коду (XCS-2421) Бирден ашык үзгүлтүксүз функция бирдей денеге ээ болгон учурда, компилятор бир үзгүлтүккө учуратуу функциясын экинчисин чакырышы мүмкүн. Бул бардык чалуулар менен жабылган регистрлердин кереги жок сакталып калышына алып келет жана үзгүлтүктөр учурдагы үзгүлтүккө учураткычтын эпилогу иштей электе эле иштетилет, бул коддун бузулушуна алып келиши мүмкүн.
Программанын эсинде жок Const объекттери (XCS-2408) avrxmega3 жана avertins долбоорлору үчүн идеалдуу эмес const объекттери маалымат эстутумуна жайгаштырылат, бирок эскертүү алар программанын эс тутумуна жайгаштырылганын көрсөтүп турат. Бул маалымат эстутум мейкиндигинде программалык эстутуму жок түзмөктөргө жана инициализацияланган объекттерге таасирин тийгизбейт.
Жараксыз DFP жолу менен начар чыгаруу (XCS-2376) Эгерде компилятор жараксыз DFP жолу жана "спец" менен чакырылса file тандалган түзмөк үчүн бар болсо, компилятор жетишпеген түзмөктүн үй-бүлөлүк топтомун билдирбейт жана анын ордуна "спец" тандайт file, анда жараксыз чыгарууга алып келиши мүмкүн. "спец" files бөлүштүрүлгөн DFPлер менен жаңыланбашы мүмкүн жана ички компилятордун сыналышы менен гана колдонууга арналган.
Эстутумдун кабатталышы аныкталган жок (XCS-1966) Компилятор дарек боюнча абсолюттук абалга келтирилген объекттердин (() аркылуу) жана бөлүмдүн () спецификациясын колдонгон жана ошол эле дарекке байланышкан башка объекттердин эс тутумунун кайталанышын аныктабай жатат.
Китепкана функциялары жана _meme иштебей калды (XCS-1763) _memo дарек мейкиндигинде аргументи бар лимбикалык флот деп аталган функциялар иштебей калышы мүмкүн. Көңүл буруңуз, китепкананын процедуралары кээ бир C операторлорунан чакырылат, мисалы, мисалыample, төмөнкү код таасир этет: return regFloatVar > memxFloatVar;
Чектелген лимбикалык ишке ашыруу (AVRTC-731) ATTiny4/5/9/10/20/40 өнүмдөрү үчүн C / Math китепканасынын лимбикалык стандарттык ишке ашырылышы өтө чектелген же жок.
Программа эстутум чектөөлөрү (AVRTC-732) 128 кбдан ашкан программалык эс тутумдагы сүрөттөр инструменттердин тизмеги тарабынан колдоого алынат; бирок, -relax опциясы колдонулганда, керектүү функциянын түтүктөрүн түзүүнүн ордуна, релаксациясыз жана пайдалуу ката кабарысыз шилтемени токтотуунун белгилүү учурлары бар.
Аты мейкиндигин чектөө (AVRTC-733) Аты аталган дарек мейкиндиктери инструменттердин тизмеги тарабынан колдоого алынат, колдонуучунун колдонмосунун Атайын Тип Квалификациялары бөлүмүндө айтылган чектөөлөргө ылайык.
Убакыт алкактары The китепкана функциялары GMTти болжолдойт жана жергиликтүү убакыт алкактарын колдобойт, ошондуктан жергиликтүү убакыт () gummite () менен бирдей убакытты кайтарат.ample.
КАРДАРДЫ КОЛДОО
file:///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ VR үчүн. htm
Документтер / Ресурстар
![]() |
MICROCHIP MPLAB XC8 C Compiler программасы [pdf] Колдонуучунун колдонмосу MPLAB XC8 C, MPLAB XC8 C Compiler Программасы, Компилятор Программасы, Программалык камсыздоо |