MICROCHIP MPLAB XC8 C Kompilyator Proqramı 

MICROCHIP MPLAB XC8 C Kompilyator 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.

İçindəkilər gizlətmək

Bitdiview

Giriş

Microchip MPLAB® XC8 C kompilyatorunun bu buraxılışı bir sıra yeni funksiyalar, səhv düzəlişləri və yeni cihaz dəstəyini ehtiva edir.

Qurulma tarixi

Bu tərtibçi versiyasının rəsmi qurulma tarixi 3 iyul 2022-ci ildir.

Əvvəlki versiya

Əvvəlki MPLAB XC8 C kompilyator versiyası 2.39 yanvar 27-ci ildə qurulmuş funksional təhlükəsizlik kompilyatoru olan 2022 idi. Əvvəlki standart kompilyator 2.36 yanvar 27-ci ildə qurulmuş 2022 versiyası idi.

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.

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. GNU GPL-i burada oxuya bilərsiniz file adlı quraşdırma kataloqunuzun alt kataloqunda yerləşir. GPL-in əsasını təşkil edən prinsiplərin ümumi müzakirəsini burada tapa bilərsiniz. Başlıq üçün təmin edilən dəstək kodu files, əlaqələndirici skriptlər və iş vaxtı kitabxanaları 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.

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 imzalanmışdır. mac OShave üçün ikili proqramlar kodla imzalanmış və notarial qaydada təsdiq edilmişdir.

Şəbəkə lisenziya serveri işlədirsinizsə, lisenziya serverini yerləşdirmək üçün yalnız tərtibçilər tərəfindən dəstəklənən əməliyyat sistemləri olan kompüterlər istifadə oluna bilər. xclm 2.0 versiyasından etibarən şəbəkə lisenziya serveri Microsoft Windows Server platformasında quraşdırıla bilər, lakin lisenziya serverinin əməliyyat sisteminin server versiyasında işləməsinə ehtiyac yoxdur.

Dəstəklənən qurğular

Bu kompilyator buraxılış zamanı məlum olan bütün 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 doc kataloqunda) baxın. Bunlar files həmçinin hər bir cihaz üçün konfiqurasiya bit parametrlərini sadalayır.

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.

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. .exe (Windows), .run (Linux) və ya proqram (macOS) kompilyator quraşdırıcı proqramını işə salın, məsələn, XC8-1.00.11403-windows.exe və ekrandakı göstərişlərə əməl edin.
Standart 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.

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. (sağ klikləyin file, Xüsusiyyətlər, Təhlükəsizlik sekmesini seçin, istifadəçi seçin, redaktə edin.)
  • Müvəqqəti qovluğun icazələrini “Full Control!

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 açacaq a file həmin qovluğu göstərən və həmin qovluğun yolunu müəyyən etməyə imkan verəcək tədqiqatçı dialoqu.

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.

Kompilyator Sənədləri
Ə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.

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:

  • MUSL müəllif hüququ bildirişi
  • MPLAB XC C Kompilyatorlarının quraşdırılması və lisenziyalaşdırılması (revision M)
  • Daxili Mühəndislər üçün MPLAB XC8 İstifadəçi Təlimatı – AVR MCU (revision A)
  • AVR MCU üçün MPLAB XC8 C Kompilyator İstifadəçi Təlimatı (revision F)
  • Microchip Vahid Standart Kitabxana İstinad Bələdçisi (revision B)

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 qurğular və MPLAB XC8 C Kompilyatoru ilə yenicə başlayırsınızsa, MPLAB® XC8 İstifadəçi Təlimatında Daxili Mühəndislər üçün – AVR® MCU-larda (DS50003108) MPLAB X IDE-də layihələrin qurulması və kodun yazılması haqqında məlumat var. ilk MPLAB XC8 C layihəniz üçün. Bu təlimat indi kompilyatorla paylanır.

Hamate İstifadəçi Bələdçisi bu buraxılışda docs kataloquna daxil edilmişdir. Bu təlimat Hamate-ni 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.

Versiya 2.40

Yeni cihaz dəstəyi İndi aşağıdakı AVR hissələri üçün dəstək mövcuddur: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64, AVR28EA64 və AVR32EA.
Təkmilləşdirilmiş prosedur abstraksiya Prosessual abstraksiya (PA) optimallaşdırma aləti təkmilləşdirilmişdir ki, funksiya çağırışı təlimatı (zəngi geri çağırma)) ehtiva edən kod təsvir oluna bilsin. Bu, yalnız o halda baş verəcək ki, yığın arqumentləri ötürmək və ya funksiyadan qaytarılan dəyər əldə etmək üçün istifadə edilmir. 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 rahib-pa-kontur-zənglər seçimindən istifadə edərək deaktiv edilə bilər və ya prosedur abstraksiya obyekt üçün tamamilə söndürülə bilər. file və ya -monk-pa-on- istifadə edərək funksiyasıfile və müvafiq olaraq -mo.-pa-on-funksiyası və ya nipa atributundan ( nipa spesifikatoru) funksiyalarla selektiv şəkildə istifadə etməklə

Kod əhatə dairəsi makrosu Etibarlı mcodecov seçimi göstərilibsə, kompilyator indi __CODECOV makronu müəyyən edir.

Yaddaş rezervasiyası seçimi İndi xc8-cc sürücüsü AVR hədəfləri üçün qurarkən -mreserve=space@start: end variantını 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 kodu və ya obyektləri bu sahədə yerləşdirməsinin 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, IO funksiyası arqumentlərini idarə etmək üçün mümkün olduqda daha qısa məlumat növlərindən istifadə etmək , 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.

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.

Versiya 2.36

Heç biri.

Versiya 2.35

Yeni cihaz dəstəyi Aşağıdakı AVR hissələri üçün dəstək mövcuddur: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 və AVR64DD32.

Təkmilləşdirilmiş kontekst keçidi 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 kontekstlərin qaşınma 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 flash xəritələmə AVR DA və AVR DB ailəsindəki bəzi qurğularda 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-proem seçimi, əlaqələndiricinin bütün çatışmazlıqlara uyğun 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. , haradan daha səmərəli istifadə ediləcək.

Microchip Vahid Standart Kitabxanalar Bütün MPLAB XC kompilyatorları indi MPLAB XC8-in bu buraxılışı ilə mövcud olan Mikroçip Vahid Standart Kitabxanasını paylaşacaqlar. MPLAB® XC8 C Kompilyator İstifadəçi Təlimatı/və ya AVR® MCU 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. (Kitabxanaya baxın):'. funksionallıq...)

Ağıllı IO Yeni vahid kitabxanaların bir hissəsi olaraq, çap və skan ailələrində IO 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.
Smart IO yardım seçimi Ağıllı IO funksiyalarına (məsələn, printf () və ya scanf () ) edilən zəngləri təhlil edərkən kompilyator həmişə format sətirindən müəyyən edə və ya arqumentlərdən zəng tərəfindən tələb olunan çevirmə spesifikatorlarını çıxara bilməz. Əvvəllər kompilyator həmişə heç bir fərziyyə irəli sürməz və tam funksional IO funksiyalarını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 ağıllı IO 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 IO rejimlərinin əlaqələndirilməsinin qarşısını alır. (Ətraflı məlumat üçün smart-io-format Seçiminə baxın.)

Xüsusi bölmələrin yerləşdirilməsi Əvvəllər -Wl, –section-start seçimi yalnız əlaqələndirici skript eyni adlı çıxış bölməsini təyin etdikdə 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 -Wl, -Tsection=əlavə seçimindən istifadə edin.

Versiya 2.32

Stack Rəhbərliyi PRO kompilyator lisenziyası ilə mövcud olan kompilyatorun yığın bələdçiliyi funksiyası 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.

Yeni cihaz dəstəyi Dəstəyi aşağıdakı AVR hissələri üçün mövcuddur: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB, AVR28DB64.

Geri çəkilmiş cihaz dəstəyi Dəstəyi aşağıdakı AVR hissələri üçün artıq mövcud deyil: AVR16DA28, AVR16DA32 və AVR16DA48.

Versiya 2.31

Heç biri.

Versiya 2.30

Verilənlərin işə salınmasının qarşısını almaq üçün yeni seçim Yeni -mno-data-ini t 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. Bu montajda do_ copy_ data və d o_ clear_ bss simvollarının çıxışını sıxışdırmaqla işləyir. 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 silinməsi, 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ı daxil edilmişdir.

İ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ə ankerləri; -mpai derations=n, bu, prosedur abstraksiya iterasiyalarının sayını defoltdan 2-dən dəyişməyə imkan verir; və, -mpa- zəng dəyəri- shortcall, daha aqressiv prosedur abstraksiyasını yerinə yetirir, ümidlə bağlayıcı uzun zəngləri rahatlaşdıra bilər. Ə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 dəstək mövcuddur: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 və AVR128DB.

Geri çəkilmiş cihaz dəstəyi Aşağıdakı AVR hissələri üçün dəstək artıq mövcud deyil: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617, və ATA664251.

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, _buil tin _avrnop () və _buil tin_ avr delay_cycles () . Bəzi daxili qurğular MISRA ilə uyğun olmaya bilər; Bunlar _Xe_ STRICT_ MISRA təyinini kompilyatorun əmr xəttinə ə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.

Versiya 2.20

Yeni cihaz dəstəyi Aşağıdakı AVR hissələri üçün dəstək mövcuddur: ATTINY1624, ATTINY1626 və ATTINY1627.

Daha yaxşı uyğunluq bölgüsü Kompilyatorda ə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 abstraksiya optimallaşdırmaları 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.

Versiya 2.19 (Funksional Təhlükəsizlik Buraxılışı)

Heç biri.

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 mcodecov 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, atribut ( (mcodecov) ) əhatə analizindən konkret funksiyanı istisna etmək üçü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ına klikləyin və o, həmin cihaz üçün icazə verilən bütün konfiqurasiya bit parametrlərini/dəyər cütlərini 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ə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 funksiya= funksiyasında -mno-pa istifadə edərək funksiya üçün qeyri-aktiv edilir.
Mənbə kodunuzda, funksiyanın tərifi ilə _attribute_ ( (nopa)) istifadə edərək və ya atribut ((nopa, noinline)) ilə genişlənən və beləliklə funksiyanın daxil edilməsinin qarşısını alan _nopa istifadə edərək funksiya üçün prosedur abstraksiyasını söndürə bilərsiniz. və daxili kodun abstraksiyası var.
Praqmada bit dəstəyini kilidləyin #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 çip məlumatını 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 Aşağıdakı hissələr üçün dəstək mövcuddur: AVR28DA128, AVR64DA128, AVR32DA128 və AVR48DA128.

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, const-a uyğun 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.
Standart pulsuz Bu kompilyatorun lisenziyasız (Pulsuz) versiyaları indi 2-ci səviyyə daxil olmaqla optimallaşdırmalara imkan verir. Bu, Standart lisenziyadan istifadə etməklə əvvəllər mümkün olana oxşar, eyni olmasa da, çıxışa icazə verəcək.
Xoş gəldiniz AVRASM2 2 bitlik qurğular üçün AVRASM8 assembler indi XC8 kompilyator quraşdırıcısına daxil edilmişdir. Bu assembler XC8 kompilyatoru tərəfindən istifadə edilmir, lakin əlyazma montaj mənbəyinə əsaslanan layihələr üçün əlçatandır.
Yeni cihaz dəstəyi Dəstək aşağıdakı hissələr üçün mövcuddur: ATMEGA1608, ATMEGA1609, ATMEGA808 və ATMEGA809.

Versiya 2.00

Yüksək səviyyəli sürücü Xc8-cc adlanan yeni sürücü indi əvvəlki avr-gcc sürücüsü və xc8 sürücüsünün üstündə oturur və o, hədəf cihazın seçiminə əsaslanaraq müvafiq tərtibçiyə zəng edə 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 interfeysi 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ü 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 semantika ilə 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.

Versiya 2.40

Heç biri.

Versiya 2.39 (Funksional Təhlükəsizlik Buraxılışı)

Heç biri.

Versiya 2.36

Heç biri.

Versiya 2.35

Simli bazaların idarə edilməsi (XCS-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 daxiletmə 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, float-format təyinediciləri üçün formatlaşdırılmış IO dəstəyini aktivləşdirmək üçün lprintf_flt kitabxanasına (-print _flt seçimi) keçid etmək artıq lazım deyil. Microchip Vahid Standart Kitabxanasının ağıllı IO 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 proqramları (məsələn, strcpy ()) proqram yaddaşında const-data-data funksiyası aktiv olduqda belə məlumatlarla düzgün işləyəcək.

Versiya 2.32

Heç biri.

Versiya 2.31

Heç biri.

Versiya 2.30

Heç biri.

Versiya 2.29 (Funksional Təhlükəsizlik Buraxılışı)

Heç biri.

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.

Versiya 2.19 (Funksional Təhlükəsizlik Buraxılışı)

Heç biri.

Versiya 2.10

Heç biri

Versiya 2.05

Proqram yaddaşındakı Const obyektləri Qeyd edək ki, standart olaraq, const-kvalifikasiyalı obyektlər proqram yaddaşına yerləşdiriləcək və onlara daxil olacaqlar (burada təsvir olunduğu 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-da ta-in-progmem seçimindən istifadə edərək deaktiv edilə bilər.

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.
#pragma konfiqurasiyası WDT0N = SET
#pragma konfiqurasiyası B0DLEVEL = B0DLEVEL_4V3
Mütləq obyektlər və funksiyalar Obyektlər və funksiyalar indi CCI _at (ünvan) spesifikatorundan istifadə edərək yaddaşda xüsusi ünvanda yerləşdirilə bilər, məsələnample: #include int foobar at(Ox800100); char at(Ox250) get ID(int ofset) { … } Bu spesifikatorun arqumenti ilk baytın və ya təlimatın yerləşdiriləcəyi ünvanı təmsil edən sabit olmalıdır. 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 kəsmə (num) təyinedicisini qəbul edir. Müəyyənedici kəsmə nömrəsini alır, məsələnample: #include boş kəsmə (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ı problemlə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ə verilənlər 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.

Qeyd edək ki, bəzi cihazla bağlı problemlər cihazla əlaqəli Cihaz Ailə 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.

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 (XCS-2875) Konfiqurasiyada xərc-data-mappedprogmem xüsusiyyəti işə salınan xərc-data-data-proem funksiyasından asılıdır. Əgər cost-data-ipconfig-mapped-proem xüsusiyyəti seçimdən istifadə edərək açıq şəkildə aktiv edilibsə və xərc-data-inprogmem funksiyası deaktiv edilibsə, eksiler data-in-config-mapped- olduğunu bildirən xəbərdarlıq mesajına baxmayaraq, keçid addımı uğursuz olub. proem funksiyası avtomatik olaraq deaktiv edilmişdi, bu tamamilə düzgün deyildi. const-data-in-config-mapped-proem xüsusiyyəti indi bu vəziyyətdə tam olaraq deaktiv edilib.
DFP NVMCTRL (XCS-2848) düzgün daxil olmaq üçün dəyişir AVR64EA cihazları tərəfindən istifadə edilən işə salınma kodu NVMCTRL registrinin Konfiqurasiya Dəyişiklikləri Qoruma (CCP) altında olduğunu və IO SFR-ni const-data-in configmapped-proem tərtibçisi tərəfindən istifadə edilən səhifəyə təyin edə bilmədiyini nəzərə almırdı. xüsusiyyət. 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.
Flaş xəritələşdirilməsinin qarşısını almaq üçün DFP dəyişiklikləri (XCS-2847) AVR128DA28/32/48/64 Silicon Errata-da (DS80000882) bildirilmiş flaş xəritəçəkmə cihazı funksiyası ilə bağlı problemin həlli yolu həyata keçirilib. const-data-in-config-mapped-proem kompilyator funksiyası defolt olaraq təsirə məruz qalan cihazlar üçün tətbiq edilməyəcək və bu dəyişiklik AVR-Ex_DFP 2.2.160 versiyasında görünəcək.
sinhf və ya coshf ilə qurmaq xətası (XCS-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 (XCS-2833) Nopa atributunun assembler adı () olaraq təyin edilmiş funksiya ilə istifadəsi 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 (XCS-2755, XCS-2731) Dəyişən sayda arqumentləri olan funksiyalar 24 bitlik (_memo tipli) göstəricilərin proemdə xərc-data-in-proem funksiyası aktivləşdirildikdə 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. Eksiler data-in-proem 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 oldu (XCS-2620) const-data-in-proem funksiyası aktiv olduqda, strtoxxx kitabxana funksiyalarında enter 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 (XCS-2612) Proemdə xərc 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ək.ample, (uint8 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 (XCS-2408) Başlanmamış const və const v olatile 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.

Versiya 2.39 (Funksional Təhlükəsizlik Buraxılışı)

Heç biri.

Versiya 2.36

Gecikmə zamanı xəta (XCS-2774) Defolt Sərbəst rejimin optimallaşdırılmasında kiçik dəyişikliklər operand ifadələrinin gecikmə daxili funksiyalarına daimi qatlanmasının qarşısını aldı, nəticədə onlara təmassız kimi baxıldı və xətanı tetikledi: _buil tin avr delay_ cycles waits ac ompile tam zaman sabiti.

Versiya 2.35

_at istifadə edərək bitişik ayırma (XCS-2653) Eyni adlı bölmədə çoxlu obyektlərin yerlərinin ardıcıl olaraq ayrılması və at () istifadə edərək düzgün işləmədi. məsələnample: constchararrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[ ] at tri butte ((bölmə(“.my s eke”))) = {Oxen, Ox FE }; arildən dərhal sonra arr2 yerləşdirməli idi.
Bölmə başlanğıc ünvanlarının təyin edilməsi (XCS-2650) -Wal, -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, -Wl, -T seçimindən istifadə etməklə yerləşdirilməlidir.
İstirahət zamanı bağlayıcı çökür (XCS-2647) -relax 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.
Səhv EEPROM girişi (XCS-2629) -monist-data-in-proem seçimi aktiv olduqda (bu, standart vəziyyətdir) Meqa cihazlarında leproma _read_ bloklama proqramı düzgün işləmədi, nəticədə EEPROM yaddaşı düzgün oxunmadı.
Yanlış yaddaş ayrılması (XCS-2593, XCS-2651) -Text və ya -Tata linker seçimi olduqda (məsample -Wl driver variantından istifadə edərək keçdi) müəyyən edilir, 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.
Yanlış ATtiny kəsmə kodu (XCS-2465) Tatin 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 (XCS-2452) Çoxlu, vergüllə ayrılmış bağlayıcı seçimləri ilə -Wl seçimini 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ı (XCS-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ı.

Versiya 2.32

Kitabxanaya ikinci giriş uğursuz oldu (XCS-2381) Xc8-ar-ın Windows versiyasını işə salmaq. exe kitabxana arxivçisinin mövcud kitabxana arxivinə ikinci dəfə daxil olması səhv mesajının adının dəyişdirilməsinin mümkün olmaması səbəbindən uğursuz ola bilər.

Versiya 2.31

Açıqlanmayan kompilyator xətaları (XCS-2367) Sistemin müvəqqəti kataloqu nöqtə daxil olan yola təyin edilmiş Windows platformalarında işləyərkən'.' simvolu varsa, kompilyator icra edə bilməyib.

Versiya 2.30

Qlobal etiketlər təsvir edildikdən sonra səhv yerləşdirildi (XCS-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 (XCS-2287) -merlad 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 çökməsinə səbəb ola bilər.
Etiketləri dəyər kimi optimallaşdırarkən qəza (XCS-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 (XCS-2271) Başlar () və digər funksiyalar üçün prototiplər -monist-data inprogmem funksiyası söndürüldükdə, geri qaytarılan sətir göstəricilərində artıq qeyri-standart qiymət kvalifikatorunu təyin etməyin. Qeyd edək ki, avrxmega3 və avertin cihazları ilə bu funksiya həmişəlik aktivləşdirilir.
İtirilmiş başlatıcılar (XCS-2269) Tərcümə vahidində birdən çox dəyişən bölməyə yerləşdirildikdə (bölmə və ya atributdan ((bölmə))) istifadə edilməklə və ilk belə dəyişən sıfırla işə salınıb və ya başlatıcısı yoxdur, eyni tərcümə vahidindəki digər dəyişənlər üçün başlatıcılar eyni bölməyə yerləşdirilənlər itdi.

Versiya 2.29 (Funksional Təhlükəsizlik Buraxılışı)

Heç biri.

Versiya 2.20

Uzun əmrlərlə xəta (XCS-1983) AVR hədəfindən istifadə edərkən tərtibçi 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 (XCS-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 və potensial olaraq yaddaş üst-üstə düşmə xətaları yarada bilər.

Versiya 2.19 (Funksional Təhlükəsizlik Buraxılışı)

Heç biri.

Versiya 2.10

Köçürmə xətaları (XCS-1891) Ən yaxşı uyğun ayırıcı, bağlayıcı rahatlamadan sonra bölmələr arasında yaddaş "deşikləri" buraxmaq idi. 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ə əlaqədar 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 (XCS-1889) Hədəfləri rahatlaşdıqda əlçatan olan sıçrayış və ya çağırış təlimatları üçün bağlayıcı relaksasiya baş vermədi.
İtkin funksionallıq (XCSE-388) Bir neçə tərifdən 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 Preprosessor makroları_ xcs _MODE_, _xcs VERSION, _xc və xcs kompilyator tərəfindən avtomatik müəyyən edilməmişdir. Bunlar artıq mövcuddur.

Versiya 2.05

Daxili kompilyator xətası (XCS-1822) Windows altında qurarkən kodu optimallaşdırarkən daxili tərtibçi xətası yarana bilər.
RAM daşması aşkarlanmadı (XCS-1800, XCS-1796) Mövcud RAM-ı aşan proqramlar bəzi hallarda kompilyator tərəfindən aşkar edilmədi, nəticədə icra zamanı kodu uğursuz oldu.
Buraxılmış flash yaddaş (XCS-1792) avrxmega3 və avrtiny cihazları üçün flaş yaddaşın hissələri MPLAB X IDE tərəfindən proqramlaşdırılmamış buraxılmış ola bilər.
Əsas icra edilməməsi (XCS-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ı (XCS-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ı (XCS-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 (XCS-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 ( 0x80015 0) cp; Belə bir kodla qarşılaşdıqda xəbərdarlıq indi verilir.
Əsas icra edilməməsi (XCS-1780, XCS-1767, XCS-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 () -ə ç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ı (XCS-1778, XCS-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 xətası (XCS-1777) Fasiləli seqmentasiya xətası düzəldildi.
Assembler qəzası (XCS-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 (XCS-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ı (XCS-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ı (XCS-1748) 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ı (XCS-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.

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 ola bilər və ya
istifadəçi təlimatında olan məlumatdan sapmalar. 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 rejim əməliyyatlarını təsvir edən və həmişəlik qüvvədə qalma ehtimalı olan məhdudiyyətlərdir.

MPLAB X IDE inteqrasiyası

MPLAB IDE inteqrasiyası Əgər Kompilyator MPLAB IDE-dən istifadə olunacaqsa, siz Compiler-i quraşdırmadan əvvəl MPLAB IDE-ni quraşdırmalısınız.

Kodun yaradılması

PA yaddaşının ayrılması xətası (XCS-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-IO (XCS-2872) Tərtibatçının smart-io funksiyası sprint funksiyası üçün etibarlı, lakin sub-optimal kod yaradacaq, əgər proemdə sahil məlumatı funksiyası deaktiv edilibsə və ya cihazın bütün flaşı məlumat yaddaşına yerləşdirilibsə.
Daha az ağıllı Smart-IO (XCS-2869) Kompilyatorun smart-io xüsusiyyəti -floe və -fno-buil tin seçimləri istifadə edildikdə etibarlı, lakin optimal olmayan kod yaradacaq.
Suboptimal yalnız oxumaq üçün məlumat yerləşdirilməsi (XCS-2849) Bağlayıcı hazırda nə APPCODE və APPDATA yaddaş bölmələrindən, nə də yaddaş xəritəsindəki [No-]Read-While-Write bölmələrindən xəbərdar 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. Sahil-data-in-praqma xüsusiyyəti aktivləşdirildikdə, xüsusən də konfiqurasiya-mapped-proem-də sahil məlumatı funksiyası da aktiv olduqda, yanlış yerləşdirilmiş məlumatların şansı artır. Lazım gələrsə, bu funksiyalar deaktiv edilə bilər.
Obyekt file emal sifarişi (XCS-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ı (XCS-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 oyanış identifikatorları (XCS-2775) ATA5700/2 cihazları üçün PHID0/1 registrləri 16 bit deyil, yalnız 32 bit eni kimi müəyyən edilir.
Simvol zəng edərkən bağlayıcı qəzası (XCS-2758) Mənbə kodu -Wl, –defsym əlaqələndirici seçimindən istifadə edərək müəyyən edilmiş simvolu çağırdıqda -merlad sürücü seçimi istifadə edilərsə, əlaqələndirici qəzaya uğraya bilər.
Yanlış başlatma (XCS-2679) 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ında uyğunsuzluq var.
yanlış başladılan boş təyinatlar (XCS-2652) Göstərilən () ilə çevrilmə üçün mövzu sətirinin eksponensial formatda üzən nöqtəli ədəd kimi göründüyü və e simvolundan sonra gözlənilməz simvol olduğu hallarda, boş ünvan verilirsə, ondan sonrakı simvolu göstərəcək. e-nin özü deyil. məsələnample: qeyd olunub("hooey", boş); x simvoluna boş işarə ilə nəticələnəcək.
Səhv dolayı funksiya zəngləri (XCS-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 (XCS-2626) Kitabxana funksiyaları strtof () et al və scanf () et al, həmişə eksponent təyin etməyən onaltılıq üzən nöqtəli ədədi çevirəcək.
sıfır. məsələnample: stator("Bayquş", &boş); 0 deyil, 1 dəyərini qaytaracaq.
Qeyri-dəqiq yığın məsləhətçisi mesajlaşması (XCS-2542, XCS-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 (XCS-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.
Proqram yaddaşında olmayan Const obyektləri (XCS-2408) avrxmega3 və avertins layihələri üçün qeyri-deallaşdırılan const obyektləri məlumat yaddaşına yerləşdirilir, baxmayaraq ki, xəbərdarlıq onların proqram yaddaşına yerləşdirildiyini göstərir. Bu, proqram yaddaşı məlumat yaddaşı sahəsinə uyğunlaşdırılmayan cihazlara və ya işə salınmış hər hansı obyektə təsir etməyəcək.
Yanlış DFP yolu ilə səhv çıxış (XCS-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ı (XCS-1966) Kompilyator ünvanda mütləqləşdirilmiş obyektlərin (() vasitəsilə) və bölmə () təyinedicisindən istifadə edən digər obyektlərin yaddaş üst-üstə düşməsini aşkar etmir və eyni ünvanla əlaqələndirilir.
Kitabxana funksiyaları və _meme ilə uğursuzluq (XCS-1763) _memo ünvan məkanında arqumenti olan limbik float adlanan 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 limbik tətbiq (AVRTC-731) ATTiny4/5/9/10/20/40 məhsulları üçün limbikdə standart C / Riyaziyyat kitabxanasının 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, -relax seçimi istifadə edildikdə, lazımi 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şaqları The kitabxana funksiyaları GMT-i qəbul edir və yerli saat qurşaqlarını dəstəkləmir, beləliklə, yerli vaxt () məsələn, gummite () ilə eyni vaxta qayıdacaq.ample.

MÜŞTƏRİ DƏSTƏK

file:///Proqramlar/microehip/xc8/v 2 .40/docs/Read me_X C 8_ VR üçün. htm

Sənədlər / Resurslar

MICROCHIP MPLAB XC8 C Kompilyator Proqramı [pdf] İstifadəçi Təlimatı
MPLAB XC8 C, MPLAB XC8 C Kompilyator Proqramı, Kompilyator 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 *