Λογότυπο MICROCHIPMPLAB® XC8 C Compiler Έκδοση 2.41 Σημειώσεις έκδοσης για AVR® MCU
Εγχειρίδιο κατόχου

Λογισμικό ανάπτυξης μεταγλωττιστή MPLAB XC8 C

ΑΥΤΟ ΤΟ ΕΓΓΡΑΦΟ ΠΕΡΙΕΧΕΙ ΣΗΜΑΝΤΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ ΣΧΕΤΙΚΑ ΜΕ ΤΟΝ ΜΕΤΑΓΡΑΦΙΚΟ MPLAB XC8 C ΟΤΑΝ ΣΤΟΧΕΥΕΤΑΙ ΣΥΣΚΕΥΕΣ AVR ΜΙΚΡΟΤΣΙΠ.
ΠΑΡΑΚΑΛΩ ΔΙΑΒΑΣΤΕ ΤΟ ΠΡΙΝ ΕΚΤΕΛΕΣΕΤΕ ΑΥΤΟ ΤΟ ΛΟΓΙΣΜΙΚΟ. ΔΕΙΤΕ ΤΙΣ ΣΗΜΕΙΩΣΕΙΣ ΕΚΔΟΣΗΣ ΤΟΥ MPLAB XC8 C COMPILER ΓΙΑ ΕΓΓΡΑΦΟ PIC ΕΑΝ ΧΡΗΣΙΜΟΠΟΙΕΙΤΕ ΤΟΝ ΜΕΤΑΓΡΑΦΗ ΓΙΑ ΣΥΣΚΕΥΕΣ PIC 8-BIT.

Υπερview

1.1. Εισαγωγή
Αυτή η έκδοση του μεταγλωττιστή Microchip MPLAB® XC8 C περιέχει πολλές νέες δυνατότητες και διορθώσεις σφαλμάτων.
1.2. Ημερομηνία κατασκευής
Η επίσημη ημερομηνία κατασκευής αυτής της έκδοσης μεταγλωττιστή είναι η 8 Φεβρουαρίου 2023.
1.3. Προηγούμενη έκδοση
Η προηγούμενη έκδοση μεταγλωττιστή MPLAB XC8 C ήταν 2.40 που δημιουργήθηκε στις 3 Ιουλίου 2022.
1.4. Εγχειρίδιο Λειτουργικής Ασφάλειας
Ένα Εγχειρίδιο λειτουργικής ασφάλειας για τους μεταγλωττιστές MPLAB XC είναι διαθέσιμο στο πακέτο τεκμηρίωσης όταν αγοράζετε μια άδεια λειτουργίας λειτουργικής ασφάλειας.
1.5. Άδειες χρήσης και εκδόσεις στοιχείων
Τα εργαλεία MPLAB XC8 C Compiler για τα εργαλεία AVR MCU είναι γραμμένα και διανέμονται υπό τη Γενική Άδεια Δημόσιας Χρήσης GNU (GPL) που σημαίνει ότι ο πηγαίος κώδικας του διανέμεται ελεύθερα και είναι διαθέσιμος στο κοινό.
Ο πηγαίος κώδικας για τα εργαλεία στο πλαίσιο της GNU GPL μπορεί να ληφθεί ξεχωριστά από το Microchip webιστοσελίδα. Μπορείτε να διαβάσετε την GNU GPL στο αρχείο με το όνομα που βρίσκεται στον υποκατάλογο του καταλόγου install License.txt avr/doc. Μια γενική συζήτηση των αρχών που διέπουν την GPL μπορεί να βρεθεί εδώ.
Ο κώδικας υποστήριξης που παρέχεται για τα αρχεία κεφαλίδας, τα σενάρια σύνδεσης και οι βιβλιοθήκες χρόνου εκτέλεσης είναι αποκλειστικός κώδικας και δεν καλύπτονται από την GPL.
Αυτός ο μεταγλωττιστής είναι μια υλοποίηση της GCC έκδοσης 5.4.0, binutils έκδοσης 2.26 και χρησιμοποιεί avr-libc έκδοση 2.0.0.
1.6. Απαιτήσεις συστήματος
Ο μεταγλωττιστής MPLAB XC8 C και το λογισμικό αδειοδότησης που χρησιμοποιεί είναι διαθέσιμα για μια ποικιλία λειτουργικών συστημάτων, συμπεριλαμβανομένων των εκδόσεων 64-bit των παρακάτω: Επαγγελματικές εκδόσεις των Microsoft® Windows® 10; Ubuntu® 18.04; και macOS® 10.15.5. Τα δυαδικά αρχεία για Windows έχουν υπογραφεί με κωδικό. Τα δυαδικά αρχεία για macOS έχουν υπογραφεί κωδικοποιημένα και συμβολαιογραφικά. Ο διακομιστής αδειών χρήσης δικτύου MPLAB XC είναι διαθέσιμος για μια ποικιλία λειτουργικών συστημάτων 64-bit, συμπεριλαμβανομένων των Microsoft Windows 10 και νεότερες εκδόσεις. Ubuntu 18.04 και νεότερη έκδοση. ή macOS 10.15 και νεότερη έκδοση. Ο διακομιστής μπορεί επίσης να εκτελείται σε διάφορα άλλα λειτουργικά συστήματα, συμπεριλαμβανομένων των διανομών Windows Server, Linux, όπως Oracle® Enterprise Linux® και Red Hate Enterprise Linux, καθώς και παλαιότερες εκδόσεις υποστηριζόμενων λειτουργικών συστημάτων. Ωστόσο, ο διακομιστής αδειών χρήσης δικτύου MPLAB XC δεν έχει δοκιμαστεί σε αυτά τα λειτουργικά συστήματα. Ο διακομιστής αδειών δικτύου MPLAB XC μπορεί να εκτελεστεί σε εικονικές μηχανές του υποστηριζόμενου λειτουργικού συστήματος χρησιμοποιώντας μια άδεια εικονικής μηχανής για άδειες δικτύου (SW006021-VM). Όλες οι εκδόσεις 32-bit του διακομιστή δικτύου MPLAB XC διακόπτονται από την έκδοση 3.00.
Υποστηριζόμενες συσκευές
Αυτός ο μεταγλωττιστής υποστηρίζει όλες τις διαθέσιμες συσκευές AVR MCU 8-bit τη στιγμή της κυκλοφορίας. Δείτε (στον κατάλογο του μεταγλωττιστή) για μια λίστα με όλες τις υποστηριζόμενες συσκευές. Αυτά τα αρχεία παρατίθενται επίσης
avr_chipinfo.html ρυθμίσεις bit διαμόρφωσης εγγράφου για κάθε συσκευή.

1.7. Εκδόσεις και αναβαθμίσεις αδειών
Ο μεταγλωττιστής MPLAB XC8 μπορεί να ενεργοποιηθεί ως προϊόν με άδεια χρήσης (PRO) ή χωρίς άδεια χρήσης (Δωρεάν). Πρέπει να αγοράσετε ένα κλειδί ενεργοποίησης για την άδεια χρήσης του μεταγλωττιστή σας. Μια άδεια επιτρέπει υψηλότερο επίπεδο βελτιστοποίησης σε σύγκριση με το δωρεάν προϊόν. Ένας μεταγλωττιστής χωρίς άδεια μπορεί να λειτουργήσει επ' αόριστον χωρίς άδεια. Ένας μεταγλωττιστής λειτουργικής ασφάλειας MPLAB XC8 πρέπει να ενεργοποιηθεί με άδεια λειτουργίας λειτουργικής ασφάλειας που αγοράστηκε από τη Microchip. Ο μεταγλωττιστής δεν θα λειτουργήσει χωρίς αυτήν την άδεια. Μόλις ενεργοποιηθεί, μπορείτε να επιλέξετε οποιοδήποτε επίπεδο βελτιστοποίησης και να χρησιμοποιήσετε όλες τις δυνατότητες του μεταγλωττιστή. Αυτή η έκδοση του MPLAB XC Functional Safety Compiler υποστηρίζει την άδεια διακομιστή δικτύου.
Ανατρέξτε στο έγγραφο Εγκατάσταση και Αδειοδότηση MPLAB XC C Compilers (DS50002059) για πληροφορίες σχετικά με τους τύπους αδειών και την εγκατάσταση του μεταγλωττιστή με άδεια χρήσης.

1.8. Εγκατάσταση και ενεργοποίηση
Δείτε επίσης τις ενότητες Ζητήματα μετεγκατάστασης και περιορισμοί για σημαντικές πληροφορίες σχετικά με τον πιο πρόσφατο διαχειριστή αδειών που περιλαμβάνεται σε αυτόν τον μεταγλωττιστή.
Εάν χρησιμοποιείτε MPLAB IDE, φροντίστε να εγκαταστήσετε την πιο πρόσφατη έκδοση MPLAB X IDE 5.0 ή νεότερη πριν εγκαταστήσετε αυτό το εργαλείο. Κλείστε το IDE πριν εγκαταστήσετε τον μεταγλωττιστή. Εκτελέστε την εφαρμογή εγκατάστασης (Windows), (Linux) ή (macOS) .exe .run .app compiler, π.χ. και ακολουθήστε τις οδηγίες στην οθόνη. XC8-1.00.11403-windows.exe Συνιστάται ο προεπιλεγμένος κατάλογος εγκατάστασης. Εάν χρησιμοποιείτε Linux, πρέπει να εγκαταστήσετε τον μεταγλωττιστή χρησιμοποιώντας ένα τερματικό και από έναν λογαριασμό root. Εγκαταστήστε χρησιμοποιώντας έναν λογαριασμό macOS με δικαιώματα διαχειριστή.
Η ενεργοποίηση πραγματοποιείται πλέον ξεχωριστά από την εγκατάσταση. Δείτε το έγγραφο License Manager for MPLAB® XC C Compilers (DS52059) για περισσότερες πληροφορίες.
Εάν επιλέξετε να εκτελέσετε τον μεταγλωττιστή με την άδεια αξιολόγησης, θα λαμβάνετε τώρα μια προειδοποίηση κατά τη μεταγλώττιση όταν είστε εντός 14 ημερών από το τέλος της περιόδου αξιολόγησης. Η ίδια προειδοποίηση εκδίδεται εάν βρίσκεστε εντός 14 ημερών από τη λήξη της συνδρομής σας HPA.
Ο διακομιστής αδειών χρήσης δικτύου XC είναι ξεχωριστό πρόγραμμα εγκατάστασης και δεν περιλαμβάνεται στο πρόγραμμα εγκατάστασης μεταγλωττιστή ενός χρήστη.
Το XC License Manager υποστηρίζει πλέον την περιαγωγή αδειών πλωτού δικτύου. Απευθύνεται σε χρήστες κινητών τηλεφώνων, αυτή η δυνατότητα επιτρέπει σε μια κυμαινόμενη άδεια να βγαίνει εκτός δικτύου για σύντομο χρονικό διάστημα. Χρησιμοποιώντας αυτήν τη δυνατότητα, μπορείτε να αποσυνδεθείτε από το δίκτυο και να συνεχίσετε να χρησιμοποιείτε τον μεταγλωττιστή MPLAB XC. Δείτε το φάκελο doc της εγκατάστασης XCLM για περισσότερα σχετικά με αυτήν τη δυνατότητα.
Το MPLAB X IDE περιλαμβάνει ένα παράθυρο αδειών (Εργαλεία > Άδειες) για οπτική διαχείριση της περιαγωγής.

1.8.1. Επίλυση προβλημάτων εγκατάστασης
Εάν αντιμετωπίζετε δυσκολίες με την εγκατάσταση του μεταγλωττιστή σε οποιοδήποτε από τα λειτουργικά συστήματα Windows, δοκιμάστε τις παρακάτω προτάσεις.
Εκτελέστε την εγκατάσταση ως διαχειριστής.
Ορίστε τα δικαιώματα της εφαρμογής εγκατάστασης σε «Πλήρης έλεγχος». (Κάντε δεξί κλικ στο αρχείο, επιλέξτε Ιδιότητες, καρτέλα Ασφάλεια, επιλέξτε χρήστη, επεξεργαστείτε.)
Ορίστε τα δικαιώματα του φακέλου temp σε "Πλήρης έλεγχος".
Για να προσδιορίσετε τη θέση του φακέλου temp, πληκτρολογήστε %temp% στην εντολή Εκτέλεση (πλήκτρο λογότυπου των Windows + R).
Αυτό θα ανοίξει ένα παράθυρο διαλόγου εξερεύνησης αρχείων που δείχνει αυτόν τον κατάλογο και θα σας επιτρέψει να προσδιορίσετε τη διαδρομή αυτού του φακέλου.
1.9. Τεκμηρίωση μεταγλωττιστή
Οι οδηγοί χρήστη του μεταγλωττιστή μπορούν να ανοίξουν από τη σελίδα HTML που ανοίγει στο πρόγραμμα περιήγησής σας όταν κάνετε κλικ στο μπλε κουμπί βοήθειας στον πίνακα εργαλείων MPLAB X IDE, όπως υποδεικνύεται στο στιγμιότυπο οθόνης.

Εάν σχεδιάζετε στόχους AVR 8-bit, ο Οδηγός χρήστη MPLAB® XC8 C Compiler για AVR® MCU περιέχει πληροφορίες σχετικά με τις επιλογές και τις δυνατότητες του μεταγλωττιστή που ισχύουν για αυτήν την αρχιτεκτονική.

Λογισμικό ανάπτυξης μεταγλωττιστή MICROCHIP MPLAB XC8 C -

1.10. Υποστήριξη πελατών
Το Microchip καλωσορίζει αναφορές σφαλμάτων, προτάσεις ή σχόλια σχετικά με αυτήν την έκδοση μεταγλωττιστή. Κατευθύνετε τυχόν αναφορές σφαλμάτων ή αιτήματα λειτουργιών μέσω του Συστήματος Υποστήριξης.

Ενημερώσεις τεκμηρίωσης

Για on-line και ενημερωμένες εκδόσεις της τεκμηρίωσης MPLAB XC8, επισκεφτείτε την ηλεκτρονική τεχνική τεκμηρίωση της Microchip webιστοσελίδα. Νέα ή ενημερωμένη τεκμηρίωση AVR σε αυτήν την έκδοση:

  • Οδηγός χρήστη MPLAB® XC8 C Compiler για AVR® MCU (αναθεώρηση G)
  • Οδηγός μετεγκατάστασης AVR® GNU Toolchain to MPLAB® XC8 (αναθεώρηση Α)
  • Οδηγός χρήστη Hexmate (αναθεώρηση Β)

Ο Οδηγός μετεγκατάστασης της αλυσίδας εργαλείων AVR® GNU σε MPLAB® XC8 περιγράφει τις αλλαγές στον πηγαίο κώδικα και τις επιλογές κατασκευής που ενδέχεται να απαιτηθούν εάν αποφασίσετε να μετεγκαταστήσετε ένα έργο που βασίζεται σε C από την αλυσίδα εργαλείων AVR 8-bit GNU στον Μεταγλωττιστή Microchip MPLAB XC8 C. Ο Οδηγός αναφοράς Microchip Unified Standard Library περιγράφει τη συμπεριφορά και τη διεπαφή με τις λειτουργίες που ορίζονται από την Ενοποιημένη Τυπική Βιβλιοθήκη Microchip, καθώς και την προβλεπόμενη χρήση των τύπων και μακροεντολών βιβλιοθήκης. Ορισμένες από αυτές τις πληροφορίες περιέχονταν στο παρελθόν στον Οδηγό χρήστη MPLAB® XC8 C Compiler για το AVR® MCU. Σε αυτόν τον οδηγό μεταγλωττιστή εξακολουθούν να περιέχονται πληροφορίες βιβλιοθήκης για συγκεκριμένες συσκευές.
Εάν μόλις ξεκινάτε με συσκευές 8 bit και τον μεταγλωττιστή MPLAB XC8 C, ο Οδηγός χρήστη MPLAB® XC8 για ενσωματωμένους μηχανικούς – AVR® MCU (DS50003108) έχει πληροφορίες σχετικά με τη ρύθμιση έργων στο MPLAB X IDE και τη σύνταξη κώδικα για πρώτο έργο MPLAB XC8 C. Αυτός ο οδηγός διανέμεται τώρα με τον μεταγλωττιστή.
Ο Οδηγός χρήστη Hexmate προορίζεται για όσους εκτελούν το Hexmate ως αυτόνομη εφαρμογή.

Τι νέο υπάρχει

Τα ακόλουθα είναι νέες δυνατότητες AVR-στόχου που υποστηρίζει τώρα ο μεταγλωττιστής. Ο αριθμός έκδοσης στις υπότιτλους υποδεικνύει την πρώτη έκδοση μεταγλωττιστή που υποστηρίζει τα χαρακτηριστικά που ακολουθούν.
3.1. Έκδοση 2.41
Υποστήριξη εκκίνησης (XC8-3053) Ο μεταγλωττιστής θα τοποθετήσει το περιεχόμενο οποιωνδήποτε ενοτήτων με ένα πρόθεμα at.bootrow διεύθυνση 0x860000 στο αρχείο HEX. Αυτές οι ενότητες χρησιμοποιούνται για τη μνήμη BOOTROW, η οποία έχει σχεδιαστεί για την αποθήκευση κλειδιών και άλλων ασφαλών πληροφοριών που θα πρέπει να είναι προσβάσιμες μόνο σε ένα bootloader.

Εξάλειψη πλεονάζουσας επιστροφής (XC8-3048) Ο μεταγλωττιστής θα εξαλείψει τώρα τις περιττές εντολές στις συναρτήσεις ret με ένα άλμα ουράς όταν χρησιμοποιούνται προσαρμοσμένα σενάρια σύνδεσης. Αυτή είναι μια παρόμοια βελτιστοποίηση με αυτή που εκτελούνταν προηγουμένως, αλλά τώρα εκτελείται σε όλες τις ορφανές ενότητες, ακόμα κι αν χρησιμοποιείται μια προσαρμοσμένη δέσμη ενεργειών σύνδεσης και δεν υπάρχει το σχήμα κατανομής της καλύτερης προσαρμογής. Αλλαγή τύπου ώρας (XC8-2982, 2932) Ο τυπικός τύπος βιβλιοθήκης C99, έχει αλλάξει από time_t σε τύπο, ο οποίος παρέχει βελτιώσεις μεγέθους κώδικα σε ορισμένες μακροχρόνιες συναρτήσεις που σχετίζονται με το χρόνο, όπως π.χ. ανυπόγραφο long mktime()
Νέο nop (XC8-2946, 2945) Η μακροεντολή προστέθηκε στο. Αυτή η μακροεντολή εισάγει ένα no-NOP() οδηγίες λειτουργίας nop στην έξοδο.
Ενημέρωση σε XCLM (XC8-2944) Ο διαχειριστής αδειών χρήσης που χρησιμοποιήθηκε με τον μεταγλωττιστή έχει ενημερωθεί και πλέον αποκρίνεται περισσότερο κατά τον έλεγχο των στοιχείων άδειας χρήσης του μεταγλωττιστή.
Trampolined κλήσεις (XC8-2760) Ο μεταγλωττιστής μπορεί τώρα να αντικαταστήσει τις εντολές κλήσεων μεγάλης μορφής με μικρότερες σχετικές κλήσεις όταν οι σχετικές μορφές των εντολών θα ήταν κανονικά εκτός του εύρους του προορισμού τους. Σε αυτήν την περίπτωση, ο μεταγλωττιστής θα προσπαθήσει να αντικαταστήσει με οδηγίες για να καλέσει την κλήση μια εντολή που θα 'trampεκτέλεση στην απαιτούμενη διεύθυνση, π.χample: jmp
rcall tramp_foo ; was call foo

rcall tramp_foo

tramp_foo:
τζμπ φου

Αυτή η βελτιστοποίηση, μαζί με παρόμοιες βελτιστοποιήσεις ροής προγραμμάτων, ελέγχεται από την επιλογή -mrelax.

3.2. Έκδοση 2.40
Υποστήριξη νέας συσκευής είναι τώρα διαθέσιμη για τα ακόλουθα ανταλλακτικά AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64DAV28, AVR64D32, AVR64, AVR48DDXNUMX AVRXNUMXEAXNUMX.
Βελτιωμένη αφαίρεση διαδικασίας Το εργαλείο βελτιστοποίησης διαδικαστικής αφαίρεσης (PA) έχει βελτιωθεί έτσι ώστε να μπορεί να περιγραφεί ο κώδικας που περιέχει μια εντολή κλήσης συνάρτησης (/ ). Αυτό θα πραγματοποιηθεί μόνο κλήση rcall εάν η στοίβα δεν χρησιμοποιείται για να μεταβιβάσει ορίσματα ούτε να λάβει επιστρεφόμενη τιμή από τη συνάρτηση. Η στοίβα χρησιμοποιείται κατά την κλήση μιας συνάρτησης με μια λίστα μεταβλητών ορισμάτων ή κατά την κλήση μιας συνάρτησης που δέχεται περισσότερα ορίσματα από ό,τι υπάρχουν καταχωρητές που έχουν καθοριστεί για αυτόν τον σκοπό. Αυτή η δυνατότητα μπορεί να απενεργοποιηθεί χρησιμοποιώντας την επιλογή ή η αφαίρεση διαδικασιών μπορεί να απενεργοποιηθεί εντελώς για ένα αρχείο αντικειμένου ή συνάρτηση χρησιμοποιώντας το- και, αντίστοιχα, ή χρησιμοποιώντας το χαρακτηριστικό (specificer) επιλεκτικά με συναρτήσεις.
mno-pa-outline-calls -mno-pa-on-file -mno-pa-on-function nopa μακροεντολή κάλυψης κώδικα Ο μεταγλωττιστής ορίζει τώρα τη μακροεντολή εάν μια έγκυρη επιλογή είναι __nopa __CODECOV -mcodecov specified.
Επιλογή κράτησης μνήμης Ο οδηγός θα αποδεχτεί τώρα την επιλογή xc8-cc -mreserve=space@start:end κατά τη δημιουργία στόχων AVR. Αυτή η επιλογή διατηρεί το καθορισμένο εύρος μνήμης είτε στο χώρο της μνήμης δεδομένων είτε του προγράμματος, αποτρέποντας τη συμπλήρωση κώδικα ή αντικειμένων σε αυτήν την περιοχή από τον σύνδεσμο. Εξυπνότερο έξυπνο IO Αρκετές βελτιώσεις έχουν γίνει στις λειτουργίες Smart IO, συμπεριλαμβανομένων γενικών τροποποιήσεων στον πυρήνα του printf, αντιμετωπίζοντας τον προσδιοριστή μετατροπής %n ως ανεξάρτητη παραλλαγή, συνδέοντας σε vararg pop ρουτίνες κατ' απαίτηση, χρησιμοποιώντας μικρότερους τύπους δεδομένων όπου είναι δυνατόν για χειρισμό Ορίσματα συνάρτησης IO και παραγοντοποίηση κοινού κώδικα σε πλάτος πεδίου και χειρισμό ακριβείας. Αυτό μπορεί να οδηγήσει σε σημαντική εξοικονόμηση κώδικα και δεδομένων, καθώς και να αυξήσει την ταχύτητα εκτέλεσης του IO.

3.3. Έκδοση 2.39 (Λειτουργική έκδοση ασφαλείας)
Άδεια διακομιστή δικτύου Αυτή η έκδοση του MPLAB XC8 Functional Safety Compiler υποστηρίζει την άδεια διακομιστή δικτύου.
3.4. Έκδοση 2.36
Κανένας.

3.5. Έκδοση 2.35
Υποστήριξη νέας συσκευής Διατίθεται υποστήριξη για τα ακόλουθα ανταλλακτικά AVR: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 και AVR64DD32.
Βελτιωμένη εναλλαγή περιβάλλοντος Η νέα επιλογή -mcall-isr-prologues αλλάζει τον τρόπο με τον οποίο οι συναρτήσεις διακοπής αποθηκεύουν τους καταχωρητές κατά την είσοδο και τον τρόπο με τον οποίο αυτοί οι καταχωρητές αποκαθίστανται όταν τερματίζεται η ρουτίνα διακοπής. Λειτουργεί με παρόμοιο τρόπο με την επιλογή -mcall-prologues, αλλά επηρεάζει μόνο τις λειτουργίες διακοπής (ISR).
Ακόμη πιο βελτιωμένη εναλλαγή περιβάλλοντος Η νέα επιλογή -mgas-isr-prologues ελέγχει τον κώδικα του διακόπτη περιβάλλοντος που δημιουργείται για ρουτίνες υπηρεσίας μικρών διακοπών. Όταν είναι ενεργοποιημένη, αυτή η δυνατότητα θα κάνει τον assembler να σαρώσει το ISR για χρήση καταχωρητή και να αποθηκεύσει αυτούς τους καταχωρητές που χρησιμοποιούνται μόνο εάν απαιτείται.
Ρυθμιζόμενη αντιστοίχιση flash Ορισμένες συσκευές της οικογένειας AVR DA και AVR DB διαθέτουν SFR (π.χ. FLMAP) που καθορίζει ποιο τμήμα 32k της μνήμης προγράμματος θα αντιστοιχιστεί στη μνήμη δεδομένων. Η νέα επιλογή – mconst-data-in-config-mapped-progmem μπορεί να χρησιμοποιηθεί ώστε ο σύνδεσμος να τοποθετεί όλα τα αναγνωρισμένα δεδομένα σε ένα τμήμα 32k και να αρχικοποιεί αυτόματα τον σχετικό καταχωρητή SFR για να διασφαλίσει ότι αυτά τα δεδομένα αντιστοιχίζονται στη μνήμη δεδομένων χώρο, όπου θα έχει πιο αποτελεσματική πρόσβαση.
Microchip Unified Standard Libraries Όλοι οι μεταγλωττιστές MPLAB XC θα μοιράζονται μια Ενιαία Πρότυπη Βιβλιοθήκη Microchip, η οποία είναι τώρα διαθέσιμη με αυτήν την έκδοση του MPLAB XC8. Ο Οδηγός χρήστη MPLA# XC8 C Compiler για AVO MCU δεν περιλαμβάνει πλέον την τεκμηρίωση για αυτές τις τυπικές λειτουργίες. Αυτές οι πληροφορίες βρίσκονται πλέον στον Οδηγό αναφοράς Microchip Unified Standard Library. Σημειώστε ότι κάποια λειτουργικότητα που είχε οριστεί προηγουμένως από το avr-libc δεν είναι πλέον διαθέσιμη. (Δείτε τη λειτουργία Lila.)
Smart I0 Ως μέρος των νέων ενοποιημένων βιβλιοθηκών, οι λειτουργίες I0 στις οικογένειες printf και scanf δημιουργούνται πλέον προσαρμοσμένα σε κάθε έκδοση, με βάση τον τρόπο με τον οποίο χρησιμοποιούνται αυτές οι λειτουργίες στο πρόγραμμα. Αυτό μπορεί να μειώσει σημαντικά τους πόρους που χρησιμοποιούνται από ένα πρόγραμμα.
Επιλογή βοήθειας Smart ICI Κατά την ανάλυση κλήσεων σε έξυπνες συναρτήσεις I0 (όπως εκτύπωση f () ή scanf ()), ο μεταγλωττιστής δεν μπορεί πάντα να προσδιορίσει από τη συμβολοσειρά μορφής ή να συναγάγει από τα ορίσματα εκείνους τους προσδιοριστές μετατροπής που απαιτούνται από την κλήση. Προηγουμένως, ο μεταγλωττιστής δεν έκανε πάντα υποθέσεις και διασφάλιζε ότι 10 πλήρως λειτουργικές συναρτήσεις ήταν συνδεδεμένες στην τελική εικόνα του προγράμματος. Προστέθηκε μια νέα επιλογή – msmart-io-format=fmt, έτσι ώστε ο μεταγλωττιστής να μπορεί αντί αυτού να ενημερώνεται από τον χρήστη για τους προσδιοριστές μετατροπής που χρησιμοποιούνται από τις έξυπνες συναρτήσεις I0 των οποίων η χρήση είναι ασαφής, αποτρέποντας τη σύνδεση υπερβολικά μεγάλων 10 ρουτινών. (Δείτε την επιλογή smart-io-format για περισσότερες λεπτομέρειες.)
Τοποθέτηση προσαρμοσμένων ενοτήτων Παλαιότερα, η επιλογή -W1, -section-start τοποθετούσε την καθορισμένη ενότητα στην ζητούμενη διεύθυνση μόνο όταν το σενάριο σύνδεσης όριζε μια ενότητα εξόδου με το ίδιο όνομα. Όταν δεν συνέβαινε αυτό, η ενότητα τοποθετήθηκε σε μια διεύθυνση που είχε επιλέξει ο σύνδεσμος και η επιλογή ουσιαστικά αγνοήθηκε. Τώρα η επιλογή θα τηρηθεί για όλες τις προσαρμοσμένες ενότητες, ακόμα κι αν το σενάριο σύνδεσης δεν ορίζει την ενότητα. Σημειώστε, ωστόσο, ότι για τυπικές ενότητες, όπως . κείμενο,. bss ή . δεδομένα, ο κατανεμητής καλύτερης προσαρμογής θα εξακολουθεί να έχει τον πλήρη έλεγχο της τοποθέτησής τους και η επιλογή δεν θα έχει κανένα αποτέλεσμα. Χρησιμοποιήστε την επιλογή -ton, -Tsection=addr, όπως περιγράφεται στον οδηγό χρήσης.
3.6. Έκδοση 2.32
Καθοδήγηση στοίβας Διαθέσιμο με άδεια μεταγλωττιστή PRO, η δυνατότητα καθοδήγησης στοίβας του μεταγλωττιστή μπορεί να χρησιμοποιηθεί για την εκτίμηση του μέγιστου βάθους οποιασδήποτε στοίβας που χρησιμοποιείται από ένα πρόγραμμα. Κατασκευάζει και αναλύει το γράφημα κλήσης ενός προγράμματος, καθορίζει τη χρήση στοίβας κάθε συνάρτησης και παράγει μια αναφορά, από την οποία μπορεί να συναχθεί το βάθος των στοίβων που χρησιμοποιούνται από το πρόγραμμα. Αυτή η δυνατότητα ενεργοποιείται μέσω της επιλογής γραμμής εντολών -mchp-stack-usage. Μια περίληψη της χρήσης στοίβας εκτυπώνεται μετά την εκτέλεση. Μια λεπτομερής αναφορά στοίβας είναι διαθέσιμη στον χάρτη file, το οποίο μπορεί να ζητηθεί με τον συνήθη τρόπο.
Υποστήριξη νέας συσκευής είναι διαθέσιμη για τα ακόλουθα εξαρτήματα AVR: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DBD28, AVR32 AVR28DB64. Υποστήριξη ανασυρόμενων συσκευών Η υποστήριξη δεν είναι πλέον διαθέσιμη για τα ακόλουθα εξαρτήματα AVR: AVR32DA32, AVR48DA16 και, AVR28DA16.
3.7. Έκδοση 2.31
Κανένας.
3.8. Έκδοση 2.30
Νέα επιλογή για την αποτροπή της αρχικοποίησης δεδομένων Μια νέα επιλογή προγράμματος οδήγησης -mno-data-init αποτρέπει την προετοιμασία των δεδομένων και την εκκαθάριση των τμημάτων bss. Λειτουργεί καταστέλλοντας την έξοδο των δεδομένων do copy και καθαρίζει τα σύμβολα bss στη συναρμολόγηση files, το οποίο με τη σειρά του θα αποτρέψει τη συμπερίληψη αυτών των ρουτινών από τον σύνδεσμο.
Βελτιωμένες βελτιστοποιήσεις Έχουν πραγματοποιηθεί ορισμένες βελτιώσεις βελτιστοποίησης, συμπεριλαμβανομένης της αφαίρεσης περιττών εντολών επιστροφής, της αφαίρεσης ορισμένων πηδημάτων μετά από μια εντολή παράβλεψης αν είναι bit και βελτιωμένης αφαίρεσης διαδικασιών και της δυνατότητας επανάληψης αυτής της διαδικασίας. Πρόσθετες επιλογές είναι πλέον διαθέσιμες για τον έλεγχο ορισμένων από αυτές τις βελτιστοποιήσεις, συγκεκριμένα -f section-anchors, που επιτρέπει την πρόσβαση στατικών αντικειμένων που εκτελούνται σε σχέση με ένα σύμβολο. -mpa-iterations=n, που επιτρέπει την αλλαγή του αριθμού των επαναλήψεων αφαίρεσης της διαδικασίας από την προεπιλογή των 2. και, -mpa-callcost-shortcall, που εκτελεί πιο επιθετική διαδικαστική αφαίρεση, με την ελπίδα ότι ο σύνδεσμος μπορεί να χαλαρώσει τις μεγάλες κλήσεις. Αυτή η τελευταία επιλογή μπορεί να αυξήσει το μέγεθος του κώδικα εάν δεν πραγματοποιηθούν οι υποκείμενες παραδοχές.
Υποστήριξη νέας συσκευής είναι διαθέσιμη για τα ακόλουθα ανταλλακτικά AVR: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48DA64, AVR64DA128, ABRAV 28, AVR128DB32 και AVR128DB48. Η υποστήριξη της ανασυρόμενης συσκευής δεν είναι πλέον διαθέσιμη για τα ακόλουθα εξαρτήματα AVR: ATA128, ATA64, ATA5272N, ATA5790, ATA5790, ATA5791, ATA5795, ATA6285C, ATA6286C, ATA6612Q, ATA6613, ATA6614, ATA6616Q, ATA6617.
3.9. Έκδοση 2.29 (Λειτουργική έκδοση ασφαλείας)
Επί κεφαλής file για ενσωματωμένα συστήματα μεταγλωττιστή Για να διασφαλιστεί ότι ο μεταγλωττιστής μπορεί να συμμορφώνεται με τις προδιαγραφές γλώσσας όπως η MISRA, επί κεφαλής file, το οποίο περιλαμβάνεται αυτόματα από , έχει ενημερωθεί. Αυτή η κεφαλίδα περιέχει τα πρωτότυπα για όλες τις ενσωματωμένες συναρτήσεις, όπως τοbuildin_avr_nop ( ) και το ενσωματωμένο avr delay_cycles () . Ορισμένα ενσωματωμένα μπορεί να μην είναι συμβατά με το MISRA. Αυτά μπορούν να παραλειφθούν προσθέτοντας το defineXCSTRICT_MISRA στη γραμμή εντολών του μεταγλωττιστή. Τα ενσωματωμένα και οι δηλώσεις τους έχουν ενημερωθεί για να χρησιμοποιούν τύπους σταθερού πλάτους.
3.10. Έκδοση 2.20
Υποστήριξη νέας συσκευής Διατίθεται υποστήριξη για τα ακόλουθα ανταλλακτικά AVR: ATTINY1624, ATTINY1626 και ATTINY1627.
Καλύτερη κατανομή καλύτερης προσαρμογής Ο κατανεμητής καλύτερης προσαρμογής (BFA) στον μεταγλωττιστή έχει βελτιωθεί έτσι ώστε οι ενότητες να κατανέμονται με μια σειρά που επιτρέπει καλύτερη βελτιστοποίηση. Το BFA υποστηρίζει πλέον επώνυμους χώρους διευθύνσεων και χειρίζεται καλύτερα την αρχικοποίηση δεδομένων.
Βελτιωμένη αφαίρεση διαδικασίας Οι βελτιστοποιήσεις διαδικαστικής αφαίρεσης εκτελούνται πλέον σε περισσότερες ακολουθίες κώδικα. Προηγούμενες καταστάσεις όπου αυτή η βελτιστοποίηση μπορεί να είχε αυξήσει το μέγεθος του κώδικα αντιμετωπίστηκαν με την ενημέρωση του κώδικα βελτιστοποίησης της διαδικασίας συλλογής σκουπιδιών του συνδέσμου.
Απουσία AVR Assembler Το AVR Assembler δεν περιλαμβάνεται πλέον σε αυτήν τη διανομή.
3.11. Έκδοση 2.19 (Λειτουργική έκδοση ασφαλείας)
Κανένας.
3.12. Έκδοση 2.10
Κάλυψη κώδικα Αυτή η έκδοση περιλαμβάνει μια δυνατότητα κάλυψης κώδικα που διευκολύνει την ανάλυση του βαθμού στον οποίο έχει εκτελεστεί ο πηγαίος κώδικας ενός έργου. Χρησιμοποιήστε την επιλογή -mcodecov=ram για να την ενεργοποιήσετε. Μετά την εκτέλεση του προγράμματος στο υλικό σας, οι πληροφορίες κάλυψης κώδικα θα συγκεντρωθούν στη συσκευή και αυτές μπορούν να μεταφερθούν και να εμφανιστούν από το MPLAB X IDE μέσω μιας προσθήκης κάλυψης κώδικα. Ανατρέξτε στην τεκμηρίωση IDE για πληροφορίες σχετικά με αυτήν την προσθήκη. Το #pragma nocodecov μπορεί να χρησιμοποιηθεί για τον αποκλεισμό επακόλουθων λειτουργιών από την ανάλυση κάλυψης. Ιδανικά το pragma θα πρέπει να προστεθεί στην αρχή του file για να το αποκλείσουμε ολόκληρο file από την ανάλυση κάλυψης. Εναλλακτικά, το _attribute_ ( (nocodecov) ) μπορεί να χρησιμοποιηθεί για τον αποκλεισμό μιας συγκεκριμένης συνάρτησης από την ανάλυση κάλυψης.
Περιγραφή συσκευής files Μια νέα συσκευή file ονομάζεται avr_chipinfo. Το html βρίσκεται στον κατάλογο των εγγράφων της διανομής του μεταγλωττιστή. Αυτό file παραθέτει όλες τις συσκευές που υποστηρίζονται από τον μεταγλωττιστή. Κάντε κλικ στο όνομα μιας συσκευής και θα ανοίξει μια σελίδα που δείχνει όλες τις επιτρεπόμενες ρυθμίσεις/τιμές bit διαμόρφωσης για αυτήν τη συσκευή, με π.χ.amples. Διαδικαστική αφαίρεση
Βελτιστοποιήσεις αφαίρεσης διαδικασίας, οι οποίες αντικαθιστούν κοινά μπλοκ κώδικα συναρμολόγησης με κλήσεις σε ένα εξαγόμενο αντίγραφο αυτού του μπλοκ, έχουν προστεθεί στον μεταγλωττιστή. Αυτά εκτελούνται από μια ξεχωριστή εφαρμογή, η οποία καλείται αυτόματα από τον μεταγλωττιστή κατά την επιλογή βελτιστοποιήσεων επιπέδου 2, 3 ή s. Αυτές οι βελτιστοποιήσεις μειώνουν το μέγεθος του κώδικα, αλλά ενδέχεται να μειώσουν την ταχύτητα εκτέλεσης και τη δυνατότητα εντοπισμού σφαλμάτων κώδικα. Η διαδικαστική αφαίρεση μπορεί να απενεργοποιηθεί σε υψηλότερα επίπεδα βελτιστοποίησης χρησιμοποιώντας την επιλογή -mno-pa ή μπορεί να ενεργοποιηθεί σε χαμηλότερα επίπεδα βελτιστοποίησης (ανάλογα με την άδειά σας) χρησιμοποιώντας -mpa. Μπορεί να απενεργοποιηθεί για ένα αντικείμενο file χρησιμοποιώντας -mno-pa-on-file=fileόνομα ή απενεργοποιημένη για μια συνάρτηση χρησιμοποιώντας -mno-pa-on-function=function. Μέσα στον πηγαίο κώδικα, η διαδικαστική αφαίρεση μπορεί να απενεργοποιηθεί για μια συνάρτηση χρησιμοποιώντας το χαρακτηριστικό ( (nopa) ) με τον ορισμό της συνάρτησης ή χρησιμοποιώντας το nopa, το οποίο επεκτείνεται στο χαρακτηριστικό ( (nopa, noinline) ) και έτσι εμποδίζει την ενσωμάτωση συνάρτησης και υπάρχει αφαίρεση του ενσωματωμένου κώδικα.
Υποστήριξη bit κλειδώματος στο pragma Το #pragma config μπορεί τώρα να χρησιμοποιηθεί για να καθορίσει τα bit κλειδώματος AVR καθώς και τα άλλα bit διαμόρφωσης. Ελέγξτε το avr_chipinfo. html file (αναφέρθηκε παραπάνω) για τα ζεύγη ρύθμισης/τιμής που θα χρησιμοποιηθούν με αυτήν την πράξη. Υποστήριξη νέας συσκευής Η υποστήριξη είναι διαθέσιμη για τα ακόλουθα εξαρτήματα: AVR28DAl28, AVR64DAl28, AVR32DA 128 και AVR48DA 128.
3.13. Έκδοση 2.05
Περισσότερα bit για το χρήμα σας Η έκδοση macOS αυτού του μεταγλωττιστή και του διαχειριστή αδειών είναι πλέον μια εφαρμογή 64-bit. Αυτό θα διασφαλίσει ότι ο μεταγλωττιστής θα εγκαταστήσει και θα εκτελεστεί χωρίς προειδοποιήσεις στις πρόσφατες εκδόσεις του macOS.
Αντικείμενα Const στη μνήμη προγράμματος Ο μεταγλωττιστής μπορεί τώρα να τοποθετήσει αντικείμενα που πληρούν τα κριτήρια const στη μνήμη Flash του προγράμματος, αντί να βρίσκονται στη μνήμη RAM. Ο μεταγλωττιστής έχει τροποποιηθεί έτσι ώστε τα καθολικά δεδομένα που πληρούν τις προϋποθέσεις να αποθηκεύονται στη μνήμη flash προγράμματος και να υπάρχει άμεση και έμμεση πρόσβαση σε αυτά τα δεδομένα χρησιμοποιώντας τις κατάλληλες οδηγίες μνήμης προγράμματος. Αυτή η νέα δυνατότητα είναι ενεργοποιημένη από προεπιλογή, αλλά μπορεί να απενεργοποιηθεί χρησιμοποιώντας την επιλογή -mno-const-data-in-progmem. Για τις αρχιτεκτονικές avrxmega3 και avrtiny, αυτή η δυνατότητα δεν απαιτείται και είναι πάντα απενεργοποιημένη, καθώς η μνήμη προγράμματος αντιστοιχίζεται στο χώρο διευθύνσεων δεδομένων για αυτές τις συσκευές.
Τυπικές δωρεάν Εκδόσεις χωρίς άδεια (δωρεάν) αυτού του μεταγλωττιστή επιτρέπουν πλέον βελτιστοποιήσεις μέχρι και το επίπεδο 2. Αυτό θα επιτρέψει μια παρόμοια, αν και όχι πανομοιότυπη, έξοδο με ό,τι ήταν προηγουμένως δυνατό χρησιμοποιώντας μια τυπική άδεια χρήσης.
Καλώς ορίσατε AVRASM2 Το πρόγραμμα συναρμολόγησης AVRASM2 για συσκευές 8-bit περιλαμβάνεται πλέον στο πρόγραμμα εγκατάστασης μεταγλωττιστή XC8. Αυτός ο assembler δεν χρησιμοποιείται από τον μεταγλωττιστή XC8, αλλά είναι διαθέσιμος για έργα που βασίζονται σε χειρόγραφη πηγή συναρμολόγησης.
Υποστήριξη νέας συσκευής Διατίθεται υποστήριξη για τα ακόλουθα μέρη: ATMEGA1608, ATMEGA1609, ATMEGA808 και ATMEGA809.

3.14. Έκδοση 2.00
Πρόγραμμα οδήγησης ανώτατου επιπέδου Ένα νέο πρόγραμμα οδήγησης, που ονομάζεται xc8-cc, βρίσκεται τώρα πάνω από το προηγούμενο πρόγραμμα οδήγησης avr-gcc και το πρόγραμμα οδήγησης xc8 και μπορεί να καλέσει τον κατάλληλο μεταγλωττιστή με βάση την επιλογή της συσκευής-στόχου. Αυτό το πρόγραμμα οδήγησης δέχεται επιλογές τύπου GCC, οι οποίες είτε μεταφράζονται είτε μεταβιβάζονται στον μεταγλωττιστή που εκτελείται. Αυτό το πρόγραμμα οδήγησης επιτρέπει τη χρήση παρόμοιου συνόλου επιλογών με παρόμοια σημασιολογία με οποιονδήποτε στόχο AVR ή PIC και είναι επομένως ο συνιστώμενος τρόπος για να καλέσετε τον μεταγλωττιστή. Εάν απαιτείται, το παλιό πρόγραμμα οδήγησης avr-gcc μπορεί να κληθεί απευθείας χρησιμοποιώντας τις επιλογές παλαιού τύπου που δεχόταν σε προηγούμενες εκδόσεις μεταγλωττιστή.
Κοινή διασύνδεση C Αυτός ο μεταγλωττιστής μπορεί τώρα να συμμορφωθεί με το MPLAB Common C Interface, επιτρέποντας την ευκολότερη μεταφορά του πηγαίου κώδικα σε όλους τους μεταγλωττιστές MPLAB XC. Η επιλογή -mext=cci ζητά αυτό το χαρακτηριστικό, επιτρέποντας εναλλακτική σύνταξη για πολλές επεκτάσεις γλώσσας.
Νέο πρόγραμμα οδήγησης βιβλιοθηκών Ένα νέο πρόγραμμα οδήγησης βιβλιοθηκών τοποθετείται πάνω από τον προηγούμενο βιβλιοθηκονόμο βιβλιοθηκών PIC και τον βιβλιοθηκάριο avr-ar AVR. Αυτό το πρόγραμμα οδήγησης δέχεται επιλογές στυλ αρχειοθέτησης GCC, οι οποίες είτε μεταφράζονται είτε μεταβιβάζονται στον βιβλιοθηκονόμο που εκτελείται. Το νέο πρόγραμμα οδήγησης επιτρέπει τη χρήση παρόμοιου συνόλου επιλογών με παρόμοια σημασιολογία για τη δημιουργία ή τον χειρισμό οποιασδήποτε βιβλιοθήκης PIC ή AVR file και επομένως είναι ο συνιστώμενος τρόπος για να επικαλεστείτε τον βιβλιοθηκάριο. Εάν απαιτείται για έργα παλαιού τύπου, ο προηγούμενος βιβλιοθηκάριος μπορεί να κληθεί απευθείας χρησιμοποιώντας τις παλιού τύπου επιλογές που αποδέχονταν σε προηγούμενες εκδόσεις μεταγλωττιστή.

Θέματα Μετανάστευσης

Τα παρακάτω είναι χαρακτηριστικά που πλέον αντιμετωπίζονται διαφορετικά από τον μεταγλωττιστή. Αυτές οι αλλαγές ενδέχεται να απαιτούν τροποποίηση στον πηγαίο κώδικα σας εάν μεταφέρετε τον κώδικα σε αυτήν την έκδοση μεταγλωττιστή. Ο αριθμός έκδοσης στις υπότιτλους υποδεικνύει την πρώτη έκδοση μεταγλωττιστή που υποστηρίζει τις αλλαγές που ακολουθούν.

4.1. Έκδοση 2.41
Καταργήθηκαν οι ανακριβείς συναρτήσεις fma (XC8-2913) Η τυπική βιβλιοθήκη C99 λειτουργίες fma 0 -family ( ) δεν υπολόγισε ένα πολλαπλασιαστικό πρόσθετο με άπειρη ακρίβεια σε μία μόνο στρογγυλοποίηση, αλλά συσσώρευσε σφάλματα στρογγυλοποίησης με κάθε λειτουργία. Αυτές οι λειτουργίες έχουν αφαιρεθεί από την παρεχόμενη βιβλιοθήκη.
4.2. Έκδοση 2.40
Κανένας.
4.3. Έκδοση 2.39 (Λειτουργική έκδοση ασφαλείας)
Κανένας.
4.4. Έκδοση 2.36 Καμία.
4.5. Έκδοση 2.35
Χειρισμός βάσεων string-to (XC8-2420) Για να διασφαλιστεί η συνέπεια με άλλους μεταγλωττιστές XC, οι συναρτήσεις XC8 string-to, όπως το strtol () κ.λπ., δεν θα επιχειρούν πλέον να μετατρέψουν μια συμβολοσειρά εισόδου εάν η καθορισμένη βάση είναι μεγαλύτερη από 36 και θα ορίσει το errno σε EINVAL. Το πρότυπο C δεν καθορίζει τη συμπεριφορά των συναρτήσεων όταν γίνεται υπέρβαση αυτής της βασικής τιμής.
Ακατάλληλες βελτιστοποιήσεις ταχύτητας Οι βελτιστοποιήσεις αφαίρεσης διαδικασίας ενεργοποιούνταν κατά την επιλογή βελτιστοποιήσεων επιπέδου 3 (-03). Αυτές οι βελτιστοποιήσεις μειώνουν το μέγεθος του κώδικα σε βάρος της ταχύτητας του κώδικα, επομένως δεν θα έπρεπε να έχουν εκτελεστεί. Τα έργα που χρησιμοποιούν αυτό το επίπεδο βελτιστοποίησης ενδέχεται να δουν διαφορές στο μέγεθος του κώδικα και την ταχύτητα εκτέλεσης όταν κατασκευάζονται με αυτήν την έκδοση.
Λειτουργία βιβλιοθήκης Ο κώδικας για πολλές από τις τυπικές συναρτήσεις της βιβλιοθήκης C προέρχεται τώρα από την Unified Standard Library του Microchip, η οποία ενδέχεται να παρουσιάζει διαφορετική συμπεριφορά σε ορισμένες περιπτώσεις σε σύγκριση με αυτήν που παρέχεται από την προηγούμενη βιβλιοθήκη avr-libc. Για π.χample, δεν είναι πλέον απαραίτητο να συνδεθείτε στη βιβλιοθήκη 1printf flt (επιλογή -1printf_flt) για να ενεργοποιήσετε τη μορφοποίηση I0 υποστήριξη για προσδιοριστές float-format. Ο έξυπνος I0 Τα χαρακτηριστικά της Ενοποιημένης Βιβλιοθήκης Microchip καθιστούν αυτήν την επιλογή περιττή. Επιπλέον, η χρήση ρουτινών με επίθημα _P για συναρτήσεις συμβολοσειράς και μνήμης (π.χ. strcpy_P ( ) κ.λπ.) που λειτουργούν σε συμβολοσειρές const σε flash δεν είναι πλέον απαραίτητη. Οι τυπικές ρουτίνες C (π.χ. strcpy ) θα λειτουργούν σωστά με τέτοια δεδομένα όταν είναι ενεργοποιημένη η δυνατότητα const-data-in-program-memory.

4.6. Έκδοση 2.32
Κανένας.
4.7. Έκδοση 2.31
Κανένας.
4.8. Έκδοση 2.30
Κανένας.
4.1. Έκδοση 2.29 (Λειτουργική έκδοση ασφαλείας)
Κανένας.
4.2. Έκδοση 2.20
Άλλαξε η διάταξη DFP Ο μεταγλωττιστής αναλαμβάνει τώρα μια διαφορετική διάταξη που χρησιμοποιείται από τα DFP (Οικογενειακά πακέτα συσκευών). Αυτό σημαίνει ότι ένα παλαιότερο DFP ενδέχεται να μην λειτουργεί με αυτήν την έκδοση και οι παλαιότεροι μεταγλωττιστές δεν θα μπορούν να χρησιμοποιούν τα πιο πρόσφατα DFP.
4.3. Έκδοση 2.19 (Λειτουργική έκδοση ασφαλείας)
Κανένας.
4.4. Έκδοση 2.10
Κανένας
4.5. Έκδοση 2.05
Αντικείμενα Const στη μνήμη προγράμματος Σημειώστε ότι από προεπιλογή, τα αντικείμενα που πληρούν τα κριτήρια const θα τοποθετηθούν και θα προσπελαστούν στη μνήμη προγράμματος (όπως περιγράφεται απόχρωση). Αυτό θα επηρεάσει το μέγεθος και την ταχύτητα εκτέλεσης του έργου σας, αλλά θα πρέπει να μειώσει τη χρήση της μνήμης RAM. Αυτή η δυνατότητα μπορεί να απενεργοποιηθεί, εάν απαιτείται, χρησιμοποιώντας την επιλογή -mnoconst-data-in-progmem.
4.6. Έκδοση 2.00
Ασφάλειες διαμόρφωσης Οι ασφάλειες διαμόρφωσης της συσκευής μπορούν τώρα να προγραμματιστούν χρησιμοποιώντας ένα config pragma που ακολουθείται από ζεύγη τιμών ρύθμισης για τον καθορισμό της κατάστασης ασφάλειας, π.χ.
#pragma config WDTON = SET
#pragma config BODLEVEL = BODLEVEL_4V3
Απόλυτα αντικείμενα και συναρτήσεις Τα αντικείμενα και οι συναρτήσεις μπορούν τώρα να τοποθετηθούν σε συγκεκριμένη διεύθυνση στη μνήμη χρησιμοποιώντας τον προσδιοριστή CCI (διεύθυνση), π.χ.ample:
#περιλαμβάνω
int foobar_at(0x800100);
char __at(0x250) getID(int offset) { … }
Το όρισμα σε αυτόν τον προσδιοριστή πρέπει να είναι μια σταθερά που αντιπροσωπεύει τη διεύθυνση στην οποία θα τοποθετηθεί το πρώτο byte ή εντολή. Οι διευθύνσεις RAM υποδεικνύονται χρησιμοποιώντας μια μετατόπιση 0x800000. Ενεργοποιήστε το CCI για χρήση αυτής της δυνατότητας.
Νέα σύνταξη λειτουργίας διακοπής Ο μεταγλωττιστής δέχεται τώρα τον προσδιοριστή CCI _interrupt (num) για να υποδείξει ότι οι συναρτήσεις C είναι χειριστές διακοπής. Ο προσδιοριστής παίρνει έναν αριθμό διακοπής, π.χample:
#περιλαμβάνω
void __interrupt(SPI_STC_vect_num) spi_Isr(void) { … }

Διορθώθηκαν Θέματα

Ακολουθούν οι διορθώσεις που έχουν γίνει στον μεταγλωττιστή. Αυτά μπορεί να διορθώσουν σφάλματα στον κώδικα που δημιουργείται ή να αλλάξουν τη λειτουργία του μεταγλωττιστή σε αυτήν που προοριζόταν ή καθορίζεται από τον οδηγό χρήστη. Ο αριθμός έκδοσης στις υπότιτλους υποδεικνύει την πρώτη έκδοση μεταγλωττιστή που περιέχει διορθώσεις για τα ζητήματα που ακολουθούν. Οι ετικέτες με αγκύλες στον τίτλο είναι ο προσδιορισμός αυτού του ζητήματος στη βάση δεδομένων παρακολούθησης. Αυτά μπορεί να είναι χρήσιμα εάν χρειαστεί να επικοινωνήσετε με την υποστήριξη.
Λάβετε υπόψη ότι ορισμένα ζητήματα που αφορούν τη συσκευή διορθώνονται στο Οικογενειακό πακέτο συσκευών (DFP) που σχετίζεται με τη συσκευή. Ανατρέξτε στη Διαχείριση πακέτων MPLAB για πληροφορίες σχετικά με τις αλλαγές που έγιναν στα DFP και για λήψη των πιο πρόσφατων πακέτων.

5.1. Έκδοση 2.41
Θέματα Dongle σε Ventura (XC8-3088) Dongles που χρησιμοποιείται για την άδεια χρήσης του μεταγλωττιστή ενδέχεται να μην έχει διαβαστεί σωστά σε κεντρικούς υπολογιστές macOS Ventura, με αποτέλεσμα αποτυχίες αδειοδότησης. Οι αλλαγές στη διαχείριση αδειών χρήσης XCLM διορθώνουν αυτό το ζήτημα.
Εσφαλμένη ένδειξη εκχώρησης μνήμης (XC8-2925) Η προσπάθεια εκχώρησης SIZE_MAX byte (ή μια τιμή κοντά σε αυτό) μνήμης χρησιμοποιώντας τις τυπικές λειτουργίες διαχείρισης μνήμης βιβλιοθήκης (malloc () et al) πέτυχε εσφαλμένα. Δεν έλαβε υπόψη ότι χρειάζονταν επιπλέον byte επιπλέον του μπλοκ που ζητήθηκε κατά τη χρήση της εφαρμογής απλής δυναμικής εκχώρησης μνήμης. Ένας δείκτης NULL θα επιστραφεί τώρα και δεν θα οριστεί σφάλμα σε ENOMEM σε τέτοιες περιπτώσεις.
Καταργήθηκαν ανακριβείς λειτουργίες fma (XC8-2913) Η τυπική βιβλιοθήκη C99 fma ( ) -family λειτουργίες ( ) δεν υπολόγισε ένα πολλαπλασιαστικό πρόσθετο με άπειρη ακρίβεια σε μία μόνο στρογγυλοποίηση, αλλά συσσώρευσε σφάλματα στρογγυλοποίησης με κάθε λειτουργία. Αυτές οι λειτουργίες έχουν αφαιρεθεί από την παρεχόμενη βιβλιοθήκη.
Κακός χειρισμός της μετατροπής συμβολοσειράς (XC8-2921, XC8-2652) Όταν μια «ακολουθία θέματος» για μετατροπή από το strtod Cr περιείχε αυτό που φαινόταν να είναι ένας αριθμός κινητής υποδιαστολής σε εκθετική μορφή και υπήρχε ένας απροσδόκητος χαρακτήρας μετά τον χαρακτήρα e/E, τότε όπου είχε δοθεί το endptr, του εκχωρήθηκε μια διεύθυνση που αν έδειχνε τον χαρακτήρα μετά το e/E, ενώ θα έπρεπε να δείχνει προς τον ίδιο τον χαρακτήρα e/E, αφού δεν είχε μετατραπεί. Για π.χample, strtod ("100exx", &ep) θα πρέπει να επιστρέψει 100.00 και να ορίσει το ep να δείχνει στο τμήμα "exx" της συμβολοσειράς, ενώ η συνάρτηση επέστρεφε τη σωστή τιμή αλλά όριζε ep να δείχνει στο τμήμα "xx" της συμβολοσειράς .

5.2. Έκδοση 2.40
Υπερβολικά χαλαρό (XCS-2876) Κατά τη χρήση της επιλογής -mrelax, ο μεταγλωττιστής δεν εκχωρούσε ορισμένες ενότητες μαζί, με αποτέλεσμα λιγότερο βέλτιστα μεγέθη κώδικα. Αυτό μπορεί να συνέβη με κώδικα που χρησιμοποιούσε τις νέες βιβλιοθήκες MUSL ή με αδύναμα σύμβολα.
Η δυνατότητα χαρτογράφησης δεν είναι απενεργοποιημένη όπως αναφέρεται στην προειδοποίηση (XC8-2875) Η δυνατότητα const-data-in-config-mappedprogmem εξαρτάται από την ενεργοποίηση της δυνατότητας const-data-in-progmem. Εάν η δυνατότητα const-data-inconfig-mapped-progmem ενεργοποιήθηκε ρητά χρησιμοποιώντας την επιλογή και η δυνατότητα const-data-inprogmem ήταν απενεργοποιημένη, το βήμα σύνδεσης απέτυχε, παρά το προειδοποιητικό μήνυμα που δηλώνει ότι το const-data-in-con fig- Η λειτουργία mapped-progmem είχε απενεργοποιηθεί αυτόματα, κάτι που δεν ήταν απολύτως σωστό. Η δυνατότητα const-data-in-config-mapped-progmem είναι πλέον πλήρως απενεργοποιημένη σε αυτήν την κατάσταση.
Το DFP αλλάζει για σωστή πρόσβαση στο NVMCTRL (XC8-2848) Ο κωδικός εκκίνησης χρόνου εκτέλεσης που χρησιμοποιήθηκε από τις συσκευές AVR64EA δεν έλαβε υπόψη ότι ο καταχωρητής NVMCTRL βρισκόταν υπό Προστασία αλλαγής διαμόρφωσης (CCP) και δεν ήταν σε θέση να ορίσει το I0 SFR στη σελίδα που χρησιμοποιείται από το πρόγραμμα const-data-in-configmapped-progmem χαρακτηριστικό μεταγλωττιστή. Οι αλλαγές που έγιναν στην έκδοση 2.2.55 του AVR-Ex_DFP θα επιτρέψουν στον κώδικα εκκίνησης χρόνου εκτέλεσης να εγγράψει σωστά σε αυτό το μητρώο.
Αλλαγές DFP προς αποφυγή Αντιστοίχιση φλας (XC8-2847) Έχει εφαρμοστεί μια λύση για ένα πρόβλημα με τη δυνατότητα της συσκευής χαρτογράφησης φλας που αναφέρεται στο AVR128DA28/32/48/64 Silicon Errata (D580000882). Η δυνατότητα μεταγλωττιστή const-data-in-config-mapped-progmem δεν θα εφαρμόζεται από προεπιλογή για τις επηρεαζόμενες συσκευές και αυτή η αλλαγή θα εμφανιστεί στην έκδοση AVR-Dx_DFP 2.2.160.
Σφάλμα κατασκευής με sinhf ή coshf (XC8-2834) Οι προσπάθειες χρήσης των συναρτήσεων βιβλιοθήκης sinhf () ή coshf () οδήγησαν σε σφάλμα σύνδεσης, που περιγράφει μια απροσδιόριστη αναφορά. Η λειτουργία που λείπει που αναφέρεται έχει πλέον συμπεριληφθεί στη διανομή του μεταγλωττιστή.
Σφάλματα κατασκευής με το nopa (XC,8-2833) Η χρήση του χαρακτηριστικού nopa με μια συνάρτηση στην οποία έχει καθοριστεί το όνομα του assembler της χρησιμοποιώντας το asm ( ) ενεργοποίησε μηνύματα σφάλματος από τον assembler. Αυτός ο συνδυασμός δεν είναι δυνατός.
Αποτυχία μεταβλητής συνάρτησης με ορίσματα δείκτη (XC8-2755, XC8-2731) Οι συναρτήσεις με μεταβλητό αριθμό ορισμάτων αναμένουν δείκτες 24-bit (τύπου memx) να μεταβιβαστούν στη λίστα ορισμάτων μεταβλητής όταν είναι ενεργοποιημένη η δυνατότητα const-data-in-progmem. Ορίσματα που ήταν δείκτες στη μνήμη δεδομένων μεταβιβάζονταν ως αντικείμενα 16-bit, προκαλώντας αποτυχία κώδικα όταν τελικώς διαβάστηκαν. Όταν είναι ενεργοποιημένη η δυνατότητα constdata-in-progmem, όλα τα ορίσματα δεικτών 16-bit μετατρέπονται πλέον σε δείκτες 24-bit.
Οι λειτουργίες της βιβλιοθήκης strtoxxx αποτυγχάνουν (XC8-2620) Όταν ήταν ενεργοποιημένη η δυνατότητα const-data-in-progmem, η παράμετρος endptr στις συναρτήσεις της βιβλιοθήκης strtoxxx δεν ενημερώθηκε σωστά για ορίσματα συμβολοσειράς πηγής που δεν βρίσκονται στη μνήμη προγράμματος.
Ειδοποιήσεις για μη έγκυρα καστ (XC8-2612) Ο μεταγλωττιστής θα παρουσιάσει τώρα ένα σφάλμα εάν είναι ενεργοποιημένη η δυνατότητα const-in-progmem και η διεύθυνση μιας κυριολεκτικής συμβολοσειράς μεταδίδεται ρητά στο χώρο διευθύνσεων δεδομένων (αποβολή του προσδιορισμού const), για π.χ.ample, (uint 8_t *) "Hello World!". Υπάρχει μια προειδοποίηση εάν η διεύθυνση ενδέχεται να μην είναι έγκυρη όταν ένας δείκτης δεδομένων const μεταδίδεται ρητά στον χώρο διευθύνσεων δεδομένων.
Τοποθέτηση μη αρχικοποιημένων αντικειμένων const (XC8-2408) Τα μη αρχικοποιημένα πτητικά αντικείμενα const και const δεν τοποθετούνταν στη μνήμη προγράμματος σε συσκευές που αντιστοιχίζουν ολόκληρη ή μέρος της μνήμης του προγράμματος τους στο χώρο διευθύνσεων δεδομένων. Για αυτές τις συσκευές, τέτοια αντικείμενα τοποθετούνται πλέον στη μνήμη προγραμμάτων, καθιστώντας τη λειτουργία τους συνεπή με άλλες συσκευές.

5.3. Έκδοση 2.39 (Λειτουργική έκδοση ασφαλείας)
Κανένας.
5.4. Έκδοση 2.36
Σφάλμα κατά την καθυστέρηση (XC8-2774) Μικρές αλλαγές στις προεπιλεγμένες βελτιστοποιήσεις Free mode εμπόδισαν τη συνεχή αναδίπλωση των παραστάσεων τελεστών στις ενσωματωμένες συναρτήσεις καθυστέρησης, με αποτέλεσμα να αντιμετωπίζονται ως μη σταθερές και να ενεργοποιείται το σφάλμα: το ενσωματωμένο avr delay_cycles αναμένει μια σταθερά ακέραιου χρόνου μεταγλώττισης.
5.5. Έκδοση 2.35
Συνεχής κατανομή χρησιμοποιώντας _at (XC8-2653) Η συνεχής εκχώρηση πολλών θέσεων αντικειμένων σε μια ενότητα με το ίδιο όνομα και η χρήση _at ( ) δεν λειτούργησε σωστά. Για π.χample:
const char arr1[] __attribute__((section(“.mysec”))) __at (0x500) = {0xAB, 0xCD};
const char arr2[] __attribute__((section(“.mysec"))) = {0xEF, 0xFE};
θα έπρεπε να έχει τοποθετήσει το arr2 αμέσως μετά το arr1.
Καθορισμός διευθύνσεων έναρξης ενότητας (XC8-2650) Το -W1, -η επιλογή έναρξης ενότητας απέτυχε σιωπηλά να τοποθετήσει ενότητες στην καθορισμένη διεύθυνση έναρξης. Αυτό το ζήτημα έχει διορθωθεί για τυχόν ενότητες με προσαρμοσμένη ονομασία. Ωστόσο, δεν θα λειτουργήσει για καμία τυπική ενότητα, όπως . κείμενο ή . bss, το οποίο πρέπει να τοποθετηθεί χρησιμοποιώντας μια επιλογή -W1, -T.
Ο σύνδεσμος διακόπτεται κατά τη χαλάρωση (XC8-2647) Όταν ενεργοποιήθηκε η βελτιστοποίηση -mrelax και υπήρχαν ενότητες κώδικα ή δεδομένων που δεν χωρούσαν στη διαθέσιμη μνήμη, ο σύνδεσμος κατέρρευσε. Τώρα, σε μια τέτοια περίπτωση, εκδίδονται μηνύματα σφάλματος.

No-falling-back (XC8-2646) Το -Η επιλογή nofallback δεν εφαρμόστηκε σωστά, ούτε τεκμηριώθηκε. Αυτό μπορεί τώρα να επιλεγεί για να διασφαλιστεί ότι ο μεταγλωττιστής δεν θα επιστρέψει σε μια χαμηλότερη ρύθμιση βελτιστοποίησης εάν ο μεταγλωττιστής δεν έχει άδεια χρήσης και, αντ' αυτού, θα παρουσιάσει ένα σφάλμα.

Ακατάλληλες βελτιστοποιήσεις ταχύτητας (X03-2637) Οι βελτιστοποιήσεις αφαίρεσης διαδικασίας ενεργοποιούνταν κατά την επιλογή βελτιστοποιήσεων επιπέδου 3 (-03). Αυτές οι βελτιστοποιήσεις μειώνουν το μέγεθος του κώδικα σε βάρος της ταχύτητας του κώδικα, επομένως δεν θα έπρεπε να έχουν εκτελεστεί.
Κακή EEPROM πρόσβαση (XC8-2629) Το Η ρουτίνα eeprom_read_block δεν λειτουργούσε σωστά σε συσκευές Xmega όταν ήταν ενεργοποιημένη η επιλογή -mconst-data-in-progmem (η οποία είναι η προεπιλεγμένη κατάσταση), με αποτέλεσμα η μνήμη EEPROM να μην διαβάζεται σωστά.
Μη έγκυρη εκχώρηση μνήμης (XC8-2593, XC8-2651) Όταν η -Επιλογή σύνδεσης κειμένου ή -Tdata (π.χampΚαθορίζεται η μεταβίβαση μέσω της επιλογής προγράμματος οδήγησης -vl), η αντίστοιχη προέλευση της περιοχής κειμένου/δεδομένων ενημερώθηκε. Ωστόσο, η τελική διεύθυνση δεν προσαρμόστηκε ανάλογα, γεγονός που θα μπορούσε να είχε οδηγήσει στην υπέρβαση της περιοχής μνήμης της συσκευής-στόχου.
Συντριβή με λειτουργία που αποδίδεται υπερβολικά (XC8-2580) Ο μεταγλωττιστής κατέρρευσε εάν μια συνάρτηση είχε δηλωθεί χρησιμοποιώντας περισσότερες από μία από τις ιδιότητες διακοπής, σήματος ή nmi, π.χ. χαρακτηριστικό ( ( signal , interrupt ) ).
Μη έγκυρος κωδικός διακοπής ATtiny (XC8-2465) Κατά την κατασκευή για συσκευές ATtiny και οι βελτιστοποιήσεις ήταν απενεργοποιημένες (-00), οι συναρτήσεις διακοπής μπορεί να έχουν ενεργοποιήσει μηνύματα συναρμολογητή τελεστών εκτός εμβέλειας.
Επιλογές που δεν διαβιβάζονται (XC8-2452) Κατά τη χρήση της επιλογής με πολλαπλές επιλογές σύνδεσης διαχωρισμένες με κόμματα, δεν μεταβιβάζονταν όλες οι επιλογές σύνδεσης στο σύνδεσμο.
Σφάλμα έμμεσης ανάγνωσης της μνήμης προγράμματος (X03-2450) Σε ορισμένες περιπτώσεις, ο μεταγλωττιστής παρήγαγε ένα εσωτερικό σφάλμα (μη αναγνωρίσιμο insn) κατά την ανάγνωση μιας τιμής δύο byte από έναν δείκτη στη μνήμη προγράμματος
5.6. Έκδοση 2.32
Δεύτερη πρόσβαση του η βιβλιοθήκη αποτυγχάνει (XC8-2381) Επίκληση της έκδοσης Windows του xc8-ar. Η αρχειοθέτηση βιβλιοθήκης .exe για δεύτερη φορά για πρόσβαση σε ένα υπάρχον αρχείο βιβλιοθήκης ενδέχεται να απέτυχε με ένα μήνυμα σφάλματος που δεν ήταν δυνατή η μετονομασία.
5.7. Έκδοση 2.31
Ανεξήγητος μεταγλωττιστής αποτυχίες (XC8-2367) Όταν εκτελείται σε πλατφόρμες Windows που είχαν τον προσωρινό κατάλογο του συστήματος ρυθμισμένο σε μια διαδρομή που περιλάμβανε μια κουκκίδα '. χαρακτήρα, ο μεταγλωττιστής μπορεί να απέτυχε να εκτελέσει.
5.8. Έκδοση 2.30
Οι καθολικές ετικέτες δεν έχουν τοποθετηθεί μετά το περίγραμμα (XC8-2299) Ο χειρόγραφος κώδικας συναρμολόγησης που τοποθετεί καθολικές ετικέτες σε ακολουθίες συναρμολόγησης που λαμβάνονται υπόψη από τη διαδικαστική αφαίρεση ενδέχεται να μην έχει επανατοποθετηθεί σωστά.
Ένα χαλαρωτικό τρακάρισμα (XC8-2287) Η χρήση της επιλογής -mrelax μπορεί να είχε προκαλέσει τη συντριβή του συνδέσμου όταν οι βελτιστοποιήσεις χαλάρωσης άλματος ουράς προσπάθησαν να αφαιρέσουν τις οδηγίες επαναφοράς που δεν βρίσκονταν στο τέλος μιας ενότητας.
Σφάλμα κατά τη βελτιστοποίηση ετικετών ως τιμών (XC8-2282) Ο κώδικας που χρησιμοποιεί την επέκταση γλώσσας "Ετικέτες ως τιμές" GNU C μπορεί να έχει προκαλέσει τη διακοπή λειτουργίας των διαδικαστικών βελτιστοποιήσεων αφαίρεσης, με ένα σφάλμα επιδιόρθωσης εκτάσεων εύρους περιγραφόμενων VMA.
Όχι τόσο μεγάλη (XC8-2271) Τα πρωτότυπα για το st rstr ( ) και άλλες λειτουργίες από δεν προσδιορίζετε πλέον τον μη τυπικό προσδιορισμό const στους επιστρεφόμενους δείκτες συμβολοσειράς όταν η δυνατότητα -mconst-data-inprogmem είναι απενεργοποιημένη. Σημειώστε ότι με τις συσκευές avrxmega3 και avrtiny, αυτή η δυνατότητα είναι μόνιμα ενεργοποιημένη.
Χάθηκαν αρχικοποιητές (XC8-2269) Όταν περισσότεροι από μια μεταβλητή σε μια μονάδα μετάφρασης τοποθετήθηκε σε μια ενότητα (χρησιμοποιώντας _section ή _attribute_ ( (section) )) και η πρώτη τέτοια μεταβλητή είχε μηδενική προετοιμασία ή δεν είχε αρχικοποιητή, αρχικοποιητές για άλλες μεταβλητές στην ίδια μονάδα μετάφρασης που τοποθετήθηκαν στο ίδιο τμήμα χάθηκαν.
5.1. Έκδοση 2.29 (Λειτουργική έκδοση ασφαλείας)
Κανένας.
5.2. Έκδοση 2.20
Σφάλμα με μεγάλες εντολές (XC8-1983) Όταν χρησιμοποιείτε έναν στόχο AVR, ο μεταγλωττιστής μπορεί να έχει σταματήσει με a file δεν βρέθηκε σφάλμα, εάν η γραμμή εντολών ήταν εξαιρετικά μεγάλη και περιείχε ειδικούς χαρακτήρες όπως εισαγωγικά, ανάστροφες κάθετες κ.λπ.
Μη εκχωρημένο τμήμα rodata (XC8-1920) Η σύνδεση AVR απέτυχε να εκχωρήσει μνήμη για προσαρμοσμένες ενότητες rodata κατά τη δημιουργία αρχιτεκτονικών avrxmega3 και avrtiny, δημιουργώντας πιθανώς σφάλματα επικάλυψης μνήμης
5.3. Έκδοση 2.19 (Λειτουργική απελευθέρωση ασφαλείας)
Κανένας.
5.4. Έκδοση 2.10
Αποτυχίες μετεγκατάστασης (XC8-1891) Ο κατανεμητής που ταιριάζει καλύτερα ήταν να αφήνει «τρύπες» μνήμης μεταξύ των τμημάτων μετά τη χαλάρωση του συνδετήρα. Εκτός από τον κατακερματισμό της μνήμης, αυτό αύξησε την πιθανότητα να υπάρξουν αποτυχίες μετεγκατάστασης συνδέσμου που σχετίζονται με άλματα που σχετίζονται με τον υπολογιστή ή κλήσεις να βγουν εκτός εμβέλειας.
Οδηγίες που δεν μετασχηματίστηκαν με χαλάρωση (XC8-1889) Η χαλάρωση συνδέσμου δεν συνέβη για οδηγίες άλματος ή κλήσης των οποίων οι στόχοι καθίστανται προσβάσιμοι εάν χαλαρώσουν.
Λείπει λειτουργικότητα (XC8E-388) Αρκετοί ορισμοί από , όπως το clock_div_t και το clock_prescale set () , δεν ορίστηκαν για συσκευές, συμπεριλαμβανομένων των ATmega324PB, ATmega328PB, ATtiny441 και ATtiny841.
Λείπουν μακροεντολές Οι μακροεντολές προεπεξεργαστή _XC8_MODE_, _XC8_VERS ION, _XC και _XC8 δεν ορίστηκαν αυτόματα από τον μεταγλωττιστή. Αυτά είναι πλέον διαθέσιμα.
5.5. Έκδοση 2.05
Εσωτερικό σφάλμα μεταγλωττιστή (XC8-1822) Κατά τη δημιουργία σε Windows, ενδέχεται να έχει δημιουργηθεί ένα εσωτερικό σφάλμα μεταγλωττιστή κατά τη βελτιστοποίηση του κώδικα.
Δεν εντοπίστηκε υπερχείλιση RAM (XC8-1800, XC8-1796) Τα προγράμματα που υπερέβαιναν τη διαθέσιμη μνήμη RAM δεν εντοπίστηκαν από τον μεταγλωττιστή σε ορισμένες περιπτώσεις, με αποτέλεσμα την αποτυχία του κώδικα χρόνου εκτέλεσης.
Παραλειφθείσα μνήμη flash (XC8-1792) Για συσκευές avrxmega3 και avrtiny, μέρη της μνήμης flash ενδέχεται να μην έχουν προγραμματιστεί από το MPLAB X IDE.
Αποτυχία εκτέλεσης main (XC8-1788) Σε ορισμένες περιπτώσεις όπου το πρόγραμμα δεν είχε καθορισμένες καθολικές μεταβλητές, ο κώδικας εκκίνησης χρόνου εκτέλεσης δεν έβγαινε και η κύρια συνάρτηση ( ) δεν επιτεύχθηκε ποτέ.
Εσφαλμένες πληροφορίες μνήμης (XC8-1787) Για τις συσκευές avrxmega3 και avrtiny, το πρόγραμμα μεγέθους avr ανέφερε ότι τα δεδομένα μόνο για ανάγνωση καταναλώνουν μνήμη RAM αντί για μνήμη προγράμματος.
Λανθασμένη ανάγνωση μνήμης προγράμματος (XC8-1783) Έργα που έχουν μεταγλωττιστεί για συσκευές με μνήμη προγράμματος αντιστοιχισμένη στον χώρο διευθύνσεων δεδομένων και που ορίζουν αντικείμενα χρησιμοποιώντας τη μακροεντολή/χαρακτηριστικό PROGMEM ενδέχεται να έχουν διαβάσει αυτά τα αντικείμενα από λάθος διεύθυνση.
Εσωτερικό σφάλμα με χαρακτηριστικά (XC8-1773) Παρουσιάστηκε εσωτερικό σφάλμα εάν ορίσατε αντικείμενα δείκτη με το
διακριτικά _at () ή χαρακτηριστικό() μεταξύ του ονόματος του δείκτη και του μη αναφερόμενου τύπου, π.χample, char *
_at (0x800150) cp; Τώρα εκδίδεται μια προειδοποίηση εάν συναντήσετε τέτοιο κωδικό.
Αποτυχία εκτέλεσης main (XC8-1780, XC8-1767, XC8-1754) Η χρήση μεταβλητών EEPROM ή ο καθορισμός ασφαλειών χρησιμοποιώντας το config pragma μπορεί να έχει προκαλέσει λανθασμένη αρχικοποίηση δεδομένων ή/και να έχει κλειδώσει την εκτέλεση του προγράμματος στον κώδικα εκκίνησης χρόνου εκτέλεσης, πριν φτάσει στο main ( ) .
Σφάλμα ασφαλειών με μικροσκοπικές συσκευές (XC8-1778, XC8-1742) Οι συσκευές attiny4/5/9/ 10/20/40 είχαν λανθασμένο μήκος ασφάλειας που καθορίζεται στην κεφαλίδα τους files που οδηγούν σε σφάλματα σύνδεσης κατά την προσπάθεια δημιουργίας κώδικα που καθορίζει τις ασφάλειες.
Κατάτμηση σφάλμα (XC8-1777) Διορθώθηκε ένα διακοπτόμενο σφάλμα κατάτμησης.
Συντριβή Assembler (XC8-1761) Το πρόγραμμα συναρμολόγησης avr-as μπορεί να είχε κολλήσει όταν ο μεταγλωττιστής εκτελούνταν στο Ubuntu 18.
Μη εκκαθαρισμένα αντικείμενα (XC8-1752) Τα μη αρχικοποιημένα αντικείμενα διάρκειας στατικής αποθήκευσης ενδέχεται να μην έχουν διαγραφεί από τον κώδικα εκκίνησης χρόνου εκτέλεσης.
Η προδιαγραφή συσκευής σε διένεξη αγνοήθηκε (XC8-1749) Ο μεταγλωττιστής δεν δημιουργούσε σφάλμα όταν χρησιμοποιήθηκαν πολλές επιλογές προδιαγραφών συσκευής και υποδείκνυαν διαφορετικές συσκευές.
Καταστροφή μνήμης από σωρό (XC8-1748) Το Το σύμβολο _heap_start είχε οριστεί εσφαλμένα, με αποτέλεσμα οι συνηθισμένες μεταβλητές να καταστραφούν από το σωρό.
Σφάλμα μετεγκατάστασης συνδέσμου (XC8-1739) Ένα σφάλμα μετεγκατάστασης συνδέσμου ενδέχεται να έχει εκπέμπεται όταν ο κώδικας περιείχε ένα rjmp ή μια κλήση με στόχο ακριβώς 4k byte μακριά.
5.6. Έκδοση 2.00
Κανένας.

Γνωστά Θέματα

Οι παρακάτω είναι περιορισμοί στη λειτουργία του μεταγλωττιστή. Αυτοί μπορεί να είναι γενικοί περιορισμοί κωδικοποίησης ή αποκλίσεις από τις πληροφορίες που περιέχονται στο εγχειρίδιο χρήστη. Οι ετικέτες με αγκύλες στον τίτλο είναι η αναγνώριση αυτού του ζητήματος στη βάση δεδομένων παρακολούθησης. Αυτό μπορεί να είναι χρήσιμο εάν χρειαστεί να επικοινωνήσετε με την υποστήριξη. Αυτά τα στοιχεία που δεν έχουν ετικέτες είναι περιορισμοί που περιγράφουν τους τρόπους λειτουργίας και οι οποίοι είναι πιθανό να παραμείνουν σε ισχύ μόνιμα.
6.1. MPLAB X IDE Ολοκλήρωση
MPLAB IDE ολοκλήρωση Εάν ο Compiler πρόκειται να χρησιμοποιηθεί από το MPLAB IDE, τότε πρέπει να εγκαταστήσετε το MPLAB IDE πριν εγκαταστήσετε τον Compiler.
6.2. Δημιουργία Κώδικα
Segfault with section-anchors επιλογή (XC8-3045) Πρόγραμμα που καθόρισε συναρτήσεις με λίστες μεταβλητών ορισμάτων και που χρησιμοποιεί την επιλογή -fsection-anchors ενδέχεται να έχει προκαλέσει ένα εσωτερικό σφάλμα μεταγλωττιστή: Σφάλμα τμηματοποίησης.
Πληροφορίες εντοπισμού σφαλμάτων εκτός συγχρονισμού (XC8-2948) Όταν οι βελτιστοποιήσεις χαλάρωσης συνδετήρα συρρικνώνουν τις οδηγίες (π.χampοι οδηγίες κλήσης για κλήση), οι αντιστοιχίσεις γραμμής πηγής προς διεύθυνση ενδέχεται να μην παραμείνουν συγχρονισμένες όταν υπάρχουν περισσότερες από μία λειτουργίες συρρίκνωσης σε μια ενότητα.
Στο παρακάτω πρώηνampΛοιπόν, υπάρχουν δύο κλήσεις προς το ποδόσφαιρο που καταλήγουν χαλαρά σε σχετικές κλήσεις.
Αποτυχία εκχώρησης μνήμης PA (XC8-2881) Κατά τη χρήση των διαδικαστικών βελτιστοποιητών αφαίρεσης, ο σύνδεσμος ενδέχεται να αναφέρει σφάλματα εκχώρησης μνήμης όταν το μέγεθος του κώδικα πλησιάζει την ποσότητα της διαθέσιμης μνήμης προγράμματος στη συσκευή, παρόλο που το πρόγραμμα θα πρέπει να μπορεί να χωράει στον διαθέσιμο χώρο.
Όχι και τόσο έξυπνο Smart-I0 (XC8-2872) Η λειτουργία smart-io του μεταγλωττιστή θα δημιουργήσει έγκυρο αλλά μη βέλτιστο κώδικα για τη συνάρτηση snprint f εάν η λειτουργία const-data-in-progmem έχει απενεργοποιηθεί ή εάν η συσκευή έχει αντιστοιχίσει όλο το flash της στη μνήμη δεδομένων.
Ακόμα λιγότερο έξυπνο Smart-I0 (XC8-2869) Η δυνατότητα smart-io του μεταγλωττιστή θα δημιουργήσει έγκυρο αλλά μη βέλτιστο κώδικα όταν χρησιμοποιούνται και οι δύο επιλογές -flto και -fno-builtin.
Υποβέλτιστη τοποθέτηση δεδομένων μόνο για ανάγνωση (XC8-2849) Ο σύνδεσμος δεν γνωρίζει αυτήν τη στιγμή τις ενότητες μνήμης APPCODE και APPDATA, ούτε τις διαιρέσεις [No-Read-While-Write στον χάρτη μνήμης. Ως αποτέλεσμα, υπάρχει μια μικρή πιθανότητα ο σύνδεσμος να εκχωρήσει δεδομένα μόνο για ανάγνωση σε μια ακατάλληλη περιοχή της μνήμης. Η πιθανότητα λανθασμένης τοποθέτησης δεδομένων αυξάνεται εάν είναι ενεργοποιημένη η δυνατότητα const-data-in-progmem, ειδικά εάν είναι επίσης ενεργοποιημένη η δυνατότητα const-data-in-config-mapped-progmem. Αυτές οι λειτουργίες μπορούν να απενεργοποιηθούν εάν απαιτείται.
Αντικείμενο file παραγγελία επεξεργασίας (XC8-2863) Η σειρά με την οποία τα αντικείμενα fileΤα s θα υποβληθούν σε επεξεργασία από το σύνδεσμο ενδέχεται να διαφέρουν με βάση τη χρήση διαδικαστικών βελτιστοποιήσεων αφαίρεσης (επιλογή -mpa). Αυτό θα επηρεάσει μόνο τον κώδικα που ορίζει αδύναμες συναρτήσεις σε πολλαπλές λειτουργικές μονάδες.
Σφάλμα σύνδεσης με απόλυτη (XC8-2777) Όταν ένα αντικείμενο έχει γίνει απόλυτο σε μια διεύθυνση στην αρχή της μνήμης RAM και έχουν οριστεί επίσης μη αρχικοποιημένα αντικείμενα, μπορεί να ενεργοποιηθεί ένα σφάλμα σύνδεσης.
Αναγνωριστικά σύντομης αφύπνισης (XC8-2775) Για συσκευές ATA5700/2, οι καταχωρητές PHIDO/1 ορίζονται μόνο ως πλάτους 16 bit και όχι 32 bit.
Σφάλμα σύνδεσης κατά την κλήση του συμβόλου (XC8-2758) Ο σύνδεσμος ενδέχεται να διακοπεί εάν χρησιμοποιηθεί η επιλογή προγράμματος οδήγησης -mrelax όταν ο πηγαίος κώδικας καλεί ένα σύμβολο που έχει οριστεί χρησιμοποιώντας την επιλογή σύνδεσης -cc., -de f sym.
Εσφαλμένη προετοιμασία (XC8-2679) Εκεί είναι μια ασυμφωνία μεταξύ του σημείου όπου οι αρχικές τιμές για ορισμένα αντικείμενα μεγέθους καθολικού/στατικού byte τοποθετούνται στη μνήμη δεδομένων και του σημείου όπου θα γίνεται πρόσβαση στις μεταβλητές κατά το χρόνο εκτέλεσης.
Κακές έμμεσες κλήσεις συνάρτησης (XC8-2628) Σε ορισμένες περιπτώσεις, οι κλήσεις συναρτήσεων που πραγματοποιούνται μέσω ενός δείκτη συνάρτησης που είναι αποθηκευμένος ως μέρος μιας δομής ενδέχεται να αποτύχουν.
Το strtof επιστρέφει μηδέν για δεκαεξαδικούς πλωτήρες (XC8-2626) Οι συναρτήσεις βιβλιοθήκης strtof et al και scanf ( ) et al, θα μετατρέπουν πάντα έναν δεκαεξαδικό αριθμό κινητής υποδιαστολής που δεν καθορίζει έναν εκθέτη σε μηδέν. Για π.χample:
strtof ("Oxl", &endptr) ;
θα επιστρέψει την τιμή 0, όχι το I.
Ανακριβή μηνύματα συμβούλων στοίβας (XC8-2542, XC8-2541) Σε ορισμένες περιπτώσεις, η προειδοποίηση του συμβούλου στοίβας σχετικά με την αναδρομή ή την απροσδιόριστη στοίβα που χρησιμοποιείται (πιθανώς μέσω της χρήσης του alloca()) δεν εκπέμπεται.
Αποτυχία με διπλότυπο κωδικό διακοπής (XC8-2421) Όπου περισσότερες από μία συναρτήσεις διακοπής έχουν το ίδιο σώμα, ο μεταγλωττιστής μπορεί να έχει την έξοδο για τη μία συνάρτηση διακοπής που καλεί την άλλη. Αυτό θα έχει ως αποτέλεσμα να αποθηκευτούν άσκοπα όλοι οι μητρώοι που έχουν παραμορφωθεί με κλήσεις και οι διακοπές θα ενεργοποιηθούν ακόμη και πριν εκτελεστεί ο επίλογος του τρέχοντος χειριστή διακοπών, κάτι που θα μπορούσε να οδηγήσει σε αποτυχία κώδικα.
Εσφαλμένη έξοδος με μη έγκυρη διαδρομή DFP (XC8-2376) Εάν ο μεταγλωττιστής καλείται με μια μη έγκυρη διαδρομή DFP και μια «προδιαγραφή» file υπάρχει για την επιλεγμένη συσκευή, ο μεταγλωττιστής δεν αναφέρει το οικογενειακό πακέτο συσκευών που λείπει και αντ' αυτού επιλέγει την "προδιαγραφή" file, το οποίο μπορεί στη συνέχεια να οδηγήσει σε μη έγκυρη έξοδο. Η «προδιαγραφή» fileΤα s ενδέχεται να μην είναι ενημερωμένα με τα διανεμημένα DFP και προορίζονταν για χρήση μόνο με εσωτερικές δοκιμές μεταγλωττιστή.
Μη ανιχνεύσιμη επικάλυψη μνήμης (XC8-1966) Ο μεταγλωττιστής δεν ανιχνεύει την επικάλυψη μνήμης αντικειμένων που γίνονται απόλυτα σε μια διεύθυνση (μέσω _at ( )) και άλλων αντικειμένων που χρησιμοποιούν τον προσδιοριστή ενότητας ( ) και που συνδέονται με την ίδια διεύθυνση.
Αποτυχία με τις λειτουργίες βιβλιοθήκης και _memx (XC8-1763) Οι ονομαζόμενες libgcc float συναρτήσεις με όρισμα στο χώρο διευθύνσεων memx ενδέχεται να αποτύχουν. Σημειώστε ότι οι ρουτίνες της βιβλιοθήκης καλούνται από ορισμένους τελεστές C, έτσι, π.χample, επηρεάζεται ο ακόλουθος κώδικας:
επιστροφή regFloatVar > memxFloatVar;
Περιορισμένη εφαρμογή libgcc (AVRTC-731) Για τα προϊόντα ATTiny4/5/9/10/20/40, η τυπική υλοποίηση βιβλιοθήκης C / Math στο libgcc είναι πολύ περιορισμένη ή δεν υπάρχει.
Περιορισμοί μνήμης προγράμματος (AVRTC-732) Οι εικόνες μνήμης προγράμματος άνω των 128 kb υποστηρίζονται από την αλυσίδα εργαλείων. Ωστόσο, υπάρχουν γνωστές περιπτώσεις ακυρώσεων συνδέσμου χωρίς χαλάρωση και χωρίς ένα χρήσιμο μήνυμα σφάλματος αντί να δημιουργηθούν τα απαιτούμενα στελέχη συναρτήσεων όταν χρησιμοποιείται η επιλογή -mre lax.
Περιορισμοί χώρου ονόματος (AVRTC-733) Οι ονομαστικοί χώροι διευθύνσεων υποστηρίζονται από την αλυσίδα εργαλείων, με την επιφύλαξη των περιορισμών που αναφέρονται στην ενότητα του οδηγού χρήστη Ειδικοί τύποι χαρακτηριστικών.
Ζώνες ώρας The Οι λειτουργίες της βιβλιοθήκης υποθέτουν GMT και δεν υποστηρίζουν τοπικές ζώνες ώρας, επομένως η τοπική ώρα ( ) θα επιστρέψει την ίδια ώρα με την ώρα gmtime ( ) , για π.χ.ample.

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

Έγγραφα / Πόροι

Λογισμικό ανάπτυξης μεταγλωττιστή MICROCHIP MPLAB XC8 C [pdf] Εγχειρίδιο κατόχου
MPLAB XC8 C, MPLAB XC8 C Λογισμικό ανάπτυξης μεταγλωττιστή, Λογισμικό ανάπτυξης μεταγλωττιστή, Λογισμικό ανάπτυξης, λογισμικό

Αναφορές

Αφήστε ένα σχόλιο

Η διεύθυνση email σας δεν θα δημοσιευτεί. Τα υποχρεωτικά πεδία επισημαίνονται *