MICROCHIP loqosuMPLAB® XC8 C Kompilyator Versiya 2.41 AVR® MCU üçün Buraxılış Qeydləri
İstifadəçi Təlimatı

MPLAB XC8 C Kompilyator İnkişaf Proqramı

BU SƏNƏD MİKROÇİP AVR CİHAZLARINI HƏDƏF EDƏN zaman MPLAB XC8 C TƏRƏKÇİSİYƏ BAĞLI VACİB MƏLUMATLARI TƏRKİB EDİR.
BU PROQRAMI İŞLƏTMƏDƏN ƏVVƏL OXUYUN. SİZ 8-BİT PIC CİHAZLARI ÜÇÜN TƏRƏBƏÇİDƏN İSTİFADƏ EDİRSİNİZ ƏGƏR, PIC SƏNƏDİ ÜÇÜN MPLAB XC8 C TƏRƏBÇİSİNİN BAKIŞ QEYDLƏRİNƏ BAXIN.

Bitdiview

1.1. Giriş
Microchip MPLAB® XC8 C kompilyatorunun bu buraxılışı bir sıra yeni funksiyalar və xətaların aradan qaldırılmasını ehtiva edir.
1.2. Qurulma tarixi
Bu tərtibçi versiyasının rəsmi qurulma tarixi 8 fevral 2023-cü ildir.
1.3. Əvvəlki Versiya
Əvvəlki MPLAB XC8 C kompilyator versiyası 2.40 iyul 3-ci ildə qurulmuş 2022 idi.
1.4. Funksional təhlükəsizlik təlimatı
MPLAB XC kompilyatorları üçün Funksional Təhlükəsizlik Təlimatı siz funksional təhlükəsizlik lisenziyası satın aldığınız zaman sənədlər paketində mövcuddur.
1.5. Komponent Lisenziyaları və Versiyaları
AVR MCU alətləri üçün MPLAB XC8 C Kompilyatoru GNU Ümumi İctimai Lisenziyası (GPL) altında yazılmış və paylanmışdır ki, bu da onun mənbə kodunun sərbəst şəkildə yayılması və ictimaiyyətə açıq olması deməkdir.
GNU GPL altında alətlər üçün mənbə kodu Microchip-dən ayrıca endirilə bilər webSayt. Siz GNU GPL-ni quraşdırma lisenziyanızın alt kataloqunda yerləşən adlı faylda oxuya bilərsiniz.txt avr/doc. GPL-in əsasını təşkil edən prinsiplərin ümumi müzakirəsini burada tapa bilərsiniz.
Başlıq faylları, əlaqələndirici skriptlər və iş vaxtı kitabxanaları üçün təmin edilən dəstək kodu mülkiyyət kodudur və GPL çərçivəsində əhatə olunmur.
Bu kompilyator GCC 5.4.0 versiyasının, binutils 2.26 versiyasının tətbiqidir və avr-libc 2.0.0 versiyasından istifadə edir.
1.6. Sistem Tələbləri
MPLAB XC8 C kompilyatoru və onun istifadə etdiyi lisenziya proqram təminatı müxtəlif əməliyyat sistemləri, o cümlədən aşağıdakıların 64-bit versiyaları üçün mövcuddur: Microsoft® Windows® 10-un peşəkar nəşrləri; Ubuntu® 18.04; və macOS® 10.15.5. Windows üçün ikili proqramlar kodla imzalanıb. MacOS üçün ikili proqramlar kodla imzalanmış və notarial qaydada təsdiq edilmişdir. MPLAB XC Şəbəkə Lisenziya Serveri müxtəlif 64-bit əməliyyat sistemləri, o cümlədən Microsoft Windows 10 və yuxarı versiyalar üçün mövcuddur; Ubuntu 18.04 və yuxarı; və ya macOS 10.15 və yuxarı. Server həmçinin Windows Server, Oracle® Enterprise Linux® və Red Hate Enterprise Linux kimi Linux paylamaları, eləcə də dəstəklənən əməliyyat sistemlərinin köhnə versiyaları daxil olmaqla müxtəlif digər əməliyyat sistemlərində işləyə bilər. Bununla belə, MPLAB XC Şəbəkə Lisenziya Serveri bu əməliyyat sistemlərində sınaqdan keçirilmir. MPLAB XC Şəbəkə Lisenziya Serveri dəstəklənən ƏS-nin Virtual Maşınlarında şəbəkə lisenziyaları (SW006021-VM) üçün virtual maşın lisenziyasından istifadə etməklə işlədilə bilər. MPLAB XC Şəbəkə Serverinin bütün 32-bit versiyaları 3.00 versiyasından başlayaraq dayandırılır.
Dəstəklənən qurğular
Bu kompilyator buraxılış zamanı bütün mövcud 8 bitlik AVR MCU cihazlarını dəstəkləyir. Bütün dəstəklənən cihazların siyahısı üçün (tərtibçinin kataloqunda) baxın. Bu faylların siyahısı da var
avr_chipinfo.html hər bir cihaz üçün sənəd konfiqurasiya bit parametrləri.

1.7. Nəşrlər və Lisenziya Təkmilləşdirmələri
MPLAB XC8 kompilyatoru lisenziyalı (PRO) və ya lisenziyasız (Pulsuz) məhsul kimi aktivləşdirilə bilər. Kompilyatorunuzu lisenziyalaşdırmaq üçün aktivləşdirmə açarı almalısınız. Lisenziya Pulsuz məhsulla müqayisədə daha yüksək səviyyədə optimallaşdırma imkanı verir. Lisenziyasız kompilyator lisenziyasız qeyri-müəyyən müddətə işlədilə bilər. MPLAB XC8 Funksional Təhlükəsizlik kompilyatoru Microchip-dən alınmış funksional təhlükəsizlik lisenziyası ilə aktivləşdirilməlidir. Kompilyator bu lisenziya olmadan işləməyəcək. Aktivləşdirildikdən sonra istənilən optimallaşdırma səviyyəsini seçə və kompilyatorun bütün xüsusiyyətlərindən istifadə edə bilərsiniz. MPLAB XC Funksional Təhlükəsizlik Kompilyatorunun bu buraxılışı Şəbəkə Server Lisenziyasını dəstəkləyir.
Lisenziya növləri və kompilyatorun lisenziya ilə quraşdırılması haqqında məlumat üçün MPLAB XC C Kompilyatorlarının Quraşdırılması və Lisenziyalaşdırılması (DS50002059) sənədinə baxın.

1.8. Quraşdırma və aktivləşdirmə
Bu kompilyatora daxil edilmiş ən son lisenziya meneceri haqqında vacib məlumat üçün Miqrasiya Problemləri və Məhdudiyyətlər bölmələrinə də baxın.
MPLAB IDE istifadə edirsinizsə, bu aləti quraşdırmazdan əvvəl ən son MPLAB X IDE 5.0 və ya daha sonrakı versiyasını quraşdırdığınızdan əmin olun. Kompilyatoru quraşdırmadan əvvəl IDE-dən çıxın. (Windows), (Linux) və ya (macOS) .exe .run .app kompilyator quraşdırıcı proqramını işə salın və ekrandakı göstərişlərə əməl edin. XC8-1.00.11403-windows.exe Defolt quraşdırma kataloqu tövsiyə olunur. Əgər siz Linux istifadə edirsinizsə, kompilyatoru terminaldan və kök hesabdan quraşdırmalısınız. Administrator imtiyazları olan macOS hesabından istifadə edərək quraşdırın.
Aktivləşdirmə indi quraşdırma üçün ayrıca həyata keçirilir. Əlavə məlumat üçün MPLAB® XC C Kompilyatorları (DS52059) üçün Lisenziya Meneceri sənədinə baxın.
Əgər siz tərtibçini qiymətləndirmə lisenziyası altında işlətməyi seçsəniz, indi qiymətləndirmə müddətinizin bitməsindən sonra 14 gün ərzində tərtib zamanı xəbərdarlıq alacaqsınız. HPA abunəliyiniz bitdikdən sonra 14 gün ərzində olsanız, eyni xəbərdarlıq verilir.
XC Şəbəkə Lisenziyası Serveri ayrıca quraşdırıcıdır və tək istifadəçi kompilyator quraşdırıcısına daxil edilmir.
XC Lisenziya Meneceri indi üzən şəbəkə lisenziyalarının rouminqini dəstəkləyir. Mobil istifadəçilər üçün nəzərdə tutulmuş bu funksiya üzən lisenziyaya qısa müddət ərzində şəbəkədən çıxmağa imkan verir. Bu funksiyadan istifadə edərək, siz şəbəkədən ayrıla və hələ də MPLAB XC kompilyatorunuzdan istifadə edə bilərsiniz. Bu xüsusiyyət haqqında daha çox məlumat üçün XCLM quraşdırmasının sənəd qovluğuna baxın.
MPLAB X IDE rouminqi vizual idarə etmək üçün Lisenziyalar pəncərəsini (Alətlər > Lisenziyalar) ehtiva edir.

1.8.1. Quraşdırma məsələlərinin həlli
Windows əməliyyat sistemlərindən hər hansı birində kompilyatoru quraşdırmaqda çətinlik çəkirsinizsə, aşağıdakı təklifləri sınayın.
Quraşdırmanı idarəçi olaraq işə salın.
Quraşdırıcı tətbiqin icazələrini 'Tam nəzarət' olaraq təyin edin. (Faylı sağ klikləyin, Xüsusiyyətlər, Təhlükəsizlik sekmesini seçin, istifadəçini seçin, redaktə edin.)
Müvəqqəti qovluğun icazələrini 'Tam Nəzarət' olaraq təyin edin.
Müvəqqəti qovluğun yerini müəyyən etmək üçün Run əmrinə %temp% yazın (Windows loqosu düyməsi + R).
Bu, həmin qovluğu göstərən fayl tədqiqatçısı dialoqunu açacaq və sizə həmin qovluğun yolunu müəyyən etməyə imkan verəcək.
1.9. Kompilyator Sənədləri
Kompilyatorun istifadəçi təlimatları ekran görüntüsündə göstərildiyi kimi MPLAB X IDE idarə panelində mavi yardım düyməsini kliklədikdə brauzerinizdə açılan HTML səhifəsindən açıla bilər.

Əgər siz 8 bitlik AVR hədəfləri üçün qurursunuzsa, AVR® MCU üçün MPLAB® XC8 C Kompilyator İstifadəçi Təlimatında bu arxitekturaya uyğun olan kompilyator seçimləri və xüsusiyyətləri haqqında məlumat var.

MICROCHIP MPLAB XC8 C Kompilyator İnkişaf Proqramı -

1.10. Müştəri dəstəyi
Microchip bu kompilyator versiyası ilə bağlı səhv hesabatlarını, təklifləri və ya şərhləri alqışlayır. Lütfən, hər hansı səhv hesabatlarını və ya funksiya sorğularını Dəstək Sistemi vasitəsilə yönləndirin.

Sənəd yeniləmələri

MPLAB XC8 sənədlərinin onlayn və ən son versiyaları üçün Microchip-in Onlayn Texniki Sənədlərinə müraciət edin. webSayt. Bu buraxılışda yeni və ya yenilənmiş AVR sənədləri:

  • AVR® MCU üçün MPLAB® XC8 C Kompilyator İstifadəçi Təlimatı (revision G)
  • AVR® GNU Alətlər silsiləsi MPLAB® XC8 Miqrasiya Bələdçisi (revision A)
  • Hexmate İstifadəçi Təlimatı (revision B)

AVR® GNU Alətlər silsiləsi MPLAB® XC8 Miqrasiya Bələdçisi, C əsaslı layihəni AVR 8-bit GNU Alətlər zəncirindən Microchip MPLAB XC8 C Kompilyatoruna köçürməyə qərar verdiyiniz halda tələb oluna biləcək mənbə koduna dəyişiklikləri və qurma seçimlərini təsvir edir. Microchip Unified Standard Library Reference Guide Microchip Unified Standard Library Reference Guide Microchip Unified Standard Library tərəfindən müəyyən edilmiş funksiyaların davranışını və interfeysini, həmçinin kitabxana növlərinin və makroların məqsədli istifadəsini təsvir edir. Bu məlumatların bəziləri əvvəllər AVR® MCU üçün MPLAB® XC8 C Kompilyator İstifadəçi Təlimatında yer alırdı. Cihaza aid kitabxana məlumatı hələ də bu kompilyator təlimatında var.
Əgər siz 8 bitlik cihazlar və MPLAB XC8 C Kompilyatoru ilə yenicə başlayırsınızsa, MPLAB® XC8 Quraşdırılmış Mühəndislər üçün İstifadəçi Təlimatında – AVR® MCU-larda (DS50003108) MPLAB X IDE-də layihələrin qurulması və sizin üçün kod yazılması haqqında məlumat var. ilk MPLAB XC8 C layihəsi. Bu təlimat indi kompilyatorla paylanır.
Hexmate İstifadəçi Təlimatı Hexmate-i müstəqil proqram kimi işlədənlər üçün nəzərdə tutulub.

Yeniliklər

Aşağıdakılar tərtibçinin indi dəstəklədiyi yeni AVR hədəf xüsusiyyətləridir. Alt başlıqlardakı versiya nömrəsi sonrakı funksiyaları dəstəkləmək üçün ilk tərtibçi versiyasını göstərir.
3.1. Versiya 2.41
Bootrow dəstəyi (XC8-3053) Kompilyator HEX faylında 0x860000 at.bootrow ünvanı ilə istənilən bölmələrin məzmununu yerləşdirəcək. Bu bölmələr BOOTROW yaddaşı üçün istifadə olunur ki, bu da açarların və yalnız yükləyicinin əlçatan olması lazım olan digər təhlükəsiz məlumatların saxlanması üçün nəzərdə tutulub.

Ehtiyatsız qaytarmanın aradan qaldırılması (XC8-3048) İndi kompilyator xüsusi əlaqələndirici skriptlərdən istifadə edildikdə ret funksiyalarında lazımsız təlimatları sıçrayışla aradan qaldıracaq. Bu, əvvəllər yerinə yetirilən optimallaşdırmaya bənzəyir, lakin indi fərdi əlaqələndirici skript istifadə edilsə və ən yaxşı uyğunluq ayırma sxemi işə salınmasa belə, bütün yetim bölmələrdə həyata keçirilir. Vaxt növünün dəyişməsi (XC8-2982, 2932) C99 standart kitabxana növü time_t-dan tipə dəyişdirilib və bu, bəzi zamanla əlaqəli uzun uzun funksiyalarda kod ölçüsü təkmilləşdirmələrini təmin edir, məsələn. imzasız uzun mktime()
Yeni nop (XC8-2946, 2945) Makro əlavə edildi. Bu makro no-NOP() daxil edir çıxışa nop əməliyyat təlimatı.
XCLM-ə yeniləmə (XC8-2944) Tərtibçi ilə birlikdə istifadə edilən lisenziya meneceri yeniləndi və indi kompilyatorun lisenziya təfərrüatlarını yoxlayarkən daha həssasdır.
Trampsəliqəli zənglər (XC8-2760) Təlimatların nisbi formaları adətən təyinat diapazonundan kənarda olduqda, kompilyator indi uzunformalı zəng təlimatlarını daha qısa nisbi zənglərlə əvəz edə bilər. Bu vəziyyətdə, kompilyator rcal əmrini çağırmaq üçün təlimatlarla əvəz etməyə çalışacaq ki, bu da 'tramptələb olunan ünvana oline' icrası, məsələnample: jmp
rcall tramp_foo ;foo çağırılırdı

rcall tramp_foo

tramp_foo:
jmp foo

Bu optimallaşdırma oxşar proqram axını optimallaşdırmaları ilə birlikdə -mrelax seçimi ilə idarə olunur.

3.2. Versiya 2.40
Yeni cihaz dəstəyi dəstəyi indi aşağıdakı AVR hissələri üçün əlçatandır: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32EA64, AVR28, AVR64, AVR32, AVR64 və AVR48.
Təkmilləşdirilmiş prosedur abstraksiya Prosedur abstraksiyasının (PA) optimallaşdırma aləti təkmilləşdirilmişdir ki, funksiya çağırış təlimatını (/ ) ehtiva edən kodu təsvir etmək olar. Bu, yalnız stekdən arqumentləri ötürmək və ya funksiyadan qaytarma dəyəri əldə etmək üçün istifadə edilmədikdə, çağırış çağırışı baş verəcəkdir. Yığın dəyişən arqumentlər siyahısı ilə funksiya çağırarkən və ya bu məqsəd üçün təyin edilmiş registrlərdən daha çox arqument alan funksiyanı çağırarkən istifadə olunur. Bu funksiya seçimdən istifadə etməklə deaktiv edilə bilər və ya prosedur abstraksiyanı müvafiq olaraq - və istifadə etməklə və ya funksiyalarla seçilmiş atributdan (spesifikatordan) istifadə etməklə obyekt faylı və ya funksiyası üçün tamamilə qeyri-aktiv edilə bilər.
mno-pa-kontrol-zəngləri -mno-pa-on-file -mno-pa-on-function nopa Kod əhatə dairəsi makrosu Düzgün seçim __nopa __CODECOV -mcodecov göstərilibsə, indi kompilyator makronu müəyyən edir.
Yaddaşın rezervasiya seçimi Sürücü indi AVR hədəfləri üçün qurarkən xc8-cc -mreserve=space@start:end seçimini qəbul edəcək. Bu seçim müəyyən edilmiş yaddaş diapazonunu məlumat və ya proqram yaddaşı sahəsində saxlayır, əlaqələndiricinin bu sahədə kodu və ya obyektləri doldurmasının qarşısını alır. Daha ağıllı smart IO Smart IO funksiyalarında bir sıra təkmilləşdirmələr edilib, o cümlədən printf əsas koduna ümumi düzəlişlər, %n çevirmə spesifikatorunu müstəqil variant kimi nəzərdən keçirmək, tələb üzrə vararg pop rutinləri ilə əlaqələndirmək, işləmək üçün mümkün olan yerlərdə daha qısa məlumat növlərindən istifadə etmək IO funksiyası arqumentləri və sahənin eni və dəqiq idarə edilməsində ümumi kodu faktorinq. Bu, əhəmiyyətli kod və məlumat qənaəti ilə nəticələnə bilər, həmçinin IO-nun icra sürətini artıra bilər.

3.3. Versiya 2.39 (Funksional Təhlükəsizlik Buraxılışı)
Şəbəkə Server Lisenziyası MPLAB XC8 Funksional Təhlükəsizlik Kompilyatorunun bu buraxılışı Şəbəkə Server Lisenziyasını dəstəkləyir.
3.4. Versiya 2.36
Heç biri.

3.5. Versiya 2.35
Yeni cihaz dəstəyi aşağıdakı AVR hissələri üçün mövcuddur: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 və AVR64DD32.
Təkmilləşdirilmiş kontekst kommutasiyası Yeni -mcall-isr-prologues seçimi kəsmə funksiyalarının giriş zamanı registrləri necə saxladığını və kəsilmə rejimi başa çatdıqda həmin registrlərin necə bərpa olunduğunu dəyişir. O, -mcall-prologues seçiminə bənzər şəkildə işləyir, lakin yalnız kəsmə funksiyalarına (ISRs) təsir göstərir.
Daha da təkmilləşdirilmiş kontekst keçidi Yeni -mgas-isr-prologues seçimi kiçik fasilə xidməti rutinləri üçün yaradılan kontekst keçid koduna nəzarət edir. Aktivləşdirildikdə, bu funksiya assemblerə reyestrdən istifadə üçün ISR-i skan edəcək və yalnız tələb olunarsa bu istifadə edilmiş registrləri yadda saxlayacaqdır.
Konfiqurasiya edilə bilən flaş xəritələşdirmə AVR DA və AVR DB ailəsindəki bəzi cihazlarda proqram yaddaşının hansı 32k hissəsinin məlumat yaddaşına uyğunlaşdırılacağını müəyyən edən SFR (məsələn, FLMAP) var. Yeni – mconst-data-in-config-mapped-progmem seçimi, əlaqələndiricinin bütün sabit məlumatı bir 32k bölməyə yerləşdirməsi və bu məlumatların məlumat yaddaşına uyğunlaşdırılmasını təmin etmək üçün müvafiq SFR reyestrini avtomatik başlatması üçün istifadə edilə bilər. daha səmərəli istifadə ediləcəyi məkandır.
Mikroçip Vahid Standart Kitabxanaları Bütün MPLAB XC tərtibçiləri MPLAB XC8-in bu buraxılışı ilə artıq mövcud olan Mikroçip Vahid Standart Kitabxanasını paylaşacaqlar. AVO MCU üçün MPLA# XC8 C Kompilyator İstifadəçi Təlimatı artıq bu standart funksiyalar üçün sənədləri ehtiva etmir. Bu məlumatı indi Microchip Unified Standard Library Reference Guide-da tapmaq olar. Qeyd edək ki, əvvəllər avr-libc tərəfindən müəyyən edilmiş bəzi funksiyalar artıq mövcud deyil. (Lila funksionallığına baxın.)
Smart I0 Yeni vahid kitabxanaların bir hissəsi olaraq, printf və scanf ailələrindəki I0 funksiyaları indi bu funksiyaların proqramda necə istifadə edildiyinə əsaslanaraq hər bir quruluşda fərdi olaraq yaradılır. Bu, proqramın istifadə etdiyi resursları əhəmiyyətli dərəcədə azalda bilər.
Ağıllı ICI yardım seçimi Ağıllı I0 funksiyalarına edilən zəngləri təhlil edərkən (məsələn, çap f () və ya scanf ()), tərtibçi həmişə format sətirindən müəyyən edə və ya arqumentlərdən zəng üçün tələb olunan konversiya təyinedicilərini çıxara bilməz. Əvvəllər kompilyator həmişə heç bir fərziyyə irəli sürməz və tam funksional 10 funksiyanın proqramın son görüntüsü ilə əlaqələndirilməsini təmin edərdi. Yeni – msmart-io-format=fmt seçimi əlavə edildi ki, kompilyator əvəzinə istifadəsi qeyri-müəyyən olan smart I0 funksiyaları tərəfindən istifadə edilən çevrilmə spesifikatorları haqqında istifadəçi tərəfindən məlumatlandırıla bilsin və həddindən artıq uzun 10 rejimin əlaqələndirilməsinin qarşısını alır. (Ətraflı məlumat üçün smart-io-format Seçiminə baxın.)
Fərdi bölmələrin yerləşdirilməsi Əvvəllər -W1, –section-start seçimi linker skripti eyni adlı çıxış bölməsini təyin etdikdə yalnız göstərilən bölməni tələb olunan ünvana yerləşdirirdi. Belə olmadıqda, bölmə əlaqələndiricinin seçdiyi ünvana yerləşdirildi və seçim mahiyyətcə nəzərə alınmadı. İndi keçid skripti bölməni müəyyən etməsə belə, seçim bütün xüsusi bölmələr üçün layiq görüləcək. Bununla belə, qeyd edin ki, standart bölmələr üçün belə . mətn, . bss və ya . data, ən yaxşı uyğun ayırıcı hələ də onların yerləşdirilməsi üzərində tam nəzarətə malik olacaq və seçim heç bir təsir göstərməyəcək. İstifadəçi təlimatında təsvir olunduğu kimi -ton, -Tsection=addr seçimindən istifadə edin.
3.6. Versiya 2.32
Yığın Rəhbərliyi PRO kompilyator lisenziyası ilə mövcud olan kompilyatorun stek bələdçi xüsusiyyəti proqram tərəfindən istifadə edilən istənilən yığının maksimum dərinliyini qiymətləndirmək üçün istifadə edilə bilər. O, proqramın çağırış qrafikini qurur və təhlil edir, hər bir funksiyanın stek istifadəsini müəyyən edir və proqramın istifadə etdiyi yığınların dərinliyi haqqında nəticə çıxarmaq üçün hesabat hazırlayır. Bu xüsusiyyət -mchp-stack-usage komanda xətti seçimi vasitəsilə aktivləşdirilir. Yığın istifadəsinin xülasəsi icradan sonra çap olunur. Ətraflı yığın hesabatı xəritədə mövcuddur file, adi şəkildə tələb oluna bilər.
Aşağıdakı AVR hissələri üçün yeni cihaz dəstəyi mövcuddur: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32 və AVR32. Geri çəkilmiş cihaz dəstəyi aşağıdakı AVR hissələri üçün artıq mövcud deyil: AVR48DA16, AVR28DA16 və AVR32DA16.
3.7. Versiya 2.31
Heç biri.
3.8. Versiya 2.30
Verilənlərin inisializasiyasının qarşısını almaq üçün yeni seçim Yeni -mno-data-init driver seçimi məlumatların işə salınmasının və bss bölmələrinin təmizlənməsinin qarşısını alır. O, do surəti məlumatlarının çıxışını sıxışdırmaqla işləyir və montajda aydın bss simvollarını yerinə yetirir files, bu da öz növbəsində bağlayıcı tərəfindən həmin rutinlərin daxil edilməsinin qarşısını alacaq.
Təkmilləşdirilmiş optimallaşdırmalar Bir sıra optimallaşdırma təkmilləşdirmələri, o cümlədən, lazımsız qaytarma təlimatlarının çıxarılması, skip-if-bit təlimatından sonra bəzi atlamaların aradan qaldırılması və təkmilləşdirilmiş prosedur abstraksiya və bu prosesi təkrarlamaq imkanı da daxil olmaqla. İndi bu optimallaşdırmaların bəzilərini idarə etmək üçün əlavə seçimlər mövcuddur, xüsusən bir simvola nisbətən yerinə yetirilən statik obyektlərə giriş imkanı verən -f bölməsi-lövbərlər; -mpa-iterations=n, bu, prosedur abstraksiya iterasiyalarının sayının defolt 2-dən dəyişdirilməsinə imkan verir; və daha aqressiv prosedur abstraksiyanı yerinə yetirən -mpa-callcost-shortcall, bağlayıcının uzun zəngləri rahatlaşdıra bilməsi ümidi ilə. Əsas fərziyyələr həyata keçirilməzsə, bu sonuncu seçim kodun ölçüsünü artıra bilər.
Yeni cihaz dəstəyi aşağıdakı AVR hissələri üçün mövcuddur: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DA28, AVR128DA32, AVR128, AVR48, AVR128, AVR64, AVR5272, AVR5790, AVR5790, AVR5791 Geri çəkilmiş Cihaz Dəstəyi artıq aşağıdakı AVR hissələri üçün əlçatan deyil: ATA5795, ATA6285, ATA6286N, ATA6612, ATA6613, ATA6614, ATA6616, ATA6617C, ATA664251C, ATAXNUMXQ, ATAXNUMXQ, ATAXNUMXC və ATAXNUMX.
3.9. Versiya 2.29 (Funksional Təhlükəsizlik Buraxılışı)
Başlıq file kompilyator quraşdırılmış qurğular üçün Kompilyatorun MISRA kimi dil spesifikasiyasına uyğun ola bilməsini təmin etmək üçün, başlıq filetərəfindən avtomatik daxil olan , yeniləndi. Bu başlıq bütün daxili funksiyalar üçün prototipləri ehtiva edir, məsələn, builtin_avr_nop ( ) və daxili avr delay_cycles () . Bəzi daxili qurğular MISRA ilə uyğun olmaya bilər; Bunlar tərtibçinin əmr xəttinə defineXCSTRICT_MISRA əlavə etməklə buraxıla bilər. Daxili qurğular və onların bəyannamələri sabit enli növlərdən istifadə etmək üçün yenilənib.
3.10. Versiya 2.20
Yeni cihaz dəstəyi Dəstəyi aşağıdakı AVR hissələri üçün mövcuddur: ATTINY1624, ATTINY1626 və ATTINY1627.
Daha yaxşı ən yaxşı uyğunluq bölgüsü Kompilyatordakı ən yaxşı uyğunluq ayırıcısı (BFA) təkmilləşdirilmişdir ki, bölmələr daha yaxşı optimallaşdırmaya imkan verən ardıcıllıqla ayrılsın. BFA indi adlandırılmış ünvan boşluqlarını dəstəkləyir və məlumatların işə salınmasını daha yaxşı idarə edir.
Təkmilləşdirilmiş prosedur abstraksiya Prosedur abstraksiyasının optimallaşdırılması indi daha çox kod ardıcıllığında həyata keçirilir. Bu optimallaşdırmanın kod ölçüsünü artıra biləcəyi əvvəlki vəziyyətlər optimallaşdırma kodunu əlaqələndiricinin zibil toplama prosesindən xəbərdar etməklə həll edilmişdir.
AVR Assembler-in olmaması AVR Assembler artıq bu paylamaya daxil deyil.
3.11. Versiya 2.19 (Funksional Təhlükəsizlik Buraxılışı)
Heç biri.
3.12. Versiya 2.10
Kodun əhatə dairəsi Bu buraxılışa layihənin mənbə kodunun icra olunma dərəcəsinin təhlilini asanlaşdıran kod əhatəsi funksiyası daxildir. Onu aktivləşdirmək üçün -mcodecov=ram seçimindən istifadə edin. Proqramı aparatınızda icra etdikdən sonra kod əhatə dairəsi məlumatı cihazda toplanacaq və bu kod əhatə dairəsi plagini vasitəsilə MPLAB X IDE-yə ötürülə və göstərilə bilər. Bu plugin haqqında məlumat əldə etmək üçün IDE sənədlərinə baxın. #pragma nocodecov sonrakı funksiyaları əhatə təhlilindən çıxarmaq üçün istifadə edilə bilər. İdeal olaraq praqmanın əvvəlinə əlavə edilməlidir file bütünlüklə istisna etmək file əhatə təhlilindən. Alternativ olaraq, _attribute_ ( (nocodecov) ) xüsusi funksiyanı əhatə təhlilindən çıxarmaq üçün istifadə edilə bilər.
Cihaz təsviri files Yeni cihaz file avr_chipinfo adlanır. html kompilyator paylamasının docs kataloqunda yerləşir. Bu file kompilyator tərəfindən dəstəklənən bütün cihazları sadalayır. Cihazın adının üzərinə klikləyin və o, həmin cihaz üçün icazə verilən bütün konfiqurasiya bit parametrlərini/dəyər ağrılarını göstərən səhifəni açacaq.amples. Prosedur abstraksiya
Kompilyatora montaj kodunun ümumi bloklarını həmin blokun çıxarılmış nüsxəsinə edilən zənglərlə əvəz edən prosedur abstraksiya optimallaşdırmaları əlavə edilmişdir. Bunlar 2, 3 və ya s səviyyəli optimallaşdırmaları seçərkən kompilyator tərəfindən avtomatik olaraq işə salınan ayrıca proqram tərəfindən həyata keçirilir. Bu optimallaşdırmalar kodun ölçüsünü azaldır, lakin icra sürətini və kodun sazlanmasını azalda bilər. Prosedur abstraksiya -mno-pa seçimindən istifadə edərək daha yüksək optimallaşdırma səviyyələrində söndürülə bilər və ya -mpa istifadə edərək aşağı optimallaşdırma səviyyələrində (lisenziyanızdan asılı olaraq) aktivləşdirilə bilər. O, obyekt üçün deaktiv edilə bilər file -mno-pa-on- istifadə edərəkfile=filead və ya -mno-pa-on-function=function istifadə edərək funksiya üçün qeyri-aktiv. Mənbə kodunuzda, funksiyanın tərifi ilə atribut ( (nopa) ) istifadə etməklə və ya atribut ( (nopa, noinline) ) ilə genişlənən və beləliklə funksiyanın daxil edilməsinin qarşısını alan nopa istifadə etməklə funksiya üçün prosedur abstraksiya deaktiv edilə bilər. və daxili kodun abstraksiyası var.
Praqmada kilid bit dəstəyi #pragma konfiqurasiyası indi AVR kilid bitlərini, eləcə də digər konfiqurasiya bitlərini təyin etmək üçün istifadə edilə bilər. avr_chipinfo-nu yoxlayın. html file (yuxarıda qeyd olunub) bu ​​praqma ilə istifadə etmək üçün parametr/dəyər cütləri üçün. Yeni cihaz dəstəyi dəstəyi aşağıdakı hissələr üçün mövcuddur: AVR28DAl28, AVR64DAl28, AVR32DA 128 və AVR48DA 128.
3.13. Versiya 2.05
Pulunuz üçün daha çox bit Bu kompilyatorun və lisenziya menecerinin macOS versiyası indi 64 bitlik proqramdır. Bu, kompilyatorun macOS-un son versiyalarında xəbərdarlıq etmədən quraşdıracağını və işləyəcəyini təmin edəcək.
Proqram yaddaşındakı Const obyektləri. İndi kompilyator RAM-da yerləşdirməkdənsə, proqramın Flash yaddaşında const-ə uyğun olan obyektləri yerləşdirə bilər. Kompilyator elə dəyişdirilib ki, cons t-kvalifikasiyalı qlobal verilənlər proqramın fləş yaddaşında saxlanılsın və bu məlumatlara müvafiq proqram-yaddaş təlimatlarından istifadə etməklə birbaşa və dolayı yolla daxil olmaq mümkün olsun. Bu yeni funksiya defolt olaraq aktivdir, lakin -mno-const-data-in-progmem seçimindən istifadə etməklə söndürülə bilər. avrxmega3 və avrtiny arxitekturaları üçün bu funksiya tələb olunmur və həmişə qeyri-aktivdir, çünki proqram yaddaşı bu cihazlar üçün məlumat ünvan məkanına uyğunlaşdırılır.
Bu kompilyatorun pulsuz Standart Lisenziyasız (Pulsuz) versiyaları indi 2-ci səviyyə də daxil olmaqla optimallaşdırmağa imkan verir. Bu, Standart lisenziyadan istifadə etməklə əvvəllər mümkün olana oxşar, eyni olmasa da, çıxışa imkan verəcək.
Xoş gəldiniz AVRASM2 2 bitlik qurğular üçün AVRASM8 assembler indi XC8 kompilyator quraşdırıcısına daxil edilib. Bu assembler XC8 kompilyatoru tərəfindən istifadə edilmir, lakin əl ilə yazılmış montaj mənbəyinə əsaslanan layihələr üçün əlçatandır.
Yeni cihaz dəstəyi dəstəyi aşağıdakı hissələr üçün mövcuddur: ATMEGA1608, ATMEGA1609, ATMEGA808 və ATMEGA809.

3.14. Versiya 2.00
Üst səviyyəli Sürücü Xc8-cc adlanan yeni sürücü indi əvvəlki avr-gcc sürücüsü və xc8 drayverinin üstündə oturur və o, hədəf cihazın seçiminə əsasən müvafiq kompilyatoru çağıra bilər. Bu sürücü ya tərcümə olunan və ya icra edilən tərtibçiyə ötürülən GCC tipli seçimləri qəbul edir. Bu sürücü, oxşar semantikaya malik oxşar seçimlər dəstini istənilən AVR və ya PIC hədəfi ilə istifadə etməyə imkan verir və buna görə də tərtibçiyə müraciət etmək üçün tövsiyə olunan üsuldur. Lazım gələrsə, köhnə avr-gcc drayveri əvvəlki tərtibçi versiyalarında qəbul etdiyi köhnə üslub seçimlərindən istifadə etməklə birbaşa çağırıla bilər.
Ümumi C İnterfeysi Bu kompilyator indi MPLAB Common C Interface ilə uyğunlaşa bilər və mənbə kodunu bütün MPLAB XC kompilyatorları arasında daha asan köçürməyə imkan verir. -mext=cci seçimi bir çox dil genişləndirmələri üçün alternativ sintaksisi aktivləşdirərək bu funksiyanı tələb edir.
Yeni kitabxanaçı sürücüsü Yeni kitabxanaçı sürücüsü əvvəlki PIC kitabxanaçısının və AVR avr-ar kitabxanaçısının üstündə yerləşdirilib. Bu sürücü icra olunan kitabxanaçıya tərcümə edilən və ya ona ötürülən GCC-arxivçi üslublu seçimləri qəbul edir. Yeni sürücü hər hansı PIC və ya AVR kitabxanasını yaratmaq və ya manipulyasiya etmək üçün oxşar semantikaya malik oxşar seçimlər dəstindən istifadə etməyə imkan verir. file və beləliklə, kitabxanaçıya müraciət etməyin tövsiyə olunan yoludur. Əgər köhnə layihələr üçün tələb olunarsa, əvvəlki kitabxanaçı əvvəlki tərtibçi versiyalarında qəbul etdiyi köhnə üslub seçimlərindən istifadə etməklə birbaşa çağırıla bilər.

Miqrasiya Problemləri

Aşağıdakılar indi kompilyator tərəfindən fərqli şəkildə idarə olunan xüsusiyyətlərdir. Kodu bu kompilyator versiyasına köçürsəniz, bu dəyişikliklər mənbə kodunuza dəyişiklik tələb edə bilər. Alt başlıqlardakı versiya nömrəsi sonrakı dəyişiklikləri dəstəkləmək üçün ilk tərtibçi versiyasını göstərir.

4.1. Versiya 2.41
Qeyri-dəqiq fma funksiyaları silindi (XC8-2913) C99 standart kitabxanası fma 0 -ailə funksiyaları ( ) tək yuvarlaqlaşdırmaya sonsuz dəqiqliklə vurma-əlavə hesablamadı, əksinə hər əməliyyatda yuvarlaqlaşdırma xətaları topladı. Bu funksiyalar təchiz edilmiş kitabxanadan silinib.
4.2. Versiya 2.40
Heç biri.
4.3. Versiya 2.39 (Funksional Təhlükəsizlik Buraxılışı)
Heç biri.
4.4. Versiya 2.36 Yoxdur.
4.5. Versiya 2.35
Sətir-bazaların idarə edilməsi (XC8-2420) Digər XC kompilyatorları ilə uyğunluğu təmin etmək üçün, strtol () və s. kimi XC8 string-to funksiyaları, əgər göstərilən baza 36-dan böyükdürsə, artıq giriş sətrini çevirməyə cəhd etməyəcək. və bunun əvəzinə errno-nu EINVAL-a təyin edəcək. C standartı bu əsas dəyəri keçdikdə funksiyaların davranışını müəyyən etmir.
Uyğun olmayan sürət optimallaşdırmaları Səviyyə 3 optimallaşdırmaları (-03) seçərkən prosedur abstraksiya optimallaşdırmaları işə salınırdı. Bu optimallaşdırmalar kod sürəti hesabına kodun ölçüsünü azaldır, buna görə də yerinə yetirilməməli idi. Bu optimallaşdırma səviyyəsindən istifadə edən layihələr bu buraxılışla qurulduqda kod ölçüsündə və icra sürətində fərqlər görə bilər.
Kitabxananın funksionallığı Bir çox standart C kitabxana funksiyaları üçün kod indi Microchip-in Vahid Standart Kitabxanasından gəlir ki, bu da keçmiş avr-libc kitabxanası ilə müqayisədə bəzi hallarda fərqli davranış nümayiş etdirə bilər. məsələnample, formatlanmış faylı aktiv etmək üçün 1printf flt kitabxanasına (-1printf_flt seçimi) keçid etmək artıq lazım deyil I0 float format spesifikatorları üçün dəstək. Ağıllı I0 Microchip Vahid Standart Kitabxanasının xüsusiyyətləri bu seçimi lazımsız edir. Bundan əlavə, flaşda const sətirləri üzərində işləyən sətir və yaddaş funksiyaları (məsələn, strcpy_P ( ) və s.) üçün _P şəkilçili rutinlərin istifadəsi artıq lazım deyil. Standart C rutinləri (məsələn, strcpy ) proqram yaddaşında const-data-data-in-veri funksiyası aktiv olduqda belə məlumatlarla düzgün işləyəcək.

4.6. Versiya 2.32
Heç biri.
4.7. Versiya 2.31
Heç biri.
4.8. Versiya 2.30
Heç biri.
4.1. Versiya 2.29 (Funksional Təhlükəsizlik Buraxılışı)
Heç biri.
4.2. Versiya 2.20
DFP tərtibatı dəyişdirildi Kompilyator indi DFP-lər (Cihaz Ailəsi Paketləri) tərəfindən istifadə edilən fərqli tərtibatı qəbul edir. Bu o deməkdir ki, köhnə DFP bu buraxılışla işləməyəcək və köhnə tərtibçilər ən son DFP-lərdən istifadə edə bilməyəcək.
4.3. Versiya 2.19 (Funksional Təhlükəsizlik Buraxılışı)
Heç biri.
4.4. Versiya 2.10
Heç biri
4.5. Versiya 2.05
Proqram yaddaşındakı Const obyektləri Qeyd edək ki, defolt olaraq const-a uyğun olan obyektlər proqram yaddaşında yerləşdiriləcək və onlara daxil olacaqlar (rəngi təsvir edildiyi kimi). Bu, layihənizin ölçüsünə və icra sürətinə təsir edəcək, lakin RAM istifadəsini azaltmalıdır. Bu funksiya, tələb olunarsa, -mnoconst-data-in-progmem seçimindən istifadə edərək deaktiv edilə bilər.
4.6. Versiya 2.00
Konfiqurasiya qoruyucuları Cihaz konfiqurasiya qoruyucuları indi qoruyucu vəziyyətini təyin etmək üçün konfiqurasiya praqmasından istifadə edərək proqramlaşdırıla bilər, ardınca isə qoruyucu vəziyyətini təyin etmək üçün dəyər cütləri təyin oluna bilər, məs.
#pragma konfiqurasiyası WDTON = SET
#pragma konfiqurasiyası BODLEVEL = BODLEVEL_4V3
Mütləq obyektlər və funksiyalar Obyektlər və funksiyalar indi CCI (ünvan) təyinedicisindən istifadə etməklə yaddaşda müəyyən ünvanda yerləşdirilə bilər, məsələnample:
#daxildir
int foobar_at(0x800100);
char __at(0x250) getID(int ofset) {…}
Bu spesifikatorun arqumenti olmalıdır ilk baytın və ya təlimatın yerləşdiriləcəyi ünvanı təmsil edən sabit. RAM ünvanları 0x800000 ofsetindən istifadə etməklə göstərilir. Bu funksiyadan istifadə etmək üçün CCI-ni aktiv edin.
Yeni kəsmə funksiyası sintaksisi Kompilyator indi C funksiyalarının kəsilmə işləyiciləri olduğunu göstərmək üçün CCI _interrupt (num) təyinedicisini qəbul edir. Müəyyənedici kəsmə nömrəsini alır, məsələnample:
#daxildir
etibarsız __interrupt(SPI_STC_vect_num) spi_Isr(boş) { … }

Sabit Problemlər

Aşağıdakılar tərtibçiyə edilmiş düzəlişlərdir. Bunlar yaradılan koddakı səhvləri düzəldə və ya tərtibçinin işini istifadəçi təlimatı tərəfindən nəzərdə tutulan və ya təyin edilənə dəyişdirə bilər. Alt başlıqlardakı versiya nömrəsi sonrakı məsələlər üçün düzəlişləri ehtiva edən ilk tərtibçi versiyasını göstərir. Başlıqdakı mötərizəli etiket(lər) izləmə məlumat bazasında həmin məsələnin identifikasiyasıdır. Dəstəklə əlaqə saxlamağınız lazım olduqda bunlar faydalı ola bilər.
Nəzərə alın ki, bəzi cihaza aid məsələlər cihazla əlaqəli Cihaz Ailəsi Paketində (DFP) düzəldilir. DFP-lərə edilən dəyişikliklər haqqında məlumat və ən son paketləri endirmək üçün MPLAB Paket Menecerinə baxın.

5.1. Versiya 2.41
Ventura (XC8-3088) Dongles-da dongle problemləri kompilyatoru lisenziyalaşdırmaq üçün istifadə olunan məlumatlar macOS Ventura hostlarında düzgün oxunmamış ola bilər ki, bu da lisenziyalaşdırma uğursuzluqları ilə nəticələnir. XCLM lisenziya menecerinə edilən dəyişikliklər bu problemi düzəldir.
Yaddaşın yerləşdirilməsinin səhv göstəricisi (XC8-2925) Standart kitabxana yaddaşının idarə edilməsi funksiyalarından (malloc () və başqaları) istifadə edərək yaddaşın SIZE_MAX baytını (və ya buna yaxın dəyər) ayırmaq cəhdi səhv baş verdi. Sadə dinamik yaddaş ayırma tətbiqindən istifadə edərkən tələb olunan bloka əlavə olaraq əlavə baytların lazım olduğunu nəzərə almırdı. İndi NULL göstəricisi qaytarılacaq və belə hallarda səhv olaraq ENOMEM-ə təyin ediləcək.
Qeyri-dəqiq fma funksiyaları silindi (XC8-2913) C99 standart kitabxana fma ( ) -ailə funksiyaları ( ) tək yuvarlaqlaşdırmaya sonsuz dəqiqliklə vurma-əlavə hesablamadı, əksinə hər əməliyyatda yuvarlaqlaşdırma xətaları topladı. Bu funksiyalar təchiz edilmiş kitabxanadan silinib.
Sətir çevrilməsinin səhv idarə edilməsi (XC8-2921, XC8-2652) strtod Cr tərəfindən çevrilmə üçün "mövzu ardıcıllığı" eksponensial formatda üzən nöqtəli nömrə kimi görünəndən ibarət olanda və e/E simvolundan sonra gözlənilməz simvol olduqda, endptr təmin edildikdə, ona ünvan təyin olundu ki, e/E simvolundan sonrakı simvola işarə etmişdi, halbuki o, e/E simvolunun özünə işarə etməli idi, çünki bu çevrilməmişdi. məsələnample, strtod (“100exx”, &ep) 100.00 qaytarmalı və sətrin “exx” hissəsinə işarə etmək üçün ep-i təyin etməlidir, halbuki funksiya düzgün dəyəri qaytarırdı, lakin sətrin “xx” hissəsinə işarə etmək üçün ep-i təyin edirdi. .

5.2. Versiya 2.40
Çox rahat (XCS-2876) -mrelax opsiyasından istifadə edərkən kompilyator bəzi bölmələri bir yerdə bölüşdürmürdü və nəticədə daha az optimal kod ölçüləri yaranır. Bu, yeni MUSL kitabxanalarından istifadə edən kodla və ya zəif simvollarla baş vermiş ola bilər.
Xəritəçəkmə funksiyası xəbərdarlıqda göstərildiyi kimi söndürülməyib (XC8-2875) const-data-in-config-mappedprogmem xüsusiyyəti aktivləşdirilən const-data-in-progmem funksiyasından asılıdır. Əgər const-data-inconfig-mapped-progmem xüsusiyyəti seçimdən istifadə etməklə açıq şəkildə aktiv edilibsə və const-data-inprogmem funksiyası deaktiv edilibsə, const-data-in-con fig-in olduğunu bildirən xəbərdarlıq mesajına baxmayaraq keçid addımı uğursuz olub mapped-progmem funksiyası avtomatik olaraq deaktiv edilmişdi, bu tamamilə düzgün deyildi. Const-data-in-config-mapped-progmem funksiyası indi bu vəziyyətdə tamamilə deaktiv edilib.
NVMCTRL (XC8-2848) düzgün daxil olmaq üçün DFP dəyişir AVR64EA cihazları tərəfindən istifadə edilən işə salınma kodu NVMCTRL reyestrinin Konfiqurasiya Dəyişikliyi Qoruma (CCP) altında olduğunu və I0 SFR-ni const-data-in-configmapped-progmem tərəfindən istifadə edilən səhifəyə təyin edə bilmədiyini nəzərə almırdı. kompilyator xüsusiyyəti. AVR-Ex_DFP 2.2.55 versiyasında edilən dəyişikliklər icra zamanı başlanğıc kodunun bu reyestrə düzgün yazılmasına imkan verəcək.
Qarşısının alınması üçün DFP dəyişiklikləri flash Xəritəçəkmə (XC8-2847) AVR128DA28/32/48/64 Silicon Errata (D580000882)-də bildirilmiş flaş-xəritələmə cihazı funksiyası ilə bağlı problemin həlli həyata keçirilib. const-data-in-config-mapped-progmem kompilyator funksiyası defolt olaraq təsirə məruz qalan cihazlar üçün tətbiq edilməyəcək və bu dəyişiklik AVR-Dx_DFP 2.2.160 versiyasında görünəcək.
sinhf və ya coshf ilə qurmaq xətası (XC8-2834) sinhf () və ya coshf () kitabxana funksiyalarından istifadə etmək cəhdləri müəyyən edilməmiş istinadı təsvir edən keçid xətası ilə nəticələndi. İstinad edilən çatışmayan funksiya indi kompilyator paylanmasına daxil edilmişdir.
Nopa ilə səhvlər qurun (XC,8-2833) nopa atributundan asm ( ) istifadə edərək assembler adı təyin edilmiş funksiya ilə istifadə assemblerdən xəta mesajlarına səbəb oldu. Bu birləşmə mümkün deyil.
Göstərici arqumentləri ilə variadik funksiya uğursuzluğu (XC8-2755, XC8-2731) Dəyişən sayda arqumentləri olan funksiyalar, const-data-in-progmem funksiyası işə salındıqda, 24-bit (memx tipli) göstəricilərin dəyişən arqumentlər siyahısında ötürülməsini gözləyir. Məlumat yaddaşına göstərici olan arqumentlər 16 bitlik obyektlər kimi ötürülürdü və nəticədə oxunarkən kod uğursuzluğuna səbəb olurdu. Constdata-in-progmem funksiyası aktiv olduqda, bütün 16-bit göstərici arqumentləri indi 24-bit göstəricilərə çevrilir.
strtoxxx kitabxana funksiyaları uğursuz (XC8-2620) const-data-in-progmem funksiyası aktiv edildikdə, strtoxxx kitabxana funksiyalarında endptr parametri proqram yaddaşında olmayan mənbə sətir arqumentləri üçün düzgün yenilənmədi.
Yanlış yayımlar üçün xəbərdarlıqlar (XC8-2612) Const-in-progmem funksiyası işə salınarsa və sətir literalının ünvanı açıq şəkildə verilənlərin ünvan sahəsinə ötürülürsə (const kvalifikatorunu buraxır), məsələn, kompilyator indi xəta verəcəkdir.ample, (uint 8_t *) “Salam Dünya!”. Const data göstəricisi açıq şəkildə məlumat ünvan məkanına ötürüldükdə ünvan etibarsız ola bilərsə, xəbərdarlıq problemidir.
Başlanmamış const obyektlərinin yerləşdirilməsi (XC8-2408) Başlanmamış const və const uçucu obyektləri proqram yaddaşının hamısını və ya bir hissəsini verilənlərin ünvan məkanına uyğunlaşdıran cihazlarda proqram yaddaşına yerləşdirilmirdi. Bu qurğular üçün belə obyektlər indi proqram yaddaşına yerləşdirilir və onların işini digər qurğularla uyğunlaşdırır.

5.3. Versiya 2.39 (Funksional Təhlükəsizlik Buraxılışı)
Heç biri.
5.4. Versiya 2.36
Gecikmə zamanı xəta (XC8-2774) Defolt Sərbəst rejimin optimallaşdırılmasındakı kiçik dəyişikliklər operand ifadələrinin ləngimə daxili funksiyalarına daimi qatlanmasının qarşısını aldı, nəticədə onlara qeyri-sabit kimi baxıldı və xətaya səbəb oldu: qurulmuş avr delay_cycles kompilyasiya vaxtı tam sabitini gözləyir.
5.5. Versiya 2.35
_at istifadə edərək bitişik ayırma (XC8-2653) Eyni adlı bölmədə çoxlu obyektlərin yerlərinin ardıcıl olaraq ayrılması və _at ( ) funksiyasından istifadə düzgün işləmədi. məsələnample:
const char arr1[] __attribute__((bölmə(".mysec"))) __at (0x500) = {0xAB, 0xCD};
const char arr2[] __attribute__((bölmə(".mysec"))) = {0xEF, 0xFE};
arr2-ni arr1-dən dərhal sonra yerləşdirməli idi.
Bölmə başlanğıc ünvanlarının müəyyən edilməsi (XC8-2650) The -W1, -section-start seçimi səssizcə bölmələri təyin edilmiş başlanğıc ünvanına yerləşdirə bilmirdi. Bu problem hər hansı xüsusi adlandırılmış bölmələr üçün düzəldildi; lakin heç bir standart bölmələr üçün işləməyəcək, məsələn. mətn və ya. bss, -W1, -T seçimindən istifadə etməklə yerləşdirilməlidir.
İstirahət zamanı bağlayıcı qəzaya uğradı (XC8-2647) -mrelax optimallaşdırması işə salındıqda və mövcud yaddaşa uyğun olmayan kod və ya məlumat bölmələri olduqda, əlaqələndirici qəzaya uğradı. İndi, belə bir vəziyyətdə, əvəzinə səhv mesajları verilir.

Heç bir geri çəkilmə yoxdur (XC8-2646) The -nofallback seçimi düzgün həyata keçirilmədi və sənədləşdirilmədi. Bu, indi kompilyator lisenziyasız olarsa, kompilyatorun daha aşağı optimallaşdırma parametrinə qayıtmayacağını və əvəzində xəta verəcəyini təmin etmək üçün seçilə bilər.

Uyğun olmayan sürət optimallaşdırmaları (X03-2637) Səviyyə 3 optimallaşdırmaları (-03) seçərkən prosedur abstraksiya optimallaşdırmaları işə salınırdı. Bu optimallaşdırmalar kod sürəti hesabına kodun ölçüsünü azaldır, buna görə də yerinə yetirilməməli idi.
Səhv EEPROM giriş (XC8-2629) The -mconst-data-in-progmem seçimi aktiv olduqda (bu, standart vəziyyətdir) Xmega cihazlarında eeprom_read_block rejimi düzgün işləmədi, nəticədə EEPROM yaddaşı düzgün oxunmadı.
Yanlış yaddaş ayrılması (XC8-2593, XC8-2651) -Ttext və ya -Tdata linker seçimi (məsample -vl driver variantından istifadə edərək keçdi) göstərilib, müvafiq mətn/məlumat regionunun mənşəyi yeniləndi; bununla belə, son ünvan müvafiq olaraq tənzimlənməmişdir ki, bu da bölgənin hədəf cihazın yaddaş diapazonunu aşmasına səbəb ola bilərdi.
Həddindən artıq atributlu funksiya ilə qəza (XC8-2580) Funksiya birdən çox kəsmə, siqnal və ya nmi atributlarından, məsələn, atributdan ( ( ( siqnal , kəsilmək ) ) istifadə edilərək elan edildikdə kompilyator qəzaya uğradı.
Yanlış ATtiny kəsmə kodu (XC8-2465) ATtiny cihazları üçün qurulduqda və optimallaşdırmalar söndürüldükdə (-00), kəsmə funksiyaları operandın diapazondan kənar assembler mesajlarını işə salmış ola bilər.
Seçimlər keçmir (XC8-2452) Seçimdən çoxlu, vergüllə ayrılmış bağlayıcı seçimləri ilə istifadə edərkən, əlaqələndirici seçimlərin hamısı əlaqələndiriciyə ötürülmürdü.
Proqram yaddaşını dolayı oxumaq xətası (X03-2450) Bəzi hallarda, tərtibçi göstəricidən proqram yaddaşına iki bayt dəyəri oxuyarkən daxili xəta (tanınmayan insn) yaratdı.
5.6. Versiya 2.32
İkinci giriş kitabxana uğursuz oldu (XC8-2381) Xc8-ar-ın Windows versiyasını işə salmaq. Mövcud kitabxana arxivinə ikinci dəfə daxil olmaq üçün .exe kitabxanasının arxivçisi səhv mesajının adını dəyişmək mümkün olmadığı üçün uğursuz ola bilər.
5.7. Versiya 2.31
İzah olunmayan kompilyator uğursuzluqlar (XC8-2367) Sistemin müvəqqəti kataloqu "." nöqtəsi olan yola təyin edilmiş Windows platformalarında işləyərkən. simvolu varsa, kompilyator icra edə bilməyib.
5.8. Versiya 2.30
Qlobal etiketlər təsvir edildikdən sonra səhv yerləşdirildi (XC8-2299) Prosessual abstraksiya ilə faktiki olaraq çıxarılan montaj ardıcıllığı daxilində qlobal etiketləri yerləşdirən əl ilə yazılmış montaj kodu düzgün yerləşdirməmiş ola bilər.
Rahatlaşdırıcı qəza (XC8-2287) -mrelax opsiyasından istifadə quyruq atlama relaksasiya optimallaşdırmaları bölmənin sonunda olmayan ret təlimatını silməyə cəhd edərkən bağlayıcının qəzaya uğramasına səbəb ola bilər.
Etiketləri dəyər kimi optimallaşdırarkən qəza (XC8-2282) “Dəyərlər kimi etiketlər” GNU C dil genişləndirməsindən istifadə edən kod, müəyyən edilmiş VMA diapazonunun düzəldilməsi xətası ilə prosedur abstraksiya optimallaşdırmalarının sıradan çıxmasına səbəb ola bilər.
O qədər də sabit deyil (XC8-2271) st rstr ( ) və digər funksiyalar üçün prototiplər -mconst-data-inprogmem funksiyası söndürüldükdə artıq qaytarılmış sətir göstəricilərində qeyri-standart const kvalifikatorunu təyin etməyin. Qeyd edək ki, avrxmega3 və avrtiny cihazları ilə bu funksiya həmişəlik aktivləşdirilir.
İtirilmiş başlatıcılar (XC8-2269) Daha çox olduqda Tərcümə vahidindəki bir dəyişən bölməyə yerləşdirildi (_bölmə və ya _atribut_ ( (bölmə) ) istifadə edərək) və ilk belə dəyişən sıfırla işə salındı ​​və ya başlatıcısı, yerləşdirilən eyni tərcümə vahidindəki digər dəyişənlər üçün başlatıcıları yox idi eyni hissədə itdi.
5.1. Versiya 2.29 (Funksional Təhlükəsizlik Buraxılışı)
Heç biri.
5.2. Versiya 2.20
Uzun əmrlərlə xəta (XC8-1983) AVR hədəfindən istifadə edərkən kompilyator a ilə dayanmış ola bilər file xəta tapılmadı, əgər əmr satırı çox böyükdürsə və xüsusi simvollardan ibarətdirsə, məsələn, dırnaqlar, əks xətlər və s.
Təyin edilməmiş rodata bölməsi (XC8-1920) AVR əlaqələndiricisi avrxmega3 və avrtiny arxitekturaları üçün qurarkən xüsusi rodata bölmələri üçün yaddaş təyin edə bilmədi, potensial olaraq yaddaş üst-üstə düşmə xətaları yarada bilər.
5.3. Versiya 2.19 (Funksional Təhlükəsizlik Buraxılışı)
Heç biri.
5.4. Versiya 2.10
Köçürmə uğursuzluqları (XC8-1891) Ən yaxşı uyğun ayırıcı, bağlayıcı rahatlamadan sonra bölmələr arasında yaddaş "deşikləri" buraxırdı. Yaddaşın parçalanmasından başqa, bu, kompüterlə əlaqəli atlamalar və ya zənglərin əhatə dairəsindən kənara çıxması ilə bağlı linkerin yerdəyişməsi uğursuzluqlarının olma ehtimalını artırdı.
İstirahət yolu ilə dəyişdirilməyən təlimatlar (XC8-1889) Hədəfləri rahatlaşdıqda əlçatan olan atlama və ya çağırış təlimatları üçün bağlayıcı relaksasiya baş vermədi.
İtkin funksionallıq (XC8E-388) Bir neçə tərif clock_div_t və clock_prescale set () kimi ATmega324PB, ATmega328PB, ATtiny441 və ATtiny841 daxil olmaqla cihazlar üçün müəyyən edilməmişdir.
Çatışmayan makrolar _XC8_MODE_, _XC8_VERS ION, _XC və _XC8 preprosessor makroları kompilyator tərəfindən avtomatik müəyyən edilməmişdir. Bunlar artıq mövcuddur.
5.5. Versiya 2.05
Daxili kompilyator xətası (XC8-1822) Windows altında qurarkən kodu optimallaşdırarkən daxili kompilyator xətası yarana bilər.
RAM daşması aşkarlanmadı (XC8-1800, XC8-1796) Mövcud RAM-i aşan proqramlar bəzi hallarda tərtibçi tərəfindən aşkar edilmədi və nəticədə icra zamanı kodu uğursuz oldu.
Buraxılmış flash yaddaş (XC8-1792) avrxmega3 və avrtiny cihazları üçün flash yaddaşın hissələri MPLAB X tərəfindən proqramlaşdırılmamış buraxılmış ola bilər. IDE.
Əsas icra edilməməsi (XC8-1788) Proqramda qlobal dəyişənlərin müəyyən edilmədiyi bəzi hallarda işə başlama kodu çıxmadı və əsas ( ) funksiyasına heç vaxt çatmadı.
Yanlış yaddaş məlumatı (XC8-1787) Avrxmega3 və avrtiny cihazları üçün avr ölçülü proqram, proqram yaddaşı əvəzinə yalnız oxunan məlumatların RAM istehlak etdiyini bildirirdi.
Yanlış proqram yaddaşı oxunması (XC8-1783) Proqram yaddaşı verilənlərin ünvan məkanına uyğunlaşdırılmış və PROGMEM makro/atributundan istifadə edərək obyektləri müəyyən edən cihazlar üçün tərtib edilmiş layihələr bu obyektləri yanlış ünvandan oxumuş ola bilər.
Atributlarla daxili xəta (XC8-1773) Göstərici obyektlərini ilə müəyyən etsəniz, daxili xəta baş verdi
_at () və ya atribut () işarələri göstərici adı ilə istinad edilən tip arasında, məsələnample, char *
_at (0x800150) cp; Belə bir kodla qarşılaşdıqda xəbərdarlıq indi verilir.
Əsas icra edilməməsi (XC8-1780, XC8-1767, XC8-1754) EEPROM dəyişənlərinin istifadəsi və ya konfiqurasiya praqmasından istifadə edərək qoruyucuların müəyyən edilməsi, əsas ( ) 'a çatmazdan əvvəl səhv məlumatların işə salınmasına və/yaxud proqramın icra müddətinin başlanğıc kodunda kilidlənməsinə səbəb ola bilər.
Kiçik cihazlarda qoruyucu xətası (XC8-1778, XC8-1742) Attiny4/5/9/10/20/40 cihazlarının başlıqlarında yanlış qoruyucu uzunluğu göstərilib files qoruyucuları müəyyən edən kod yaratmağa cəhd edərkən əlaqələndirici xətalara səbəb olur.
Seqmentasiya nasazlıq (XC8-1777) Fasiləli seqmentasiya xətası düzəldildi.
Assembler qəzası (XC8-1761) Kompilyator Ubuntu 18 altında işləyərkən avr-as assembler qəzaya uğramış ola bilər.
Obyektlər silinməyib (XC8-1752) Başlanmamış statik saxlama müddəti obyektləri iş vaxtının başlanğıc kodu ilə silinməmiş ola bilər.
Ziddiyyətli cihaz spesifikasiyası nəzərə alınmadı (XC8-1749) Birdən çox cihaz spesifikasiyası variantları istifadə edildikdə və müxtəlif cihazları göstərdikdə kompilyator xəta yaratmırdı.
Yığın tərəfindən yaddaşın pozulması (XC8-1748) The _heap_start simvolu səhv quruldu, nəticədə yığın tərəfindən adi dəyişənlərin zədələnməsi ehtimalı yarandı.
Bağlayıcının yerdəyişməsi xətası (XC8-1739) Kod tam olaraq 4k bayt uzaqlıqda olan bir rjmp və ya rccalğı ehtiva edəndə əlaqələndiricinin yerini dəyişdirmə xətası buraxılmış ola bilər.
5.6. Versiya 2.00
Heç biri.

Məlum məsələlər

Aşağıdakılar kompilyatorun işində məhdudiyyətlərdir. Bunlar ümumi kodlaşdırma məhdudiyyətləri və ya istifadəçi təlimatında olan məlumatdan kənara çıxma ola bilər. Başlıqdakı mötərizəli etiket(lər) izləmə verilənlər bazasında həmin məsələnin identifikasiyasıdır. Dəstəklə əlaqə saxlamaq lazımdırsa, bu faydalı ola bilər. Etiketləri olmayan elementlər modi operandi təsvir edən və həmişəlik qüvvədə qalma ehtimalı olan məhdudiyyətlərdir.
6.1. MPLAB X IDE İnteqrasiya
MPLAB IDE inteqrasiya Əgər Kompilyator MPLAB IDE-dən istifadə ediləcəksə, siz Kompilyatoru quraşdırmazdan əvvəl MPLAB IDE-ni quraşdırmalısınız.
6.2. Kodun yaradılması
Segfault with section-anchors option (XC8-3045) Dəyişən arqument siyahıları ilə funksiyaları müəyyən edən və -fsection-anchors seçimindən istifadə edən proqram daxili tərtibçi xətasına səbəb ola bilər: Seqmentasiya xətası.
Sazlama məlumatı sinxronlaşdırılmayıb (XC8-2948) Bağlayıcı relaksasiya optimallaşdırmaları təlimatları daraldıqda (məsampTəlimatlara zəng edin), bölmədə birdən çox daraltma əməliyyatı baş verdikdə, ünvan xəritələri üçün mənbə xətti sinxronizasiyada qalmaya bilər.
Aşağıdakı keçmişdəample, nisbi zənglər üçün rahat başa ki, foo iki zənglər var.
PA yaddaşının ayrılması xətası (XC8-2881) Prosedur abstraksiya optimallaşdırıcılarından istifadə edərkən, proqramın mövcud boş yerə uyğun olmasına baxmayaraq, kodun ölçüsü cihazdakı mövcud proqram yaddaşının miqdarına yaxın olduqda, əlaqələndirici yaddaşın ayrılması səhvləri barədə məlumat verə bilər.
O qədər də ağıllı deyil Smart-I0 (XC8-2872) Tərtibçinin smart-io funksiyası snprint f funksiyası üçün etibarlı, lakin optimal olmayan kod yaradacaq, əgər const-data-in-progmem funksiyası deaktiv edilibsə və ya cihazda bütün flaş məlumat yaddaşına uyğunlaşdırılıbsa.
Daha az ağıllı Smart-I0 (XC8-2869) Kompilyatorun smart-io funksiyası -flto və -fno-builtin seçimləri istifadə edildikdə etibarlı, lakin suboptimal kod yaradacaq.
Suboptimal yalnız oxumaq üçün məlumat yerləşdirilməsi (XC8-2849) Bağlayıcı hazırda nə APPCODE və APPDATA yaddaş bölmələri, nə də yaddaş xəritəsindəki [No-Read-While-Write bölmələri haqqında məlumatlı deyil. Nəticə etibarı ilə, bağlayıcının yaddaşın uyğun olmayan sahəsinə yalnız oxuna bilən məlumatları ayıra bilmə ehtimalı azdır. Const-data-in-progmem funksiyası işə salındıqda, xüsusən də const-data-in-config-mapped-progmem funksiyası da aktivləşdirildikdə, səhv yerləşdirilmiş məlumat şansı artır. Lazım gələrsə, bu funksiyalar deaktiv edilə bilər.
Obyekt file emal sifarişi (XC8-2863) Obyektlərin sırası files əlaqələndirici tərəfindən işlənəcək, prosedur abstraksiya optimallaşdırmalarının (-mpa seçimi) istifadəsinə görə fərqlənə bilər. Bu, yalnız bir neçə modulda zəif funksiyaları müəyyən edən koda təsir edəcək.
Mütləq əlaqə xətası (XC8-2777) RAM-ın başlanğıcında bir ünvanda obyekt mütləqləşdirildikdə və işə salınmamış obyektlər də müəyyən edildikdə, əlaqələndirici xəta baş verə bilər.
Qısa oyanma identifikatorları (XC8-2775) ATA5700/2 cihazları üçün PHIDO/1 registrləri 16 bit deyil, yalnız 32 bit genişlik kimi müəyyən edilir.
Simvol zəng edərkən bağlayıcı qəzası (XC8-2758) Mənbə kodu -cc., –de f sym əlaqələndirici seçimindən istifadə edərək müəyyən edilmiş simvolu çağırdıqda -mrelax sürücü seçimi istifadə edilərsə, əlaqələndirici qəzaya uğraya bilər.
Yanlış başlatma (XC8-2679) var bəzi qlobal/statik bayt ölçülü obyektlər üçün ilkin dəyərlərin məlumat yaddaşında yerləşdiyi yer və dəyişənlərə icra zamanı daxil olacağı yer arasındakı uyğunsuzluqdur.
Səhv dolayı funksiya çağırışları (XC8-2628) Bəzi hallarda strukturun bir hissəsi kimi saxlanılan funksiya göstəricisi vasitəsilə edilən funksiya çağırışları uğursuz ola bilər.
strtof hexadecimal floats üçün sıfır qaytarır (XC8-2626) strtof et al və scanf ( ) et al kitabxana funksiyaları həmişə eksponenti sıfıra təyin etməyən onaltılıq üzən nöqtəli ədədi çevirəcək. məsələnample:
strtof (“Oxl”, &endptr);
I deyil, 0 dəyərini qaytaracaq.
Qeyri-dəqiq yığın məsləhətçisi mesajlaşması (XC8-2542, XC8-2541) Bəzi hallarda, istifadə olunan rekursiya və ya qeyri-müəyyən steklə bağlı yığın məsləhətçisi xəbərdarlığı (ola bilsin ki, alloca() istifadə etməklə) yayılmır.
Dublikat kəsmə kodu ilə uğursuzluq (XC8-2421) Birdən çox kəsmə funksiyası eyni gövdəyə malik olduqda, kompilyator bir kəsmə funksiyasının digərini çağırması üçün çıxışa malik ola bilər. Bu, bütün çağırışlarla bağlanmış registrlərin lazımsız şəkildə saxlanması ilə nəticələnəcək və kəsilmələr hətta cari kəsmə işləyicisinin epiloqu işə düşməmişdən əvvəl aktivləşdiriləcək və bu, kodun uğursuzluğuna səbəb ola bilər.
Yanlış DFP yolu ilə səhv çıxış (XC8-2376) Kompilyator yanlış DFP yolu və "spec" ilə çağırılırsa file seçilmiş cihaz üçün mövcuddur, kompilyator itkin cihaz ailə paketi haqqında məlumat vermir və bunun əvəzinə "spec" seçir file, bu sonra etibarsız çıxışa səbəb ola bilər. 'xüsusiyyət' files paylanmış DFP-lərlə güncəl olmaya bilər və yalnız daxili tərtibçi testi ilə istifadə üçün nəzərdə tutulmuşdur.
Yaddaş üst-üstə düşməsi aşkarlanmadı (XC8-1966) Kompilyator ünvanda (_at ( ) vasitəsilə) və bölmə ( ) təyinedicisindən istifadə edən və eyni ünvanla əlaqəli olan digər obyektlərdə mütləqləşdirilmiş obyektlərin yaddaş üst-üstə düşməsini aşkar etmir.
Kitabxana funksiyaları və _memx ilə uğursuzluq (XC8-1763) Memx ünvan məkanında arqumenti olan libgcc float funksiyaları uğursuz ola bilər. Qeyd edək ki, kitabxana proqramları bəzi C operatorlarından çağırılır, məsələnample, aşağıdakı kod təsirlənir:
regFloatVar > memxFloatVar-ı qaytarın;
Məhdud libgcc tətbiqi (AVRTC-731) ATTiny4/5/9/10/20/40 məhsulları üçün libgcc-də standart C / Math kitabxana tətbiqi çox məhduddur və ya mövcud deyil.
Proqram yaddaş məhdudiyyətləri (AVRTC-732) 128 kb-dan yuxarı proqram yaddaş şəkilləri alətlər silsiləsi tərəfindən dəstəklənir; lakin, -mre lax seçimindən istifadə edildikdə, tələb olunan funksiya stublarını yaratmaq əvəzinə, rahatlama olmadan və faydalı səhv mesajı olmadan əlaqələndirici abortların məlum halları var.
Ad məkanı məhdudiyyətləri (AVRTC-733) Adlandırılmış ünvan boşluqları, istifadəçi təlimatının Xüsusi Tip Kvalifikatorları bölməsində qeyd olunan məhdudiyyətlərə uyğun olaraq alətlər silsiləsi tərəfindən dəstəklənir.
Saat qurşağı The kitabxana funksiyaları GMT-ni qəbul edir və yerli saat qurşaqlarını dəstəkləmir, beləliklə, yerli vaxt ( ) gmtime ( ) ilə eyni vaxtı qaytaracaq, məsələnample.

file:///Applications/microchip/xc8/v2.41/docs/Readme_XC8_for_AVR.htm

Sənədlər / Resurslar

MICROCHIP MPLAB XC8 C Kompilyator İnkişaf Proqramı [pdf] İstifadəçi Təlimatı
MPLAB XC8 C, MPLAB XC8 C Kompilyator İnkişaf Proqramı, Kompilyator İnkişaf Proqramı, İnkişaf Proqramı, Proqram təminatı

İstinadlar

Şərh buraxın

E-poçt ünvanınız dərc olunmayacaq. Tələb olunan sahələr qeyd olunub *