MICROCHIP MPLAB XC8 C kompilyator dasturi
MIKROCHIP AVR QURILMALARINI MAQSADGA BERISHDA MAZBURIY HUJJAT MPLAB XC8 C KOMPİYATERI BO'YICHA MUHIM MA'LUMOTLARNI O'z ichiga oladi.
USHBU DASTURI ISHLATISHDAN OLDIN O‘QING. AGAR SIZ 8 BITLI PIC QURILMALAR UCHUN KOMPİYYERNING FOYDALANISHINGIZDA PIC HUJJAT UCHUN MPLAB XC8 C TUZISH BERISH ISHLAB CHIQARISHIGA QARING.
tugadiview
Kirish
Microchip MPLAB® XC8 C kompilyatorining ushbu versiyasida bir nechta yangi xususiyatlar, xatolarni tuzatish va yangi qurilmalarni qo'llab-quvvatlash mavjud.
Qurilish sanasi
Ushbu kompilyator versiyasining rasmiy tuzilgan sanasi - 3-yil 2022-iyul.
Oldingi versiya
Oldingi MPLAB XC8 C kompilyator versiyasi 2.39-yil 27-yanvarda ishlab chiqilgan funktsional xavfsizlik kompilyatori 2022 edi. Oldingi standart kompilyator 2.36-yil 27-yanvarda qurilgan 2022 versiyasi edi.
Funktsional xavfsizlik bo'yicha qo'llanma
Funktsional xavfsizlik litsenziyasini sotib olganingizda, MPLAB XC kompilyatorlari uchun funktsional xavfsizlik bo'yicha qo'llanma hujjatlar to'plamida mavjud.
Komponent litsenziyalari va versiyalari
AVR MCU asboblari uchun MPLAB® XC8 C kompilyatori GNU General Public License (GPL) ostida yozilgan va tarqatilgan, bu uning manba kodi erkin tarqatilishi va ommaga ochiqligini bildiradi. GNU GPL ostida asboblar uchun manba kodi Microchip-dan alohida yuklab olinishi mumkin websayt. GNU GPL ni o'qishingiz mumkin file nomli o'rnatish katalogingizning pastki katalogida joylashgan. GPL asosidagi tamoyillarning umumiy muhokamasini bu yerda topishingiz mumkin. Sarlavha uchun taqdim etilgan qo'llab-quvvatlash kodi files, bog'lovchi skriptlar va ish vaqti kutubxonalari xususiy kod bo'lib, GPL doirasida qoplanmaydi.
Ushbu kompilyator GCC 5.4.0 versiyasi, binutils 2.26 versiyasining ilovasi va avr-libc 2.0.0 versiyasidan foydalanadi.
Tizim talablari
MPLAB XC8 C kompilyatori va u foydalanadigan litsenziyalash dasturi turli xil operatsion tizimlar, jumladan, quyidagining 64-bitli versiyalari uchun mavjud: Microsoft Windows 10 ning professional nashrlari; Ubuntu 18.04; va macOS 10.15.5. Windows uchun ikkilik kodlar imzolangan. Mac OSshave uchun ikkilik kodlar imzolangan va notarial tasdiqlangan.
Agar siz tarmoq litsenziyasi serverida ishlayotgan bo'lsangiz, litsenziya serverini joylashtirish uchun faqat kompilyatorlar tomonidan qo'llab-quvvatlanadigan operatsion tizimlarga ega kompyuterlardan foydalanish mumkin. Xclm 2.0 versiyasidan boshlab, tarmoq litsenziyasi serveri Microsoft Windows Server platformasida o'rnatilishi mumkin, ammo litsenziya serveri operatsion tizimning server versiyasida ishlashi shart emas.
Qo'llab-quvvatlanadigan qurilmalar
Ushbu kompilyator chiqarilish vaqtida ma'lum bo'lgan barcha 8-bitli AVR MCU qurilmalarini qo'llab-quvvatlaydi. Barcha qo'llab-quvvatlanadigan qurilmalar ro'yxatini (kompilyatorning doc katalogida) ko'ring. Bular files, shuningdek, har bir qurilma uchun konfiguratsiya bit sozlamalari ro'yxati.
Nashrlar va litsenziyani yangilash
MPLAB XC8 kompilyatori litsenziyalangan (PRO) yoki litsenziyasiz (bepul) mahsulot sifatida faollashtirilishi mumkin. Kompilyatoringizni litsenziyalash uchun faollashtirish kalitini sotib olishingiz kerak. Litsenziya Bepul mahsulotga nisbatan yuqori darajadagi optimallashtirish imkonini beradi. Litsenziyasiz kompilyator litsenziyasiz muddatsiz ishlashi mumkin.
MPLAB XC8 Functional Safety kompilyatori Microchip'dan sotib olingan funktsional xavfsizlik litsenziyasi bilan faollashtirilgan bo'lishi kerak. Ushbu litsenziyasiz kompilyator ishlamaydi. Faollashtirilgandan so'ng siz istalgan optimallashtirish darajasini tanlashingiz va kompilyatorning barcha xususiyatlaridan foydalanishingiz mumkin. MPLAB XC Funktsional xavfsizlik kompilyatorining ushbu versiyasi Tarmoq serveri litsenziyasini qo'llab-quvvatlaydi.
Litsenziya turlari va kompilyatorni litsenziya bilan o'rnatish haqida ma'lumot olish uchun MPLAB XC C kompilyatorlarini o'rnatish va litsenziyalash (DS50002059) hujjatiga qarang.
O'rnatish va faollashtirish
Shuningdek, ushbu kompilyatorga kiritilgan oxirgi litsenziya menejeri haqida muhim ma'lumot olish uchun Migratsiya muammolari va cheklovlar bo'limlariga qarang.
Agar MPLAB IDE dan foydalansangiz, ushbu vositani o'rnatishdan oldin eng so'nggi MPLAB X IDE 5.0 yoki undan keyingi versiyasini o'rnatganingizga ishonch hosil qiling. Kompilyatorni o'rnatishdan oldin IDE-dan chiqing. .exe (Windows), .run (Linux) yoki ilova (macOS) kompilyator o'rnatuvchi ilovasini ishga tushiring, masalan, XC8-1.00.11403-windows.exe va ekrandagi ko'rsatmalarga amal qiling.
Standart o'rnatish katalogi tavsiya etiladi. Agar siz Linuxdan foydalansangiz, kompilyatorni terminal va ildiz hisobidan o'rnatishingiz kerak. Administrator imtiyozlariga ega macOS hisob qaydnomasi yordamida o'rnating.
Endi faollashtirish o'rnatish uchun alohida amalga oshiriladi. Qo'shimcha ma'lumot olish uchun MPLAB® XC C kompilyatorlari uchun litsenziya menejeri (DS52059) hujjatiga qarang.
Agar siz kompilyatorni baholash litsenziyasi ostida ishga tushirishni tanlasangiz, baholash muddati tugaganidan keyin 14 kun ichida kompilyatsiya paytida ogohlantirish olasiz. Agar siz HPA obunangiz tugaganidan keyin 14 kun ichida bo'lsangiz, xuddi shunday ogohlantirish beriladi.
XC tarmoq litsenziyasi serveri alohida oʻrnatuvchi boʻlib, bir foydalanuvchi uchun kompilyator oʻrnatuvchisiga kiritilmagan.
XC Litsenziya menejeri endi suzuvchi tarmoq litsenziyalarining roumingini qo'llab-quvvatlaydi. Mobil foydalanuvchilarga mo'ljallangan ushbu xususiyat suzuvchi litsenziyaga qisqa vaqt ichida tarmoqdan chiqib ketish imkonini beradi. Ushbu xususiyatdan foydalanib, siz tarmoqdan uzishingiz va MPLAB XC kompilyatoridan foydalanishingiz mumkin. Ushbu xususiyat haqida ko'proq ma'lumot olish uchun XCLM o'rnatilishining doc jildiga qarang. MPLAB X IDE roumingni vizual boshqarish uchun Litsenziyalar oynasini (Asboblar > Litsenziyalar) o'z ichiga oladi.
O'rnatish bilan bog'liq muammolarni hal qilish
Windows operatsion tizimlaridan birida kompilyatorni o'rnatishda qiyinchiliklarga duch kelsangiz, quyidagi tavsiyalarni sinab ko'ring.
- O'rnatishni administrator sifatida ishga tushiring.
- O'rnatish ilovasining ruxsatlarini "To'liq nazorat" ga o'rnating. (Sichqonchaning o'ng tugmachasini bosing file, Xususiyatlar, Xavfsizlik yorlig'ini tanlang, foydalanuvchini tanlang, tahrirlang.)
- Vaqtinchalik jildning ruxsatlarini “To'liq nazorat!
Vaqtinchalik jildning joylashishini aniqlash uchun Run buyrug'iga %temp% kiriting (Windows logotipi + R). Bu ochadi file o'sha katalogni ko'rsatadigan Explorer dialog oynasi va sizga ushbu jildning yo'lini aniqlash imkonini beradi.
Kompilyator hujjatlari
Kompilyatorning foydalanuvchi qoʻllanmalari skrinshotda koʻrsatilganidek, MPLAB X IDE boshqaruv panelidagi koʻk rangli yordam tugmasini bosganingizda brauzeringizda ochiladigan HTML sahifasidan ochilishi mumkin.
Agar siz 8 bitli AVR maqsadlari uchun qurayotgan bo'lsangiz, AVR® MCU uchun MPLAB® XC8 C kompilyator foydalanuvchi qo'llanmasida ushbu arxitekturaga tegishli kompilyator imkoniyatlari va xususiyatlari haqida ma'lumot mavjud.
Mijozlarni qo‘llab-quvvatlash
Microchip ushbu kompilyator versiyasi bo'yicha xato hisobotlari, takliflar yoki sharhlarni mamnuniyat bilan qabul qiladi. Iltimos, har qanday xato hisobotlari yoki xususiyat so'rovlarini qo'llab-quvvatlash tizimi orqali boshqaring.
Hujjatlarni yangilash
MPLAB XC8 hujjatlarining onlayn va soʻnggi versiyalari uchun Microchipning Onlayn Texnik Hujjatlariga tashrif buyuring. websayt.
Ushbu nashrda yangi yoki yangilangan AVR hujjatlari:
- MUSL mualliflik huquqi haqida eslatma
- MPLAB XC C kompilyatorlarini o'rnatish va litsenziyalash (M versiyasi)
- Oʻrnatilgan muhandislar uchun MPLAB XC8 foydalanuvchi qoʻllanmasi – AVR MCU (reviziya A)
- AVR MCU uchun MPLAB XC8 C kompilyatori foydalanuvchi qoʻllanmasi (F versiyasi)
- Microchip yagona standart kutubxonasi uchun qoʻllanma (B reviziyasi)
Microchip Unified Standard Library Reference Guide Microchip Unified Standard Library tomonidan belgilangan funksiyalarning xatti-harakati va interfeysini, shuningdek kutubxona turlari va makrolaridan maqsadli foydalanishni tavsiflaydi. Ushbu ma'lumotlarning bir qismi avval AVR® MCU uchun MPLAB® XC8 C kompilyatori foydalanuvchi qo'llanmasida mavjud edi. Qurilmaga xos kutubxona ma'lumotlari hali ham ushbu kompilyator qo'llanmasida mavjud.
Agar siz endigina 8-bitli qurilmalar va MPLAB XC8 C kompilyatoridan foydalanishni boshlayotgan bo‘lsangiz, MPLAB® XC8 o‘rnatilgan muhandislar uchun foydalanuvchi qo‘llanmasi – AVR® MCU’lar (DS50003108) MPLAB X IDE’da loyihalarni o‘rnatish va kod yozish haqida ma’lumotga ega. birinchi MPLAB XC8 C loyihangiz uchun. Ushbu qo'llanma endi kompilyator bilan tarqatiladi.
Hamate foydalanuvchi qoʻllanmasi ushbu nashrdagi hujjatlar katalogiga kiritilgan. Ushbu qo'llanma Hamate-ni mustaqil dastur sifatida ishlatadiganlar uchun mo'ljallangan.
Nima yangiliklar
Quyida kompilyator hozirda qo'llab-quvvatlaydigan yangi AVR-maqsadli xususiyatlar mavjud. Sarlavhalardagi versiya raqami keyingi xususiyatlarni qo'llab-quvvatlash uchun birinchi kompilyator versiyasini ko'rsatadi.
Versiya 2.40
Yangi qurilmani qo'llab-quvvatlash Endi quyidagi AVR qismlari uchun yordam mavjud: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64, AVR28EA64 va AVR32EA64.
Yaxshilangan protsessual abstraktsiya Protsessual abstraktsiyani (PA) optimallashtirish vositasi takomillashtirildi, shunda funksiya chaqiruvi yo'riqnomasini o'z ichiga olgan kod (qo'ng'iroqni qayta chaqirish) ) belgilanishi mumkin. Bu faqat stek argumentlarni uzatish yoki funktsiyadan qaytish qiymatini olish uchun ishlatilmasa sodir bo'ladi. Stack o'zgaruvchan argumentlar ro'yxatiga ega funktsiyani chaqirishda yoki ushbu maqsad uchun belgilangan registrlardan ko'ra ko'proq argumentlarni qabul qiladigan funktsiyani chaqirishda ishlatiladi. Bu xususiyat monk-pa-outline-calls opsiyasi yordamida o'chirib qo'yilishi mumkin yoki protsessual abstraktsiya ob'ekt uchun butunlay o'chirib qo'yilishi mumkin. file yoki -monk-pa-on- yordamida funksiyafile va mos ravishda -mo.-pa-on-function yoki nipa atributidan ( nipa spetsifikatsiyasi) funksiyalar bilan tanlab foydalanish orqali
Kod qamrovi makrosi Agar joriy mcodecov opsiyasi belgilangan bo'lsa, endi kompilyator __CODECOV makrosini belgilaydi.
Xotirani bron qilish opsiyasi Endi xc8-cc drayveri AVR maqsadlarini yaratishda -mreserve=space@start: end variantini qabul qiladi. Ushbu parametr belgilangan xotira oralig'ini ma'lumotlar yoki dastur xotirasi bo'shlig'ida saqlab qoladi, bu bog'lovchining ushbu sohada kod yoki ob'ektlarni to'ldirishiga yo'l qo'ymaydi.
Aqlliroq aqlli IO Smart IO funksiyalariga bir qancha yaxshilanishlar kiritildi, jumladan, printf asosiy kodiga umumiy o‘zgartirishlar kiritildi, %n konversiya spesifikacini mustaqil variant sifatida ko‘rib chiqildi, talab bo‘yicha vararg pop tartiblari bilan bog‘landi, IO funksiyasi argumentlarini qayta ishlash uchun iloji boricha qisqaroq ma’lumotlar turlaridan foydalanildi. , va maydon kengligi va aniq ishlov berishda umumiy kodni faktoring. Bu kod va ma'lumotlarni sezilarli darajada tejashga olib kelishi mumkin, shuningdek, IO ning ishlash tezligini oshirishi mumkin.
Versiya 2.39 (Funktsional xavfsizlik versiyasi)
Tarmoq serveri litsenziyasi MPLAB XC8 Funktsional xavfsizlik kompilyatorining ushbu versiyasi Tarmoq serveri litsenziyasini qo'llab-quvvatlaydi.
Versiya 2.36
Yo'q.
Versiya 2.35
Yangi qurilmani qo'llab-quvvatlash Quyidagi AVR qismlari uchun yordam mavjud: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 va AVR64DD32.
Kontekstni almashtirish yaxshilandi Yangi -mcall-isr-prologues opsiyasi uzilish funksiyalarining kirishda registrlarni qanday saqlashini va uzilish tartibi tugashi bilan bu registrlar qanday tiklanishini o'zgartiradi. U -mcall-prologues variantiga o'xshash tarzda ishlaydi, lekin faqat uzilish funktsiyalariga (ISR) ta'sir qiladi.
Kontekstni almashtirish yanada yaxshilandi Yangi -mgas-isr-prologues opsiyasi kichik uzilishlar uchun xizmat ko'rsatish tartiblari uchun yaratilgan kontekstlarning qichishish kodini boshqaradi. Bu funksiya yoqilganda, assembler registrdan foydalanish uchun ISRni skanerlaydi va faqat kerak bo'lganda foydalanilgan registrlarni saqlaydi.
Sozlanishi mumkin flesh xaritalash AVR DA va AVR DB turkumidagi ba'zi qurilmalarda SFR (masalan, FLMAP) mavjud bo'lib, u dastur xotirasining qaysi 32k qismi ma'lumotlar xotirasiga joylashtirilishini belgilaydi. Yangi - mconst-data-in-config-mapped-proem opsiyasi bog'lovchining barcha nosozliklar bo'yicha malakali ma'lumotlarni bitta 32k bo'limga joylashtirishi va ushbu ma'lumotlarning ma'lumotlar xotirasi maydoniga joylashtirilishini ta'minlash uchun tegishli SFR registrini avtomatik ravishda ishga tushirishi uchun ishlatilishi mumkin. , bu erda unga yanada samarali kirish mumkin bo'ladi.
Microchip yagona standart kutubxonalari Barcha MPLAB XC kompilyatorlari endi MPLAB XC8 ning ushbu versiyasida mavjud bo'lgan Microchip Unified Standard Library bilan bo'lishadi. MPLAB® XC8 C kompilyatori foydalanuvchi qo‘llanmasi/yoki AVR® MCU endi ushbu standart funksiyalar uchun hujjatlarni o‘z ichiga olmaydi. Ushbu ma'lumotni endi Microchip yagona standart kutubxonasi uchun qo'llanmada topish mumkin. Ilgari avr-libc tomonidan belgilangan ba'zi funksiyalar endi mavjud emasligini unutmang. (Kutubxonaga qarang):'. funksionallik...)
Smart IO Yangi birlashtirilgan kutubxonalarning bir qismi sifatida chop etish va skanerlash oilalaridagi IO funksiyalari endi har bir tuzilmada ushbu funksiyalardan dasturda qanday foydalanilganiga qarab maxsus ishlab chiqariladi. Bu dastur tomonidan ishlatiladigan resurslarni sezilarli darajada kamaytirishi mumkin.
Smart IO yordam opsiyasi Smart IO funksiyalariga qo'ng'iroqlarni tahlil qilganda (masalan, printf () yoki scanf () ), kompilyator har doim format qatoridan aniqlay olmaydi yoki argumentlardan qo'ng'iroq uchun zarur bo'lgan konvertatsiya spesifikacilarini aniqlay olmaydi. Ilgari, kompilyator har doim hech qanday taxminlar qilmaydi va to'liq ishlaydigan IO funktsiyalari yakuniy dastur tasviriga bog'langanligini ta'minlaydi. Yangi – msmart-io-format=fmt opsiyasi qo‘shildi, buning o‘rniga kompilyatorga foydalanishi noaniq bo‘lgan aqlli IO funksiyalari tomonidan qo‘llaniladigan konversiya spetsifikatorlari haqida ma’lumot olishi mumkin, bu esa haddan tashqari uzun IO tartiblarini bog‘lashning oldini oladi. (Batafsil ma'lumot uchun smart-io-format variantiga qarang.)
Maxsus bo'limlarni joylashtirish Ilgari, -Wl, –section-start opsiyasi faqat bog‘lovchi skript bir xil nomdagi chiqish qismini aniqlaganida ko‘rsatilgan bo‘limni so‘ralgan manzilga joylashtirardi. Bunday bo'lmaganda, bo'lim bog'lovchi tomonidan tanlangan manzilga joylashtirildi va variant asosan e'tiborga olinmadi. Endi bog'lovchi skript bo'limni aniqlamasa ham, parametr barcha maxsus bo'limlar uchun hurmatga sazovor bo'ladi. Biroq, standart bo'limlar uchun bunday . matn, . bss yoki . ma'lumotlar, eng yaxshi mos taqsimlovchi hali ham ularning joylashuvi ustidan to'liq nazoratga ega bo'ladi va variant hech qanday ta'sir qilmaydi. Foydalanuvchi qo'llanmasida tasvirlanganidek -Wl, -Tsection=add opsiyasidan foydalaning.
Versiya 2.32
Stack yo'riqnomasi PRO kompilyator litsenziyasi bilan mavjud bo'lgan kompilyatorning stek bo'yicha ko'rsatmalari dastur tomonidan ishlatiladigan har qanday stekning maksimal chuqurligini baholash uchun ishlatilishi mumkin. U dasturning chaqiruv grafigini tuzadi va tahlil qiladi, har bir funktsiyaning stekdan foydalanishini aniqlaydi va hisobot ishlab chiqaradi, undan dastur tomonidan foydalaniladigan steklar chuqurligi haqida xulosa chiqarish mumkin. Bu xususiyat -mchp-stack-usage buyruq qatori opsiyasi orqali yoqiladi. Bajarishdan so'ng stekdan foydalanishning qisqacha tavsifi chop etiladi. Batafsil stek hisoboti xaritada mavjud file, bu odatiy tarzda so'ralishi mumkin.
Yangi qurilmani qo'llab-quvvatlash quyidagi AVR qismlari uchun mavjud: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32, AVR28DB64 va AVR32DB32.
Qaytarilgan qurilmani qo'llab-quvvatlash quyidagi AVR qismlari uchun endi mavjud emas: AVR16DA28, AVR16DA32 va AVR16DA48.
Versiya 2.31
Yo'q.
Versiya 2.30
Ma'lumotni ishga tushirishni oldini olishning yangi varianti Yangi -mno-data-ini t drayveri opsiyasi ma'lumotlarni ishga tushirish va bss bo'limlarini tozalashni oldini oladi. U montajdagi do_ copy_ ma'lumotlari va d o_ clear_ bss belgilarining chiqishini bostirish orqali ishlaydi. files, bu esa o'z navbatida bog'lovchi tomonidan ushbu tartiblarning kiritilishiga to'sqinlik qiladi.
Kengaytirilgan optimallashtirishlar Ortiqcha qaytarish ko'rsatmalarini olib tashlash, agar bit bo'lsa o'tkazib yuborish buyrug'idan keyin ba'zi o'tishlarni olib tashlash va protsessual abstraktsiyani yaxshilash va bu jarayonni takrorlash qobiliyatini o'z ichiga olgan bir qator optimallashtirish yaxshilanishlari amalga oshirildi.
Endi ushbu optimallashtirishlarning ba'zilarini boshqarish uchun qo'shimcha imkoniyatlar mavjud, xususan -f bo'limi langarlari, bu bitta belgiga nisbatan statik ob'ektlarga kirish imkonini beradi; -mpai derations=n, bu protsessual abstraksiya iteratsiyasi sonini sukut bo'yicha 2 dan o'zgartirishga imkon beradi; va, -mpa- qo'ng'iroq narxi- shortcall, qaysi ko'proq tajovuzkor protsessual abstraktsiyani amalga oshiradi, bog'lovchi uzoq qo'ng'iroqlarni tinchlantirishga umid qiladi. Ushbu oxirgi variant, agar asosiy taxminlar amalga oshirilmasa, kod hajmini oshirishi mumkin.
Yangi qurilmani qo'llab-quvvatlash Quyidagi AVR qismlari uchun yordam mavjud: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 va AVR128DB.
Qaytarilgan qurilmani qo'llab-quvvatlash Quyidagi AVR qismlarini endi qo‘llab-quvvatlab bo‘lmaydi: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617, va ATA664251.
Versiya 2.29 (Funktsional xavfsizlik versiyasi)
Sarlavha file kompilyator o'rnatilgan o'rnatish uchun kompilyator MISRA kabi til xususiyatlariga mos kelishini ta'minlash uchun, sarlavha filetomonidan avtomatik ravishda kiritilgan , yangilandi. Ushbu sarlavhada _buil tin _avrnop () va _buil tin_ avr delay_ cycles () kabi barcha o'rnatilgan funksiyalar prototiplari mavjud. Ba'zi o'rnatilgan qurilmalar MISRAga mos kelmasligi mumkin; kompilyator buyruq qatoriga _Xe_ STRICT_ MISRA ni belgilashni qo'shish orqali ularni o'tkazib yuborish mumkin. O'rnatilgan qurilmalar va ularning deklaratsiyasi belgilangan kenglikdagi turlardan foydalanish uchun yangilangan.
Versiya 2.20
Yangi qurilmani qo'llab-quvvatlash Quyidagi AVR qismlari uchun yordam mavjud: ATTINY1624, ATTINY1626 va ATTINY1627.
Eng yaxshi mos taqsimlash Kompilyatordagi eng yaxshi moslashuvchi ajratuvchi (BFA) takomillashtirildi, shuning uchun bo'limlar yaxshiroq optimallashtirishga imkon beradigan tartibda taqsimlanadi. BFA endi nomlangan manzil bo'shliqlarini qo'llab-quvvatlaydi va ma'lumotlarni ishga tushirishni yaxshiroq boshqaradi.
Yaxshilangan protsessual abstraktsiya Protsessual abstraktsiyani optimallashtirish endi ko'proq kod ketma-ketligida amalga oshiriladi. Ushbu optimallashtirish kod hajmini oshirishi mumkin bo'lgan oldingi holatlar optimallashtirish kodini bog'lovchining axlat yig'ish jarayonidan xabardor qilish orqali hal qilingan.
AVR Assemblerning yo'qligi AVR Assembler endi ushbu tarqatish tarkibiga kiritilmagan.
Versiya 2.19 (Funktsional xavfsizlik versiyasi)
Yo'q.
Versiya 2.10
Kod qamrovi Ushbu nashr loyihaning manba kodi qay darajada bajarilganligini tahlil qilishni osonlashtiradigan kodni qamrab olish xususiyatini o'z ichiga oladi. Uni yoqish uchun -mcodecov=ram opsiyasidan foydalaning. Dastur qurilmangizda bajarilgandan so'ng, kod qamrovi ma'lumotlari qurilmada jamlanadi va bu kodni qamrab olish plagini orqali MPLAB X IDE ga o'tkazilishi va ko'rsatilishi mumkin. Ushbu plagin haqida ma'lumot olish uchun IDE hujjatlariga qarang. #pragma mcodecov keyingi funksiyalarni qamrab olish tahlilidan chiqarib tashlash uchun ishlatilishi mumkin. Ideal holda pragma boshiga qo'shilishi kerak file buni butunlay chiqarib tashlash uchun file qamrov tahlilidan. Shu bilan bir qatorda, atribut ( (mcodecov) ) muayyan funktsiyani qamrab olish tahlilidan chiqarib tashlash uchun ishlatilishi mumkin.
Qurilma tavsifi files Yangi qurilma file avr chipinfo deb ataladi. html kompilyator taqsimotining docs katalogida joylashgan. Bu file kompilyator tomonidan qo'llab-quvvatlanadigan barcha qurilmalar ro'yxati. Qurilma nomini bosing va u ushbu qurilma uchun ruxsat etilgan barcha konfiguratsiya bit sozlamalari/qiymat juftliklarini ko'rsatadigan sahifani ochadi, masalan.amples.
Protsessual abstraktsiya Kompilyatorga yig'ish kodining umumiy bloklarini ushbu blokning chiqarilgan nusxasiga qo'ng'iroqlar bilan almashtiradigan protsessual abstraktsiya optimallashtirishlari qo'shildi. Bular 2, 3 yoki daraja optimallashtirishlarni tanlashda kompilyator tomonidan avtomatik ravishda chaqiriladigan alohida dastur tomonidan amalga oshiriladi. Ushbu optimallashtirishlar kod hajmini kamaytiradi, lekin ular bajarish tezligini va kodni tuzatish imkoniyatini kamaytirishi mumkin.
Protsessual abstraktsiyani -mno-pa opsiyasi yordamida yuqori optimallashtirish darajalarida o'chirib qo'yish mumkin yoki -mpa yordamida pastroq optimallashtirish darajalarida (sizning litsenziyangizga bog'liq) yoqilishi mumkin. Ob'ekt uchun uni o'chirib qo'yish mumkin file -mno-pa-on-dan foydalanishfile=fileism yoki funktsiya uchun -mno-pa funksiyasidan foydalanib o'chirilgan.
Manba kodingiz ichida protsessual abstraktsiyani funksiya ta'rifi bilan _attribute_ ((nopa)) yordamida yoki atributga ((nopa, noinline)) kengaytiruvchi _nopa yordamida funksiya uchun o'chirib qo'yish mumkin va shu bilan funktsiyani inlining amalga oshirilishiga to'sqinlik qiladi. va ichki kodning abstraktsiyasi mavjud.
Pragmada bit qo'llab-quvvatlashni bloklash #pragma konfiguratsiyasi endi AVR blokirovka bitlarini hamda boshqa konfiguratsiya bitlarini belgilash uchun ishlatilishi mumkin. Avr chip ma'lumotlarini tekshiring. html file (yuqorida aytib o'tilgan) ushbu pragma bilan foydalanish uchun sozlama/qiymat juftlari uchun.
Yangi qurilmani qo'llab-quvvatlash Quyidagi qismlar uchun qo'llab-quvvatlash mavjud: AVR28DA128, AVR64DA128, AVR32DA128 va AVR48DA128.
Versiya 2.05
Pulingiz uchun ko'proq bit Ushbu kompilyator va litsenziya menejerining macOS versiyasi endi 64 bitli dastur hisoblanadi. Bu kompilyator macOS ning so'nggi versiyalarida ogohlantirishlarsiz o'rnatilishini va ishlashini ta'minlaydi.
Dastur xotirasidagi Const ob'ektlari. Endi kompilyator operativ xotirada emas, balki const-mavjud ob'ektlarni dasturning Flash xotirasiga joylashtirishi mumkin. Kompilyator shunday o'zgartirildiki, const-malakali global ma'lumotlar dastur flesh-xotirasida saqlanadi va bu ma'lumotlarga to'g'ridan-to'g'ri va bilvosita tegishli dastur-xotira ko'rsatmalari yordamida kirish mumkin. Ushbu yangi xususiyat sukut bo'yicha yoqilgan, lekin uni -mno-const-data-in-progmem opsiyasi yordamida o'chirib qo'yish mumkin. Avrxmega3 va avrtiny arxitekturalari uchun bu xususiyat talab qilinmaydi va har doim o'chirib qo'yiladi, chunki dastur xotirasi ushbu qurilmalar uchun ma'lumotlar manzil maydoniga joylashtirilgan.
Standart bepul Ushbu kompilyatorning litsenziyasiz (bepul) versiyalari endi 2-darajagacha optimallashtirish imkonini beradi. Bu standart litsenziya yordamida ilgari mumkin bo'lgan bir xil bo'lmasa-da, shunga o'xshash chiqishga imkon beradi.
Xush kelibsiz AVRASM2 2-bitli qurilmalar uchun AVRASM8 assembler endi XC8 kompilyator o'rnatuvchisiga kiritilgan. Ushbu assembler XC8 kompilyatori tomonidan ishlatilmaydi, lekin qo'lda yozilgan yig'ish manbasiga asoslangan loyihalar uchun mavjud.
Yangi qurilmani qo'llab-quvvatlash Qo'llab-quvvatlash quyidagi qismlar uchun mavjud: ATMEGA1608, ATMEGA1609, ATMEGA808 va ATMEGA809.
Versiya 2.00
Yuqori darajadagi haydovchi Xc8-cc deb nomlangan yangi drayver endi oldingi avr-gcc drayveri va xc8 drayverlari ustida joylashgan va u maqsadli qurilmani tanlash asosida tegishli kompilyatorni chaqirishi mumkin. Ushbu drayver GCC uslubidagi variantlarni qabul qiladi, ular tarjima qilingan yoki bajarilayotgan kompilyatorga uzatiladi. Ushbu drayver o'xshash semantikaga ega shunga o'xshash variantlar to'plamini istalgan AVR yoki PIC maqsadi bilan ishlatishga imkon beradi va shuning uchun kompilyatorni chaqirishning tavsiya etilgan usuli hisoblanadi. Agar kerak bo'lsa, eski avr-gcc drayverini oldingi kompilyator versiyalarida qabul qilingan eski uslub variantlari yordamida to'g'ridan-to'g'ri chaqirish mumkin.
Umumiy C interfeysi Ushbu kompilyator endi MPLAB Common C interfeysiga mos kelishi mumkin, bu esa manba kodini barcha MPLAB XC kompilyatorlarida osonroq ko'chirish imkonini beradi. -mext=cci opsiyasi ko'plab til kengaytmalari uchun muqobil sintaksisni yoqish uchun ushbu xususiyatni talab qiladi.
Yangi kutubxonachi haydovchi Yangi kutubxonachi haydovchisi oldingi PIC kutubxonachisi va AVR avr-ar kutubxonachisining tepasida joylashgan. Ushbu drayver GCC-arxiv uslubidagi variantlarni qabul qiladi, ular tarjima qilingan yoki bajarilayotgan kutubxonachiga uzatiladi. Yangi drayver har qanday PIC yoki AVR kutubxonasini yaratish yoki manipulyatsiya qilish uchun o'xshash semantikaga ega o'xshash variantlar to'plamidan foydalanishga imkon beradi. file va shuning uchun kutubxonachini chaqirishning tavsiya etilgan usuli hisoblanadi. Agar eski loyihalar uchun kerak bo'lsa, avvalgi kutubxonachi oldingi kompilyator versiyalarida qabul qilingan eski uslubdagi variantlardan foydalangan holda to'g'ridan-to'g'ri chaqirilishi mumkin.
Migratsiya muammolari
Quyida kompilyator tomonidan boshqa yo'l bilan boshqariladigan funksiyalar keltirilgan. Agar ushbu kompilyator versiyasiga kod o'tkazilsa, bu o'zgarishlar manba kodingizga o'zgartirish kiritishni talab qilishi mumkin. Sarlavhalardagi versiya raqami keyingi o'zgarishlarni qo'llab-quvvatlash uchun birinchi kompilyator versiyasini ko'rsatadi.
Versiya 2.40
Yo'q.
Versiya 2.39 (Funktsional xavfsizlik versiyasi)
Yo'q.
Versiya 2.36
Yo'q.
Versiya 2.35
String-bazalar bilan ishlash (XCS-2420) Boshqa XC kompilyatorlari bilan muvofiqlikni ta'minlash uchun, strtol () va boshqalar kabi XC8 string-to funksiyalari, agar ko'rsatilgan baza 36 dan katta bo'lsa, endi kirish satrini aylantirishga urinmaydi va o'rniga errno ni EINVAL ga o'rnatadi. C standarti ushbu asosiy qiymatdan oshib ketganda funktsiyalarning harakatini aniqlamaydi.
Noto'g'ri tezlikni optimallashtirish 3-darajali optimallashtirishlarni tanlashda (-03) protsessual abstraksiyani optimallashtirish yoqilgan edi. Ushbu optimallashtirish kod tezligi hisobiga kod hajmini kamaytiradi, shuning uchun bajarilmasligi kerak edi. Ushbu optimallashtirish darajasidan foydalanadigan loyihalar ushbu versiya bilan tuzilganida kod hajmi va bajarish tezligidagi farqlarni ko'rishi mumkin.
Kutubxona funksionalligi Ko'pgina standart C kutubxonasi funktsiyalari uchun kod endi Microchipning Yagona standart kutubxonasidan olingan bo'lib, u avvalgi avr-libc kutubxonasi tomonidan taqdim etilganidan ba'zi hollarda boshqacha xatti-harakatlarni namoyon qilishi mumkin. Misol uchunample, float-format spetsifikatsiyalari uchun formatlangan IO-ni qo'llab-quvvatlashni yoqish uchun lprintf_flt kutubxonasiga (-print _flt varianti) ulanish kerak emas. Microchip Unified Standard Library-ning aqlli IO xususiyatlari ushbu parametrni ortiqcha qiladi. Bundan tashqari, flesh-da const satrlarida ishlaydigan string va xotira funktsiyalari (masalan, strcpy_P () va boshqalar) uchun _p qo'shimchali tartiblardan foydalanish endi kerak emas. Standart C tartiblari (masalan, strcpy ()) dastur xotirasida const-ma'lumotlar funksiyasi yoqilganda bunday ma'lumotlar bilan to'g'ri ishlaydi.
Versiya 2.32
Yo'q.
Versiya 2.31
Yo'q.
Versiya 2.30
Yo'q.
Versiya 2.29 (Funktsional xavfsizlik versiyasi)
Yo'q.
Versiya 2.20
DFP tartibi oʻzgartirildi Endi kompilyator DFP (Device Family Packs) tomonidan foydalaniladigan boshqa tartibni qabul qiladi. Bu eski DFP ushbu nashr bilan ishlamasligi va eski kompilyatorlar eng so'nggi DFPlardan foydalana olmasligini anglatadi.
Versiya 2.19 (Funktsional xavfsizlik versiyasi)
Yo'q.
Versiya 2.10
Yo'q
Versiya 2.05
Dastur xotirasidagi Const obyektlari Esda tutingki, sukut bo'yicha const-mavjud ob'ektlar dastur xotirasiga joylashtiriladi va ulardan foydalanish mumkin (bu erda tasvirlanganidek). Bu sizning loyihangiz hajmi va bajarilish tezligiga ta'sir qiladi, lekin RAMdan foydalanishni kamaytirishi kerak. Agar kerak bo'lsa, bu xususiyatni -mnoconst-da ta-in-progmem opsiyasi yordamida o'chirib qo'yish mumkin.
Versiya 2.00
Konfiguratsiya sigortalari Qurilma konfiguratsion sigortalari endi konfiguratsiya pragmasi, so'ngra sug'urta holatini belgilash uchun qiymat juftliklari yordamida dasturlashtirilishi mumkin, masalan
#pragma konfiguratsiyasi WDT0N = SET
#pragma konfiguratsiyasi B0DLEVEL = B0DLEVEL_4V3
Mutlaq ob'ektlar va funktsiyalar Ob'ektlar va funksiyalar endi CCI _at (manzil) spetsifikatsiyasi yordamida xotiradagi ma'lum bir manzilga joylashtirilishi mumkin, masalan.ample: #include int foobar at(Ox800100); char at(Ox250) get ID(int ofset) { … } Ushbu spetsifikatorning argumenti birinchi bayt yoki ko'rsatma joylashtiriladigan manzilni ifodalovchi doimiy bo'lishi kerak. RAM manzillari 0x800000 ofset yordamida ko'rsatilgan. Ushbu xususiyatdan foydalanish uchun SSPni yoqing.
Yangi uzilish funksiyasi sintaksisi Endi kompilyator C funktsiyalari uzilishlar ishlovchilari ekanligini ko'rsatish uchun CCI interrupt (num) spetsifikatsiyasini qabul qiladi. Spesifikator uzilish raqamini oladi, masalanample: #include bekor uzilish (SPI STC_ vect _num) spi Isr(void) {…}
Tugallangan muammolar
Quyida kompilyatorga kiritilgan tuzatishlar keltirilgan. Ular yaratilgan koddagi xatolarni tuzatishi yoki kompilyatorning ishini foydalanuvchi qo'llanmasi tomonidan mo'ljallangan yoki ko'rsatilganiga o'zgartirishi mumkin. Sarlavhalardagi versiya raqami keyingi muammolar uchun tuzatishlarni o'z ichiga olgan birinchi kompilyator versiyasini ko'rsatadi. Sarlavhadagi qavsdagi yorliq(lar) kuzatuv maʼlumotlar bazasida ushbu muammoning identifikatsiyasidir. Agar qo'llab-quvvatlash xizmatiga murojaat qilishingiz kerak bo'lsa, ular foydali bo'lishi mumkin.
Esda tutingki, qurilmaga tegishli ayrim muammolar qurilma bilan bog‘langan Device Family Pack (DFP) da tuzatilgan. DFP-larga kiritilgan o'zgartirishlar va eng so'nggi paketlarni yuklab olish uchun MPLAB Pack Manager-ga qarang.
Versiya 2.40
Juda xotirjam (XCS-2876) -mrelax opsiyasidan foydalanganda kompilyator ba'zi bo'limlarni birga ajratmadi, natijada kod o'lchamlari kamroq bo'ldi. Bu yangi MUSL kutubxonalaridan foydalangan kod yoki zaif belgilar bilan sodir bo'lishi mumkin.
Ogohlantirishda (XCS-2875) ko'rsatilganidek, xaritalash funksiyasi o'chirilmagan Config mappedprogmem-da xarajat ma'lumotlari xususiyati yoqilgan proem-da xarajat-ma'lumotlariga bog'liq. Agar xarajatlar ma'lumotlari-ipconfig-mapped-proem xususiyati opsiya yordamida aniq yoqilgan bo'lsa va xarajatlar-ma'lumotlar-inprogmem xususiyati o'chirilgan bo'lsa, konfiguratsiyadagi ma'lumotlarning kamchiliklari haqida ogohlantirish xabariga qaramay, havola qadami bajarilmadi. proem xususiyati avtomatik ravishda o'chirilgan edi, bu mutlaqo to'g'ri emas edi. Ushbu vaziyatda const-data-in-config-mapped-proem xususiyati endi to'liq o'chirib qo'yilgan.
DFP NVMCTRL (XCS-2848) toʻgʻri kirish uchun oʻzgaradi AVR64EA qurilmalari tomonidan ishlatiladigan ishga tushirish kodi NVMCTRL registri Konfiguratsiyani oʻzgartirish himoyasi (CCP) ostida ekanligini va IO SFR ni const-data-in configmapped-proem kompilyatori ishlatadigan sahifaga oʻrnatolmasligini hisobga olmadi. xususiyat. AVR-Ex_DFP 2.2.55 versiyasida kiritilgan o'zgartirishlar ishga tushirish kodini ushbu registrga to'g'ri yozish imkonini beradi.
Fleshli xaritalashdan qochish uchun DFP o'zgarishlari (XCS-2847) AVR128DA28/32/48/64 Silicon Errata (DS80000882) da xabar qilingan flesh xaritalash qurilmasi funksiyasi bilan bog‘liq muammoni hal qilish chorasi amalga oshirildi. Const-data-in-config-mapped-proem kompilyator xususiyati taʼsirlangan qurilmalar uchun sukut boʻyicha qoʻllanilmaydi va bu oʻzgarish AVR-Ex_DFP 2.2.160 versiyasida paydo boʻladi.
sinhf yoki coshf bilan qurish xatosi (XCS-2834) sinhf () yoki coshf () kutubxona funksiyalaridan foydalanishga urinishlar aniqlanmagan havolani tavsiflovchi havola xatosiga olib keldi. Havola qilingan etishmayotgan funksiya endi kompilyator taqsimotiga kiritilgan.
Nopa bilan xatolar yaratish (XCS-2833) Assembler nomi () sifatida ko'rsatilgan funksiya bilan nopa atributidan foydalanish assemblerdan xato xabarlarini keltirib chiqardi. Bu kombinatsiya mumkin emas.
Ko'rsatkich argumentlari bilan o'zgaruvchan funksiya xatosi (XCS-2755, XCS-2731) Argumentlar soni oʻzgarmaydigan funksiyalar 24-bitli (_memo turi) koʻrsatgichlarni proemdagi xarajat maʼlumotlari funksiyasi yoqilganda oʻzgaruvchan argumentlar roʻyxatiga oʻtkazilishini kutadi. Ma'lumotlar xotirasiga ko'rsatgich bo'lgan argumentlar 16-bitli ob'ektlar sifatida uzatildi va ular oxir-oqibat o'qilganda kodning ishlamay qolishiga olib keldi. Cons data- in-proem funksiyasi yoqilganda, barcha 16-bitli koʻrsatkichlar argumentlari endi 24-bitli koʻrsatkichlarga aylantiriladi. strtoxxx kutubxonasi funksiyalari ishlamayapti (XCS-2620) const-data-in-proem funksiyasi yoqilganda, strtoxxx kutubxonasi funksiyalaridagi enter parametri dastur xotirasida boʻlmagan manba qator argumentlari uchun toʻgʻri yangilanmagan.
Yaroqsiz translatsiyalar uchun ogohlantirishlar (XCS-2612) Agar proemdagi xarajat funksiyasi yoqilgan bo'lsa va satr literalining manzili aniq ma'lumotlar manzil maydoniga uzatilsa (const kvalfikatorini tashlab), kompilyator endi xato qiladi.ample, (uint8 t *) "Salom dunyo!". Agar const ma'lumotlar ko'rsatgichi ma'lumotlar manzil maydoniga aniq uzatilganda manzil noto'g'ri bo'lishi mumkin bo'lsa, ogohlantirish muammo hisoblanadi.
Boshlanmagan const ob'ektlarini joylashtirish (XCS-2408) Boshlanmagan const va const v olatile ob'ektlari dastur xotirasining to'liq yoki bir qismini ma'lumotlar manzil maydoniga joylashtiradigan qurilmalarda dastur xotirasiga joylashtirilmadi. Ushbu qurilmalar uchun bunday ob'ektlar endi dastur xotirasiga joylashtiriladi va ularning ishlashi boshqa qurilmalar bilan mos keladi.
Versiya 2.39 (Funktsional xavfsizlik versiyasi)
Yo'q.
Versiya 2.36
Kechikishdagi xato (XCS-2774) Standart Erkin rejim optimallashtirishdagi kichik oʻzgarishlar operand ifodalarini kechiktirish oʻrnatilgan funksiyalarga doimiy ravishda yigʻilishini oldini oldi, natijada ular kontaktsiz sifatida koʻrib chiqildi va xatoni keltirib chiqardi: _buil tin avr delay_ cycles expects ac ompile vaqt butun soni doimiysi.
Versiya 2.35
_at (XCS-2653) yordamida qo'shni taqsimlash Bir xil nomdagi va at () dan foydalangan holda bir nechta ob'ektlar joylarini ketma-ket joylashtirish to'g'ri ishlamadi. Misol uchunample: 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 }; arildan keyin darhol arr2 ni qo'yish kerak edi.
Bo'limning boshlang'ich manzillarini belgilash (XCS-2650) -Wal, -section-start opsiyasi bo'limlarni belgilangan boshlang'ich manzilga joylashtira olmadi. Bu muammo har qanday maxsus nomlangan bo'limlar uchun tuzatildi; biroq, u hech qanday standart bo'limlar uchun ishlamaydi, masalan. matn yoki . bss, bu -Wl, -T opsiyasi yordamida joylashtirilishi kerak.
Dam olish paytida bog'lovchi ishdan chiqadi (XCS-2647) -relax optimallashtirish yoqilganda va mavjud xotiraga mos kelmaydigan kod yoki ma'lumotlar bo'limlari mavjud bo'lganda, bog'lovchi ishlamay qoldi. Endi, bunday holatda, xato xabarlari o'rniga chiqariladi.
Yomon EEPROM kirish (XCS-2629) -monist-data-in-proem opsiyasi yoqilganda (bu standart holat) Mega qurilmalarida leproma _read_ blokirovkasi tartibi to'g'ri ishlamadi, natijada EEPROM xotirasi to'g'ri o'qilmaydi.
Yaroqsiz xotira taqsimoti (XCS-2593, XCS-2651) Qachon -Text yoki -Tata bog'lovchi varianti (masalanamp-Wl drayveri opsiyasi yordamida o'tgan le) ko'rsatilgan, tegishli matn/ma'lumotlar hududi kelib chiqishi yangilangan; biroq, oxirgi manzil mos ravishda sozlanmagan, bu esa mintaqaning maqsadli qurilmaning xotira diapazonidan oshib ketishiga olib kelishi mumkin edi.
Yaroqsiz ATtiny uzilish kodi (XCS-2465) Tatin qurilmalari uchun qurilish va optimallashtirishlar o'chirilganda (-00), uzilish funktsiyalari diapazondan tashqaridagi operandni assembler xabarlarini ishga tushirgan bo'lishi mumkin.
Tanlovlar oʻtkazilmaydi (XCS-2452) Bir nechta vergul bilan ajratilgan bog'lovchi opsiyalari bilan -Wl opsiyasidan foydalanilganda, barcha bog'lovchi variantlari bog'lovchiga o'tkazilmagan.
Dastur xotirasini bilvosita o'qish xatosi (XCS-2450) Ba'zi hollarda kompilyator ikki bayt qiymatini ko'rsatgichdan dastur xotirasiga o'qishda ichki xato (tanib bo'lmaydigan insn) hosil qildi.
Versiya 2.32
Kutubxonaga ikkinchi kirish muvaffaqiyatsiz tugadi (XCS-2381) Xc8-ar ning Windows versiyasini chaqirish. exe kutubxonasi arxivatori mavjud kutubxona arxiviga ikkinchi marta kirishda xato xabari nomini oʻzgartirib boʻlmadi.
Versiya 2.31
Tushuntirilmagan kompilyator xatolari (XCS-2367) Tizimning vaqtinchalik katalogi nuqtani o'z ichiga olgan yo'lga o'rnatilgan Windows platformalarida ishlayotganda'.' belgi bo'lsa, kompilyator bajarolmagan bo'lishi mumkin.
Versiya 2.30
Belgilanganidan keyin global teglar noto'g'ri joylashtirilgan (XCS-2299) Protsessual abstraktsiya yo'li bilan ajratilgan yig'ish ketma-ketligi ichida global teglarni joylashtiradigan qo'lda yozilgan yig'ish kodi to'g'ri o'zgartirilmagan bo'lishi mumkin.
Tinchlantiruvchi halokat (XCS-2287) -merlad opsiyasidan foydalanish bo'lim oxirida bo'lmagan ret ko'rsatmalarini o'chirishga harakat qilganda, dumga sakrash bo'shashishini optimallashtirishda bog'lovchining ishdan chiqishiga sabab bo'lishi mumkin.
Yorliqlarni qiymat sifatida optimallashtirishda ishdan chiqish (XCS-2282) “Qiymatlar sifatida teglar” GNU C tili kengaytmasidan foydalanadigan kod protsessual abstraksiyani optimallashtirish ishlamay qolishiga olib kelgan bo‘lishi mumkin, bunda VMA diapazoni aniqlangan tuzatish xatosi yuzaga kelgan.
Unchalik doimiy emas (XCS-2271) dan boshlanadigan () va boshqa funktsiyalar uchun prototiplar -monist-data inprogmem funksiyasi o'chirilgan bo'lsa, qaytarilgan qator ko'rsatkichlarida nostandart xarajat kvalifikatsiyasini endi belgilamang. Avrxmega3 va avertin qurilmalarida bu xususiyat doimiy ravishda yoqilganligini unutmang.
Yo'qotilgan ishga tushirgichlar (XCS-2269) Tarjima birligidagi bir nechta o'zgaruvchilar bo'limga joylashtirilganda (bo'lim yoki atribut ((bo'lim)) yordamida va birinchi bunday o'zgaruvchi nol ishga tushirilgan yoki boshlang'ichga ega bo'lmaganida, xuddi shu tarjima birligidagi boshqa o'zgaruvchilar uchun initsializatorlar xuddi shu bo'limga joylashtirilganlar yo'qolgan.
Versiya 2.29 (Funktsional xavfsizlik versiyasi)
Yo'q.
Versiya 2.20
Uzoq buyruqlar bilan xatolik (XCS-1983) AVR nishonidan foydalanganda kompilyator a bilan to'xtagan bo'lishi mumkin file xato topilmadi, agar buyruq qatori juda katta bo'lsa va tirnoq, teskari chiziq va boshqalar kabi maxsus belgilarni o'z ichiga olgan bo'lsa.
Tayinlanmagan rodata qismi (XCS-1920) AVR bog'lovchisi avrxmega3 va avrtiny arxitekturalarini qurishda maxsus rodata bo'limlari uchun xotirani belgilay olmadi, bu esa xotiraning o'zaro bog'liqligi xatolarini keltirib chiqarishi mumkin.
Versiya 2.19 (Funktsional xavfsizlik versiyasi)
Yo'q.
Versiya 2.10
Ko'chirishda nosozliklar (XCS-1891) Eng yaxshi mos ajratuvchi bog'lovchi bo'shashgandan so'ng bo'limlar o'rtasida xotira "teshiklari" qoldirish edi. Xotirani parchalashdan tashqari, bu kompyuterga nisbatan o'tish yoki qo'ng'iroqlar diapazonidan tashqariga chiqish bilan bog'liq bo'lgan bog'lovchining joylashuvini o'zgartirishda nosozliklar bo'lish ehtimolini oshirdi.
Bo'shashish orqali o'zgartirilmagan ko'rsatmalar (XCS-1889) Bog'lovchi bo'shashishi bo'shashsa, maqsadlariga erishish mumkin bo'lgan sakrash yoki chaqiruv ko'rsatmalari uchun sodir bo'lmadi.
Yo'qolgan funksionallik (XCSE-388) dan bir nechta ta'riflar clock_ div_ t va clock_prescale_set () kabi ATmega324PB, ATmega328PB, ATtiny441 va ATtiny841 kabi qurilmalar uchun aniqlanmagan.
Makroslar etishmayapti Preprotsessor macros_ xcs _MODE_, _xcs VERSION, _xc va xcs kompilyator tomonidan avtomatik ravishda aniqlanmagan. Bular hozir mavjud.
Versiya 2.05
Ichki kompilyator xatosi (XCS-1822) Windows ostida qurishda kodni optimallashtirishda ichki kompilyator xatosi paydo bo'lishi mumkin.
RAMning to'lib ketishi aniqlanmadi (XCS-1800, XCS-1796) Mavjud operativ xotiradan oshib ketgan dasturlar ba'zi hollarda kompilyator tomonidan aniqlanmadi, natijada ish vaqti kodi ishlamay qoldi.
O'tkazib yuborilgan flesh xotira (XCS-1792) Avrxmega3 va avrtiny qurilmalari uchun flesh-xotira qismlari MPLAB X IDE tomonidan dasturlashtirilmagan bo'lishi mumkin.
Asosiy vazifani bajarmaslik (XCS-1788) Dasturda global o'zgaruvchilar aniqlanmagan ba'zi holatlarda ishga tushirish kodi chiqmadi va asosiy () funksiyaga erishilmadi.
Noto'g'ri xotira ma'lumotlari (XCS-1787) Avrxmega3 va avrtiny qurilmalari uchun avr o'lchamli dastur faqat o'qish uchun mo'ljallangan ma'lumotlar dastur xotirasi o'rniga operativ xotirani iste'mol qilayotgani haqida xabar bergan.
Dastur xotirasini noto'g'ri o'qish (XCS-1783) Dastur xotirasi ma'lumotlar manzil maydoniga joylashtirilgan va PROGMEM makro/atributidan foydalangan holda ob'ektlarni belgilaydigan qurilmalar uchun tuzilgan loyihalar ushbu ob'ektlarni noto'g'ri manzildan o'qigan bo'lishi mumkin.
Atributlar bilan ichki xato (XCS-1773) Agar ko'rsatgich ob'ektlari bilan belgilagan bo'lsangiz, ichki xatolik yuz berdi
_at () yoki atribut() tokenlari koʻrsatgich nomi va bekor qilingan tur oʻrtasida, masalan,ample, char *
_at ( 0x80015 0) cp; Agar bunday kodga duch kelsangiz, endi ogohlantirish beriladi.
Asosiy ishga tushmaslik (XCS-1780, XCS-1767, XCS-1754) EEPROM o'zgaruvchilaridan foydalanish yoki konfiguratsiya pragmasidan foydalangan holda sug'urtalarni aniqlash asosiy () ga yetib borishdan oldin ish vaqtining ishga tushirish kodida noto'g'ri ma'lumotlarni ishga tushirishga va/yoki dastur bajarilishini blokirovka qilishga olib kelishi mumkin.
Kichik qurilmalarda sug'urta xatosi (XCS-1778, XCS-1742) Attiny4/5/9/10/20/40 qurilmalari sarlavhasida noto'g'ri sug'urta uzunligi ko'rsatilgan. fileSigortalarni aniqlagan kodni yaratishga urinishda bog'lovchi xatolarga olib keladigan s.
Segmentatsiya xatosi (XCS-1777) Vaqti-vaqti bilan segmentatsiya xatosi tuzatildi.
Assembler ishdan chiqishi (XCS-1761) Kompilyator Ubuntu 18 ostida ishlaganda avr-as assembler ishdan chiqqan bo'lishi mumkin.
Ob'ektlar tozalanmagan (XCS-1752) Boshlanmagan statik saqlash muddati ob'ektlari ishga tushirish kodi bilan tozalanmagan bo'lishi mumkin.
Qarama-qarshi qurilma spetsifikatsiyasi e'tiborga olinmadi (XCS-1749) Bir nechta qurilma spetsifikatsiyasi opsiyalaridan foydalanilganda va turli qurilmalarni ko'rsatganida kompilyator xatolikka yo'l qo'ymadi.
Uyma tomonidan xotira buzilishi (XCS-1748) Heap_ start belgisi noto'g'ri o'rnatilgan, natijada oddiy o'zgaruvchilar to'p tomonidan buzilishi mumkin edi.
Bog'lovchini ko'chirish xatosi (XCS-1739) Kodda rjmp yoki maqsad aniq 4k bayt masofada joylashgan rcall bo'lsa, bog'lovchini ko'chirish xatosi chiqarilgan bo'lishi mumkin.
Versiya 2.00
Yo'q.
Ma'lum muammolar
Quyida kompilyatorning ishlashidagi cheklovlar mavjud. Bu umumiy kodlash cheklovlari yoki bo'lishi mumkin
foydalanuvchi qo'llanmasida keltirilgan ma'lumotlardan chetga chiqish. Sarlavhadagi qavsdagi yorliq(lar) kuzatuv maʼlumotlar bazasida ushbu muammoning identifikatsiyasidir. Agar qo'llab-quvvatlash xizmatiga murojaat qilishingiz kerak bo'lsa, bu foydali bo'lishi mumkin. Yorliqlari bo'lmagan elementlar rejim operandisini tavsiflovchi va doimiy o'z kuchida qolishi mumkin bo'lgan cheklovlardir.
MPLAB X IDE integratsiyasi
MPLAB IDE integratsiyasi Agar kompilyator MPLAB IDE-dan foydalanilsa, kompilyatorni o'rnatishdan oldin MPLAB IDE-ni o'rnatishingiz kerak.
Kod yaratish
PA xotirasini taqsimlashda xatolik (XCS-2881) Protsessual abstraktsiya optimallashtiruvchilaridan foydalanganda, dastur mavjud bo'sh joyga sig'ishi kerak bo'lsa ham, kod hajmi qurilmadagi mavjud dastur xotirasi miqdoriga yaqin bo'lsa, bog'lovchi xotirani ajratish xatolari haqida xabar berishi mumkin.
Unchalik aqlli emas Smart-IO (XCS-2872) Kompilyatorning smart-io xususiyati sprint funksiyasi uchun yaroqli, ammo sub optimal kodni ishlab chiqaradi, agar proemdagi qirg‘oq ma’lumotlari funksiyasi o‘chirilgan bo‘lsa yoki qurilmada uning barcha fleshlari ma’lumotlar xotirasiga joylashtirilgan bo‘lsa.
Bundan ham kamroq aqlli Smart-IO (XCS-2869) Kompilyatorning smart-io funksiyasi -floe va -fno-buil tin opsiyalaridan foydalanilganda haqiqiy, lekin suboptimal kod ishlab chiqaradi.
Faqat o‘qish uchun mo‘ljallanmagan ma’lumotlarni joylashtirish (XCS-2849) Bog'lovchi hozirda xotira xaritasidagi APPCODE va APPDATA xotira bo'limlari, na [No-]Read-While-Write bo'limlaridan xabardor emas. Natijada, bog'lovchi xotiraning mos bo'lmagan maydoniga faqat o'qish uchun ma'lumotlarni ajratishi mumkin bo'lgan kichik imkoniyat mavjud. Agar pragmadagi qirg‘oq ma’lumotlari funksiyasi yoqilgan bo‘lsa, ayniqsa, konfiguratsiya-mapped-proem funksiyasi ham yoqilgan bo‘lsa, noto‘g‘ri joylashtirilgan ma’lumotlar ehtimoli ortadi. Agar kerak bo'lsa, bu xususiyatlarni o'chirib qo'yish mumkin.
Ob'ekt file ishlov berish tartibi (XCS-2863) Ob'ektlarning tartibi files bog'lovchi tomonidan qayta ishlanadi protsessual abstraktsiya optimallashtirishdan foydalanishga qarab farq qilishi mumkin (-mpa varianti). Bu faqat bir nechta modullarda zaif funktsiyalarni belgilaydigan kodga ta'sir qiladi.
Mutlaq bog'lovchi xatosi (XCS-2777) Agar ob'ekt RAM boshida manzilda mutlaq qilingan bo'lsa va ishga tushirilmagan ob'ektlar ham aniqlangan bo'lsa, bog'lovchi xatosi ishga tushishi mumkin.
Qisqa uyg'otish identifikatorlari (XCS-2775) ATA5700/2 qurilmalari uchun PHID0/1 registrlari kengligi 16 bit emas, balki faqat 32 bit kengligi sifatida aniqlanadi.
Belgini chaqirganda bog'lovchi ishdan chiqdi (XCS-2758) Agar manba kodi -Wl, –defsym bog'lovchi opsiyasi yordamida aniqlangan belgini chaqirganda -merlad drayveri opsiyasi ishlatilsa, bog'lovchi ishlamay qolishi mumkin.
Noto'g'ri ishga tushirish (XCS-2679) Ba'zi global/statik bayt o'lchamdagi ob'ektlarning boshlang'ich qiymatlari ma'lumotlar xotirasiga joylashtirilganligi va o'zgaruvchilarga ish vaqtida kirish mumkin bo'lgan joy o'rtasida tafovut mavjud.
noto'g'ri boshlangan bo'sh to'plamlar (XCS-2652) Ko'rsatilgan () bo'yicha konvertatsiya qilinadigan mavzu satrida eksponensial formatdagi suzuvchi nuqtali raqam bo'lib ko'rinadigan va e belgisidan keyin kutilmagan belgi bo'lsa, bo'sh manzil, agar taqdim etilgan bo'lsa, keyingi belgiga ishora qiladi. e ning o'zi emas, balki e. Misol uchunample: aytilgan ("hooey", bo'sh); x belgisiga bo'sh ishora paydo bo'ladi.
Yomon bilvosita funksiya chaqiruvlari (XCS-2628) Ba'zi hollarda strukturaning bir qismi sifatida saqlangan funktsiya ko'rsatgichi orqali qilingan funksiya chaqiruvlari muvaffaqiyatsiz bo'lishi mumkin.
strtof o'n oltilik suzuvchilar uchun nolni qaytaradi (XCS-2626) strtof () va boshqalar va scanf () va boshqalar kutubxona funktsiyalari har doim ko'rsatkichni ko'rsatmaydigan o'n oltilik suzuvchi nuqtani o'zgartiradi.
nol. Misol uchunample: stator("Boyo'g'li", &bo'sh); 0 emas, 1 qiymatini qaytaradi.
Noto'g'ri stek maslahatchisi xabarlari (XCS-2542, XCS-2541) Ba'zi hollarda, rekursiya yoki noaniq stek (ehtimol alloca() dan foydalanish orqali) haqida stek maslahatchisi ogohlantirishi chiqarilmaydi.
Ikki nusxadagi uzilish kodi bilan xatolik (XCS-2421) Agar bir nechta uzilish funksiyasi bir xil tanaga ega bo'lsa, kompilyator bitta uzilish funktsiyasini boshqasini chaqirishi uchun chiqishga ega bo'lishi mumkin. Bu barcha qo'ng'iroqlar blokirovka qilingan registrlarning keraksiz saqlanishiga olib keladi va uzilishlar joriy uzilish ishlovchisining epilogi ishga tushmasdan ham yoqiladi, bu esa kodning ishlamay qolishiga olib kelishi mumkin.
Dastur xotirasida bo'lmagan Const ob'ektlari (XCS-2408) Avrxmega3 va avertins loyihalari uchun undealized const ob'ektlari ma'lumotlar xotirasiga joylashtiriladi, garchi ogohlantirish ular dastur xotirasiga joylashtirilganligini ko'rsatsa ham. Bu ma'lumotlar xotirasi maydoniga moslashtirilgan dastur xotirasi bo'lmagan qurilmalarga va ishga tushirilgan ob'ektga ta'sir qilmaydi.
Yaroqsiz DFP yo'li bilan noto'g'ri chiqdi (XCS-2376) Agar kompilyator noto'g'ri DFP yo'li va "spec" bilan chaqirilgan bo'lsa file tanlangan qurilma uchun mavjud bo'lsa, kompilyator etishmayotgan qurilmalar oilasi to'plami haqida xabar bermayapti va buning o'rniga "spec" ni tanlamoqda. file, bu esa yaroqsiz chiqishga olib kelishi mumkin. "Xususiyatlar" files tarqatilgan DFPlar bilan yangilanmagan bo'lishi mumkin va faqat ichki kompilyator sinovlari bilan foydalanish uchun mo'ljallangan.
Xotiraning bir-biriga mos kelishi aniqlanmadi (XCS-1966) Kompilyator manzilda (() orqali) mutlaq qilingan ob'ektlar va bo'lim () spetsifikatsiyasi yordamida bir xil manzilga bog'langan boshqa ob'ektlar xotirasining o'xshashligini aniqlamaydi.
Kutubxona funksiyalari va _meme (XCS-1763) bilan ishlamay qoldi _memo manzil maydonida argumentga ega bo'lgan limbik float funksiyalari ishlamay qolishi mumkin. E'tibor bering, kutubxona tartiblari ba'zi C operatorlaridan chaqiriladi, masalanample, quyidagi kod ta'sir qiladi: regFloatVar > memxFloatVarni qaytaring;
Cheklangan limbik amalga oshirish (AVRTC-731) ATTiny4/5/9/10/20/40 mahsulotlari uchun limbikda standart C/Math kutubxonasini amalga oshirish juda cheklangan yoki mavjud emas.
Dastur xotirasi cheklovlari (AVRTC-732) 128 kb dan ortiq dastur xotirasi tasvirlari asboblar zanjiri tomonidan qo'llab-quvvatlanadi; ammo, -relax opsiyasidan foydalanilganda kerakli funksiya stublarini yaratish o'rniga, bo'shashmasdan va foydali xato xabarisiz bog'lovchini bekor qilish holatlari ma'lum.
Nom maydoni cheklovlari (AVRTC-733) Nomlangan manzil bo'shliqlari, foydalanuvchi qo'llanmasining Maxsus turdagi kvalifikatorlar bo'limida ko'rsatilgan cheklovlarga rioya qilgan holda asboblar zanjiri tomonidan qo'llab-quvvatlanadi.
Vaqt zonalari The kutubxona funktsiyalari GMT ni qabul qiladi va mahalliy vaqt zonalarini qo'llab-quvvatlamaydi, shuning uchun mahalliy vaqt () gummite () bilan bir xil vaqtni qaytaradi, masalan.ample.
MIJOLARNI QO'LLAB-QUVVAT
file:///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ VR uchun. htm
Hujjatlar / manbalar
![]() |
MICROCHIP MPLAB XC8 C kompilyator dasturi [pdf] Foydalanuvchi qo'llanmasi MPLAB XC8 C, MPLAB XC8 C kompilyator dasturi, kompilyator dasturi, dasturiy ta'minot |