Програмне забезпечення компілятора MICROCHIP MPLAB XC8 C 

Програмне забезпечення компілятора MICROCHIP MPLAB XC8 C

ЦЕЙ ДОКУМЕНТ МІСТИТЬ ВАЖЛИВУ ІНФОРМАЦІЮ ЩОДО КОМПІЛЯТОРА MPLAB XC8 C, ЯКИЙ НАЦІЛЬОВАНО НА ПРИСТРОЇ MICROCHIP AVR.
ПРОЧИТАЙТЕ ЦЕ ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ ПЕРЕД ЗАПУСКОМ. ДИВІТЬСЯ ПРИМІТКИ ДО ВИПУСКУ КОМПІЛЯТОРА MPLAB XC8 C ДЛЯ ДОКУМЕНТА PIC, ЯКЩО ВИ ВИКОРИСТОВУЄТЕ КОМПІЛЯТОР ДЛЯ 8-БІТНИХ ПРИСТРОЇВ PIC.

Зміст приховати

закінченоview

вступ

Цей випуск компілятора Microchip MPLAB® XC8 C містить кілька нових функцій, виправлення помилок і підтримку нових пристроїв.

Дата збірки

Офіційною датою створення цієї версії компілятора є 3 липня 2022 року.

Попередня версія

Попередня версія компілятора MPLAB XC8 C була 2.39, компілятор функціональної безпеки, створений 27 січня 2022 року. Попередній стандартний компілятор був версією 2.36, створений 27 січня 2022 року.

Інструкція з функціональної безпеки

Посібник із функціональної безпеки для компіляторів MPLAB XC доступний у пакеті документації, коли ви купуєте ліцензію на функціональну безпеку.

Ліцензії та версії компонентів

Інструменти компілятора MPLAB® XC8 C для мікроконтролерів AVR написані та розповсюджуються згідно з GNU General Public License (GPL), що означає, що його вихідний код вільно поширюється та доступний для громадськості. Вихідний код для інструментів під GNU GPL можна завантажити окремо з Microchip webсайт. Ви можете прочитати GNU GPL у file названий розташований у підкаталозі вашого каталогу встановлення. Загальне обговорення принципів, що лежать в основі GPL, можна знайти тут. Код підтримки, наданий для заголовка files, сценарії компонування та бібліотеки часу виконання є власним кодом, на який не поширюється GPL.

Цей компілятор є реалізацією GCC версії 5.4.0, binutils версії 2.26 і використовує avr-libc версії 2.0.0.

Системні вимоги

Компілятор MPLAB XC8 C і програмне забезпечення для ліцензування, яке він використовує, доступні для різноманітних операційних систем, включаючи 64-розрядні версії: професійних версій Microsoft Windows 10; Ubuntu 18.04; і macOS 10.15.5. Двійкові файли для Windows підписані кодом. Двійкові файли для mac OS мають підпис і нотаріус.

Якщо ви використовуєте мережевий сервер ліцензій, для розміщення сервера ліцензій можна використовувати лише комп’ютери з операційними системами, які підтримуються компіляторами. Починаючи з версії xclm 2.0, сервер мережевих ліцензій можна інсталювати на платформі Microsoft Windows Server, але сервер ліцензій не обов’язково запускається на серверній версії операційної системи.

Пристрої, що підтримуються

Цей компілятор підтримує всі 8-розрядні пристрої AVR MCU, відомі на момент випуску. Перегляньте (в каталозі компілятора doc) список усіх підтримуваних пристроїв. Ці files також перелічує налаштування бітів конфігурації для кожного пристрою.

Видання та оновлення ліцензій

Компілятор MPLAB XC8 можна активувати як ліцензований (PRO) або неліцензійний (безкоштовний) продукт. Вам потрібно придбати ключ активації, щоб ліцензувати ваш компілятор. Ліцензія забезпечує вищий рівень оптимізації порівняно з безкоштовним продуктом. Неліцензійним компілятором можна працювати нескінченно довго без ліцензії.

Компілятор MPLAB XC8 Functional Safety необхідно активувати за допомогою ліцензії на функціональну безпеку, придбаної в Microchip. Компілятор не працюватиме без цієї ліцензії. Після активації ви можете вибрати будь-який рівень оптимізації та використовувати всі функції компілятора. Цей випуск компілятора функціональної безпеки MPLAB XC підтримує ліцензію мережевого сервера.
Перегляньте документ «Встановлення та ліцензування компіляторів MPLAB XC C» (DS50002059), щоб отримати інформацію про типи ліцензій та встановлення компілятора з ліцензією.

Встановлення і активація

Перегляньте також розділи «Проблеми з міграцією» та «Обмеження», щоб отримати важливу інформацію про останній менеджер ліцензій, що входить до складу цього компілятора.
Якщо ви використовуєте MPLAB IDE, обов’язково встановіть останню версію MPLAB X IDE 5.0 або пізнішої версії перед установкою цього інструменту. Закрийте IDE перед встановленням компілятора. Запустіть програму встановлення компілятора .exe (Windows), .run (Linux) або додаток (macOS), наприклад XC8-1.00.11403-windows.exe, і дотримуйтеся вказівок на екрані.
Рекомендовано використовувати каталог встановлення за замовчуванням. Якщо ви використовуєте Linux, ви повинні встановити компілятор за допомогою терміналу та з облікового запису root. Встановіть за допомогою облікового запису macOS з правами адміністратора.

Активація тепер виконується окремо від встановлення. Для отримання додаткової інформації перегляньте документ «Менеджер ліцензій для компіляторів MPLAB® XC C» (DS52059).

Якщо ви вирішите запустити компілятор за ліцензією на оцінку, тепер ви отримаєте попередження під час компіляції, коли мине 14 днів після закінчення періоду оцінки. Таке ж попередження видається, якщо ви протягом 14 днів після закінчення підписки на HPA.

Сервер мережевих ліцензій XC є окремим інсталятором і не входить до інсталятора компілятора для одного користувача.

XC License Manager тепер підтримує роумінг плаваючих мережевих ліцензій. Розрахована на користувачів мобільних пристроїв, ця функція дозволяє плаваючій ліцензії відключитися від мережі на короткий період часу. Використовуючи цю функцію, ви можете відключитися від мережі та продовжувати використовувати компілятор MPLAB XC. Перегляньте папку doc інсталяції XCLM, щоб дізнатися більше про цю функцію. MPLAB X IDE містить вікно ліцензій (Інструменти > Ліцензії) для візуального керування роумінгом.

Вирішення проблем із встановленням

Якщо у вас виникли труднощі з інсталяцією компілятора в будь-якій операційній системі Windows, спробуйте наступні пропозиції.

  • Запустіть установку від імені адміністратора.
  • Встановіть дозволи програми встановлення на «Повний контроль». (Натисніть правою кнопкою миші file, виберіть Властивості, вкладка Безпека, виберіть користувача, відредагуйте.)
  • Встановіть дозволи тимчасової папки на «Повний доступ!

Щоб визначити розташування тимчасової папки, введіть %temp% у команду «Виконати» (клавіша з логотипом Windows + R). Це відкриє a file діалогове вікно провідника, яке показує цей каталог і дозволить вам визначити шлях до цієї теки.

Документація компілятора

Посібники користувача компілятора можна відкрити на сторінці HTML, яка відкривається у вашому браузері, якщо натиснути синю кнопку довідки на інформаційній панелі MPLAB X IDE, як показано на знімку екрана.

Документація компілятора
Якщо ви створюєте для 8-розрядних цілей AVR, Посібник користувача компілятора MPLAB® XC8 C для AVR® MCU містить інформацію про параметри та функції компілятора, які застосовуються до цієї архітектури.

Підтримка клієнтів

Microchip вітає повідомлення про помилки, пропозиції чи коментарі щодо цієї версії компілятора. Надсилайте будь-які звіти про помилки або запити щодо функцій через систему підтримки.

Оновлення документації

Оновлені онлайн-версії документації MPLAB XC8 можна знайти в Інтернет-технічній документації Microchip. webсайт.

Нова або оновлена ​​документація AVR у цьому випуску:

  • Повідомлення про авторські права MUSL
  • Встановлення та ліцензування компіляторів MPLAB XC C (версія M)
  • MPLAB XC8 User!s Guide for Embedded Engineers – AVR MCU (версія A)
  • Посібник користувача MPLAB XC8 C Compiler для AVR MCU (версія F)
  • Довідковий посібник із уніфікованої стандартної бібліотеки Microchip (версія B)

Довідковий посібник з уніфікованої стандартної бібліотеки Microchip описує поведінку та інтерфейс функцій, визначених уніфікованою стандартною бібліотекою Microchip, а також передбачуване використання типів бібліотек і макросів. Частина цієї інформації раніше містилася в посібнику користувача компілятора MPLAB® XC8 C для AVR® MCU. Інформація про бібліотеку пристрою все ще міститься в цьому посібнику компілятора.

Якщо ви тільки починаєте працювати з 8-розрядними пристроями та MPLAB XC8 C Compiler, MPLAB® XC8 User!s Guide for Embedded Engineers – AVR® MCU (DS50003108) містить інформацію про налаштування проектів у MPLAB X IDE та написання коду. для вашого першого проекту MPLAB XC8 C. Цей посібник зараз поширюється разом із компілятором.

Посібник користувача Hamate було включено до каталогу документів цього випуску. Цей посібник призначений для тих, хто використовує Hamate як окрему програму.

Що нового

Нижче наведено нові функції AVR-target, які тепер підтримує компілятор. Номер версії в підзаголовках вказує на першу версію компілятора, яка підтримує наведені нижче функції.

Версія 2.40

Підтримка нових пристроїв Тепер доступна підтримка таких частин AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32 і AVR64EA48.
Покращена процедурна абстракція Інструмент оптимізації процедурної абстракції (PA) було вдосконалено, щоб можна було окреслити код, що містить інструкцію виклику функції ( виклик виклику ) . Це відбудеться, лише якщо стек не використовується для передачі аргументів або отримання значення, що повертається функцією. Стек використовується під час виклику функції зі змінним списком аргументів або під час виклику функції, яка приймає більше аргументів, ніж регістри, призначені для цієї мети. Цю функцію можна вимкнути за допомогою параметра monk-pa-outline-calls або процедурну абстракцію можна повністю вимкнути для об’єкта file або функціонуйте за допомогою -monk-pa-on-file і -mo.-pa-on-function відповідно, або використовуючи атрибут nipa (специфікатор nipa) вибірково з функціями

Макрос покриття коду Компілятор тепер визначає макрос __CODECOV, якщо вказано дійсний параметр mcodecov.

Можливість резервування пам'яті Драйвер xc8-cc тепер прийматиме параметр -mreserve=space@start: end під час створення для цілей AVR. Цей параметр резервує вказаний діапазон пам’яті в просторі пам’яті даних або програм, запобігаючи компонувальнику заповнювати код або об’єкти в цій області.

Розумніший розумний IO Було внесено кілька покращень у функції Smart IO, включаючи загальні налаштування коду ядра printf, розгляд специфікатора перетворення %n як незалежного варіанту, зв’язування в підпрограмах vararg pop на вимогу, використання коротших типів даних, де це можливо, для обробки аргументів функції IO , а також розкладання загального коду на ширину поля та обробку точності. Це може призвести до значної економії коду та даних, а також збільшити швидкість виконання IO.

Версія 2.39 (версія функціональної безпеки)

Ліцензія на мережевий сервер Цей випуск компілятора функціональної безпеки MPLAB XC8 підтримує ліцензію мережевого сервера.

Версія 2.36

Жодного.

Версія 2.35

Підтримка нових пристроїв Підтримка доступна для таких частин AVR: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 і AVR64DD32.

Покращене перемикання контексту Нова опція -mcall-isr-prologues змінює те, як функції переривання зберігають регістри під час входу та те, як ці регістри відновлюються після завершення процедури переривання. Він працює подібно до параметра -mcall-prologues, але впливає лише на функції переривання (ISR).

Ще більше покращено перемикання контексту Нова опція -mgas-isr-prologues керує кодом виклику контекстів, створеним для невеликих процедур обслуговування переривань. Якщо ввімкнути цю функцію, асемблер скануватиме ISR на використання регістрів і зберігатиме ці використані регістри лише за потреби.

Настроюване флеш-картування Деякі пристрої в сімействі AVR DA і AVR DB мають SFR (наприклад, FLMAP), який визначає, який 32k розділ пам'яті програм буде відображено в пам'ять даних. Новий параметр – mconst-data-in-config-mapped-proem можна використовувати, щоб зв’язувач розміщував усі кваліфіковані дані cons в одному розділі розміром 32 КБ і автоматично ініціалізував відповідний регістр SFR, щоб гарантувати, що ці дані відображаються в просторі пам’яті даних. , де доступ до нього буде більш ефективним.

Уніфіковані стандартні бібліотеки Microchip Усі компілятори MPLAB XC спільно використовуватимуть уніфіковану стандартну бібліотеку Microchip, яка тепер доступна з цією версією MPLAB XC8. Посібник користувача компілятора MPLAB® XC8 C/або AVR® MCU більше не включає документацію для цих стандартних функцій. Тепер цю інформацію можна знайти в Довідковому посібнику з уніфікованої стандартної бібліотеки Microchip. Зауважте, що деякі функції, раніше визначені avr-libc, більше не доступні. (Див. Librar):'. функціональність...)

Розумний IO Як частина нових уніфікованих бібліотек, функції вводу-виводу в сімействах друку та сканування тепер генеруються спеціально для кожної збірки на основі того, як ці функції використовуються в програмі. Це може суттєво зменшити ресурси, які використовує програма.
Опція допомоги Smart IO Під час аналізу викликів інтелектуальних функцій вводу-виводу (таких як printf () або scanf () ) компілятор не завжди може визначити з рядка формату або вивести з аргументів ті специфікатори перетворення, які потрібні для виклику. Раніше компілятор завжди не робив жодних припущень і гарантував, що повнофункціональні функції вводу-виводу були зв’язані в остаточному образі програми. Було додано нову опцію – msmart-io-format=fmt, щоб натомість компілятор міг отримати інформацію від користувача про специфікатори перетворення, які використовуються розумними функціями вводу-виводу, використання яких є неоднозначним, запобігаючи зв’язуванню надто довгих процедур вводу-виводу. (Додаткову інформацію див. у розділі Smart-io-format Option.)

Розміщення власних розділів Раніше параметр -Wl, –section-start лише розміщував вказаний розділ за запитуваною адресою, коли сценарій компонування визначав вихідний розділ із такою самою назвою. Якщо це не так, розділ розміщується за адресою, вибраною компонувальником, і цей параметр фактично ігнорується. Тепер цей параметр застосовуватиметься до всіх власних розділів, навіть якщо сценарій компонування не визначає розділ. Однак зауважте, що для стандартних розділів, таких як . текст, . bss або . даних, найкращий розподільник матиме повний контроль над їх розміщенням, і параметр не матиме жодного ефекту. Використовуйте параметр -Wl, -Tsection=add, як описано в посібнику користувача.

Версія 2.32

Керівництво по стеку Доступна з ліцензією компілятора PRO, функція керування стеком компілятора може бути використана для оцінки максимальної глибини будь-якого стека, який використовується програмою. Він створює та аналізує графік викликів програми, визначає використання стека кожною функцією та створює звіт, з якого можна зробити висновок про глибину стеків, які використовує програма. Цю функцію можна ввімкнути за допомогою параметра командного рядка -mchp-stack-usage. Зведення про використання стека друкується після виконання. Детальний звіт про стек доступний на карті file, яку можна запросити звичайним способом.

Підтримка нового пристрою Підтримка доступний для таких частин AVR: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32 і AVR32DB48.

Підтримка відкликаного пристрою більше не доступний для наступних частин AVR: AVR16DA28, AVR16DA32 і AVR16DA48.

Версія 2.31

Жодного.

Версія 2.30

Нова опція для запобігання ініціалізації даних Нова опція драйвера -mno-data-ini t запобігає ініціалізації даних і очищенню розділів bss. Він працює шляхом придушення виведення символів do_copy_data та d o_clear_ bss у асемблері files, що, у свою чергу, запобігатиме включенню цих підпрограм компонувальником.

Покращена оптимізація Було внесено низку вдосконалень оптимізації, включаючи видалення надлишкових інструкцій повернення, видалення деяких переходів після інструкції пропуску, якщо біт є, а також покращену процедурну абстракцію та можливість ітерації цього процесу.

Тепер доступні додаткові параметри для керування деякими з цих оптимізацій, зокрема -f прив’язки розділів, що дозволяє здійснювати доступ до статичних об’єктів відносно одного символу; -mpai derations=n, що дозволяє змінювати кількість ітерацій процедурної абстракції з 2 за замовчуванням; і, -mpa- call cost- shortcall, який виконує більш агресивну процедурну абстракцію, в надії, що компонувальник може розслабити довгі виклики. Цей останній параметр може збільшити розмір коду, якщо базові припущення не реалізуються.

Підтримка нових пристроїв Підтримка доступна для таких частин AVR: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 і AVR128DB64.

Підтримка відібраного пристрою Підтримка більше не доступна для таких частин AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C і ATA664251.

Версія 2.29 (версія функціональної безпеки)

Заголовок file для вбудованих модулів компілятора Щоб переконатися, що компілятор може відповідати мовним специфікаціям, таким як MISRA, заголовок file, який автоматично включається , було оновлено. Цей заголовок містить прототипи для всіх вбудованих функцій, таких як _buil tin _avrnop () і _buil tin_ avr delay_ cycles (). Деякі вбудовані засоби можуть бути несумісними з MISRA; їх можна опустити, додавши визначення _Xe_ STRICT_ MISRA до командного рядка компілятора. Вбудовані компоненти та їхні оголошення оновлено для використання типів із фіксованою шириною.

Версія 2.20

Підтримка нових пристроїв Підтримка доступна для таких частин AVR: ATTINY1624, ATTINY1626 і ATTINY1627.

Кращий найкращий розподіл Розподільник найкращої відповідності (BFA) у компіляторі було покращено, щоб розділи розміщувалися в порядку, що забезпечує кращу оптимізацію. BFA тепер підтримує іменовані адресні простори та краще обробляє ініціалізацію даних.

Покращена процедурна абстракція Оптимізація процедурної абстракції тепер виконується на більшій кількості кодових послідовностей. Попередні ситуації, коли ця оптимізація могла збільшити розмір коду, були вирішені шляхом надання коду оптимізації інформації про процес збирання сміття компонувальника.

Відсутність AVR Assembler AVR Assembler більше не входить до цього дистрибутива.

Версія 2.19 (версія функціональної безпеки)

Жодного.

Версія 2.10

Охоплення коду Цей випуск містить функцію охоплення коду, яка полегшує аналіз того, якою мірою було виконано вихідний код проекту. Використовуйте параметр -mcodecov=ram, щоб увімкнути його. Після виконання програми на вашому апаратному забезпеченні інформація про покриття коду буде зібрана в пристрої, і її можна буде передати та відобразити в MPLAB X IDE за допомогою плагіна покриття коду. Перегляньте документацію IDE, щоб отримати інформацію про цей плагін. #pragma mcodecov можна використовувати для виключення наступних функцій з аналізу покриття. В ідеалі прагма має бути додана на початку file виключити все це file з аналізу покриття. Крім того, атрибут ( (mcodecov)) можна використовувати для виключення певної функції з аналізу покриття.

Опис пристрою files Новий пристрій file називається avr chipinfo. html знаходиться в каталозі docs дистрибутива компілятора. Це file містить список усіх пристроїв, які підтримуються компілятором. Клацніть на назві пристрою, і відкриється сторінка з усіма дозволеними парами біт налаштування/значення для цього пристрою, напр.ampлес.

Процедурна абстракція До компілятора додано оптимізацію процедурної абстракції, яка замінює загальні блоки коду складання викликами витягнутої копії цього блоку. Вони виконуються окремою програмою, яка автоматично викликається компілятором під час вибору рівня 2, 3 або оптимізації. Ці оптимізації зменшують розмір коду, але вони можуть зменшити швидкість виконання та можливість налагодження коду.
Процедурну абстракцію можна вимкнути на вищих рівнях оптимізації за допомогою опції -mno-pa або ввімкнути на нижчих рівнях оптимізації (залежно від вашої ліцензії) за допомогою -mpa. Його можна вимкнути для об’єкта file за допомогою -mno-pa-on-file=fileім'я або вимкнено для функції за допомогою -mno-pa на function= function.
У вашому вихідному коді процедурну абстракцію можна вимкнути для функції за допомогою _attribute_ ( (nopa)) з визначенням функції або за допомогою _nopa, який розширюється до атрибута ( (nopa, noinline)) і таким чином запобігає вбудовуванню функції. і існує абстракція вбудованого коду.
Підтримка бітів блокування в pragma Тепер конфігурацію #pragma можна використовувати для визначення бітів блокування AVR, а також інших бітів конфігурації. Перевірте інформацію про чіп avr. html file (згадано вище) для пар налаштування/значення для використання з цією прагмою.
Підтримка нових пристроїв Підтримка доступна для таких частин: AVR28DA128, AVR64DA128, AVR32DA128 і AVR48DA128.

Версія 2.05

Більше бітів за ваші гроші Версія цього компілятора та менеджера ліцензій для macOS тепер є 64-розрядною програмою. Це забезпечить встановлення та роботу компілятора без попереджень у останніх версіях macOS.
Константні об’єкти в програмній пам’яті Компілятор тепер може розміщувати константні об’єкти у флеш-пам’яті програми, а не в оперативній пам’яті. Компілятор було змінено таким чином, що глобальні дані, кваліфіковані як const, зберігаються у флеш-пам’яті програми, і до цих даних можна отримати прямий або опосередкований доступ за допомогою відповідних інструкцій програмної пам’яті. Ця нова функція ввімкнена за замовчуванням, але її можна вимкнути за допомогою параметра -mno-const-data-in-progmem. Для архітектур avrxmega3 та avrtiny ця функція не потрібна та завжди вимкнена, оскільки програмна пам’ять відображається в адресному просторі даних для цих пристроїв.
Стандарт безкоштовно Неліцензійні (безкоштовні) версії цього компілятора тепер дозволяють оптимізувати до рівня 2 включно. Це дозволить отримати подібний, хоча й не ідентичний, вихід до того, що раніше було можливо за допомогою стандартної ліцензії.
Вітаємо AVRASM2 Асемблер AVRASM2 для 8-розрядних пристроїв тепер включено до інсталятора компілятора XC8. Цей асемблер не використовується компілятором XC8, але доступний для проектів, заснованих на рукописному джерелі складання.
Підтримка нових пристроїв Підтримка доступна для таких компонентів: ATMEGA1608, ATMEGA1609, ATMEGA808 і ATMEGA809.

Версія 2.00

Драйвер верхнього рівня Новий драйвер під назвою xc8-cc тепер розташований над попереднім драйвером avr-gcc і драйвером xc8 і може викликати відповідний компілятор на основі вибору цільового пристрою. Цей драйвер приймає параметри стилю GCC, які або перекладаються, або передаються до компілятора, що виконується. Цей драйвер дозволяє використовувати подібний набір параметрів із подібною семантикою з будь-якою метою AVR або PIC і, отже, є рекомендованим способом виклику компілятора. За потреби старий драйвер avr-gcc можна викликати безпосередньо за допомогою параметрів старого стилю, які він приймав у попередніх версіях компілятора.

Загальний інтерфейс C Цей компілятор тепер може відповідати MPLAB Common C Interface, дозволяючи легше переносити вихідний код на всі компілятори MPLAB XC. Параметр -mext=cci запитує цю функцію, увімкнувши альтернативний синтаксис для багатьох розширень мови.

Новий водій бібліотекаря Новий драйвер бібліотекаря розташований над попереднім бібліотекарем PIC libr та бібліотекарем AVR avr-ar. Цей драйвер приймає параметри стилю GCC-архіватора, які або перекладаються, або передаються бібліотекарю, який виконується. Новий драйвер дозволяє використовувати подібний набір параметрів із подібною семантикою для створення або керування будь-якою бібліотекою PIC або AVR file і тому є рекомендованим способом виклику бібліотекаря. Якщо потрібно для застарілих проектів, попереднього бібліотекаря можна викликати напряму за допомогою параметрів старого стилю, прийнятих у попередніх версіях компілятора.

Питання міграції

Нижче наведено функції, які тепер обробляються компілятором інакше. Ці зміни можуть вимагати модифікації вашого вихідного коду в разі перенесення коду на цю версію компілятора. Номер версії в підзаголовках вказує на першу версію компілятора, яка підтримує наступні зміни.

Версія 2.40

Жодного.

Версія 2.39 (версія функціональної безпеки)

Жодного.

Версія 2.36

Жодного.

Версія 2.35

Обробка баз "струни-до" (XCS-2420) Щоб забезпечити узгодженість з іншими компіляторами XC, функції string-to XC8, такі як strtol () тощо, більше не намагатимуться перетворити вхідний рядок, якщо вказана база більша за 36, і замість цього встановлять errno значення EINVAL. Стандарт C не визначає поведінку функцій, коли це базове значення перевищено.

Невідповідна оптимізація швидкості Оптимізацію процедурної абстракції вмикали під час вибору оптимізації рівня 3 (-03). Ці оптимізації зменшують розмір коду за рахунок швидкості коду, тому їх не слід було виконувати. Проекти, які використовують цей рівень оптимізації, можуть помітити відмінності в розмірі коду та швидкості виконання під час створення з цим випуском.

Функціонал бібліотеки Код для багатьох стандартних функцій бібліотеки C тепер походить від уніфікованої стандартної бібліотеки Microchip, яка за певних обставин може відрізнятися від поведінки колишньої бібліотеки avr-libc. наприкладample, більше не потрібно посилатися на бібліотеку lprintf_flt (опція -print _flt), щоб увімкнути підтримку відформатованого вводу-виводу для специфікаторів формату з плаваючою речовиною. Інтелектуальні функції вводу-виводу Microchip Unified Standard Library роблять цю опцію зайвою. Крім того, використання підпрограм із суфіксом _p для рядків і функцій пам’яті (наприклад, strcpy_P () тощо), які працюють із постійними рядками у флеш-пам’яті, більше не є необхідним. Стандартні процедури C (наприклад, strcpy ()) працюватимуть правильно з такими даними, якщо ввімкнено функцію const-data-in-program-memory.

Версія 2.32

Жодного.

Версія 2.31

Жодного.

Версія 2.30

Жодного.

Версія 2.29 (версія функціональної безпеки)

Жодного.

Версія 2.20

Змінено макет DFP Тепер компілятор використовує інший макет, який використовується DFP (пакети сімейства пристроїв). Це означатиме, що старіший DFP може не працювати з цією версією, а старіші компілятори не зможуть використовувати останні DFP.

Версія 2.19 (версія функціональної безпеки)

Жодного.

Версія 2.10

Жодного

Версія 2.05

Const об'єкти в пам'яті програми Зауважте, що за замовчуванням об’єкти з константою будуть розміщені та доступні до пам’яті програми (як описано тут). Це вплине на розмір і швидкість виконання вашого проекту, але має зменшити використання оперативної пам’яті. За потреби цю функцію можна вимкнути за допомогою параметра -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 (num), щоб вказати, що функції C є обробниками переривань. Специфікатор приймає номер переривання, наприкладample: #include void interrupt(SPI STC_ vect _num) spi Isr(void) { … }

Вирішені проблеми

Нижче наведено виправлення, внесені до компілятора. Вони можуть виправляти помилки у згенерованому коді або змінювати роботу компілятора відповідно до того, що було призначено або зазначено в посібнику користувача. Номер версії в підзаголовках вказує на першу версію компілятора, яка містить виправлення наступних проблем. Мітки в дужках у назві є ідентифікатором цієї проблеми в базі даних відстеження. Це може бути корисним, якщо вам потрібно звернутися до служби підтримки.

Зауважте, що деякі проблеми, пов’язані з пристроєм, виправлено в пакеті сімейства пристроїв (DFP), пов’язаному з пристроєм. Перегляньте менеджер пакетів MPLAB, щоб отримати інформацію про зміни, внесені до DFP, і завантажити найновіші пакети.

Версія 2.40

Занадто розслаблено (XCS-2876) Під час використання параметра -mrelax компілятор не розподіляв деякі розділи разом, що призводило до менш оптимальних розмірів коду. Це могло статися з кодом, який використовує нові бібліотеки MUSL, або зі слабкими символами.
Функцію відображення не вимкнено, як зазначено в попередженні (XCS-2875) Функція cost-data-in-config mappedprogmem залежить від увімкнення функції cost-data-in-proem. Якщо функцію cost-data-ipconfig-mapped-proem було явно ввімкнено за допомогою параметра, а функцію cost-data-inprogmem було вимкнено, крок підключення не вдався, незважаючи на попередження про те, що cons data- in-config-mapped- функція proem була автоматично вимкнена, що було не зовсім правильно. У цій ситуації функцію const-data-in-config-mapped-proem тепер повністю вимкнено.
Зміни DFP для правильного доступу до NVMCTRL (XCS-2848) Код запуску під час виконання, який використовувався пристроями AVR64EA, не враховував, що реєстр NVMCTRL перебував під захистом змін конфігурації (CCP) і не зміг встановити SFR IO для сторінки, яка використовується компілятором configmapped-proem const-data-in функція. Зміни, внесені в AVR-Ex_DFP версії 2.2.55, дозволять коду запуску коректно записувати цей регістр.
Зміни DFP для уникнення флеш-карти (XCS-2847) Реалізовано обхідний шлях для проблеми з функцією пристрою флеш-карти, про яку повідомляється в AVR128DA28/32/48/64 Silicon Errata (DS80000882). Функція компілятора const-data-in-config-mapped-proem не буде застосована за замовчуванням для зачеплених пристроїв, і ця зміна з’явиться в AVR-Ex_DFP версії 2.2.160.
Помилка збірки з sinhf або coshf (XCS-2834) Спроби використати бібліотечні функції sinhf () або coshf () призвели до помилки посилання, що описує невизначене посилання. Відсутню функцію, на яку посилається, тепер включено до дистрибутива компілятора.
Помилки збірки з nopa (XCS-2833) Використання атрибута nopa з функцією, ім’я асемблера якої вказано за допомогою as (), викликало повідомлення про помилку від асемблера. Ця комбінація неможлива.
Збій варіативної функції з аргументами-вказівниками (XCS-2755, XCS-2731) Функції зі змінною кількістю аргументів очікують передачі 24-розрядних покажчиків (тип _memo) у списку змінних аргументів, коли ввімкнено функцію cost-data-in-proem. Аргументи, які були покажчиками на пам’ять даних, передавалися як 16-розрядні об’єкти, що спричиняло помилку коду під час їх остаточного читання. Коли функцію cons data-in-proem увімкнено, усі аргументи 16-бітних покажчиків тепер перетворюються на 24-бітові покажчики. Помилка бібліотечних функцій strtoxxx (XCS-2620) Коли функцію const-data-in-proem було ввімкнено, параметр enter у бібліотечних функціях strtoxxx не оновлювався належним чином для вихідних рядкових аргументів, яких немає в пам’яті програми.
Сповіщення про недійсні зліпки (XCS-2612) Компілятор тепер видасть помилку, якщо ввімкнуто функцію cost-in-proem і адреса рядкового літералу явно переведена в адресний простір даних (відкидається кваліфікатор const), наприкладample, (uint8 t *) «Привіт, світ!». Попередження є проблемою, якщо адреса може бути недійсною, коли постійний покажчик даних явно передається в адресний простір даних.
Розміщення неініціалізованих об'єктів const (XCS-2408) Неініціалізовані об’єкти const і const v volatile не розміщувалися в пам’яті програм на пристроях, які відображають всю пам’ять програм або її частину в адресний простір даних. Для цих пристроїв такі об’єкти тепер розміщуються в програмній пам’яті, що робить їх роботу узгодженою з іншими пристроями.

Версія 2.39 (версія функціональної безпеки)

Жодного.

Версія 2.36

Помилка під час затримки (XCS-2774) Незначні зміни в оптимізації вільного режиму за замовчуванням запобігли постійному згортанню виразів операндів до вбудованих функцій затримки, в результаті чого вони розглядалися як безконтактні та викликали помилку: _buil tin avr delay_ cycles expects ac ompile ціла константа часу.

Версія 2.35

Безперервне розподіл за допомогою _at (XCS-2653) Безперервне розміщення кількох об’єктів у розділі з однаковою назвою та використання at () не працювало належним чином. наприкладample: constchararrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[ ] at tri butte ((section(“.my s eke”))) = {Oxen, Ox FE }; повинен був розмістити arr2 одразу після aril.
Вказівка ​​початкових адрес розділу (XCS-2650) Параметр -Wal, –section-start мовчки не розміщував розділи за вказаною початковою адресою. Цю проблему виправлено для будь-яких розділів із настроюваними назвами; однак це не працюватиме для стандартних розділів, таких як . текст або . bss, який потрібно розмістити за допомогою параметра -Wl, -T.
Збій компонувальника під час розслаблення (XCS-2647) Коли було ввімкнено оптимізацію -relax і були розділи коду чи даних, які не вміщувалися в доступну пам’ять, компонувальник аварійно завершував роботу. Тепер за таких обставин натомість видаються повідомлення про помилки.
Поганий доступ до EEPROM (XCS-2629) Процедура блокування leproma _read_ не працювала належним чином на пристроях Mega, коли було ввімкнено параметр -monist-data-in-proem (що є станом за замовчуванням), в результаті чого пам’ять EEPROM не читалася належним чином.
Неправильний розподіл пам'яті (XCS-2593, XCS-2651) Коли параметр компонувальника -Text або -Tata (наприклад,ampфайл, який передається за допомогою параметра драйвера -Wl), вказано джерело відповідної області тексту/даних; однак кінцеву адресу не було скориговано відповідним чином, що могло призвести до того, що область перевищила діапазон пам’яті цільового пристрою.
Недійсний код переривання ATtiny (XCS-2465) Під час створення для пристроїв Tatin і оптимізацію було вимкнено (-00), функції переривання могли викликати повідомлення асемблера операнда поза діапазоном.
Опції не передаються (XCS-2452) Під час використання опції -Wl із декількома параметрами компонувальника, розділеними комами, не всі параметри компонувальника передавалися компонувальнику.
Помилка непрямого читання програмної пам'яті (XCS-2450) У деяких випадках компілятор видавав внутрішню помилку (нерозпізнаваний insn) під час читання двобайтового значення з вказівника в програмну пам’ять

Версія 2.32

Помилка другого доступу до бібліотеки (XCS-2381) Виклик версії xc8-ar для Windows. архіватору бібліотеки exe вдруге отримати доступ до існуючого архіву бібліотеки, можливо, не вдалося з повідомленням про помилку неможливо перейменувати.

Версія 2.31

Незрозумілі помилки компілятора (XCS-2367) Під час роботи на платформах Windows, у яких для системного тимчасового каталогу встановлено шлях із крапкою.' символ, можливо, компілятор не зміг виконати.

Версія 2.30

Глобальні мітки неправильно розміщені після контуру (XCS-2299) Рукописний код складання, який розміщує глобальні мітки в послідовностях складання, які вилучаються процедурною абстракцією, міг бути неправильно змінений.
Розслаблююча аварія (XCS-2287) Використання параметра -merlad могло призвести до збою компонувальника, коли оптимізація релаксації хвостового переходу намагалася видалити інструкцію ret, яка не була в кінці розділу.
Збій під час оптимізації міток як значень (XCS-2282) Код, який використовує розширення мови GNU C «Мітки як значення», міг спричинити збій оптимізації процедурної абстракції з помилкою виправлення охоплення діапазону Outlined VMA.
Не так постійно (XCS-2271) Прототипи для starts () та інших функцій з більше не вказувати кваліфікатор нестандартної вартості для повернених покажчиків рядків, коли функцію -monist-data inprogmem вимкнено. Зауважте, що на пристроях avrxmega3 і avertin ця функція ввімкнена постійно.
Втрачені ініціалізатори (XCS-2269) Коли більше однієї змінної в одиниці перекладу було розміщено в розділі (з використанням розділу або атрибута ((розділ))), і перша така змінна була ініціалізована нулем або не мала ініціалізатора, ініціалізатори для інших змінних у тій же одиниці перекладу які були розміщені в тому самому розділі, були втрачені.

Версія 2.29 (версія функціональної безпеки)

Жодного.

Версія 2.20

Помилка довгих команд (XCS-1983) Під час використання цілі AVR компілятор міг зупинитися на a file помилка не знайдено, якщо командний рядок був надзвичайно великим і містив спеціальні символи, такі як лапки, зворотні косі риски тощо.
Непризначений розділ rodata (XCS-1920) Пов’язувач AVR не зміг призначити пам’ять для користувацьких розділів rodata під час створення для архітектур avrxmega3 та avrtiny, потенційно створюючи помилки перекриття пам’яті

Версія 2.19 (версія функціональної безпеки)

Жодного.

Версія 2.10

Помилки переміщення (XCS-1891) Найкраще відповідний розподільник залишав «діри» в пам’яті між розділами після релаксації компонувальника. Окрім фрагментації пам’яті, це збільшило ймовірність виникнення збоїв переміщення зв’язувачів, пов’язаних із стрибками відносно комп’ютера або вихід викликів за межі діапазону.
Інструкції, не трансформовані релаксацією (XCS-1889) Розслаблення компонувальника не відбулося для інструкцій переходу або виклику, цілі яких стають доступними, якщо їх розслабити.
Відсутня функціональність (XCSE-388) Кілька визначень від , такі як clock_ div_ t і clock_prescale_set (), не були визначені для пристроїв, включаючи ATmega324PB, ATmega328PB, ATtiny441 і ATtiny841.
Відсутні макроси Макроси препроцесора_ xcs _MODE_, _xcs VERSION, _xc і xcs не були автоматично визначені компілятором. Тепер вони доступні.

Версія 2.05

Внутрішня помилка компілятора (XCS-1822) Під час створення під Windows під час оптимізації коду могла виникнути внутрішня помилка компілятора.
Переповнення RAM не виявлено (XCS-1800, XCS-1796) У деяких ситуаціях компілятор не виявляв програми, які перевищували доступну оперативну пам’ять, що призводило до збою коду під час виконання.
Пропущена флеш-пам'ять (XCS-1792) Для пристроїв avrxmega3 і avrtiny частини флеш-пам’яті могли бути залишені незапрограмованими MPLAB X IDE.
Неможливість виконати main (XCS-1788) У деяких ситуаціях, коли в програмі не було визначено глобальних змінних, код запуску під час виконання не завершувався, а функція main () ніколи не досягалася.
Неправильна інформація про пам'ять (XCS-1787) Для пристроїв avrxmega3 і avrtiny програма avr-size повідомляла, що дані лише для читання споживали оперативну пам’ять замість програмної пам’яті.
Неправильне читання пам'яті програми (XCS-1783) Проекти, скомпільовані для пристроїв із програмною пам’яттю, відображеною в адресному просторі даних і які визначають об’єкти за допомогою макросу/атрибута PROGMEM, могли прочитати ці об’єкти з неправильної адреси.
Внутрішня помилка з атрибутами (XCS-1773) Сталася внутрішня помилка, якщо ви визначили об’єкти-вказівники за допомогою
_at () або attribute() токени між іменем вказівника та розіменованим типом, наприкладample, char *
_at (0x80015 0) cp; У разі виявлення такого коду тепер видається попередження.
Збій у виконанні основного (XCS-1780, XCS-1767, XCS-1754) Використання змінних EEPROM або визначення запобіжників за допомогою прагми конфігурації могло призвести до неправильної ініціалізації даних та/або блокування виконання програми в коді запуску під час виконання, перш ніж досягти main ().
Помилка запобіжника з маленькими пристроями (XCS-1778, XCS-1742) Пристрої attiny4/5/9/10/20/40 мали неправильну довжину запобіжника, указану в їх заголовку files, які призводять до помилок компонувальника під час спроби створити код, який визначав fuses.
Помилка сегментації (XCS-1777) Виправлено періодичну помилку сегментації.
Збій асемблера (XCS-1761) Асемблер avr-as міг аварійно завершити роботу, коли компілятор запускався під Ubuntu 18.
Об'єкти не очищені (XCS-1752) Неініціалізовані об’єкти тривалості статичного зберігання могли не бути очищені кодом запуску під час виконання.
Конфліктну специфікацію пристрою проігноровано (XCS-1749) Компілятор не генерував помилку, коли використовувалися кілька параметрів специфікації пристрою та вказували різні пристрої.
Пошкодження пам'яті купою (XCS-1748) Символ heap_ start було встановлено неправильно, що призвело до ймовірності пошкодження звичайних змінних купою.
Помилка переміщення компонувальника (XCS-1739) Помилка переміщення компонувальника могла виникнути, коли код містив rjmp або rcall із цільовою адресою рівно 4 кбайт.

Версія 2.00

Жодного.

Відомі проблеми

Нижче наведено обмеження в роботі компілятора. Це можуть бути загальні обмеження кодування або
відхилення від інформації, що міститься в посібнику користувача. Мітки в дужках у назві є ідентифікатором цієї проблеми в базі даних відстеження. Це може стати в нагоді, якщо вам потрібно звернутися до служби підтримки. Ті елементи, які не мають міток, є обмеженнями, які описують режим роботи та які, імовірно, залишатимуться в силі постійно.

Інтеграція MPLAB X IDE

Інтеграція MPLAB IDE Якщо компілятор буде використовуватися з MPLAB IDE, ви повинні встановити MPLAB IDE перед встановленням компілятора.

Генерація коду

Помилка розподілу пам'яті PA (XCS-2881) Під час використання оптимізаторів процедурної абстракції компонувальник може повідомити про помилки розподілу пам’яті, коли розмір коду наближається до обсягу доступної програмної пам’яті на пристрої, навіть якщо програма повинна бути в змозі вмістити доступний простір.
Не такий розумний Smart-IO (XCS-2872) Функція smart-io компілятора генеруватиме дійсний, але не оптимальний код для функції спринту, якщо функцію cost-data-in-proem вимкнено або якщо весь флеш-пам’ять пристрою відображено в пам’яті даних.
Ще менш розумний Smart-IO (XCS-2869) Функція smart-io компілятора генеруватиме дійсний, але неоптимальний код, якщо використовуються параметри -floe і -fno-buil tin.
Неоптимальне розміщення даних лише для читання (XCS-2849) Пов’язувач наразі не знає ні про розділи пам’яті APPCODE та APPDATA, ні про розділи [No-]Read-While-Write у карті пам’яті. У результаті існує невелика ймовірність того, що компонувальник може виділити дані лише для читання в невідповідну область пам’яті. Імовірність помилкових даних збільшується, якщо ввімкнено функцію coast-data-in-pragma, особливо якщо також увімкнено функцію coast-data-in-config-mapped-proem. За потреби ці функції можна вимкнути.
Об'єкт file замовлення на обробку (XCS-2863) Порядок об’єктів files, які будуть оброблені компонувальником, можуть відрізнятися залежно від використання оптимізації процедурної абстракції (параметр -mpa). Це вплине лише на код, який визначає слабкі функції в кількох модулях.
Помилка компонування з абсолютним значенням (XCS-2777) Коли об’єкт було зроблено абсолютним за адресою на початку ОЗП і також визначено неініціалізовані об’єкти, може виникнути помилка зв’язування.
Короткі ідентифікатори пробудження (XCS-2775) Для пристроїв ATA5700/2 регістри PHID0/1 визначені лише як такі, що мають ширину 16 бітів, а не 32 біти.
Збій компонувальника під час виклику символу (XCS-2758) Зв’язувач може аварійно завершувати роботу, якщо використовується параметр драйвера -merlad, коли вихідний код викликає символ, визначений за допомогою параметра компонувальника -Wl, –defsym.
Неправильна ініціалізація (XCS-2679) Існує розбіжність між тим, де початкові значення для деяких глобальних/статичних об’єктів розміром у байт розміщені в пам’яті даних, і тим, де змінні будуть доступні під час виконання.
запущено неправильно, набори порожні (XCS-2652) У випадках, коли тематичний рядок для перетворення за допомогою stated () містить те, що виглядає як число з плаваючою комою в експоненціальному форматі, і є неочікуваний символ після символу e, тоді порожня адреса, якщо вона надана, вказуватиме на символ після е, а не саме е. наприкладample: зазначений ("гоу", порожній); призведе до порожнього вказівника на символ x.
Погані непрямі виклики функцій (XCS-2628) У деяких випадках виклики функцій, здійснені через вказівник на функцію, збережений як частина структури, можуть вийти з ладу.
strtof повертає нуль для шістнадцяткових чисел з плаваючою точкою (XCS-2626) Бібліотечні функції strtof () та інші та scanf () та інші завжди перетворюватимуть шістнадцяткове число з плаваючою комою, яке не вказує експоненту, на
нуль. наприкладample: stator(“Сова”, &empty); поверне значення 0, а не 1.
Неточне повідомлення порадника стека (XCS-2542, XCS-2541) У деяких випадках попередження порадника про стек щодо використання рекурсії або невизначеного стеку (можливо, через використання alloca()) не видається.
Помилка з повторюваним кодом переривання (XCS-2421) Якщо кілька функцій переривання мають однакове тіло, компілятор може мати вихід для виклику однієї функції переривання іншої. Це призведе до непотрібного збереження всіх регістрів, перебитих викликом, і переривання буде ввімкнено навіть до того, як завершиться епілог поточного обробника переривань, що може призвести до збою коду.
Об’єкти Const відсутні в пам’яті програми (XCS-2408) Для проектів avrxmega3 і avertins неідеалізовані константні об’єкти розміщуються в пам’яті даних, навіть якщо попередження передбачає, що вони були розміщені в пам’яті програм. Це не вплине на пристрої, у яких пам’ять програм не відображено в простір пам’яті даних, а також на будь-який ініціалізований об’єкт.
Неправильний результат із недійсним шляхом DFP (XCS-2376) Якщо компілятор викликається з недійсним шляхом DFP і "spec" file існує для вибраного пристрою, компілятор не повідомляє про відсутній пакет сімейства пристроїв, а замість цього вибирає «spec» file, що може призвести до недійсного результату. Специфікація files можуть бути не оновленими для розподілених DFP і призначені для використання лише з внутрішнім тестуванням компілятора.
Перекриття пам'яті не виявлено (XCS-1966) Компілятор не виявляє перекривання пам’яті об’єктів, зроблених абсолютними за адресою (через at ()) та інших об’єктів, які використовують специфікатор розділу (), і які пов’язані з тією самою адресою.
Помилка функцій бібліотеки та _meme (XCS-1763) Викликані лімбічні функції з плаваючою точкою з аргументом в адресному просторі _memo можуть не працювати. Зверніть увагу, що підпрограми бібліотеки викликаються з деяких операторів C, отже, наприкладample, це стосується наступного коду: return regFloatVar > memxFloatVar;
Обмежена лімбічна реалізація (AVRTC-731) Для продуктів ATTiny4/5/9/10/20/40 реалізація стандартної бібліотеки C / Math у limbic дуже обмежена або відсутня.
Обмеження програмної пам'яті (AVRTC-732) Зображення програмної пам’яті понад 128 Кб підтримуються інструментальним набором; проте, є відомі випадки переривання компонувальника без релаксації та без корисного повідомлення про помилку замість генерації необхідних заглушок функції, коли використовується параметр -relax.
Обмеження простору імен (AVRTC-733) Іменовані адресні простори підтримуються ланцюжком інструментів з урахуванням обмежень, згаданих у розділі «Кваліфікатори спеціальних типів» посібника користувача.
Часові пояси The функції бібліотеки передбачають GMT і не підтримують місцеві часові пояси, тому місцевий час () повертатиме той самий час, що й gummite (), наприкладample.

ПІДТРИМКА КЛІЄНТІВ

file:///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ для A VR. htm

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

Програмне забезпечення компілятора MICROCHIP MPLAB XC8 C [pdfПосібник користувача
MPLAB XC8 C, MPLAB XC8 C Програмне забезпечення компілятора, програмне забезпечення компілятора, програмне забезпечення

Список літератури

Залиште коментар

Ваша електронна адреса не буде опублікована. Обов'язкові поля позначені *