Λογισμικό μεταγλωττιστή MICROCHIP MPLAB XC8 C 

Λογισμικό μεταγλωττιστή MICROCHIP MPLAB XC8 C

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

Περιεχόμενα κρύβω

Υπερview

Εισαγωγή

Αυτή η έκδοση του μεταγλωττιστή Microchip MPLAB® XC8 C περιέχει πολλές νέες δυνατότητες, διορθώσεις σφαλμάτων και υποστήριξη νέων συσκευών.

Ημερομηνία κατασκευής

Η επίσημη ημερομηνία κατασκευής αυτής της έκδοσης μεταγλωττιστή είναι η 3 Ιουλίου 2022.

Προηγούμενη έκδοση

Η προηγούμενη έκδοση μεταγλωττιστή MPLAB XC8 C ήταν 2.39, ένας μεταγλωττιστής λειτουργικής ασφάλειας, που δημιουργήθηκε στις 27 Ιανουαρίου 2022. Ο προηγούμενος τυπικός μεταγλωττιστής ήταν η έκδοση 2.36, που δημιουργήθηκε στις 27 Ιανουαρίου 2022.

Εγχειρίδιο Λειτουργικής Ασφάλειας

Ένα Εγχειρίδιο λειτουργικής ασφάλειας για τους μεταγλωττιστές MPLAB XC είναι διαθέσιμο στο πακέτο τεκμηρίωσης όταν αγοράζετε μια άδεια λειτουργίας λειτουργικής ασφάλειας.

Άδειες χρήσης και εκδόσεις στοιχείων

Τα εργαλεία MPLAB® XC8 C Compiler για AVR MCUs είναι γραμμένα και διανέμονται υπό την άδεια GNU General Public License (GPL) που σημαίνει ότι ο πηγαίος κώδικας του διανέμεται ελεύθερα και είναι διαθέσιμος στο κοινό. Ο πηγαίος κώδικας για τα εργαλεία στο πλαίσιο της GNU GPL μπορεί να ληφθεί ξεχωριστά από το Microchip webιστοσελίδα. Μπορείτε να διαβάσετε την GNU GPL στο file με όνομα που βρίσκεται στον υποκατάλογο του καταλόγου εγκατάστασης. Μια γενική συζήτηση των αρχών που διέπουν την GPL μπορεί να βρεθεί εδώ. Ο κωδικός υποστήριξης παρέχεται για την κεφαλίδα files, τα σενάρια σύνδεσης και οι βιβλιοθήκες χρόνου εκτέλεσης είναι αποκλειστικός κώδικας και δεν καλύπτονται από την GPL.

Αυτός ο μεταγλωττιστής είναι μια υλοποίηση της GCC έκδοσης 5.4.0, binutils έκδοσης 2.26 και χρησιμοποιεί avr-libc έκδοση 2.0.0.

Απαιτήσεις συστήματος

Ο μεταγλωττιστής MPLAB XC8 C και το λογισμικό αδειοδότησης που χρησιμοποιεί είναι διαθέσιμα για μια ποικιλία λειτουργικών συστημάτων, συμπεριλαμβανομένων των εκδόσεων 64-bit των παρακάτω: Επαγγελματικές εκδόσεις των Microsoft Windows 10. Ubuntu 18.04; και macOS 10.15.5. Τα δυαδικά αρχεία για Windows έχουν υπογραφεί με κωδικό. Τα δυαδικά αρχεία για mac OShave έχουν υπογραφεί κωδικοποιημένα και συμβολαιογραφικά.

Εάν εκτελείτε διακομιστή αδειών χρήσης δικτύου, μόνο υπολογιστές με λειτουργικά συστήματα που υποστηρίζονται από τους μεταγλωττιστές μπορούν να χρησιμοποιηθούν για τη φιλοξενία του διακομιστή αδειών χρήσης. Από την έκδοση xclm 2.0, ο διακομιστής άδειας χρήσης δικτύου μπορεί να εγκατασταθεί σε μια πλατφόρμα Microsoft Windows Server, αλλά ο διακομιστής αδειών δεν χρειάζεται να εκτελείται σε έκδοση διακομιστή του λειτουργικού συστήματος.

Υποστηριζόμενες συσκευές

Αυτός ο μεταγλωττιστής υποστηρίζει όλες τις συσκευές AVR MCU 8-bit που ήταν γνωστές τη στιγμή της κυκλοφορίας. Δείτε (στον κατάλογο εγγράφων του μεταγλωττιστή) για μια λίστα με όλες τις υποστηριζόμενες συσκευές. Αυτοί fileΕπίσης, παραθέτει τις ρυθμίσεις bit διαμόρφωσης για κάθε συσκευή.

Εκδόσεις και αναβαθμίσεις αδειών

Ο μεταγλωττιστής MPLAB XC8 μπορεί να ενεργοποιηθεί ως προϊόν με άδεια χρήσης (PRO) ή χωρίς άδεια χρήσης (Δωρεάν). Πρέπει να αγοράσετε ένα κλειδί ενεργοποίησης για την άδεια χρήσης του μεταγλωττιστή σας. Μια άδεια επιτρέπει υψηλότερο επίπεδο βελτιστοποίησης σε σύγκριση με το δωρεάν προϊόν. Ένας μεταγλωττιστής χωρίς άδεια μπορεί να λειτουργήσει επ' αόριστον χωρίς άδεια.

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

Εγκατάσταση και ενεργοποίηση

Δείτε επίσης τις ενότητες Ζητήματα μετεγκατάστασης και περιορισμοί για σημαντικές πληροφορίες σχετικά με τον πιο πρόσφατο διαχειριστή αδειών που περιλαμβάνεται σε αυτόν τον μεταγλωττιστή.
Εάν χρησιμοποιείτε MPLAB IDE, φροντίστε να εγκαταστήσετε την πιο πρόσφατη έκδοση MPLAB X IDE 5.0 ή νεότερη πριν εγκαταστήσετε αυτό το εργαλείο. Κλείστε το IDE πριν εγκαταστήσετε τον μεταγλωττιστή. Εκτελέστε την εφαρμογή εγκατάστασης μεταγλωττιστή .exe (Windows), .run (Linux) ή app (macOS), π.χ. 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 περιλαμβάνει ένα παράθυρο αδειών (Εργαλεία > Άδειες) για οπτική διαχείριση της περιαγωγής.

Επίλυση προβλημάτων εγκατάστασης

Εάν αντιμετωπίζετε δυσκολίες με την εγκατάσταση του μεταγλωττιστή σε οποιοδήποτε από τα λειτουργικά συστήματα Windows, δοκιμάστε τις παρακάτω προτάσεις.

  • Εκτελέστε την εγκατάσταση ως διαχειριστής.
  • Ορίστε τα δικαιώματα της εφαρμογής εγκατάστασης σε «Πλήρης έλεγχος». (Κάντε δεξί κλικ στο file, επιλέξτε Ιδιότητες, καρτέλα Ασφάλεια, επιλέξτε χρήστη, επεξεργασία.)
  • Ορίστε τα δικαιώματα του φακέλου temp σε "Full Control!

Για να προσδιορίσετε τη θέση του φακέλου temp, πληκτρολογήστε %temp% στην εντολή Εκτέλεση (πλήκτρο λογότυπου των Windows + R). Αυτό θα ανοίξει ένα file παράθυρο διαλόγου εξερευνητής που δείχνει αυτόν τον κατάλογο και θα σας επιτρέψει να προσδιορίσετε τη διαδρομή αυτού του φακέλου.

Τεκμηρίωση μεταγλωττιστή

Οι οδηγοί χρήστη του μεταγλωττιστή μπορούν να ανοίξουν από τη σελίδα HTML που ανοίγει στο πρόγραμμα περιήγησής σας όταν κάνετε κλικ στο μπλε κουμπί βοήθειας στον πίνακα εργαλείων MPLAB X IDE, όπως υποδεικνύεται στο στιγμιότυπο οθόνης.

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

Υποστήριξη Πελατών

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

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

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

Νέα ή ενημερωμένη τεκμηρίωση AVR σε αυτήν την έκδοση:

  • Σημείωση πνευματικών δικαιωμάτων MUSL
  • Εγκατάσταση και αδειοδότηση MPLAB XC C Compilers (αναθεώρηση M)
  • MPLAB XC8 User!s Guide for Embedded Engineers – AVR MCU (αναθεώρηση A)
  • Οδηγός χρήστη MPLAB XC8 C Compiler για AVR MCU (αναθεώρηση F)
  • Οδηγός αναφοράς Microchip Unified Standard Library (αναθεώρηση Β)

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

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

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

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

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

Έκδοση 2.40

Υποστήριξη νέας συσκευής Η υποστήριξη είναι πλέον διαθέσιμη για τα ακόλουθα ανταλλακτικά AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64AVDEA 28EA64.
Βελτιωμένη διαδικαστική αφαίρεση Το εργαλείο βελτιστοποίησης διαδικαστικής αφαίρεσης (PA) έχει βελτιωθεί έτσι ώστε να μπορεί να περιγραφεί ο κώδικας που περιέχει μια εντολή κλήσης συνάρτησης ( ανάκληση κλήσης ) . Αυτό θα πραγματοποιηθεί μόνο εάν η στοίβα δεν χρησιμοποιείται για να μεταβιβάσει ορίσματα στη συνάρτηση ούτε να λάβει επιστρεφόμενη τιμή από τη συνάρτηση. Η στοίβα χρησιμοποιείται κατά την κλήση μιας συνάρτησης με μια λίστα μεταβλητών ορισμάτων ή κατά την κλήση μιας συνάρτησης που δέχεται περισσότερα ορίσματα από ό,τι υπάρχουν καταχωρητές που έχουν καθοριστεί για αυτόν τον σκοπό. Αυτή η δυνατότητα μπορεί να απενεργοποιηθεί χρησιμοποιώντας την επιλογή monk-pa-outline-calls ή η διαδικαστική αφαίρεση μπορεί να απενεργοποιηθεί πλήρως για ένα αντικείμενο file ή λειτουργήστε χρησιμοποιώντας το -monk-pa-on-file και -mo.-pa-on-function αντίστοιχα, ή χρησιμοποιώντας το χαρακτηριστικό nipa ( προσδιοριστής nipa) επιλεκτικά με συναρτήσεις

Μακροεντολή κάλυψης κώδικα Ο μεταγλωττιστής ορίζει τώρα τη μακροεντολή __CODECOV εάν έχει καθοριστεί μια έγκυρη επιλογή mcodecov.

Επιλογή κράτησης μνήμης Το πρόγραμμα οδήγησης xc8-cc θα αποδεχτεί τώρα την επιλογή -mreserve=space@start: end κατά τη δημιουργία στόχων AVR. Αυτή η επιλογή διατηρεί το καθορισμένο εύρος μνήμης είτε στο χώρο της μνήμης δεδομένων είτε του προγράμματος, αποτρέποντας τη συμπλήρωση κώδικα ή αντικειμένων σε αυτήν την περιοχή από τον σύνδεσμο.

Εξυπνότερο έξυπνο IO Έχουν γίνει αρκετές βελτιώσεις στις λειτουργίες Smart IO, συμπεριλαμβανομένων γενικών τροποποιήσεων στον κώδικα του πυρήνα printf, αντιμετώπιση του προσδιοριστή μετατροπής %n ως ανεξάρτητη παραλλαγή, σύνδεση σε ρουτίνες vararg pop κατά απαίτηση, χρήση μικρότερων τύπων δεδομένων όπου είναι δυνατόν για τον χειρισμό ορισμάτων συνάρτησης IO , και παραγοντοποίηση κοινού κώδικα σε πλάτος πεδίου και χειρισμό ακριβείας. Αυτό μπορεί να οδηγήσει σε σημαντική εξοικονόμηση κώδικα και δεδομένων, καθώς και να αυξήσει την ταχύτητα εκτέλεσης του IO.

Έκδοση 2.39 (Λειτουργική έκδοση ασφαλείας)

Άδεια διακομιστή δικτύου Αυτή η έκδοση του MPLAB XC8 Functional Safety Compiler υποστηρίζει την άδεια διακομιστή δικτύου.

Έκδοση 2.36

Κανένας.

Έκδοση 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-proem μπορεί να χρησιμοποιηθεί για να τοποθετήσει ο σύνδεσμος όλα τα αναγνωρισμένα δεδομένα μειονεκτήματα σε μία ενότητα 32k και να αρχικοποιήσει αυτόματα τον σχετικό καταχωρητή SFR για να διασφαλίσει ότι αυτά τα δεδομένα αντιστοιχίζονται στο χώρο της μνήμης δεδομένων , όπου θα είναι πιο αποτελεσματική η πρόσβαση.

Ενοποιημένες τυπικές βιβλιοθήκες μικροτσίπ Όλοι οι μεταγλωττιστές MPLAB XC θα μοιράζονται μια Ενοποιημένη Βιβλιοθήκη Microchip, η οποία είναι τώρα διαθέσιμη με αυτήν την έκδοση του MPLAB XC8. Ο οδηγός χρήστη MPLAB® XC8 C Compiler/ή το AVR® MCU δεν περιλαμβάνει πλέον την τεκμηρίωση για αυτές τις τυπικές λειτουργίες. Αυτές οι πληροφορίες βρίσκονται πλέον στον Οδηγό αναφοράς Microchip Unified Standard Library. Σημειώστε ότι κάποια λειτουργικότητα που είχε οριστεί προηγουμένως από το avr-libc δεν είναι πλέον διαθέσιμη. (Βλ. Βιβλιοθήκη):». λειτουργικότητα…)

Έξυπνο IO Ως μέρος των νέων ενοποιημένων βιβλιοθηκών, οι συναρτήσεις IO στις οικογένειες εκτύπωσης και σάρωσης δημιουργούνται πλέον προσαρμοσμένα σε κάθε έκδοση, με βάση τον τρόπο με τον οποίο χρησιμοποιούνται αυτές οι λειτουργίες στο πρόγραμμα. Αυτό μπορεί να μειώσει σημαντικά τους πόρους που χρησιμοποιούνται από ένα πρόγραμμα.
Επιλογή έξυπνης βοήθειας IO Κατά την ανάλυση κλήσεων σε έξυπνες συναρτήσεις IO (όπως printf () ή scanf () ), ο μεταγλωττιστής δεν μπορεί πάντα να προσδιορίσει από τη συμβολοσειρά μορφής ή να συναγάγει από τα ορίσματα εκείνους τους προσδιοριστές μετατροπής που απαιτούνται από την κλήση. Προηγουμένως, ο μεταγλωττιστής δεν έκανε πάντα υποθέσεις και διασφάλιζε ότι οι πλήρως λειτουργικές συναρτήσεις IO ήταν συνδεδεμένες στην τελική εικόνα του προγράμματος. Προστέθηκε μια νέα επιλογή – msmart-io-format=fmt, έτσι ώστε ο μεταγλωττιστής να μπορεί αντ' αυτού να ενημερώνεται από τον χρήστη για τους προσδιοριστές μετατροπής που χρησιμοποιούνται από τις έξυπνες συναρτήσεις IO των οποίων η χρήση είναι ασαφής, αποτρέποντας τη σύνδεση υπερβολικά μεγάλων ρουτινών IO. (Δείτε την επιλογή smart-io-format για περισσότερες λεπτομέρειες.)

Τοποθέτηση προσαρμοσμένων ενοτήτων Προηγουμένως, η επιλογή -Wl, -section-start τοποθετούσε την καθορισμένη ενότητα στη διεύθυνση που ζητήθηκε μόνο όταν το σενάριο σύνδεσης όριζε μια ενότητα εξόδου με το ίδιο όνομα. Όταν δεν συνέβαινε αυτό, η ενότητα τοποθετήθηκε σε μια διεύθυνση που είχε επιλέξει ο σύνδεσμος και η επιλογή ουσιαστικά αγνοήθηκε. Τώρα η επιλογή θα τηρηθεί για όλες τις προσαρμοσμένες ενότητες, ακόμα κι αν το σενάριο σύνδεσης δεν ορίζει την ενότητα. Σημειώστε, ωστόσο, ότι για τυπικές ενότητες, όπως . κείμενο,. bss ή . δεδομένα, ο κατανεμητής καλύτερης προσαρμογής θα εξακολουθεί να έχει τον πλήρη έλεγχο της τοποθέτησής τους και η επιλογή δεν θα έχει κανένα αποτέλεσμα. Χρησιμοποιήστε την επιλογή -Wl, -Tsection=add, όπως περιγράφεται στον οδηγό χρήσης.

Έκδοση 2.32

Καθοδήγηση στοίβας Διαθέσιμο με άδεια μεταγλωττιστή PRO, η δυνατότητα καθοδήγησης στοίβας του μεταγλωττιστή μπορεί να χρησιμοποιηθεί για την εκτίμηση του μέγιστου βάθους οποιασδήποτε στοίβας που χρησιμοποιείται από ένα πρόγραμμα. Κατασκευάζει και αναλύει το γράφημα κλήσης ενός προγράμματος, καθορίζει τη χρήση στοίβας κάθε συνάρτησης και παράγει μια αναφορά, από την οποία μπορεί να συναχθεί το βάθος των στοίβων που χρησιμοποιούνται από το πρόγραμμα. Αυτή η δυνατότητα ενεργοποιείται μέσω της επιλογής γραμμής εντολών -mchp-stack-usage. Μια περίληψη της χρήσης στοίβας εκτυπώνεται μετά την εκτέλεση. Μια λεπτομερής αναφορά στοίβας είναι διαθέσιμη στον χάρτη file, το οποίο μπορεί να ζητηθεί με τον συνήθη τρόπο.

Υποστήριξη νέας συσκευής Υποστήριξη είναι διαθέσιμο για τα ακόλουθα ανταλλακτικά AVR: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32, AVR28, AVR64, AVR32, AVR32, AVR48 AVRXNUMXDBXNUMX.

Υποστήριξη ανασυρόμενης συσκευής Υποστήριξη δεν είναι πλέον διαθέσιμο για τα ακόλουθα ανταλλακτικά AVR: AVR16DA28, AVR16DA32 και, AVR16DA48.

Έκδοση 2.31

Κανένας.

Έκδοση 2.30

Νέα επιλογή για την αποτροπή αρχικοποίησης δεδομένων Μια νέα επιλογή προγράμματος οδήγησης -mno-data-ini t εμποδίζει την προετοιμασία των δεδομένων και την εκκαθάριση των τμημάτων bss. Λειτουργεί καταστέλλοντας την έξοδο των δεδομένων do_ copy_ και d o_ clear_bss συμβόλων στη συναρμολόγηση files, το οποίο με τη σειρά του θα αποτρέψει τη συμπερίληψη αυτών των ρουτινών από τον σύνδεσμο.

Βελτιωμένες βελτιστοποιήσεις Έχουν πραγματοποιηθεί ορισμένες βελτιώσεις βελτιστοποίησης, συμπεριλαμβανομένης της αφαίρεσης περιττών εντολών επιστροφής, της αφαίρεσης ορισμένων πηδημάτων μετά από μια εντολή παράβλεψης αν είναι bit και βελτιωμένης αφαίρεσης διαδικασιών και της δυνατότητας επανάληψης αυτής της διαδικασίας.

Πρόσθετες επιλογές είναι πλέον διαθέσιμες για τον έλεγχο ορισμένων από αυτές τις βελτιστοποιήσεις, συγκεκριμένα -f section anchors, που επιτρέπει την πρόσβαση στατικών αντικειμένων που εκτελούνται σε σχέση με ένα σύμβολο. -mpai derations=n, που επιτρέπει την αλλαγή του αριθμού των επαναλήψεων αφαίρεσης της διαδικασίας από την προεπιλογή των 2. και, -mpa- κόστος κλήσης- shortcall, που εκτελεί πιο επιθετική διαδικαστική αφαίρεση, με την ελπίδα ότι ο σύνδεσμος μπορεί να χαλαρώσει τις μεγάλες κλήσεις. Αυτή η τελευταία επιλογή μπορεί να αυξήσει το μέγεθος του κώδικα εάν δεν πραγματοποιηθούν οι υποκείμενες παραδοχές.

Υποστήριξη νέας συσκευής Διατίθεται υποστήριξη για τα ακόλουθα ανταλλακτικά AVR: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, 128DAV48

Υποστήριξη ανασυρόμενης συσκευής Η υποστήριξη δεν είναι πλέον διαθέσιμη για τα ακόλουθα ανταλλακτικά AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616TAC, ATA6617, ATA.

Έκδοση 2.29 (Λειτουργική έκδοση ασφαλείας)

Επί κεφαλής file για ενσωματωμένα συστήματα μεταγλωττιστή Για να διασφαλιστεί ότι ο μεταγλωττιστής μπορεί να συμμορφώνεται με τις προδιαγραφές γλώσσας όπως η MISRA, επί κεφαλής file, το οποίο περιλαμβάνεται αυτόματα από , έχει ενημερωθεί. Αυτή η κεφαλίδα περιέχει τα πρωτότυπα για όλες τις ενσωματωμένες συναρτήσεις, όπως τους κύκλους _buil tin _avrnop () και _buil tin_ avr delay_ () . Ορισμένα ενσωματωμένα μπορεί να μην είναι συμβατά με το MISRA. Αυτά μπορούν να παραλειφθούν προσθέτοντας τον ορισμό _Xe_ STRICT_ MISRA στη γραμμή εντολών του μεταγλωττιστή. Τα ενσωματωμένα και οι δηλώσεις τους έχουν ενημερωθεί για να χρησιμοποιούν τύπους σταθερού πλάτους.

Έκδοση 2.20

Υποστήριξη νέας συσκευής Διατίθεται υποστήριξη για τα ακόλουθα ανταλλακτικά AVR: ATTINY1624, ATTINY1626 και ATTINY1627.

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

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

Απουσία AVR Assembler Το AVR Assembler δεν περιλαμβάνεται πλέον σε αυτήν τη διανομή.

Έκδοση 2.19 (Λειτουργική έκδοση ασφαλείας)

Κανένας.

Έκδοση 2.10

Κάλυψη κώδικα Αυτή η έκδοση περιλαμβάνει μια δυνατότητα κάλυψης κώδικα που διευκολύνει την ανάλυση του βαθμού στον οποίο έχει εκτελεστεί ο πηγαίος κώδικας ενός έργου. Χρησιμοποιήστε την επιλογή -mcodecov=ram για να την ενεργοποιήσετε. Μετά την εκτέλεση του προγράμματος στο υλικό σας, οι πληροφορίες κάλυψης κώδικα θα συγκεντρωθούν στη συσκευή και αυτές μπορούν να μεταφερθούν και να εμφανιστούν από το MPLAB X IDE μέσω μιας προσθήκης κάλυψης κώδικα. Ανατρέξτε στην τεκμηρίωση IDE για πληροφορίες σχετικά με αυτήν την προσθήκη. Το #pragma mcodecov μπορεί να χρησιμοποιηθεί για τον αποκλεισμό επακόλουθων συναρτήσεων από την ανάλυση κάλυψης. Ιδανικά το pragma θα πρέπει να προστεθεί στην αρχή του file για να το αποκλείσουμε ολόκληρο file από την ανάλυση κάλυψης. Εναλλακτικά, το χαρακτηριστικό ( (mcodecov) ) μπορεί να χρησιμοποιηθεί για τον αποκλεισμό μιας συγκεκριμένης συνάρτησης από την ανάλυση κάλυψης.

Περιγραφή συσκευής files Μια νέα συσκευή file ονομάζεται avr chipinfo. Το html βρίσκεται στον κατάλογο των εγγράφων της διανομής του μεταγλωττιστή. Αυτό file παραθέτει όλες τις συσκευές που υποστηρίζονται από τον μεταγλωττιστή. Κάντε κλικ στο όνομα μιας συσκευής και θα ανοίξει μια σελίδα που δείχνει όλα τα επιτρεπόμενα ζεύγη ρυθμίσεων/τιμών bit διαμόρφωσης για αυτήν τη συσκευή, με π.χ.amples.

Διαδικαστική αφαίρεση Βελτιστοποιήσεις αφαίρεσης διαδικασίας, οι οποίες αντικαθιστούν κοινά μπλοκ κώδικα συναρμολόγησης με κλήσεις σε ένα εξαγόμενο αντίγραφο αυτού του μπλοκ, έχουν προστεθεί στον μεταγλωττιστή. Αυτά εκτελούνται από μια ξεχωριστή εφαρμογή, η οποία καλείται αυτόματα από τον μεταγλωττιστή κατά την επιλογή των επιπέδων 2, 3 ή βελτιστοποιήσεων. Αυτές οι βελτιστοποιήσεις μειώνουν το μέγεθος του κώδικα, αλλά ενδέχεται να μειώσουν την ταχύτητα εκτέλεσης και τη δυνατότητα εντοπισμού σφαλμάτων κώδικα.
Η διαδικαστική αφαίρεση μπορεί να απενεργοποιηθεί σε υψηλότερα επίπεδα βελτιστοποίησης χρησιμοποιώντας την επιλογή -mno-pa ή μπορεί να ενεργοποιηθεί σε χαμηλότερα επίπεδα βελτιστοποίησης (ανάλογα με την άδειά σας) χρησιμοποιώντας -mpa. Μπορεί να απενεργοποιηθεί για ένα αντικείμενο file χρησιμοποιώντας -mno-pa-on-file=fileόνομα, ή απενεργοποιημένη για μια συνάρτηση χρησιμοποιώντας -mno-pa στη συνάρτηση function=.
Μέσα στον πηγαίο κώδικα, η διαδικαστική αφαίρεση μπορεί να απενεργοποιηθεί για μια συνάρτηση χρησιμοποιώντας _attribute_ ( (nopa)) με τον ορισμό της συνάρτησης ή χρησιμοποιώντας _nopa, το οποίο επεκτείνεται στο χαρακτηριστικό ( (nopa, noinline)) και έτσι εμποδίζει την ενσωμάτωση συνάρτησης και υπάρχει αφαίρεση του ενσωματωμένου κώδικα.
Υποστήριξη bit κλειδώματος στο pragma Το #pragma config μπορεί τώρα να χρησιμοποιηθεί για να καθορίσει τα bit κλειδώματος AVR καθώς και τα άλλα bit διαμόρφωσης. Ελέγξτε τις πληροφορίες του τσιπ avr. html file (αναφέρθηκε παραπάνω) για τα ζεύγη ρύθμισης/τιμής που θα χρησιμοποιηθούν με αυτήν την πράξη.
Υποστήριξη νέας συσκευής Η υποστήριξη είναι διαθέσιμη για τα ακόλουθα μέρη: AVR28DA128, AVR64DA128, AVR32DA128 και AVR48DA128.

Έκδοση 2.05

Περισσότερα κομμάτια για το χρήμα σας Η έκδοση macOS αυτού του μεταγλωττιστή και του διαχειριστή αδειών είναι πλέον μια εφαρμογή 64-bit. Αυτό θα διασφαλίσει ότι ο μεταγλωττιστής θα εγκαταστήσει και θα εκτελεστεί χωρίς προειδοποιήσεις στις πρόσφατες εκδόσεις του macOS.
Αντικείμενα Const στη μνήμη προγράμματος Ο μεταγλωττιστής μπορεί τώρα να τοποθετήσει αντικείμενα που πληρούν τα κριτήρια const στη μνήμη Flash του προγράμματος, αντί να βρίσκονται στη μνήμη RAM. Ο μεταγλωττιστής έχει τροποποιηθεί έτσι ώστε τα καθολικά δεδομένα που πληρούν τις προϋποθέσεις να αποθηκεύονται στη μνήμη flash προγράμματος και να είναι δυνατή η άμεση και έμμεση πρόσβαση σε αυτά τα δεδομένα χρησιμοποιώντας τις κατάλληλες οδηγίες μνήμης προγράμματος. Αυτή η νέα δυνατότητα είναι ενεργοποιημένη από προεπιλογή, αλλά μπορεί να απενεργοποιηθεί χρησιμοποιώντας την επιλογή -mno-const-data-in-progmem. Για τις αρχιτεκτονικές avrxmega3 και avrtiny, αυτή η δυνατότητα δεν απαιτείται και είναι πάντα απενεργοποιημένη, καθώς η μνήμη προγράμματος αντιστοιχίζεται στο χώρο διευθύνσεων δεδομένων για αυτές τις συσκευές.
Standard δωρεάν Οι μη αδειοδοτημένες (δωρεάν) εκδόσεις αυτού του μεταγλωττιστή επιτρέπουν πλέον βελτιστοποιήσεις μέχρι και το επίπεδο 2. Αυτό θα επιτρέψει μια παρόμοια, αν και όχι πανομοιότυπη, έξοδο με ό,τι ήταν προηγουμένως δυνατό χρησιμοποιώντας μια τυπική άδεια χρήσης.
Καλώς ήρθες AVRASM2 Ο συναρμολογητής AVRASM2 για συσκευές 8-bit περιλαμβάνεται πλέον στο πρόγραμμα εγκατάστασης μεταγλωττιστή XC8. Αυτός ο assembler δεν χρησιμοποιείται από τον μεταγλωττιστή XC8, αλλά είναι διαθέσιμος για έργα που βασίζονται σε χειρόγραφη πηγή συναρμολόγησης.
Υποστήριξη νέας συσκευής Η υποστήριξη είναι διαθέσιμη για τα ακόλουθα μέρη: ATMEGA1608, ATMEGA1609, ATMEGA808 και ATMEGA809.

Έκδοση 2.00

Πρόγραμμα οδήγησης ανώτατου επιπέδου Ένα νέο πρόγραμμα οδήγησης, που ονομάζεται xc8-cc, βρίσκεται τώρα πάνω από το προηγούμενο πρόγραμμα οδήγησης avr-gcc και το πρόγραμμα οδήγησης xc8 και μπορεί να καλέσει τον κατάλληλο μεταγλωττιστή με βάση την επιλογή της συσκευής προορισμού. Αυτό το πρόγραμμα οδήγησης δέχεται επιλογές τύπου GCC, οι οποίες είτε μεταφράζονται είτε μεταβιβάζονται στον μεταγλωττιστή που εκτελείται. Αυτό το πρόγραμμα οδήγησης επιτρέπει τη χρήση παρόμοιου συνόλου επιλογών με παρόμοια σημασιολογία με οποιονδήποτε στόχο AVR ή PIC και είναι επομένως ο προτεινόμενος τρόπος για να καλέσετε τον μεταγλωττιστή. Εάν απαιτείται, το παλιό πρόγραμμα οδήγησης avr-gcc μπορεί να κληθεί απευθείας χρησιμοποιώντας τις επιλογές παλαιού τύπου που δεχόταν σε προηγούμενες εκδόσεις μεταγλωττιστή.

Κοινή διεπαφή C Αυτός ο μεταγλωττιστής μπορεί πλέον να συμμορφώνεται με την κοινή διεπαφή MPLAB C, επιτρέποντας στον πηγαίο κώδικα να μεταφέρεται πιο εύκολα σε όλους τους μεταγλωττιστές MPLAB XC. Η επιλογή -mext=cci ζητά αυτό το χαρακτηριστικό, επιτρέποντας εναλλακτική σύνταξη για πολλές επεκτάσεις γλώσσας.

Νέο πρόγραμμα οδήγησης βιβλιοθηκών Ένα νέο πρόγραμμα οδήγησης βιβλιοθηκών τοποθετείται πάνω από τον προηγούμενο βιβλιοθηκονόμο βιβλιοθηκών PIC και τον βιβλιοθηκάριο avr-ar AVR. Αυτό το πρόγραμμα οδήγησης δέχεται επιλογές στυλ αρχειοθέτησης GCC, οι οποίες είτε μεταφράζονται είτε μεταβιβάζονται στον βιβλιοθηκονόμο που εκτελείται. Το νέο πρόγραμμα οδήγησης επιτρέπει τη χρήση παρόμοιου συνόλου επιλογών με παρόμοια σημασιολογία για τη δημιουργία ή τον χειρισμό οποιασδήποτε βιβλιοθήκης PIC ή AVR file και επομένως είναι ο συνιστώμενος τρόπος για να επικαλεστείτε τον βιβλιοθηκάριο. Εάν απαιτείται για έργα παλαιού τύπου, ο προηγούμενος βιβλιοθηκάριος μπορεί να κληθεί απευθείας χρησιμοποιώντας τις παλιού τύπου επιλογές που αποδέχονταν σε προηγούμενες εκδόσεις μεταγλωττιστή.

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

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

Έκδοση 2.40

Κανένας.

Έκδοση 2.39 (Λειτουργική έκδοση ασφαλείας)

Κανένας.

Έκδοση 2.36

Κανένας.

Έκδοση 2.35

Χειρισμός βάσεων string-to (XCS-2420) Για να διασφαλιστεί η συνέπεια με άλλους μεταγλωττιστές XC, οι συναρτήσεις συμβολοσειράς XC8, όπως η strtol () κ.λπ., δεν θα επιχειρούν πλέον να μετατρέψουν μια συμβολοσειρά εισόδου εάν η καθορισμένη βάση είναι μεγαλύτερη από 36 και αντ' αυτού θα ορίσουν το errno σε EINVAL. Το πρότυπο C δεν καθορίζει τη συμπεριφορά των συναρτήσεων όταν γίνεται υπέρβαση αυτής της βασικής τιμής.

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

Λειτουργία βιβλιοθήκης Ο κώδικας για πολλές από τις τυπικές συναρτήσεις της βιβλιοθήκης C προέρχεται τώρα από την Unified Standard Library του Microchip, η οποία ενδέχεται να παρουσιάζει διαφορετική συμπεριφορά σε ορισμένες περιπτώσεις σε σύγκριση με αυτήν που παρέχεται από την προηγούμενη βιβλιοθήκη avr-libc. Για π.χampΛοιπόν, δεν είναι πλέον απαραίτητο να συνδέεστε στη βιβλιοθήκη lprintf_flt (επιλογή -print _flt) για να ενεργοποιήσετε την υποστήριξη μορφοποιημένης IO για προσδιοριστές μορφής float. Οι έξυπνες δυνατότητες IO της ενοποιημένης τυπικής βιβλιοθήκης Microchip καθιστούν αυτήν την επιλογή περιττή. Επιπλέον, η χρήση ρουτινών με επίθημα _p για συναρτήσεις συμβολοσειράς και μνήμης (π.χ. strcpy_P () κ.λπ. .. ) που λειτουργούν σε συμβολοσειρές const σε flash δεν είναι πλέον απαραίτητη. Οι τυπικές ρουτίνες C (π.χ. strcpy ()) θα λειτουργούν σωστά με τέτοια δεδομένα όταν είναι ενεργοποιημένη η δυνατότητα const-data-in-program-memory.

Έκδοση 2.32

Κανένας.

Έκδοση 2.31

Κανένας.

Έκδοση 2.30

Κανένας.

Έκδοση 2.29 (Λειτουργική έκδοση ασφαλείας)

Κανένας.

Έκδοση 2.20

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

Έκδοση 2.19 (Λειτουργική έκδοση ασφαλείας)

Κανένας.

Έκδοση 2.10

Κανένας

Έκδοση 2.05

Const αντικείμενα στη μνήμη προγράμματος Λάβετε υπόψη ότι τα από προεπιλογή, const-qualfiied αντικείμενα θα τοποθετηθούν και θα προσπελαστούν στη μνήμη του προγράμματος (όπως περιγράφεται εδώ) . Αυτό θα επηρεάσει το μέγεθος και την ταχύτητα εκτέλεσης του έργου σας, αλλά θα πρέπει να μειώσει τη χρήση της μνήμης RAM. Αυτή η δυνατότητα μπορεί να απενεργοποιηθεί, εάν απαιτείται, χρησιμοποιώντας την επιλογή -mnoconst- da ta-in-progmem.

Έκδοση 2.00

Ασφάλειες διαμόρφωσης Οι ασφάλειες διαμόρφωσης της συσκευής μπορούν τώρα να προγραμματιστούν χρησιμοποιώντας ένα config pragma που ακολουθείται από ζεύγη τιμών ρύθμισης για τον καθορισμό της κατάστασης ασφάλειας, π.χ.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Απόλυτα αντικείμενα και συναρτήσεις Τα αντικείμενα και οι συναρτήσεις μπορούν τώρα να τοποθετηθούν σε συγκεκριμένη διεύθυνση στη μνήμη χρησιμοποιώντας τον προσδιοριστή CCI _at (διεύθυνση), π.χ.ample: #περιλαμβάνω int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Το όρισμα σε αυτόν τον προσδιοριστή πρέπει να είναι μια σταθερά που αντιπροσωπεύει τη διεύθυνση στην οποία θα τοποθετηθεί το πρώτο byte ή εντολή. Οι διευθύνσεις RAM υποδεικνύονται χρησιμοποιώντας μια μετατόπιση 0x800000. Ενεργοποιήστε το CCI για χρήση αυτής της δυνατότητας.
Νέα σύνταξη λειτουργίας διακοπής Ο μεταγλωττιστής δέχεται τώρα τον προσδιοριστή διακοπής CCI (num) για να υποδείξει ότι οι συναρτήσεις C είναι χειριστές διακοπής. Ο προσδιοριστής παίρνει έναν αριθμό διακοπής, π.χample: #περιλαμβάνω void interrupt(SPI STC_ vect _num) spi Isr(void) { … }

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

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

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

Έκδοση 2.40

Υπερβολικά χαλαρό (XCS-2876) Κατά τη χρήση της επιλογής -mrelax, ο μεταγλωττιστής δεν εκχωρούσε ορισμένες ενότητες μαζί, με αποτέλεσμα λιγότερο βέλτιστα μεγέθη κώδικα. Αυτό μπορεί να συνέβη με κώδικα που χρησιμοποιούσε τις νέες βιβλιοθήκες MUSL ή με αδύναμα σύμβολα.
Η δυνατότητα χαρτογράφησης δεν είναι απενεργοποιημένη όπως αναφέρεται στην προειδοποίηση (XCS-2875) Η λειτουργία data-data-in-config mappedprogmem εξαρτάται από την ενεργοποίηση της δυνατότητας cost-data-in-proem. Εάν η δυνατότητα cost-data-ipconfig-mapped-proem ενεργοποιήθηκε ρητά χρησιμοποιώντας την επιλογή και η λειτουργία cost-data-inprogmem ήταν απενεργοποιημένη, το βήμα σύνδεσης απέτυχε, παρά το προειδοποιητικό μήνυμα που δηλώνει ότι τα μειονεκτήματα δεδομένα-in-config-mapped- Η δυνατότητα proem είχε απενεργοποιηθεί αυτόματα, κάτι που δεν ήταν απολύτως σωστό. Η δυνατότητα const-data-in-config-mapped-proem είναι πλέον πλήρως απενεργοποιημένη σε αυτήν την κατάσταση.
Το DFP αλλάζει για σωστή πρόσβαση στο NVMCTRL (XCS-2848) Ο κώδικας εκκίνησης χρόνου εκτέλεσης που χρησιμοποιήθηκε από τις συσκευές AVR64EA δεν έλαβε υπόψη ότι ο καταχωρητής NVMCTRL βρισκόταν υπό Προστασία αλλαγής διαμόρφωσης (CCP) και δεν ήταν σε θέση να ορίσει το IO SFR στη σελίδα που χρησιμοποιείται από τον μεταγλωττιστή cont-data-in configmapped-proem χαρακτηριστικό. Οι αλλαγές που έγιναν στην έκδοση 2.2.55 του AVR-Ex_DFP θα επιτρέψουν στον κώδικα εκκίνησης χρόνου εκτέλεσης να εγγράψει σωστά σε αυτό το μητρώο.
Αλλαγές DFP για αποφυγή αντιστοίχισης flash (XCS-2847) Έχει εφαρμοστεί μια λύση για ένα πρόβλημα με τη δυνατότητα της συσκευής χαρτογράφησης flash που αναφέρεται στο AVR128DA28/32/48/64 Silicon Errata (DS80000882). Η δυνατότητα μεταγλωττιστή const-data-in-config-mapped-proem δεν θα εφαρμόζεται από προεπιλογή για τις επηρεαζόμενες συσκευές και αυτή η αλλαγή θα εμφανιστεί στην έκδοση 2.2.160 του AVR-Ex_DFP.
Σφάλμα κατασκευής με sinhf ή coshf (XCS-2834) Οι προσπάθειες χρήσης των συναρτήσεων βιβλιοθήκης sinhf () ή coshf () οδήγησαν σε σφάλμα σύνδεσης, που περιγράφει μια απροσδιόριστη αναφορά. Η λειτουργία που λείπει που αναφέρεται έχει πλέον συμπεριληφθεί στη διανομή του μεταγλωττιστή.
Σφάλματα δημιουργίας με το nopa (XCS-2833) Η χρήση του χαρακτηριστικού nopa με μια συνάρτηση στην οποία έχει καθοριστεί το όνομα του συναρμολογητή χρησιμοποιώντας ως () ενεργοποίησε μηνύματα σφάλματος από τη συναρμολόγηση. Αυτός ο συνδυασμός δεν είναι δυνατός.
Αποτυχία μεταβλητής συνάρτησης με ορίσματα δείκτη (XCS-2755, XCS-2731) Οι συναρτήσεις με μεταβλητό αριθμό ορισμάτων αναμένουν δείκτες 24-bit (τύπος _memo) να μεταβιβαστούν στη λίστα ορισμάτων μεταβλητής όταν είναι ενεργοποιημένη η δυνατότητα κόστους-δεδομένα-σε-προέμ. Ορίσματα που ήταν δείκτες στη μνήμη δεδομένων μεταβιβάζονταν ως αντικείμενα 16-bit, προκαλώντας αποτυχία κώδικα όταν τελικώς διαβάστηκαν. Όταν είναι ενεργοποιημένη η δυνατότητα cons data-in-proem, όλα τα ορίσματα δεικτών 16-bit μετατρέπονται πλέον σε δείκτες 24-bit. Οι λειτουργίες της βιβλιοθήκης strtoxxx αποτυγχάνουν (XCS-2620) Όταν ήταν ενεργοποιημένη η δυνατότητα const-data-in-proem, η παράμετρος enter στις συναρτήσεις της βιβλιοθήκης strtoxxx δεν ενημερώθηκε σωστά για ορίσματα συμβολοσειράς πηγής που δεν βρίσκονται στη μνήμη προγράμματος.
Ειδοποιήσεις για μη έγκυρες εκπομπές (XCS-2612) Ο μεταγλωττιστής θα παρουσιάσει τώρα ένα σφάλμα εάν είναι ενεργοποιημένη η δυνατότητα cost-in-proem και η διεύθυνση μιας συμβολοσειράς μεταδίδεται ρητά στον χώρο διευθύνσεων δεδομένων (αποβολή του προσδιορισμού const), για π.χ.ample, (uint8 t *) "Hello World!". Υπάρχει μια προειδοποίηση εάν η διεύθυνση ενδέχεται να μην είναι έγκυρη όταν ένας δείκτης δεδομένων const μεταδίδεται ρητά στον χώρο διευθύνσεων δεδομένων.
Τοποθέτηση μη αρχικοποιημένων αντικειμένων const (XCS-2408) Τα μη αρχικοποιημένα αντικείμενα const και const v olatile δεν τοποθετούνταν στη μνήμη προγράμματος σε συσκευές που αντιστοιχίζουν ολόκληρη ή μέρος της μνήμης του προγράμματος στον χώρο διευθύνσεων δεδομένων. Για αυτές τις συσκευές, τέτοια αντικείμενα τοποθετούνται πλέον στη μνήμη προγράμματος, καθιστώντας τη λειτουργία τους συνεπή με άλλες συσκευές.

Έκδοση 2.39 (Λειτουργική έκδοση ασφαλείας)

Κανένας.

Έκδοση 2.36

Σφάλμα κατά την καθυστέρηση (XCS-2774) Μικρές αλλαγές στις προεπιλεγμένες βελτιστοποιήσεις ελεύθερης λειτουργίας εμπόδισαν τη συνεχή αναδίπλωση των παραστάσεων τελεστών στις ενσωματωμένες συναρτήσεις καθυστέρησης, με αποτέλεσμα να αντιμετωπίζονται ως μη επαφές και να ενεργοποιείται το σφάλμα: _buil tin avr delay_ cycles expects ac ompile χρονική ακέραια σταθερά.

Έκδοση 2.35

Συνεχής κατανομή χρησιμοποιώντας _at (XCS-2653) Η συνεχής εκχώρηση πολλών θέσεων αντικειμένων σε μια ενότητα με το ίδιο όνομα και η χρήση στο () δεν λειτούργησε σωστά. Για π.χample: constchararrl [ ] at tri butte ((sect on(.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; κόστος char arr2[ ] at tri butte ((section(“.my s eke”))) = {Oxen, Ox FE }; θα έπρεπε να έχει τοποθετήσει το arr2 αμέσως μετά το aril.
Καθορισμός διευθύνσεων έναρξης ενότητας (XCS-2650) Η επιλογή -Wal, -section-start απέτυχε σιωπηλά να τοποθετήσει τμήματα στην καθορισμένη διεύθυνση έναρξης. Αυτό το ζήτημα έχει διορθωθεί για τυχόν ενότητες με προσαρμοσμένη ονομασία. Ωστόσο, δεν θα λειτουργήσει για καμία τυπική ενότητα, όπως . κείμενο ή . bss, το οποίο πρέπει να τοποθετηθεί χρησιμοποιώντας μια επιλογή -Wl, -T.
Ο σύνδεσμος διακόπτεται κατά τη χαλάρωση (XCS-2647) Όταν ενεργοποιήθηκε η βελτιστοποίηση -relax και υπήρχαν ενότητες κώδικα ή δεδομένων που δεν χωρούσαν στη διαθέσιμη μνήμη, ο σύνδεσμος κατέρρευσε. Τώρα, σε μια τέτοια περίπτωση, εκδίδονται μηνύματα σφάλματος.
Κακή πρόσβαση EEPROM (XCS-2629) Η ρουτίνα μπλοκ leproma _read_ δεν λειτουργούσε σωστά σε συσκευές Mega όταν ήταν ενεργοποιημένη η επιλογή -monist-data-in-proem (η οποία είναι η προεπιλεγμένη κατάσταση), με αποτέλεσμα η μνήμη EEPROM να μην διαβάζεται σωστά.
Μη έγκυρη εκχώρηση μνήμης (XCS-2593, XCS-2651) Όταν η επιλογή -Text ή -Tata linker (π.χampΚαθορίζεται η μεταβίβαση χρησιμοποιώντας μια επιλογή προγράμματος οδήγησης -Wl), η αντίστοιχη προέλευση της περιοχής κειμένου/δεδομένων ενημερώθηκε. Ωστόσο, η τελική διεύθυνση δεν προσαρμόστηκε ανάλογα, γεγονός που θα μπορούσε να είχε οδηγήσει στην υπέρβαση της περιοχής μνήμης της συσκευής-στόχου.
Μη έγκυρος κωδικός διακοπής ATtiny (XCS-2465) Κατά την κατασκευή συσκευών Tatin και οι βελτιστοποιήσεις ήταν απενεργοποιημένες (-00), οι συναρτήσεις διακοπής μπορεί να έχουν ενεργοποιήσει μηνύματα συναρμολόγησης τελεστών εκτός εμβέλειας.
Επιλογές που δεν διαβιβάζονται (XCS-2452) Κατά τη χρήση της επιλογής -Wl με πολλαπλές επιλογές σύνδεσης διαχωρισμένες με κόμματα, δεν μεταβιβάζονταν όλες οι επιλογές σύνδεσης στο σύνδεσμο.
Σφάλμα έμμεσης ανάγνωσης της μνήμης προγράμματος (XCS-2450) Σε ορισμένες περιπτώσεις, ο μεταγλωττιστής παρήγαγε ένα εσωτερικό σφάλμα (μη αναγνωρίσιμο insn) κατά την ανάγνωση μιας τιμής δύο byte από έναν δείκτη στη μνήμη προγράμματος

Έκδοση 2.32

Η δεύτερη πρόσβαση στη βιβλιοθήκη αποτυγχάνει (XCS-2381) Επίκληση της έκδοσης Windows του xc8-ar. Ο αρχειοθέτης βιβλιοθήκης exe για δεύτερη φορά για πρόσβαση σε ένα υπάρχον αρχείο βιβλιοθήκης ενδέχεται να απέτυχε με μήνυμα σφάλματος που δεν ήταν δυνατή η μετονομασία.

Έκδοση 2.31

Ανεξήγητες αποτυχίες μεταγλωττιστή (XCS-2367) Όταν εκτελείται σε πλατφόρμες Windows που είχαν τον προσωρινό κατάλογο του συστήματος ρυθμισμένο σε μια διαδρομή που περιλάμβανε μια κουκκίδα'. χαρακτήρα, ο μεταγλωττιστής μπορεί να απέτυχε να εκτελέσει.

Έκδοση 2.30

Οι καθολικές ετικέτες δεν έχουν τοποθετηθεί μετά το περίγραμμα (XCS-2299) Ο χειρόγραφος κώδικας συναρμολόγησης που τοποθετεί καθολικές ετικέτες σε ακολουθίες συναρμολόγησης που λαμβάνονται υπόψη από τη διαδικαστική αφαίρεση ενδέχεται να μην έχει επανατοποθετηθεί σωστά.
Ένα χαλαρωτικό τρακάρισμα (XCS-2287) Η χρήση της επιλογής -merlad μπορεί να είχε προκαλέσει τη συντριβή του συνδέσμου όταν οι βελτιστοποιήσεις χαλάρωσης άλματος ουράς προσπάθησαν να αφαιρέσουν τις οδηγίες ret που δεν βρίσκονταν στο τέλος μιας ενότητας.
Σφάλμα κατά τη βελτιστοποίηση ετικετών ως τιμών (XCS-2282) Ο κώδικας που χρησιμοποιεί την επέκταση γλώσσας "Ετικέτες ως τιμές" GNU C μπορεί να έχει προκαλέσει τη διακοπή λειτουργίας των διαδικαστικών βελτιστοποιήσεων αφαίρεσης, με ένα σφάλμα επιδιόρθωσης εκτάσεων εύρους περιγραφόμενων VMA.
Όχι και τόσο μεγάλη (XCS-2271) Τα πρωτότυπα για starts () και άλλες λειτουργίες από δεν προσδιορίζετε πλέον το μη τυπικό προσδιοριστικό κόστους στους επιστρεφόμενους δείκτες συμβολοσειράς όταν είναι απενεργοποιημένη η δυνατότητα -monist-data inprogmem. Σημειώστε ότι με τις συσκευές avrxmega3 και avertin, αυτή η δυνατότητα είναι μόνιμα ενεργοποιημένη.
Χάθηκαν αρχικοποιητές (XCS-2269) Όταν περισσότερες από μία μεταβλητές σε μια μονάδα μετάφρασης τοποθετήθηκαν σε μια ενότητα (χρησιμοποιώντας ενότητα ή χαρακτηριστικό ((ενότητα))) και η πρώτη τέτοια μεταβλητή ήταν μηδενική ή δεν είχε αρχικοποιητή, αρχικοποιητές για άλλες μεταβλητές στην ίδια μονάδα μετάφρασης που τοποθετήθηκαν στο ίδιο τμήμα χάθηκαν.

Έκδοση 2.29 (Λειτουργική έκδοση ασφαλείας)

Κανένας.

Έκδοση 2.20

Σφάλμα με μεγάλες εντολές (XCS-1983) Όταν χρησιμοποιείτε έναν στόχο AVR, ο μεταγλωττιστής μπορεί να έχει σταματήσει με a file δεν βρέθηκε σφάλμα, εάν η γραμμή εντολών ήταν εξαιρετικά μεγάλη και περιείχε ειδικούς χαρακτήρες όπως εισαγωγικά, ανάστροφες κάθετες κ.λπ.
Μη εκχωρημένο τμήμα rodata (XCS-1920) Ο σύνδεσμος AVR απέτυχε να εκχωρήσει μνήμη για προσαρμοσμένες ενότητες rodata κατά τη δημιουργία αρχιτεκτονικών avrxmega3 και avrtiny, δημιουργώντας πιθανώς σφάλματα επικάλυψης μνήμης

Έκδοση 2.19 (Λειτουργική έκδοση ασφαλείας)

Κανένας.

Έκδοση 2.10

Αποτυχίες μετεγκατάστασης (XCS-1891) Ο κατανεμητής καλύτερης προσαρμογής ήταν να αφήνει «τρύπες» μνήμης μεταξύ των τμημάτων μετά τη χαλάρωση του συνδετήρα. Εκτός από τον κατακερματισμό της μνήμης, αυτό αύξησε την πιθανότητα να υπάρξουν αποτυχίες μετεγκατάστασης συνδέσμου που σχετίζονται με άλματα που σχετίζονται με τον υπολογιστή ή κλήσεις να βγουν εκτός εμβέλειας.
Οδηγίες που δεν μεταμορφώνονται με χαλάρωση (XCS-1889) Η χαλάρωση του συνδέσμου δεν προέκυψε για οδηγίες άλματος ή κλήσης των οποίων οι στόχοι γίνονται προσβάσιμοι εάν χαλαρώσουν.
Απών λειτουργικότητα (XCSE-388) Αρκετοί ορισμοί από , όπως clock_ div_ t και clock_prescale_set (), δεν ορίστηκαν για συσκευές, συμπεριλαμβανομένων των ATmega324PB, ATmega328PB, ATtiny441 και ATtiny841.
Λείπουν μακροεντολές Οι μακροεντολές προεπεξεργαστή_ xcs _MODE_, _xcs VERSION, _xc και xcs δεν ορίστηκαν αυτόματα από τον μεταγλωττιστή. Αυτά είναι πλέον διαθέσιμα.

Έκδοση 2.05

Εσωτερικό σφάλμα μεταγλωττιστή (XCS-1822) Κατά τη δημιουργία στα Windows, ενδέχεται να έχει δημιουργηθεί ένα εσωτερικό σφάλμα μεταγλωττιστή κατά τη βελτιστοποίηση του κώδικα.
Δεν εντοπίστηκε υπερχείλιση RAM (XCS-1800, XCS-1796) Τα προγράμματα που υπερέβαιναν τη διαθέσιμη μνήμη RAM δεν εντοπίστηκαν από τον μεταγλωττιστή σε ορισμένες περιπτώσεις, με αποτέλεσμα την αποτυχία του κώδικα χρόνου εκτέλεσης.
Παραλειφθείσα μνήμη flash (XCS-1792) Για συσκευές avrxmega3 και avrtiny, μέρη της μνήμης flash ενδέχεται να μην έχουν προγραμματιστεί από το MPLAB X IDE.
Αποτυχία εκτέλεσης main (XCS-1788) Σε ορισμένες περιπτώσεις όπου το πρόγραμμα δεν είχε καθορισμένες καθολικές μεταβλητές, ο κώδικας εκκίνησης χρόνου εκτέλεσης δεν έβγαινε και η κύρια συνάρτηση () δεν επιτεύχθηκε ποτέ.
Εσφαλμένες πληροφορίες μνήμης (XCS-1787) Για τις συσκευές avrxmega3 και avrtiny, το πρόγραμμα μεγέθους avr ανέφερε ότι τα δεδομένα μόνο για ανάγνωση καταναλώνουν μνήμη RAM αντί για μνήμη προγράμματος.
Λανθασμένη ανάγνωση μνήμης προγράμματος (XCS-1783) Έργα που έχουν μεταγλωττιστεί για συσκευές με μνήμη προγράμματος αντιστοιχισμένη στον χώρο διευθύνσεων δεδομένων και που ορίζουν αντικείμενα χρησιμοποιώντας τη μακροεντολή/χαρακτηριστικό PROGMEM ενδέχεται να έχουν διαβάσει αυτά τα αντικείμενα από λάθος διεύθυνση.
Εσωτερικό σφάλμα με χαρακτηριστικά (XCS-1773) Παρουσιάστηκε εσωτερικό σφάλμα εάν ορίσατε αντικείμενα δείκτη με το
διακριτικά _at () ή χαρακτηριστικό() μεταξύ του ονόματος του δείκτη και του μη αναφερόμενου τύπου, π.χample, char *
_at ( 0x80015 0) cp; Τώρα εκδίδεται μια προειδοποίηση εάν συναντήσετε τέτοιο κωδικό.
Αποτυχία εκτέλεσης main (XCS-1780, XCS-1767, XCS-1754) Η χρήση μεταβλητών EEPROM ή ο καθορισμός ασφαλειών χρησιμοποιώντας το config pragma μπορεί να έχει προκαλέσει λανθασμένη αρχικοποίηση δεδομένων ή/και να έχει κλειδώσει την εκτέλεση του προγράμματος στον κώδικα εκκίνησης χρόνου εκτέλεσης, πριν φτάσει στο main () .
Σφάλμα ασφαλειών με μικροσκοπικές συσκευές (XCS-1778, XCS-1742) Οι συσκευές attiny4/5/9/10/20/40 είχαν λανθασμένο μήκος ασφάλειας που καθορίζεται στην κεφαλίδα τους files που οδηγούν σε σφάλματα σύνδεσης κατά την προσπάθεια δημιουργίας κώδικα που καθορίζει τις ασφάλειες.
Σφάλμα τμηματοποίησης (XCS-1777) Διορθώθηκε ένα διακοπτόμενο σφάλμα τμηματοποίησης.
Συντριβή Assembler (XCS-1761) Το πρόγραμμα συναρμολόγησης avr-as μπορεί να είχε κολλήσει όταν ο μεταγλωττιστής εκτελούνταν στο Ubuntu 18.
Μη εκκαθαρισμένα αντικείμενα (XCS-1752) Τα μη αρχικοποιημένα αντικείμενα διάρκειας στατικής αποθήκευσης ενδέχεται να μην έχουν διαγραφεί από τον κώδικα εκκίνησης χρόνου εκτέλεσης.
Η προδιαγραφή συσκευής σε διένεξη αγνοήθηκε (XCS-1749) Ο μεταγλωττιστής δεν δημιουργούσε σφάλμα όταν χρησιμοποιήθηκαν πολλές επιλογές προδιαγραφών συσκευής και υποδείκνυαν διαφορετικές συσκευές.
Καταστροφή μνήμης από σωρό (XCS-1748) Το σύμβολο έναρξης heap_ είχε οριστεί εσφαλμένα, με αποτέλεσμα την πιθανότητα αλλοίωσης των συνηθισμένων μεταβλητών από το σωρό.
Σφάλμα μετεγκατάστασης συνδέσμου (XCS-1739) Ένα σφάλμα μετεγκατάστασης συνδέσμου ενδέχεται να έχει εκπέμπεται όταν ο κώδικας περιείχε ένα rjmp ή μια κλήση με στόχο ακριβώς 4k byte μακριά.

Έκδοση 2.00

Κανένας.

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

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

Ενσωμάτωση MPLAB X IDE

Ενσωμάτωση MPLAB IDE Εάν ο Compiler πρόκειται να χρησιμοποιηθεί από το MPLAB IDE, τότε πρέπει να εγκαταστήσετε το MPLAB IDE πριν εγκαταστήσετε τον Compiler.

Δημιουργία Κώδικα

Αποτυχία εκχώρησης μνήμης PA (XCS-2881) Κατά τη χρήση των διαδικαστικών βελτιστοποιητών αφαίρεσης, ο σύνδεσμος ενδέχεται να αναφέρει σφάλματα εκχώρησης μνήμης όταν το μέγεθος του κώδικα πλησιάζει την ποσότητα της διαθέσιμης μνήμης προγράμματος στη συσκευή, παρόλο που το πρόγραμμα θα πρέπει να μπορεί να χωράει στον διαθέσιμο χώρο.
Όχι και τόσο έξυπνο Smart-IO (XCS-2872) Η λειτουργία smart-io του μεταγλωττιστή θα δημιουργήσει έγκυρο αλλά μη βέλτιστο κώδικα για τη λειτουργία sprint εάν η λειτουργία coast-data-in-proem έχει απενεργοποιηθεί ή εάν η συσκευή έχει αντιστοιχίσει όλο το flash της στη μνήμη δεδομένων.
Ακόμα λιγότερο έξυπνο Smart-IO (XCS-2869) Η δυνατότητα smart-io του μεταγλωττιστή θα δημιουργήσει έγκυρο αλλά μη βέλτιστο κώδικα όταν χρησιμοποιούνται και οι δύο επιλογές -floe και -fno-buil.
Υποβέλτιστη τοποθέτηση δεδομένων μόνο για ανάγνωση (XCS-2849) Ο σύνδεσμος δεν γνωρίζει αυτήν τη στιγμή τις ενότητες μνήμης APPCODE και APPDATA, ούτε τις υποδιαιρέσεις [No-]Read-While-Write στον χάρτη μνήμης. Ως αποτέλεσμα, υπάρχει μια μικρή πιθανότητα ο σύνδεσμος να εκχωρήσει δεδομένα μόνο για ανάγνωση σε μια ακατάλληλη περιοχή της μνήμης. Η πιθανότητα λανθασμένων δεδομένων αυξάνεται εάν είναι ενεργοποιημένη η λειτουργία coast-data-in-pragma, ειδικά εάν είναι επίσης ενεργοποιημένη η λειτουργία coast-data-in-config-mapped-proem. Αυτές οι λειτουργίες μπορούν να απενεργοποιηθούν εάν απαιτείται.
Αντικείμενο file παραγγελία επεξεργασίας (XCS-2863) Η σειρά με την οποία τα αντικείμενα fileΤα s θα υποβληθούν σε επεξεργασία από το σύνδεσμο ενδέχεται να διαφέρουν με βάση τη χρήση διαδικαστικών βελτιστοποιήσεων αφαίρεσης (επιλογή -mpa). Αυτό θα επηρεάσει μόνο τον κώδικα που ορίζει αδύναμες συναρτήσεις σε πολλαπλές λειτουργικές μονάδες.
Σφάλμα σύνδεσης με απόλυτη (XCS-2777) Όταν ένα αντικείμενο έχει γίνει απόλυτο σε μια διεύθυνση στην αρχή της μνήμης RAM και έχουν οριστεί επίσης μη αρχικοποιημένα αντικείμενα, μπορεί να ενεργοποιηθεί ένα σφάλμα σύνδεσης.
Αναγνωριστικά σύντομης αφύπνισης (XCS-2775) Για συσκευές ATA5700/2, οι καταχωρητές PHID0/1 ορίζονται μόνο ως πλάτους 16 bit και όχι 32 bit.
Σφάλμα σύνδεσης κατά την κλήση του συμβόλου (XCS-2758) Ο σύνδεσμος ενδέχεται να διακοπεί εάν χρησιμοποιηθεί η επιλογή προγράμματος οδήγησης -merlad όταν ο πηγαίος κώδικας καλεί ένα σύμβολο που έχει οριστεί χρησιμοποιώντας την επιλογή σύνδεσης -Wl, -defsym.
Εσφαλμένη προετοιμασία (XCS-2679) Υπάρχει μια ασυμφωνία μεταξύ του σημείου που τοποθετούνται οι αρχικές τιμές για ορισμένα καθολικά/στατικά αντικείμενα μεγέθους byte στη μνήμη δεδομένων και του σημείου που θα γίνει πρόσβαση στις μεταβλητές κατά το χρόνο εκτέλεσης.
που ξεκίνησε λανθασμένα ορίζει κενό (XCS-2652) Σε περιπτώσεις όπου μια συμβολοσειρά θέματος για μετατροπή με τη δήλωση () περιέχει αυτό που φαίνεται να είναι ένας αριθμός κινητής υποδιαστολής σε εκθετική μορφή και υπάρχει ένας απροσδόκητος χαρακτήρας μετά από έναν χαρακτήρα e, τότε η κενή διεύθυνση, εάν παρέχεται, θα δείχνει στον χαρακτήρα μετά το ε και όχι το ίδιο το ε. Για π.χample: δήλωσε ("hooey", κενό); θα έχει ως αποτέλεσμα κενό που δείχνει τον χαρακτήρα x.
Κακές έμμεσες κλήσεις συναρτήσεων (XCS-2628) Σε ορισμένες περιπτώσεις, οι κλήσεις συναρτήσεων που πραγματοποιούνται μέσω ενός δείκτη συνάρτησης που είναι αποθηκευμένος ως μέρος μιας δομής ενδέχεται να αποτύχουν.
Το strtof επιστρέφει μηδέν για δεκαεξαδικούς πλωτήρες (XCS-2626) Οι συναρτήσεις βιβλιοθήκης strtof () et al και scanf () et al, θα μετατρέπουν πάντα έναν δεκαεξαδικό αριθμό κινητής υποδιαστολής που δεν καθορίζει έναν εκθέτη σε
μηδέν. Για π.χample: στάτορας ("Κουκουβάγια", &άδειο); θα επιστρέψει την τιμή 0, όχι 1.
Ανακριβή μηνύματα συμβούλου στοίβας (XCS-2542, XCS-2541) Σε ορισμένες περιπτώσεις, η προειδοποίηση του συμβούλου στοίβας σχετικά με την αναδρομή ή την απροσδιόριστη στοίβα που χρησιμοποιείται (πιθανώς μέσω της χρήσης του alloca()) δεν εκπέμπεται.
Αποτυχία με διπλότυπο κωδικό διακοπής (XCS-2421) Όπου περισσότερες από μία συναρτήσεις διακοπής έχουν το ίδιο σώμα, ο μεταγλωττιστής μπορεί να έχει την έξοδο για τη μία συνάρτηση διακοπής που καλεί την άλλη. Αυτό θα έχει ως αποτέλεσμα να αποθηκευτούν άσκοπα όλοι οι μητρώοι που έχουν παραμορφωθεί με κλήσεις και οι διακοπές θα ενεργοποιηθούν ακόμη και πριν εκτελεστεί ο επίλογος του τρέχοντος χειριστή διακοπών, κάτι που θα μπορούσε να οδηγήσει σε αποτυχία κώδικα.
Αντικείμενα Const που δεν βρίσκονται στη μνήμη προγράμματος (XCS-2408) Για έργα avrxmega3 και avertins τοποθετούνται μη εξιδανικευμένα αντικείμενα const στη μνήμη δεδομένων, παρόλο που μια προειδοποίηση υποδηλώνει ότι έχουν τοποθετηθεί στη μνήμη προγράμματος. Αυτό δεν θα επηρεάσει τις συσκευές που δεν έχουν αντιστοιχισμένη μνήμη προγράμματος στο χώρο της μνήμης δεδομένων, ούτε θα επηρεάσει οποιοδήποτε αντικείμενο που έχει αρχικοποιηθεί.
Εσφαλμένη έξοδος με μη έγκυρη διαδρομή DFP (XCS-2376) Εάν ο μεταγλωττιστής καλείται με μια μη έγκυρη διαδρομή DFP και μια «προδιαγραφή» file υπάρχει για την επιλεγμένη συσκευή, ο μεταγλωττιστής δεν αναφέρει το οικογενειακό πακέτο συσκευών που λείπει και αντ' αυτού επιλέγει την "προδιαγραφή" file, το οποίο μπορεί στη συνέχεια να οδηγήσει σε μη έγκυρη έξοδο. Η «προδιαγραφή» fileΤα s ενδέχεται να μην είναι ενημερωμένα με τα διανεμημένα DFP και προορίζονταν για χρήση μόνο με εσωτερικές δοκιμές μεταγλωττιστή.
Μη ανιχνεύσιμη επικάλυψη μνήμης (XCS-1966) Ο μεταγλωττιστής δεν ανιχνεύει την επικάλυψη μνήμης αντικειμένων που γίνονται απόλυτα σε μια διεύθυνση (μέσω στο ()) και άλλων αντικειμένων που χρησιμοποιούν τον προσδιοριστή ενότητας () και που συνδέονται με την ίδια διεύθυνση.
Αποτυχία με τις λειτουργίες βιβλιοθήκης και _meme (XCS-1763) Οι ονομαζόμενες συναρτήσεις limbic float με όρισμα στο χώρο διευθύνσεων _memo ενδέχεται να αποτύχουν. Σημειώστε ότι οι ρουτίνες της βιβλιοθήκης καλούνται από ορισμένους τελεστές C, έτσι, π.χample, επηρεάζεται ο ακόλουθος κώδικας: επιστροφή regFloatVar > memxFloatVar;
Περιορισμένη μεταιχμιακή υλοποίηση (AVRTC-731) Για τα προϊόντα ATTiny4/5/9/10/20/40, η τυπική εφαρμογή βιβλιοθήκης C / Math στο limbic είναι πολύ περιορισμένη ή δεν υπάρχει.
Περιορισμοί μνήμης προγράμματος (AVRTC-732) Οι εικόνες μνήμης προγράμματος άνω των 128 kb υποστηρίζονται από την αλυσίδα εργαλείων. Ωστόσο, υπάρχουν γνωστές περιπτώσεις ματαίωσης συνδέσμου χωρίς χαλάρωση και χωρίς ένα χρήσιμο μήνυμα σφάλματος αντί να δημιουργηθούν τα απαιτούμενα στελέχη συναρτήσεων όταν χρησιμοποιείται η επιλογή -relax.
Περιορισμοί χώρου ονόματος (AVRTC-733) Οι ονομαστικοί χώροι διευθύνσεων υποστηρίζονται από την αλυσίδα εργαλείων, με την επιφύλαξη των περιορισμών που αναφέρονται στην ενότητα του οδηγού χρήστη Ειδικοί τύποι χαρακτηριστικών.
Ζώνες ώρας Ο Οι λειτουργίες της βιβλιοθήκης προϋποθέτουν GMT και δεν υποστηρίζουν τοπικές ζώνες ώρας, επομένως η τοπική ώρα () θα επιστρέψει την ίδια ώρα με το gummite (), για π.χ.ample.

ΥΠΟΣΤΗΡΙΞΗ ΠΕΛΑΤΩΝ

file:///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ για VR. htm

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

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

Αναφορές

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

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