MICROCHIP MPLAB XC8 C Derleyici Yazılımı
BU BELGE, MİKROÇİP AVR CİHAZLARINI HEDEFLERKEN MPLAB XC8 C DERLEYİCİSİ İLE İLGİLİ ÖNEMLİ BİLGİLER İÇERMEKTEDİR.
BU YAZILIMI ÇALIŞTIRMADAN ÖNCE LÜTFEN OKUYUN. 8-BİT PIC CİHAZLARI İÇİN DERLEYİCİ KULLANIYORSANIZ PIC BELGESİ İÇİN MPLAB XC8 C DERLEYİCİ SÜRÜM NOTLARINA BAKIN.
Üzerindeview
giriiş
Microchip MPLAB® XC8 C derleyicisinin bu sürümü birçok yeni özellik, hata düzeltmeleri ve yeni cihaz desteği içerir.
Yapım Tarihi
Bu derleyici sürümünün resmi yapım tarihi 3 Temmuz 2022'dir.
Önceki versiyon
Önceki MPLAB XC8 C derleyici sürümü, 2.39 Ocak 27'de oluşturulmuş işlevsel bir güvenlik derleyicisi olan 2022'du. Önceki standart derleyici, 2.36 Ocak 27'de oluşturulmuş 2022 sürümüydü.
Fonksiyonel Güvenlik Kılavuzu
MPLAB XC derleyicileri için bir İşlevsel Güvenlik Kılavuzu, işlevsel bir güvenlik lisansı satın aldığınızda belge paketinde mevcuttur.
Bileşen Lisansları ve Sürümleri
AVR MCU araçları için MPLAB® XC8 C Derleyicisi, GNU Genel Kamu Lisansı (GPL) altında yazılmış ve dağıtılmıştır; bu, kaynak kodunun serbestçe dağıtıldığı ve kamuya açık olduğu anlamına gelir. GNU GPL kapsamındaki araçların kaynak kodu, Microchip'in sitesinden ayrı olarak indirilebilir. webalan. GNU GPL'yi şu adreste okuyabilirsiniz: file adlı kurulum dizininizin alt dizininde bulunur. GPL'nin temelini oluşturan ilkelere ilişkin genel bir tartışmayı burada bulabilirsiniz. Başlık için sağlanan destek kodu files, bağlayıcı komut dosyaları ve çalışma zamanı kitaplıkları özel koddur ve GPL kapsamına girmez.
Bu derleyici GCC sürüm 5.4.0 ve binutils sürüm 2.26'nın bir uygulamasıdır ve avr-libc sürüm 2.0.0'ı kullanır.
Sistem Gereksinimleri
MPLAB XC8 C derleyicisi ve kullandığı lisanslama yazılımı, aşağıdakilerin 64 bit sürümleri de dahil olmak üzere çeşitli işletim sistemleri için mevcuttur: Microsoft Windows 10'un profesyonel sürümleri; Ubuntu18.04; ve macOS 10.15.5. Windows için ikili dosyalar kodla imzalanmıştır. Mac OS için ikili dosyalar kod imzalı ve noter tasdiklidir.
Bir ağ lisans sunucusu çalıştırıyorsanız, lisans sunucusunu barındırmak için yalnızca derleyiciler tarafından desteklenen işletim sistemlerine sahip bilgisayarlar kullanılabilir. Xclm sürüm 2.0'dan itibaren ağ lisans sunucusu bir Microsoft Windows Server platformuna kurulabilir ancak lisans sunucusunun işletim sisteminin bir sunucu sürümünde çalışmasına gerek yoktur.
Desteklenen Cihazlar
Bu derleyici, piyasaya sürüldüğü sırada bilinen tüm 8 bit AVR MCU cihazlarını destekler. Desteklenen tüm aygıtların listesi için (derleyicinin belge dizininde) bölümüne bakın. Bunlar fileAyrıca her aygıt için yapılandırma bit ayarlarını da listeler.
Sürümler ve Lisans Yükseltmeleri
MPLAB XC8 derleyicisi lisanslı (PRO) veya lisanssız (Ücretsiz) ürün olarak etkinleştirilebilir. Derleyicinizi lisanslamak için bir aktivasyon anahtarı satın almanız gerekir. Lisans, Ücretsiz ürüne kıyasla daha yüksek düzeyde optimizasyona olanak tanır. Lisanssız bir derleyici, lisans olmadan süresiz olarak çalıştırılabilir.
MPLAB XC8 İşlevsel Güvenlik derleyicisi, Microchip'ten satın alınan işlevsel güvenlik lisansı ile etkinleştirilmelidir. Derleyici bu lisans olmadan çalışmayacaktır. Etkinleştirildiğinde herhangi bir optimizasyon düzeyini seçebilir ve derleyicinin tüm özelliklerini kullanabilirsiniz. MPLAB XC İşlevsel Güvenlik Derleyicisinin bu sürümü Ağ Sunucusu Lisansını destekler.
Lisans türleri ve derleyicinin lisansla kurulumu hakkında bilgi için MPLAB XC C Derleyicilerinin Kurulumu ve Lisanslanması (DS50002059) belgesine bakın.
Kurulum ve Aktivasyon
Bu derleyiciye dahil edilen en son lisans yöneticisi hakkında önemli bilgiler için ayrıca Geçiş Sorunları ve Sınırlamalar bölümlerine bakın.
MPLAB IDE kullanıyorsanız, bu aracı kurmadan önce en son MPLAB X IDE sürüm 5.0 veya üzerini yüklediğinizden emin olun. Derleyiciyi kurmadan önce IDE'den çıkın. .exe (Windows), .run (Linux) veya app (macOS) derleyici yükleyici uygulamasını (örneğin XC8-1.00.11403-windows.exe) çalıştırın ve ekrandaki talimatları izleyin.
Varsayılan kurulum dizini önerilir. Linux kullanıyorsanız derleyiciyi bir terminal kullanarak ve bir kök hesaptan kurmanız gerekir. Yönetici ayrıcalıklarına sahip bir macOS hesabı kullanarak yükleyin.
Etkinleştirme artık kurulumdan ayrı olarak gerçekleştirilmektedir. Daha fazla bilgi için MPLAB® XC C Derleyicileri Lisans Yöneticisi (DS52059) belgesine bakın.
Derleyiciyi değerlendirme lisansı altında çalıştırmayı seçerseniz, artık değerlendirme sürenizin bitiminden sonraki 14 gün içinde derleme sırasında bir uyarı alacaksınız. Aynı uyarı, HPA aboneliğinizin bitiminden itibaren 14 gün içindeyseniz de verilir.
XC Ağ Lisans Sunucusu ayrı bir yükleyicidir ve tek kullanıcılı derleyici yükleyicisine dahil değildir.
XC Lisans Yöneticisi artık değişken ağ lisanslarının dolaşımını destekliyor. Mobil kullanıcılara yönelik bu özellik, değişken lisansın kısa bir süre için ağ dışına çıkmasına olanak tanır. Bu özelliği kullanarak ağ bağlantısını kesebilir ve MPLAB XC derleyicinizi kullanmaya devam edebilirsiniz. Bu özellik hakkında daha fazla bilgi için XCLM kurulumunun doc klasörüne bakın. MPLAB X IDE, dolaşımı görsel olarak yönetmek için bir Lisanslar penceresi (Araçlar > Lisanslar) içerir.
Yükleme Sorunlarını Çözme
Derleyiciyi Windows işletim sistemlerinden herhangi birinde kurarken zorluk yaşıyorsanız aşağıdaki önerileri deneyin.
- Kurulumu yönetici olarak çalıştırın.
- Yükleyici uygulamasının izinlerini 'Tam kontrol' olarak ayarlayın. (Sağ tıklayın file, Özellikler'i seçin, Güvenlik sekmesini seçin, kullanıcıyı seçin, düzenleyin.)
- Temp klasörünün izinlerini “Tam Kontrol!
Temp klasörünün konumunu belirlemek için Çalıştır komutuna %temp% yazın (Windows logo tuşu + R). Bu bir açılacaktır file Explorer iletişim kutusu bu dizini gösterir ve o klasörün yolunu belirlemenizi sağlar.
Derleyici Belgeleri
Derleyicinin kullanım kılavuzları, ekran görüntüsünde belirtildiği gibi MPLAB X IDE panosundaki mavi yardım düğmesine tıkladığınızda tarayıcınızda açılan HTML sayfasından açılabilir.
8 bitlik AVR hedefleri için derleme yapıyorsanız AVR® MCU için MPLAB® XC8 C Derleyici Kullanıcı Kılavuzu, bu mimariye uygulanabilen derleyici seçenekleri ve özellikleri hakkında bilgi içerir.
Müşteri Desteği
Microchip, bu derleyici sürümüyle ilgili hata raporlarını, önerileri veya yorumları memnuniyetle karşılar. Lütfen hata raporlarını veya özellik isteklerini Destek Sistemi aracılığıyla yönlendirin.
Dokümantasyon Güncellemeleri
MPLAB XC8 belgelerinin çevrimiçi ve güncel sürümleri için lütfen Microchip'in Çevrimiçi Teknik Belgelerini ziyaret edin. webalan.
Bu sürümdeki yeni veya güncellenmiş AVR belgeleri:
- MUSL telif hakkı bildirimi
- MPLAB XC C Derleyicilerini Yükleme ve Lisanslama (revizyon M)
- Gömülü Mühendisler için MPLAB XC8 Kullanım Kılavuzu – AVR MCU'lar (revizyon A)
- AVR MCU için MPLAB XC8 C Derleyici Kullanıcı Kılavuzu (revizyon F)
- Microchip Birleşik Standart Kütüphane Referans Kılavuzu (revizyon B)
Microchip Unified Standard Library Referans Kılavuzu, Microchip Unified Standard Library tarafından tanımlanan işlevlerin davranışını ve arayüzünü, ayrıca kütüphane türlerinin ve makrolarının kullanım amacını açıklar. Bu bilgilerin bir kısmı daha önce AVR® MCU için MPLAB® XC8 C Derleyici Kullanıcı Kılavuzunda yer alıyordu. Cihaza özel kitaplık bilgileri hâlâ bu derleyici kılavuzunda yer almaktadır.
8 bitlik cihazlarla ve MPLAB XC8 C Derleyicisiyle yeni başlıyorsanız, MPLAB® XC8 Gömülü Mühendisler için Kullanım Kılavuzu – AVR® MCU'lar (DS50003108), MPLAB X IDE'de proje ayarlama ve kod yazma hakkında bilgi içerir ilk MPLAB XC8 C projeniz için. Bu kılavuz artık derleyiciyle birlikte dağıtılmaktadır.
Hamate Kullanım Kılavuzu bu sürümde docs dizinine eklenmiştir. Bu kılavuz, Hamate'i bağımsız bir uygulama olarak çalıştıranlar için tasarlanmıştır.
Ne var ne yok
Aşağıda derleyicinin artık desteklediği yeni AVR hedefi özellikleri yer almaktadır. Alt başlıklardaki sürüm numarası, aşağıdaki özellikleri destekleyen ilk derleyici sürümünü belirtir.
Sürüm 2.40
Yeni cihaz desteği Artık aşağıdaki AVR parçaları için destek mevcuttur: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32 ve AVR64EA48.
Geliştirilmiş prosedürsel soyutlama Prosedürel soyutlama (PA) optimizasyon aracı, bir işlev çağrısı talimatı (çağrı geri çağırma) içeren kodun ana hatlarıyla belirtilebileceği şekilde geliştirildi. Bu yalnızca yığının işleve argüman iletmek veya işlevden dönüş değeri almak için kullanılmaması durumunda gerçekleşir. Yığın, değişken bağımsız değişken listesiyle bir işlevi çağırırken veya bu amaç için belirlenmiş kayıtlardan daha fazla bağımsız değişken alan bir işlevi çağırırken kullanılır. Bu özellik, monk-pa-outline-calls seçeneği kullanılarak devre dışı bırakılabilir veya bir nesne için prosedürel soyutlama tamamen devre dışı bırakılabilir file veya -monk-pa-on- komutunu kullanarak işlev yapınfile ve -mo.-pa-on-function sırasıyla veya nipa niteliğini (nipa belirtici) işlevlerle seçici olarak kullanarak
Kod kapsamı makrosu Geçerli bir mcodecov seçeneği belirtilirse derleyici artık __CODECOV makrosunu tanımlar.
Bellek rezervasyon seçeneği Xc8-cc sürücüsü artık AVR hedefleri oluştururken -mreserve=space@start: end seçeneğini kabul edecek. Bu seçenek, belirtilen bellek aralığını veri veya program bellek alanında saklayarak bağlayıcının bu alandaki kodu veya nesneleri doldurmasını engeller.
Daha akıllı akıllı IO Smart IO işlevlerinde, printf çekirdek kodunda genel ayarlamalar yapılması, %n dönüşüm belirticisinin bağımsız bir değişken olarak ele alınması, talep üzerine vararg pop rutinlerine bağlantı verilmesi, IO işlevi bağımsız değişkenlerini işlemek için mümkün olan yerlerde daha kısa veri türlerinin kullanılması dahil olmak üzere çeşitli iyileştirmeler yapılmıştır. ve alan genişliği ve hassas işlemede ortak kodun hesaba katılması. Bu, önemli miktarda kod ve veri tasarrufu sağlamanın yanı sıra, GÇ'nin yürütme hızını da artırabilir.
Sürüm 2.39 (İşlevsel Güvenlik Sürümü)
Ağ Sunucusu Lisansı MPLAB XC8 İşlevsel Güvenlik Derleyicisinin bu sürümü Ağ Sunucusu Lisansını destekler.
Sürüm 2.36
Hiçbiri.
Sürüm 2.35
Yeni cihaz desteği Aşağıdaki AVR parçaları için destek mevcuttur: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 ve AVR64DD32.
Geliştirilmiş bağlam değiştirme Yeni -mcall-isr-prologues seçeneği, kesme işlevlerinin girişte kayıtları nasıl kaydettiğini ve kesme rutini sona erdiğinde bu kayıtların nasıl geri yüklendiğini değiştirir. -mcall-prologues seçeneğine benzer şekilde çalışır, ancak yalnızca kesme işlevlerini (ISR'ler) etkiler.
Daha da geliştirilmiş içerik değiştirme Yeni -mgas-isr-prologues seçeneği, küçük kesme hizmeti rutinleri için oluşturulan bağlam kaşıntı kodunu kontrol eder. Etkinleştirildiğinde, bu özellik, montajcının kayıt kullanımı için ISR'yi taramasını ve yalnızca gerektiğinde bu kullanılan kayıtları kaydetmesini sağlayacaktır.
Yapılandırılabilir flaş eşleme AVR DA ve AVR DB ailesindeki bazı cihazlarda, program belleğinin hangi 32k bölümünün veri belleğine eşleneceğini belirten bir SFR (örn. FLMAP) bulunur. Yeni – mconst-data-in-config-mapped-proem seçeneği, bağlayıcının tüm eksileri nitelenmiş verileri tek bir 32k bölüme yerleştirmesini ve bu verilerin veri belleği alanına eşlendiğinden emin olmak için ilgili SFR kaydını otomatik olarak başlatmasını sağlamak için kullanılabilir. , daha etkili bir şekilde erişileceği yer.
Mikroçip Birleşik Standart Kütüphaneleri Tüm MPLAB XC derleyicileri, artık MPLAB XC8'in bu sürümünde mevcut olan bir Microchip Birleşik Standart Kitaplığını paylaşacaktır. MPLAB® XC8 C Derleyici Kullanıcı Kılavuzu/veya AVR® MCU artık bu standart işlevlere ilişkin belgeleri içermemektedir. Bu bilgi artık Microchip Unified Standard Library Referans Kılavuzu'nda bulunabilir. Daha önce avr-libc tarafından tanımlanan bazı işlevlerin artık mevcut olmadığını unutmayın. (Kütüphaneciye bakın):'. işlevsellik…)
Akıllı Giriş/Çıkış Yeni birleştirilmiş kitaplıkların bir parçası olarak, yazdırma ve tarama ailelerindeki GÇ işlevleri, bu işlevlerin programda nasıl kullanıldığına bağlı olarak artık her yapıda özel olarak oluşturulmaktadır. Bu, bir programın kullandığı kaynakları önemli ölçüde azaltabilir.
Akıllı IO yardım seçeneği Akıllı GÇ işlevlerine (printf() veya scanf() gibi) yapılan çağrıları analiz ederken, derleyici her zaman biçim dizesinden belirleyemez veya çağrının gerektirdiği dönüşüm belirticilerini argümanlardan çıkaramaz. Önceden derleyici her zaman hiçbir varsayımda bulunmaz ve tam işlevsel IO işlevlerinin son program görüntüsüne bağlanmasını sağlardı. Yeni bir – msmart-io-format=fmt seçeneği eklendi, böylece derleyici bunun yerine kullanıcı tarafından kullanımı belirsiz olan akıllı IO işlevleri tarafından kullanılan dönüşüm belirteçleri hakkında bilgilendirilebilir ve aşırı uzun IO rutinlerinin bağlanması önlenir. (Daha fazla ayrıntı için smart-io-format Seçeneğine bakın.)
Özel bölümleri yerleştirme Daha önce -Wl, –section-start seçeneği, belirtilen bölümü yalnızca bağlayıcı komut dosyası aynı ada sahip bir çıktı bölümü tanımladığında istenen adrese yerleştiriyordu. Durum böyle olmadığında bölüm, bağlayıcı tarafından seçilen bir adrese yerleştirildi ve seçenek esasen göz ardı edildi. Artık, bağlayıcı komut dosyası bölümü tanımlamasa bile bu seçenek tüm özel bölümler için geçerli olacaktır. Ancak standart bölümler için şunu unutmayın: . metin, . bss veya . En uygun ayırıcı, bunların yerleşimi üzerinde hâlâ tam kontrole sahip olacak ve seçeneğin hiçbir etkisi olmayacaktır. Kullanıcı kılavuzunda anlatıldığı gibi -Wl, -Tsection=add seçeneğini kullanın.
Sürüm 2.32
Yığın Kılavuzu PRO derleyici lisansıyla birlikte sunulan derleyicinin yığın yönlendirme özelliği, bir program tarafından kullanılan herhangi bir yığının maksimum derinliğini tahmin etmek için kullanılabilir. Bir programın çağrı grafiğini oluşturur ve analiz eder, her fonksiyonun yığın kullanımını belirler ve program tarafından kullanılan yığınların derinliğinin çıkarılabileceği bir rapor üretir. Bu özellik -mchp-stack-usage komut satırı seçeneği aracılığıyla etkinleştirilir. Yürütmeden sonra yığın kullanımının bir özeti yazdırılır. Haritada ayrıntılı bir yığın raporu mevcuttur file, her zamanki gibi talep edilebilir.
Yeni cihaz desteği Desteği Şu AVR parçaları için mevcuttur: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32 ve AVR32DB48.
Geri çekilmiş cihaz desteği Desteği şu AVR parçaları için artık mevcut değildir: AVR16DA28, AVR16DA32 ve AVR16DA48.
Sürüm 2.31
Hiçbiri.
Sürüm 2.30
Verilerin başlatılmasını önlemek için yeni seçenek Yeni bir -mno-data-ini t sürücü seçeneği, verilerin başlatılmasını ve bss bölümlerinin temizlenmesini önler. Montajdaki do_ copy_ verilerinin ve d o_ clear_ bss sembollerinin çıktısını bastırarak çalışır. fileBu da bu rutinlerin bağlayıcı tarafından dahil edilmesini önleyecektir.
Gelişmiş optimizasyonlar Gereksiz geri dönüş talimatlarının kaldırılması, bit varsa atla talimatının ardından bazı atlamaların kaldırılması ve geliştirilmiş prosedür soyutlaması ve bu süreci yineleme yeteneği de dahil olmak üzere bir dizi optimizasyon iyileştirmesi yapılmıştır.
Bu optimizasyonlardan bazılarını kontrol etmek için artık ek seçenekler mevcut; özellikle -f bölümü bağlantıları; bu, statik nesnelere erişimin bir sembole göre gerçekleştirilmesine olanak tanıyor; -mpai değerlemeleri=n, prosedürel soyutlama yinelemelerinin sayısının varsayılan 2'den değiştirilmesine olanak tanır; ve -mpa- çağrı maliyeti- bağlayıcının uzun çağrıları rahatlatabilmesi umuduyla daha agresif prosedürel soyutlama gerçekleştiren kısa çağrı. Bu son seçenek, temel varsayımların gerçekleştirilmemesi durumunda kod boyutunu artırabilir.
Yeni cihaz desteği Aşağıdaki AVR parçaları için destek mevcuttur: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 ve AVR128DB64.
Geri çekilmiş cihaz Desteği Aşağıdaki AVR parçaları için artık destek sağlanmamaktadır: ATA5272, ATA5790, ATA5790N,ATA5791,ATA5795,ATA6285,ATA6286,ATA6612C,ATA6613C,ATA6614Q, ATA6616C, ATA6617C ve ATA664251.
Sürüm 2.29 (İşlevsel Güvenlik Sürümü)
Başlık file derleyici yerleşikleri için Derleyicinin MISRA gibi dil özelliklerine uygun olmasını sağlamak için, başlık filetarafından otomatik olarak dahil edilen , güncellendi. Bu başlık, _buil tin _avrnop () ve _buil tin_ avr delay_cycles () gibi tüm yerleşik işlevlerin prototiplerini içerir. Bazı yerleşikler MISRA uyumlu olmayabilir; bunlar, derleyici komut satırına define _Xe_ STRICT_ MISRA eklenerek çıkarılabilir. Yerleşikler ve bildirimleri, sabit genişlikli türleri kullanacak şekilde güncellendi.
Sürüm 2.20
Yeni cihaz desteği Şu AVR parçaları için destek mevcuttur: ATTINY1624, ATTINY1626 ve ATTINY1627.
Daha iyi, en uygun tahsis Derleyicideki en uygun ayırıcı (BFA), bölümlerin daha iyi optimizasyona izin verecek şekilde tahsis edilmesini sağlayacak şekilde geliştirildi. BFA artık adlandırılmış adres alanlarını destekliyor ve veri başlatmayı daha iyi yönetiyor.
Geliştirilmiş prosedürsel soyutlama Prosedürel soyutlama optimizasyonları artık daha fazla kod dizisinde gerçekleştiriliyor. Bu optimizasyonun kod boyutunu artırabileceği önceki durumlar, optimizasyon kodunun bağlayıcının çöp toplama sürecinden haberdar olmasıyla çözülmüştü.
AVR Birleştiricinin Yokluğu AVR Assembler artık bu dağıtıma dahil değildir.
Sürüm 2.19 (İşlevsel Güvenlik Sürümü)
Hiçbiri.
Sürüm 2.10
Kod Kapsamı Bu sürüm, bir projenin kaynak kodunun ne ölçüde yürütüldüğünün analizini kolaylaştıran bir kod kapsamı özelliği içerir. Etkinleştirmek için -mcodecov=ram seçeneğini kullanın. Programın donanımınızda çalıştırılmasından sonra, kod kapsamı bilgileri cihazda toplanacak ve bu, bir kod kapsamı eklentisi aracılığıyla MPLAB X IDE'ye aktarılıp görüntülenebilir. Bu eklenti hakkında bilgi edinmek için IDE belgelerine bakın. #pragma mcodecov sonraki işlevleri kapsam analizinden hariç tutmak için kullanılabilir. İdeal olarak pragma konunun başına eklenmelidir. file tamamını hariç tutmak file Kapsam analizinden. Alternatif olarak, ((mcodecov)) özelliği belirli bir fonksiyonu kapsam analizinden hariç tutmak için kullanılabilir.
Cihaz açıklaması files Yeni bir cihaz file avr chipinfo denir. html, derleyici dağıtımının docs dizininde bulunur. Bu file derleyici tarafından desteklenen tüm cihazları listeler. Bir cihaz adına tıkladığınızda, söz konusu cihaz için izin verilen tüm konfigürasyon bit ayarı/değer çiftlerini gösteren bir sayfa açılacaktır.amples.
prosedürel soyutlama Derleyiciye, ortak montaj kodu bloklarını, o bloğun ayıklanmış bir kopyasına yapılan çağrılarla değiştiren prosedürel soyutlama optimizasyonları eklenmiştir. Bunlar, seviye 2, 3 veya optimizasyonları seçerken derleyici tarafından otomatik olarak çağrılan ayrı bir uygulama tarafından gerçekleştirilir. Bu optimizasyonlar kod boyutunu azaltır, ancak yürütme hızını ve kod hata ayıklama yeteneğini azaltabilir.
Prosedürel soyutlama, -mno-pa seçeneği kullanılarak daha yüksek optimizasyon seviyelerinde devre dışı bırakılabilir veya -mpa kullanılarak daha düşük optimizasyon seviyelerinde (lisansınıza bağlı olarak) etkinleştirilebilir. Bir nesne için devre dışı bırakılabilir file -mno-pa-on- kullanarakfile=filename veya function= function üzerinde -mno-pa kullanılarak bir işlev için devre dışı bırakılır.
Kaynak kodunuzun içinde, bir işlev için prosedürel soyutlama, işlevin tanımıyla birlikte _attribute_ ((nopa)) kullanılarak veya özniteliğe ((nopa, noinline)) genişleyen ve böylece işlev satır içi işleminin gerçekleşmesini önleyen _nopa kullanılarak devre dışı bırakılabilir. ve satır içi kodun soyutlanması var.
Pragma'da kilit biti desteği #pragma yapılandırması artık AVR kilit bitlerinin yanı sıra diğer yapılandırma bitlerini belirtmek için de kullanılabilir. Avr çip bilgisini kontrol edin. HTML file (yukarıda belirtilen) bu pragmayla kullanılacak ayar/değer çiftleri için.
Yeni cihaz desteği Şu parçalar için destek mevcuttur: AVR28DA128, AVR64DA128, AVR32DA128 ve AVR48DA128.
Sürüm 2.05
Paranızın karşılığını daha fazla parça Bu derleyici ve lisans yöneticisinin macOS sürümü artık 64 bit uygulamadır. Bu, derleyicinin macOS'un son sürümlerinde uyarı olmadan yüklenip çalışmasını sağlayacaktır.
Program belleğindeki Const nesneleri Derleyici artık const nitelikli nesneleri RAM'de bulundurmak yerine programın Flash belleğine yerleştirebilir. Derleyici, const nitelikli küresel verilerin program flash belleğinde saklanacağı ve bu verilere uygun program belleği talimatları kullanılarak doğrudan ve dolaylı olarak erişilebileceği şekilde değiştirildi. Bu yeni özellik varsayılan olarak etkindir ancak -mno-const-data-in-progmem seçeneği kullanılarak devre dışı bırakılabilir. Avrxmega3 ve avrtiny mimarileri için bu özellik gerekli değildir ve program belleği bu aygıtların veri adres alanına eşlendiğinden her zaman devre dışıdır.
Ücretsiz standart Bu derleyicinin lisanssız (Ücretsiz) sürümleri artık 2. seviyeye kadar optimizasyonlara izin vermektedir. Bu, daha önce Standart lisans kullanılarak mümkün olana benzer, ancak aynı olmasa da, çıktıya izin verecektir.
Hoş Geldiniz AVRASM2 2 bit cihazlar için AVRASM8 birleştirici artık XC8 derleyici yükleyicisine dahil edilmiştir. Bu derleyici, XC8 derleyicisi tarafından kullanılmaz ancak el yazısıyla yazılan derleme kaynağına dayalı projeler için kullanılabilir.
Yeni cihaz desteği Şu parçalar için destek mevcuttur: ATMEGA1608, ATMEGA1609, ATMEGA808 ve ATMEGA809.
Sürüm 2.00
Üst düzey Sürücü Xc8-cc adı verilen yeni bir sürücü artık önceki avr-gcc sürücüsünün ve xc8 sürücüsünün üzerinde yer alıyor ve hedef aygıtın seçimine bağlı olarak uygun derleyiciyi çağırabiliyor. Bu sürücü, yürütülmekte olan derleyiciye çevrilen veya aktarılan GCC tarzı seçenekleri kabul eder. Bu sürücü, herhangi bir AVR veya PIC hedefiyle kullanılmak üzere benzer semantiklere sahip benzer bir dizi seçenek sağlar ve dolayısıyla derleyiciyi çağırmanın önerilen yoludur. Gerektiğinde eski avr-gcc sürücüsü, önceki derleyici sürümlerinde kabul ettiği eski tarz seçenekler kullanılarak doğrudan çağrılabilir.
Ortak C Arayüzü Bu derleyici artık MPLAB Ortak C Arayüzü ile uyumlu olabilir ve kaynak kodunun tüm MPLAB XC derleyicileri arasında daha kolay taşınmasına olanak tanır. -mext=cci seçeneği bu özelliği talep ederek birçok dil uzantısı için alternatif söz dizimini etkinleştirir.
Yeni kütüphaneci sürücüsü Yeni bir kütüphaneci sürücüsü, önceki PIC kütüphaneci kütüphanecisinin ve AVR avr-ar kütüphanecisinin üzerinde konumlandırılmıştır. Bu sürücü, yürütülmekte olan kütüphaneciye çevrilen veya aktarılan GCC arşivleyici tarzı seçenekleri kabul eder. Yeni sürücü, herhangi bir PIC veya AVR kütüphanesini oluşturmak veya değiştirmek için benzer anlamlara sahip benzer bir dizi seçeneğin kullanılmasına olanak tanır file ve bu nedenle kütüphaneciyi çağırmanın önerilen yoludur. Eski projeler için gerekiyorsa önceki derleyici sürümlerinde kabul edilen eski tarz seçenekler kullanılarak önceki kütüphaneci doğrudan çağrılabilir.
Taşıma Sorunları
Aşağıda derleyici tarafından artık farklı şekilde ele alınan özellikler yer almaktadır. Kodu bu derleyici sürümüne taşıyorsanız, bu değişiklikler kaynak kodunuzda değişiklik yapılmasını gerektirebilir. Alt başlıklardaki sürüm numarası, sonraki değişiklikleri destekleyen ilk derleyici sürümünü gösterir.
Sürüm 2.40
Hiçbiri.
Sürüm 2.39 (İşlevsel Güvenlik Sürümü)
Hiçbiri.
Sürüm 2.36
Hiçbiri.
Sürüm 2.35
Dizeden tabanlara kadar işlem yapılması (XCS-2420) Diğer XC derleyicileriyle tutarlılığı sağlamak için, strtol () vb. gibi XC8 dize-to işlevleri, belirtilen taban 36'dan büyükse artık bir giriş dizesini dönüştürmeye çalışmayacak ve bunun yerine errno'yu EINVAL olarak ayarlayacaktır. C standardı, bu temel değer aşıldığında fonksiyonların davranışını belirtmez.
Uygunsuz hız optimizasyonları Seviye 3 optimizasyonları (-03) seçilirken prosedürel soyutlama optimizasyonları etkinleştiriliyordu. Bu optimizasyonlar, kod hızı pahasına kod boyutunu küçülttüğünden, yapılmaması gerekirdi. Bu optimizasyon düzeyini kullanan projeler, bu sürümle derlendiğinde kod boyutunda ve yürütme hızında farklılıklar görebilir.
Kütüphane işlevselliği Standart C kitaplığı işlevlerinin birçoğunun kodu artık Microchip'in Birleşik Standart Kitaplığı'ndan geliyor ve bu, bazı durumlarda eski avr-libc kitaplığı tarafından sağlananlara kıyasla farklı davranışlar sergileyebiliyor. Eski içinampDosya, kayan biçim belirticileri için biçimlendirilmiş GÇ desteğini açmak için artık lprintf_flt kitaplığında (-print _flt seçeneği) bağlantı kurmaya gerek yoktur. Microchip Unified Standard Library'nin akıllı IO özellikleri bu seçeneği gereksiz kılar. Ek olarak, Flash'ta const dizeleri üzerinde çalışan dize ve bellek işlevleri için (örn. strcpy_P() vb..) _p sonekli rutinlerin kullanımına artık gerek yoktur. Standart C rutinleri (örneğin strcpy ()) program belleğindeki sabit veri özelliği etkinleştirildiğinde bu tür verilerle doğru şekilde çalışacaktır.
Sürüm 2.32
Hiçbiri.
Sürüm 2.31
Hiçbiri.
Sürüm 2.30
Hiçbiri.
Sürüm 2.29 (İşlevsel Güvenlik Sürümü)
Hiçbiri.
Sürüm 2.20
DFP düzeni değiştirildi Derleyici artık DFP'ler (Cihaz Ailesi Paketleri) tarafından kullanılan farklı bir düzeni varsaymaktadır. Bu, eski bir DFP'nin bu sürümle çalışmayabileceği ve eski derleyicilerin en yeni DFP'leri kullanamayacağı anlamına gelir.
Sürüm 2.19 (İşlevsel Güvenlik Sürümü)
Hiçbiri.
Sürüm 2.10
Hiçbiri
Sürüm 2.05
Program belleğindeki Const nesneleri Varsayılan olarak, const nitelikli nesnelerin program belleğine yerleştirileceğini ve program belleğine (burada açıklandığı gibi) erişileceğini unutmayın. Bu, projenizin boyutunu ve yürütme hızını etkileyecektir ancak RAM kullanımını azaltacaktır. Bu özellik gerekirse -mnoconst-da ta-in-progmem seçeneği kullanılarak devre dışı bırakılabilir.
Sürüm 2.00
Yapılandırma sigortaları Cihaz konfigürasyon sigortaları artık bir konfigürasyon pragması ve ardından sigorta durumunu belirtmek için ayar değeri çiftleri kullanılarak programlanabilir, örn.
#pragma yapılandırması WDT0N = AYAR
#pragma yapılandırması B0DLEVEL = B0DLEVEL_4V3
Mutlak nesneler ve işlevler Nesneler ve işlevler artık CCI _at (adres) belirtici kullanılarak bellekteki belirli bir adrese yerleştirilebilir; örneğinampdosya: #dahil et int foobar (Ox800100); char at(Ox250) get ID(int offset) { … } Bu belirticinin argümanı, ilk bayt veya talimatın yerleştirileceği adresi temsil eden bir sabit olmalıdır. RAM adresleri 0x800000 uzaklığı kullanılarak gösterilir. Bu özelliği kullanmak için CCI'yı etkinleştirin.
Yeni kesme işlevi sözdizimi Derleyici artık C işlevlerinin kesme işleyicileri olduğunu belirtmek için CCI kesme (num) belirticisini kabul eder. Belirleyici bir kesme numarası alır; örneğinampdosya: #dahil et void kesme(SPI STC_ vect _num) spi Isr(void) { … }
Düzeltilen Sorunlar
Derleyicide yapılan düzeltmeler aşağıdadır. Bunlar, oluşturulan koddaki hataları düzeltebilir veya derleyicinin çalışmasını kullanıcı kılavuzunda amaçlanan veya belirtilen şekilde değiştirebilir. Alt başlıklardaki sürüm numarası, takip eden sorunlara yönelik düzeltmeleri içeren ilk derleyici sürümünü belirtir. Başlıktaki köşeli parantez içindeki etiket(ler), o sayının izleme veritabanındaki tanımıdır. Destek ekibiyle iletişime geçmeniz gerekiyorsa bunlar faydalı olabilir.
Cihazla ilişkili Cihaz Ailesi Paketinde (DFP) cihaza özgü bazı sorunların düzeltildiğini unutmayın. DFP'lerde yapılan değişiklikler hakkında bilgi almak ve en son paketleri indirmek için MPLAB Paket Yöneticisine bakın.
Sürüm 2.40
Fazla rahat (XCS-2876) -mrelax seçeneğini kullanırken, derleyici bazı bölümleri birlikte tahsis etmiyordu, bu da daha az optimal kod boyutuna neden oluyordu. Bu, yeni MUSL kütüphanelerini kullanan kodlarda veya zayıf sembollerde meydana gelmiş olabilir.
Uyarıda belirtildiği gibi eşleme özelliği devre dışı bırakılmadı (XCS-2875) Yapılandırmadaki maliyet verileri eşlenen program özelliği, etkinleştirilen projedeki maliyet verileri özelliğine bağlıdır. Cost-data-ipconfig-mapped-proem özelliği bu seçenek kullanılarak açık bir şekilde etkinleştirildiyse ve cost-data-inprogmem özelliği devre dışı bırakıldıysa, cons data-in-config-mapped-proem'in eksilerini belirten bir uyarı mesajına rağmen bağlantı adımı başarısız oldu. proem özelliğinin otomatik olarak devre dışı bırakılması tamamen doğru değildi. Bu durumda const-data-in-config-mapped-proem özelliği artık tamamen devre dışıdır.
DFP, NVMCTRL'ye (XCS-2848) doğru şekilde erişecek şekilde değişir AVR64EA cihazları tarafından kullanılan çalışma zamanı başlatma kodu, NVMCTRL kaydının Yapılandırma Değişikliği Koruması (CCP) altında olduğunu hesaba katmadı ve IO SFR'yi const-data-in configmapped-proem derleyicisi tarafından kullanılan sayfaya ayarlayamadı özellik. AVR-Ex_DFP sürüm 2.2.55'te yapılan değişiklikler, çalışma zamanı başlangıç kodunun bu kayda doğru şekilde yazılmasına olanak tanıyacaktır.
Flaş eşlemeyi önlemek için DFP değişiklikleri (XCS-2847) AVR128DA28/32/48/64 Silicon Errata'da (DS80000882) bildirilen flaş haritalama cihazı özelliğiyle ilgili bir soruna yönelik bir geçici çözüm uygulandı. Const-data-in-config-mapped-proem derleyici özelliği, etkilenen cihazlar için varsayılan olarak uygulanmayacaktır ve bu değişiklik AVR-Ex_DFP sürüm 2.2.160'ta görünecektir.
sinhf veya coshf ile derleme hatası (XCS-2834) sinhf () veya coshf () kütüphane işlevlerini kullanma girişimleri, tanımsız bir referansı açıklayan bir bağlantı hatasıyla sonuçlandı. Başvurulan eksik işlev artık derleyici dağıtımına dahil edilmiştir.
Nopa ile hata oluşturma (XCS-2833) Nopa özniteliğinin, () olarak kullanılarak birleştirici adı belirtilen bir işlevle kullanılması, birleştiriciden gelen hata mesajlarını tetikledi. Bu kombinasyon mümkün değildir.
İşaretçi bağımsız değişkenleriyle değişken işlev hatası (XCS-2755, XCS-2731) Değişken sayıda bağımsız değişken içeren işlevler, proemdeki maliyet verileri özelliği etkinleştirildiğinde değişken bağımsız değişken listesinde 24 bitlik (_memo türü) işaretçilerin geçirilmesini bekler. Veri belleğine işaret eden argümanlar 16 bitlik nesneler olarak iletiliyor ve sonuçta okunduğunda kod hatasına neden oluyordu. Eksileri proemdeki veriler özelliği etkinleştirildiğinde, tüm 16 bitlik işaretçi argümanları artık 24 bitlik işaretçilere dönüştürülür. strtoxxx kitaplık işlevleri başarısız oluyor (XCS-2620) Const-data-in-proem özelliği etkinleştirildiğinde, strtoxxx kitaplık işlevlerindeki enter parametresi, program belleğinde olmayan kaynak dize bağımsız değişkenleri için düzgün şekilde güncellenmedi.
Geçersiz yayınlara ilişkin uyarılar (XCS-2612) Proem maliyeti özelliği etkinleştirilirse ve bir dize değişmezinin adresi açıkça veri adres alanına aktarılırsa (const niteleyicisini bırakarak) derleyici artık bir hata verecektir; örneğinample, (uint8 t *) “Merhaba Dünya!”. Bir const veri işaretçisi açıkça veri adres alanına yayınlandığında adresin geçersiz olması durumunda bir uyarı verilir.
Başlatılmamış const nesnelerinin yerleştirilmesi (XCS-2408) Başlatılmamış const ve const geçici nesneler, program belleğinin tamamını veya bir kısmını veri adres alanına eşleyen cihazlarda program belleğine yerleştirilmiyordu. Bu cihazlar için, bu tür nesneler artık program belleğine yerleştirilerek, diğer cihazlarla tutarlı bir şekilde çalışmaları sağlanır.
Sürüm 2.39 (İşlevsel Güvenlik Sürümü)
Hiçbiri.
Sürüm 2.36
Gecikme sırasında hata (XCS-2774) Varsayılan Serbest mod optimizasyonlarındaki küçük değişiklikler, işlenen ifadelerin gecikme yerleşik işlevlerine sürekli olarak katlanmasını önleyerek bunların temassız olarak değerlendirilmesine ve şu hatanın tetiklenmesine neden oldu: _buil tin avr gecikme_cycles, ac ombile'yi bekliyor zaman tamsayı sabiti.
Sürüm 2.35
_at kullanarak bitişik ayırma (XCS-2653) Aynı ada sahip bir bölümde birden fazla nesnenin bitişik olarak tahsis edilmesi ve () konumunda kullanılması düzgün çalışmadı. Eski içinample: constcharrrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo, Ox CD}; maliyet char arr2[ ] at tri butte ((bölüm(“.my s eke”))) = {Öküz, Öküz FE }; aril'den hemen sonra arr2'yi yerleştirmeliydi.
Bölüm başlangıç adreslerini belirtme (XCS-2650) -Wal, –section-start seçeneği, bölümleri belirlenen başlangıç adresine yerleştirmekte sessizce başarısız oluyordu. Bu sorun, özel olarak adlandırılmış tüm bölümler için düzeltildi; ancak, gibi standart bölümler için çalışmaz. metin veya . -Wl, -T seçeneği kullanılarak yerleştirilmesi gereken bss.
Bağlayıcı dinlenirken çöküyor (XCS-2647) -Relax optimizasyonu etkinleştirildiğinde ve mevcut belleğe sığmayan kod veya veri bölümleri olduğunda, bağlayıcı çöktü. Artık böyle bir durumda hata mesajları veriliyor.
Kötü EEPROM erişimi (XCS-2629) -monist-data-in-proem seçeneği etkinleştirildiğinde (varsayılan durum budur) leproma _read_ blok rutini Mega cihazlarda düzgün çalışmadı ve bu da EEPROM belleğinin doğru şekilde okunamamasına neden oldu.
Geçersiz bellek ayırma (XCS-2593, XCS-2651) -Text veya -Tata bağlayıcı seçeneği (örn.amp-Wl sürücü seçeneği kullanılarak aktarılan dosya belirtildiğinde, karşılık gelen metin/veri bölgesi kaynağı güncellendi; ancak uç adres buna göre ayarlanmadı; bu da bölgenin hedef cihazın bellek aralığını aşmasına yol açabilirdi.
Geçersiz ATtiny kesme kodu (XCS-2465) Tatin cihazları için derleme yapılırken ve optimizasyonlar devre dışı bırakıldığında (-00), kesme işlevleri, işlenen kapsam dışı birleştirici mesajlarını tetiklemiş olabilir.
Aktarılmayan seçenekler (XCS-2452) -Wl seçeneği birden fazla virgülle ayrılmış bağlayıcı seçeneğiyle kullanıldığında, bağlayıcı seçeneklerinin tümü bağlayıcıya aktarılmıyordu.
Program belleği dolaylı olarak okunurken hata oluştu (XCS-2450) Bazı durumlarda derleyici, bir işaretçiden program belleğine iki baytlık bir değer okunurken dahili bir hata (tanınmayan insn) üretti.
Sürüm 2.32
Kütüphaneye ikinci erişim başarısız oluyor (XCS-2381) Xc8-ar'ın Windows sürümünü çağırmak. exe kitaplık arşivleyicisi, mevcut bir kitaplık arşivine ikinci kez erişemediğinde, yeniden adlandırılamayan bir hata mesajıyla başarısız olmuş olabilir.
Sürüm 2.31
Açıklanamayan derleyici hataları (XCS-2367) Sistem geçici dizininin nokta içeren bir yola ayarlandığı Windows platformlarında çalışırken'.' karakter, derleyici yürütmede başarısız olmuş olabilir.
Sürüm 2.30
Ana hatları çizdikten sonra genel etiketlerin yanlış yerleştirilmesi (XCS-2299) Yordamsal soyutlamayla dışarıda bırakılan montaj sıraları içine genel etiketler yerleştiren elle yazılmış montaj kodu, doğru şekilde yeniden konumlandırılmamış olabilir.
Rahatlatıcı bir çarpışma (XCS-2287) -merlad seçeneğinin kullanılması, kuyruk atlama gevşeme optimizasyonları bir bölümün sonunda olmayan ret talimatını kaldırmaya çalıştığında bağlayıcının çökmesine neden olmuş olabilir.
Etiketleri değer olarak optimize ederken kilitlenme (XCS-2282) "Değer olarak etiketler" GNU C dili uzantısını kullanan kod, Anahatlı VMA aralığı yayılma düzeltme hatasıyla prosedürel soyutlama optimizasyonlarının çökmesine neden olmuş olabilir.
Öyle değil const (XCS-2271) Starts () ve diğer işlevler için prototipler -monist-data inprogmem özelliği devre dışı bırakıldığında artık döndürülen dize işaretçilerinde standart olmayan maliyet niteleyicisini belirtmeyeceksiniz. Avrxmega3 ve avertin cihazlarında bu özelliğin kalıcı olarak etkinleştirildiğini unutmayın.
Kayıp başlatıcılar (XCS-2269) Bir çeviri birimindeki birden fazla değişken bir bölüme yerleştirildiğinde (bölüm veya öznitelik ((bölüm)) kullanılarak) ve bu tür ilk değişken sıfır olarak başlatıldığında veya bir başlatıcıya sahip olmadığında, aynı çeviri birimindeki diğer değişkenler için başlatıcılar Aynı bölüme yerleştirilenler ise kaybolmuştu.
Sürüm 2.29 (İşlevsel Güvenlik Sürümü)
Hiçbiri.
Sürüm 2.20
Uzun komutlarda hata (XCS-1983) Bir AVR hedefi kullanıldığında derleyici bir file Komut satırı çok büyükse ve tırnak işaretleri, ters eğik çizgiler vb. gibi özel karakterler içeriyorsa bulunamadı hatası.
Atanmamış rodata bölümü (XCS-1920) AVR bağlayıcı, avrxmega3 ve avrtiny mimarileri için derleme sırasında özel rodata bölümleri için bellek atamada başarısız oldu ve potansiyel olarak bellek çakışması hataları üretti
Sürüm 2.19 (İşlevsel Güvenlik Sürümü)
Hiçbiri.
Sürüm 2.10
Yer değiştirme hataları (XCS-1891) En uygun ayırıcı, bağlayıcı gevşemesinden sonra bölümler arasında bellek 'delikleri' bırakmaktı. Belleğin parçalanmasının yanı sıra bu durum, bilgisayara bağlı atlamalar veya çağrıların menzil dışına çıkmasıyla ilgili bağlayıcı yer değiştirme arızalarının olma olasılığını artırdı.
Gevşeme yoluyla dönüştürülmeyen talimatlar (XCS-1889) Hedefleri gevşetildiğinde ulaşılabilir hale gelen atlama veya çağrı talimatları için bağlayıcı gevşemesi gerçekleşmedi.
Eksik işlevsellik (XCSE-388) Çeşitli tanımlar Clock_div_t veclock_prescale_set() gibi , ATmega324PB, ATmega328PB, ATtiny441 ve ATtiny841 dahil cihazlar için tanımlanmadı.
Eksik makrolar Önişlemci makroları_ xcs _MODE_, _xcs VERSION, _xc ve xcs derleyici tarafından otomatik olarak tanımlanmadı. Bunlar artık mevcut.
Sürüm 2.05
Dahili derleyici hatası (XCS-1822) Windows altında derleme yaparken, kod optimize edilirken dahili bir derleyici hatası oluşmuş olabilir.
RAM taşması algılanmadı (XCS-1800, XCS-1796) Kullanılabilir RAM'i aşan programlar bazı durumlarda derleyici tarafından algılanamadı ve bu da çalışma zamanı kodu hatasına neden oldu.
Çıkarılan flash bellek (XCS-1792) Avrxmega3 ve avrtiny aygıtları için, flash belleğin bazı kısımları MPLAB X IDE tarafından programlanmamış olarak bırakılmış olabilir.
Ana işlemin gerçekleştirilememesi (XCS-1788) Programın tanımlı global değişkenleri olmadığı bazı durumlarda, çalışma zamanı başlangıç kodundan çıkılmadı ve main () işlevine hiçbir zaman erişilemedi.
Yanlış bellek bilgisi (XCS-1787) Avrxmega3 ve avrtiny aygıtları için avr boyutlu program, salt okunur verilerin program belleği yerine RAM tükettiğini bildiriyordu.
Yanlış program belleği okuması (XCS-1783) Veri adres alanına eşlenen program belleğine sahip cihazlar için derlenen ve PROGMEM makrosunu/özniteliğini kullanarak nesneleri tanımlayan projeler, bu nesneleri yanlış adresten okumuş olabilir.
Özniteliklerde dahili hata (XCS-1773) İşaretçi nesnelerini şununla tanımladıysanız dahili bir hata oluştu:
Örneğin, işaretçi adı ile referansı alınmış tür arasında _at() veya feature() belirteçleriample, karakter *
_at ( 0x80015 0) cp; Artık böyle bir kodla karşılaşıldığında bir uyarı veriliyor.
Ana işlemin gerçekleştirilememesi (XCS-1780, XCS-1767, XCS-1754) EEPROM değişkenlerini kullanmak veya yapılandırma pragmasını kullanarak sigortaları tanımlamak, main () öğesine ulaşmadan önce hatalı veri başlatmaya ve/veya çalışma zamanı başlatma kodunda program yürütmenin kilitlenmesine neden olmuş olabilir.
Küçük cihazlarda sigorta hatası (XCS-1778, XCS-1742) Attiny4/5/9/10/20/40 cihazlarının başlıklarında belirtilen sigorta uzunluğu yanlıştı fileSigortaları tanımlayan kod oluşturmaya çalışırken bağlayıcı hatalarına yol açan sorunlar.
Segmentasyon hatası (XCS-1777) Aralıklı bir segmentasyon hatası düzeltildi.
Montajcının çökmesi (XCS-1761) Derleyici Ubuntu 18 altında çalıştırıldığında avr-as derleyicisi çökmüş olabilir.
Temizlenmeyen nesneler (XCS-1752) Başlatılmamış statik depolama süresi nesneleri, çalışma zamanı başlangıç kodu tarafından temizlenmemiş olabilir.
Çakışan cihaz özellikleri göz ardı edildi (XCS-1749) Birden fazla aygıt belirtimi seçeneği kullanıldığında ve farklı aygıtları gösterdiğinde derleyici hata oluşturmuyordu.
Yığına göre bellek bozulması (XCS-1748) Heap_start sembolü yanlış ayarlanmıştı, bu da sıradan değişkenlerin yığın tarafından bozulmasına yol açıyordu.
Bağlayıcı yer değiştirme hatası (XCS-1739) Kod, tam olarak 4k bayt uzaktaki bir hedefe sahip bir rjmp veya rcall içerdiğinde, bir bağlayıcı yeniden konumlandırma hatası ortaya çıkmış olabilir.
Sürüm 2.00
Hiçbiri.
Bilinen Sorunlar
Aşağıda derleyicinin çalışmasındaki sınırlamalar verilmiştir. Bunlar genel kodlama kısıtlamaları olabilir veya
Kullanım kılavuzunda yer alan bilgilerden sapmalar. Başlıktaki köşeli parantez içindeki etiket(ler), o sayının izleme veritabanındaki tanımıdır. Desteğe başvurmanız gerekiyorsa bu yararlı olabilir. Etiketi olmayan maddeler, işleyiş tarzını tanımlayan ve kalıcı olarak yürürlükte kalması muhtemel sınırlamalardır.
MPLAB X IDE Entegrasyonu
MPLAB IDE entegrasyonu Eğer Compiler MPLAB IDE'den kullanılacaksa Compiler'ı kurmadan önce MPLAB IDE'yi kurmalısınız.
Kod Üretimi
PA bellek ayırma hatası (XCS-2881) Prosedürel soyutlama iyileştiricilerini kullanırken, programın kullanılabilir alana sığabilmesi gerekmesine rağmen, kod boyutu cihazdaki kullanılabilir program belleği miktarına yakın olduğunda bağlayıcı, bellek ayırma hatalarını rapor edebilir.
Çok akıllı değil Smart-IO (XCS-2872) Derleyicinin smart-io özelliği, proemdeki veri özelliği devre dışı bırakılmışsa veya cihazın tüm flaşı veri belleğine eşlenmişse, sprint işlevi için geçerli ancak optimalin altında kod üretecektir.
Daha da az akıllı Smart-IO (XCS-2869) Derleyicinin smart-io özelliği, -floe ve -fno-buil tin seçeneklerinin her ikisi de kullanıldığında geçerli ancak optimal olmayan kod üretecektir.
Optimumun altında salt okunur veri yerleştirme (XCS-2849) Bağlayıcı şu anda APPCODE ve APPDATA bellek bölümlerinin veya bellek haritasındaki [No-]Read-While-Write bölümlerinin farkında değil. Sonuç olarak, bağlayıcının salt okunur verileri belleğin uygun olmayan bir alanına ayırması küçük bir ihtimaldir. Pragmadaki kıyı verileri özelliği etkinleştirilirse, özellikle de yapılandırma eşlemeli proemdeki kıyı verileri özelliği de etkinleştirilirse, verilerin yanlış yerleştirilmesi olasılığı artar. Gerektiğinde bu özellikler devre dışı bırakılabilir.
Nesne file işleme sırası (XCS-2863) Nesnelerin hangi sırayla fileBağlayıcı tarafından işlenecek e-postalar, prosedürel soyutlama optimizasyonlarının (-mpa seçeneği) kullanımına bağlı olarak farklılık gösterebilir. Bu yalnızca birden fazla modüldeki zayıf işlevleri tanımlayan kodu etkiler.
Mutlak değerde bağlayıcı hatası (XCS-2777) Bir nesne RAM'in başlangıcındaki bir adreste mutlak hale getirildiğinde ve başlatılmamış nesneler de tanımlandığında, bir bağlayıcı hatası tetiklenebilir.
Kısa uyandırma kimlikleri (XCS-2775) ATA5700/2 aygıtları için PHID0/1 kayıtları 16 bit genişlik yerine yalnızca 32 bit genişlik olarak tanımlanır.
Sembol çağrılırken bağlayıcının çökmesi (XCS-2758) Kaynak kodu -Wl, –defsym bağlayıcı seçeneği kullanılarak tanımlanmış bir sembolü çağırdığında -merlad sürücü seçeneği kullanılırsa bağlayıcı çökebilir.
Yanlış başlatma (XCS-2679) Bazı global/statik bayt boyutlu nesnelerin başlangıç değerlerinin veri belleğine yerleştirildiği yer ile çalışma zamanında değişkenlere nereden erişileceği arasında bir tutarsızlık vardır.
yanlış başlatıldı boş olarak ayarlıyor (XCS-2652) Belirtilen () ile dönüştürülecek konu dizesinin üstel biçimde kayan noktalı sayı gibi görünen bir sayı içerdiği ve bir e karakterinden sonra beklenmeyen bir karakterin bulunduğu durumlarda, boş adres, eğer sağlanmışsa, sonraki karaktere işaret edecektir. e'nin kendisi değil, e'nin kendisi. Eski içinample: belirtildi(“hooey”, boş); x karakterine boş işaret edilmesine neden olacaktır.
Hatalı dolaylı işlev çağrıları (XCS-2628) Bazı durumlarda, bir yapının parçası olarak saklanan bir işlev işaretçisi aracılığıyla yapılan işlev çağrıları başarısız olabilir.
strtof, onaltılık kayan noktalar için sıfır döndürür (XCS-2626) strtof () ve diğerleri ve scanf () ve diğerleri kütüphane işlevleri, her zaman bir üs belirtmeyen onaltılık kayan noktalı sayıyı dönüştürecektir.
sıfır. Eski içinample: stator(“Baykuş”, &boş); 0 değil 1 değerini döndürecektir.
Hatalı yığın danışmanı mesajlaşması (XCS-2542, XCS-2541) Bazı durumlarda, yineleme veya kullanılan belirsiz yığın (muhtemelen alloca() kullanımı yoluyla) ile ilgili yığın danışmanı uyarısı yayınlanmaz.
Yinelenen kesme koduyla ilgili hata (XCS-2421) Birden fazla kesme fonksiyonunun aynı gövdeye sahip olduğu durumlarda, derleyici bir kesme fonksiyonunun çıktısını diğerini çağırabilir. Bu, çağrıların engellendiği tüm kayıtların gereksiz yere kaydedilmesine neden olur ve mevcut kesme işleyicisinin sonsözü çalıştırılmadan önce bile kesmeler etkinleştirilir ve bu da kod hatasına yol açabilir.
Program belleğinde olmayan Const nesneleri (XCS-2408) Avrxmega3 ve avertins projeleri için idealleştirilmemiş const nesneleri, program belleğine yerleştirildiklerini belirten bir uyarı olmasına rağmen veri belleğine yerleştirilir. Bu, veri belleği alanına eşlenmiş program belleği olmayan aygıtları veya başlatılan herhangi bir nesneyi etkilemeyecektir.
Geçersiz DFP yoluyla hatalı çıktı (XCS-2376) Derleyici geçersiz bir DFP yolu ve bir 'özellik' ile çağrılırsa file seçilen cihaz için mevcutsa, derleyici eksik cihaz ailesi paketini bildirmiyor ve bunun yerine 'özelliği' seçiyor filebu da geçersiz bir çıktıya yol açabilir. 'Spesifikasyon' filedağıtılmış DFP'lerle güncel olmayabilir ve yalnızca dahili derleyici testinde kullanılmak üzere tasarlanmışlardır.
Bellek çakışması algılanamadı (XCS-1966) Derleyici, bir adreste (at() yoluyla) mutlak hale getirilen nesnelerin ve bölüm () belirticisini kullanan ve aynı adrese bağlı diğer nesnelerin bellek çakışmasını algılamıyor.
Kitaplık işlevlerinde ve _meme'de hata (XCS-1763) _memo adres alanında bir bağımsız değişkenle çağrılan limbik kayan işlevler başarısız olabilir. Kütüphane rutinlerinin bazı C operatörlerinden çağrıldığını unutmayın;ampdosyada şu kod etkilenir: return regFloatVar > memxFloatVar;
Sınırlı limbik uygulama (AVRTC-731) ATTiny4/5/9/10/20/40 ürünleri için limbic'teki standart C/Matematik kütüphane uygulaması çok sınırlıdır veya yoktur.
Program belleği sınırlamaları (AVRTC-732) 128 kb'nin üzerindeki program belleği görüntüleri araç zinciri tarafından desteklenir; ancak -relax seçeneği kullanıldığında gerekli işlev koçanlarını oluşturmak yerine, gevşeme olmadan ve yararlı bir hata mesajı olmadan bağlayıcının iptal edildiği bilinen durumlar vardır.
Ad alanı sınırlamaları (AVRTC-733) Adlandırılmış adres alanları, kullanıcı kılavuzunun Özel Tür Niteleyicileri bölümünde belirtilen sınırlamalara tabi olarak araç zinciri tarafından desteklenir.
Zaman dilimleri kütüphane işlevleri GMT'yi varsayar ve yerel saat dilimlerini desteklemez; bu nedenle yerel saat (), örneğin gummite () ile aynı saati döndürür.ampley.
MÜŞTERİ DESTEĞİ
file:///Uygulamalar/microehipA VR için /xc8/v 2 .40/docs/Read me_X C 8_. htm
Belgeler / Kaynaklar
![]() |
MICROCHIP MPLAB XC8 C Derleyici Yazılımı [pdf] Kullanım Kılavuzu MPLAB XC8 C, MPLAB XC8 C Derleyici Yazılımı, Derleyici Yazılımı, Yazılım |