MPLAB XC8 C შემდგენელი ვერსია 2.39 გამოშვების შენიშვნები AVR MCU-სთვის
მომხმარებლის სახელმძღვანელო
ეს დოკუმენტი შეიცავს მნიშვნელოვან ინფორმაციას MPLAB XC8 C კომპილატორთან დაკავშირებით, როდესაც მიზნად ისახავს მიკროჩიპის AVR მოწყობილობებს. გთხოვთ, წაიკითხოთ იგი ამ პროგრამული უზრუნველყოფის გაშვებამდე.
იხილეთ MPLAB XC8 C კომპილერის გამოშვების შენიშვნები PIC დოკუმენტისთვის, თუ თქვენ იყენებთ კომპილერს 8-ბიტიანი PIC მოწყობილობებისთვის.
დასრულდაview
1.1. შესავალი
Microchip MPLAB® XC8 C კომპილერის ეს გამოშვება არის ფუნქციური უსაფრთხოების შემდგენელი, რომელიც ეფუძნება ამ კომპილერის v2.36 გამოშვებას და რომელიც ახლა მხარს უჭერს ქსელის სერვერის ლიცენზიას.
1.2. გამოშვების თარიღი
ამ შემდგენლის ვერსიის ოფიციალური გამოშვების თარიღია 27 წლის 2022 იანვარი.
1.3. Წინა ვერსია
წინა MPLAB XC8 C შემდგენელი ვერსია იყო 2.36, გამოშვებული 25 წლის 2022 იანვარს.
1.4. ფუნქციური უსაფრთხოების სახელმძღვანელო
ფუნქციური უსაფრთხოების სახელმძღვანელო MPLAB XC შემდგენელებისთვის ხელმისაწვდომია დოკუმენტაციის პაკეტში ფუნქციონალური უსაფრთხოების ლიცენზიის შეძენისას.
1.5. კომპონენტის ლიცენზიები და ვერსიები® ის MPLAB
XC8 C შემდგენელი AVR MCU-ის ხელსაწყოებისთვის იწერება და ნაწილდება GNU General Public License (GPL) ქვეშ, რაც ნიშნავს, რომ მისი საწყისი კოდი თავისუფლად ნაწილდება და ხელმისაწვდომია საზოგადოებისთვის.
GNU GPL-ის ქვეშ არსებული ხელსაწყოების წყაროს კოდი შეიძლება ჩამოიტვირთოს მიკროჩიპისგან დამოუკიდებლად 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-ბიტიანი ვერსიებისთვის: Microsoft Windows 10-ის პროფესიონალური გამოცემები; Ubuntu 18.04; და macOS 10.15.5. ბინარები Windows-ისთვის კოდირებულია. ბინარები macOS-ისთვის კოდირებულია და დამოწმებულია ნოტარიულად.
თუ თქვენ იყენებთ ქსელის სალიცენზიო სერვერს, მხოლოდ კომპიუტერები ოპერაციული სისტემებით, რომლებსაც მხარდაჭერილი აქვთ შემდგენელები, შეიძლება გამოყენებულ იქნას სალიცენზიო სერვერის მასპინძლობისთვის. xclm 2.0 ვერსიით, ქსელის ლიცენზირების სერვერი შეიძლება დაინსტალირდეს Microsoft Windows Server პლატფორმაზე, მაგრამ სალიცენზიო სერვერს არ სჭირდება ოპერაციული სისტემის სერვერის ვერსიაზე მუშაობა.
1.7. მხარდაჭერილი მოწყობილობები
ეს კომპილერი მხარს უჭერს ყველა 8-ბიტიან AVR MCU მოწყობილობას, რომლებიც ცნობილია გამოშვების დროს. იხილეთ (შემდგენელში avr_chipinfo.html დირექტორია) ყველა მხარდაჭერილი მოწყობილობის სიისთვის. ამ ფაილებში ასევე ჩამოთვლილია კონფიგურაციის ბიტის დოკუმენტის პარამეტრები თითოეული მოწყობილობისთვის.
1.8. გამოცემები და ლიცენზიის განახლებები
MPLAB XC8 შემდგენელი შეიძლება გააქტიურდეს როგორც ლიცენზირებული (PRO) ან არალიცენზირებული (უფასო) პროდუქტი. თქვენ უნდა შეიძინოთ აქტივაციის გასაღები თქვენი კომპილერის ლიცენზირებისთვის. ლიცენზია იძლევა ოპტიმიზაციის უფრო მაღალ დონეს უფასო პროდუქტთან შედარებით. არალიცენზირებული შემდგენელი შეიძლება მუშაობდეს განუსაზღვრელი ვადით ლიცენზიის გარეშე.
MPLAB XC8 ფუნქციური უსაფრთხოების შემდგენელი უნდა გააქტიურდეს მიკროჩიპიდან შეძენილი ფუნქციური უსაფრთხოების ლიცენზიით. შემდგენელი არ იმუშავებს ამ ლიცენზიის გარეშე. გააქტიურების შემდეგ, შეგიძლიათ აირჩიოთ ნებისმიერი ოპტიმიზაციის დონე და გამოიყენოთ კომპილერის ყველა ფუნქცია. MPLAB XC ფუნქციური უსაფრთხოების ეს გამოშვება
შემდგენელი მხარს უჭერს ქსელის სერვერის ლიცენზიას.
იხილეთ MPLAB XC C შემდგენელების ინსტალაცია და ლიცენზირება (DS50002059) დოკუმენტი ლიცენზიის ტიპებისა და ლიცენზიით შემდგენლის ინსტალაციის შესახებ ინფორმაციისთვის.
1.9. ინსტალაცია და გააქტიურება
აგრეთვე იხილეთ მიგრაციის საკითხები და შეზღუდვები სექციები მნიშვნელოვანი ინფორმაციისთვის უახლესი ლიცენზიის მენეჯერის შესახებ, რომელიც შედის ამ შემდგენელთან.
თუ იყენებთ MPLAB IDE-ს, დარწმუნდით, რომ დააინსტალირეთ MPLAB X IDE-ის უახლესი ვერსია 5.0 ან უფრო ახალი ამ ხელსაწყოს ინსტალაციამდე. გამოდით IDE-დან კომპილერის დაყენებამდე. გაუშვით (Windows), (Linux) ან (macOS) .exe .run .app compiler ინსტალერი აპლიკაცია, მაგ. და მიჰყევით ეკრანზე მითითებებს.
XC8-1.00.11403-windows.exe
რეკომენდირებულია ნაგულისხმევი ინსტალაციის დირექტორია. თუ იყენებთ Linux-ს, უნდა დააინსტალიროთ შემდგენელი ტერმინალის გამოყენებით და root ანგარიშიდან. დააინსტალირეთ macOS ანგარიშის გამოყენებით ადმინისტრატორის პრივილეგიებით.
გააქტიურება ახლა ინსტალაციისგან ცალკე ხორციელდება. დამატებითი ინფორმაციისთვის იხილეთ დოკუმენტის ლიცენზიის მენეჯერი MPLAB® XC C შემდგენელებისთვის (DS52059).
თუ თქვენ აირჩევთ შემდგენელის გაშვებას შეფასების ლიცენზიის ქვეშ, ახლა მიიღებთ გაფრთხილებას შედგენისას, როდესაც თქვენი შეფასების პერიოდის დასრულებიდან 14 დღეში იქნებით. იგივე გაფრთხილება გაიცემა, თუ თქვენი HPA გამოწერის დასრულებიდან 14 დღის განმავლობაში ხართ.
XC ქსელის სალიცენზიო სერვერი არის ცალკე ინსტალერი და არ შედის ერთი მომხმარებლის შემდგენელის ინსტალერში.
XC ლიცენზიის მენეჯერი ახლა მხარს უჭერს მცურავი ქსელის ლიცენზიების როუმინგს. მობილურის მომხმარებლებისთვის განკუთვნილი ეს ფუნქცია საშუალებას აძლევს მცურავ ლიცენზიას მოკლე დროში გამორთოს ქსელი. ამ ფუნქციის გამოყენებით შეგიძლიათ გათიშოთ ქსელი და კვლავ გამოიყენოთ თქვენი MPLAB XC შემდგენელი. ამ ფუნქციის შესახებ მეტი ინფორმაციისთვის იხილეთ XCLM ინსტალაციის doc საქაღალდე.
MPLAB X IDE მოიცავს ლიცენზიების ფანჯარას (ინსტრუმენტები > ლიცენზიები) როუმინგის ვიზუალურად მართვისთვის.
1.9.1. ინსტალაციის საკითხების მოგვარება
თუ Windows-ის რომელიმე ოპერაციული სისტემის ქვეშ შემდგენლის დაყენებისას სირთულეები გაქვთ, სცადეთ შემდეგი წინადადებები.
- გაუშვით ინსტალაცია ადმინისტრატორის სახით.
- დააყენეთ საინსტალაციო აპლიკაციის ნებართვები „სრული კონტროლი“. (დააწკაპუნეთ მაუსის მარჯვენა ღილაკით ფაილზე, აირჩიეთ თვისებები, უსაფრთხოების ჩანართი, აირჩიეთ მომხმარებელი, შეცვალეთ.)
- დააყენეთ დროებითი საქაღალდის ნებართვები „სრული კონტროლი!“.
- Temp საქაღალდის ადგილმდებარეობის დასადგენად, ჩაწერეთ Run ბრძანება (Windows logo key + R). %temp% ეს გახსნის ფაილის მკვლევარის დიალოგს, რომელიც აჩვენებს ამ დირექტორიას და საშუალებას მოგცემთ განსაზღვროთ ამ საქაღალდის გზა.
1.10. შემდგენელი დოკუმენტაცია
შემდგენელის მომხმარებლის სახელმძღვანელო შეიძლება გაიხსნას HTML გვერდიდან, რომელიც იხსნება თქვენს ბრაუზერში MPLAB X IDE დაფაზე დახმარების ლურჯი ღილაკის დაწკაპუნებისას, როგორც ეს ნაჩვენებია ეკრანის სურათზე.
თუ თქვენ აშენებთ 8-ბიტიან AVR სამიზნეებს, MPLAB® XC8 C Compiler User's® Guide for AVR
MCU შეიცავს ინფორმაციას შემდგენელის ვარიანტებისა და ფუნქციების შესახებ, რომლებიც გამოიყენება ამ არქიტექტურისთვის.
1.11. მომხმარებელთა მხარდაჭერა
Microchip მიესალმება შეცდომების შესახებ შეტყობინებებს, წინადადებებს ან კომენტარებს ამ შემდგენლის ვერსიასთან დაკავშირებით. გთხოვთ, მიმართოთ შეცდომების შესახებ შეტყობინებებს ან ფუნქციების მოთხოვნას მხარდაჭერის სისტემის მეშვეობით.
დოკუმენტაციის განახლებები
MPLAB XC8 დოკუმენტაციის ონლაინ და განახლებული ვერსიებისთვის, გთხოვთ, ეწვიოთ Microchip's Online-ს
ტექნიკური დოკუმენტაცია webსაიტი.
ახალი ან განახლებული AVR დოკუმენტაცია ამ გამოშვებაში:
MPLAB® XC C შემდგენელების (DS50002059) ვერსიის L ინსტალაცია და ლიცენზირება
მიკროჩიპის ერთიანი სტანდარტული ბიბლიოთეკის საცნობარო გზამკვლევი აღწერს მიკროჩიპის ერთიანი სტანდარტული ბიბლიოთეკის მიერ განსაზღვრული ფუნქციების ქცევას და ინტერფეისს, ასევე ბიბლიოთეკის ტიპებისა და მაკროების დანიშნულ გამოყენებას. ამ ინფორმაციის ნაწილი ადრე იყო MPLA® XC8 C შემდგენელის მომხმარებლის სახელმძღვანელოში AVR-ისთვის
MCU. მოწყობილობის სპეციფიკური ბიბლიოთეკის ინფორმაცია კვლავ შეიცავს ამ შემდგენლის სახელმძღვანელოში.
Hexmate მომხმარებლის სახელმძღვანელო ჩართულია დირექტორიაში ამ გამოშვებაში. ეს სახელმძღვანელო განკუთვნილია იმ დოკუმენტებისთვის, რომლებიც მუშაობენ Hexmate-ზე, როგორც ცალკეული აპლიკაცია.
შემდეგი სექციები შეიცავს შესწორებებს და დამატებით ინფორმაციას, რომელიც ნაპოვნია მომხმარებლის სახელმძღვანელოში, რომელიც მიწოდებულია შემდგენელთან ერთად.
2.1. smart-io-format ვარიანტი
msmart-io-format=fmt fmt ოფცია, სადაც არის სტრიქონი, რომელიც შეიცავს ფორმატირებული IO კონვერტაციის სპეციფიკაციებს, აცნობებს შემდგენელს, რომ ჩამოთვლილი სპეციფიკაციები გამოიყენება ჭკვიანი IO ფუნქციების მიერ.
კოდის ზომის შესამცირებლად, შემდგენელი აფორმებს ბიბლიოთეკის კოდს, რომელიც დაკავშირებულია ჭკვიანი IO ფუნქციების ბეჭდვისა და სკანირების ოჯახებთან, ამ ფუნქციების ყველა გამოძახებისას არსებული ფორმატის სტრიქონებში არსებული კონვერტაციის სპეციფიკაციების საფუძველზე. ეს ფუნქცია სრულად ავტომატურია და მისი გამორთვა შეუძლებელია.
ზოგიერთ სიტუაციაში, შემდგენელს არ შეუძლია განსაზღვროს გამოყენების ინფორმაცია ფორმატირებული IO ფუნქციის გამოძახებიდან. თუ ვარიანტი გამოყენებულია, ამ ფუნქციების კონვერტაციის საჭირო სპეციფიკაციები მიიღება სტრიქონიდან; წინააღმდეგ შემთხვევაში, შემდგენელი არ აკეთებს ვარაუდს იმის შესახებ, თუ როგორ გამოიყენება -msmart-io-format=fmt fmt ფუნქციები და უზრუნველყოფს, რომ სრულად ფუნქციონალური ფორმატირებული IO ფუნქციები იყოს დაკავშირებული პროგრამის საბოლოო სურათში.
მაგampგანიხილეთ შემდეგი ზარები ჭკვიანი IO ფუნქციების მიმართ.
vscanf(“%d:%li”, va_list1);
vprintf(“%-s%d”, va_list2);
vprintf(fmt1, va_list3);// ორაზროვანი გამოყენება
vscanf(fmt2, va_list4);// ორაზროვანი გამოყენება
ბოლო ორი ზარის დამუშავებისას, შემდგენელი ვერ გამოიტანს გამოყენების ინფორმაციას არც ფორმატის სტრიქონებიდან და არც არგუმენტებიდან. ამ შემთხვევაში, შესაძლებელია -msmart-io-format ვარიანტის გამოყენება და პოტენციურად საშუალებას მისცემს უფრო ოპტიმალური ფორმატირებული I0 ფუნქციების გენერირებას, რითაც შეამცირებს პროგრამის კოდის ზომას. მაგample, თუ ფორმატის სტრიქონები, რომელზეც მითითებულია fmtl და fmt2, ერთობლივად იყენებენ მხოლოდ "%d", "%i" და "% s" კონვერტაციის სპეციფიკატორებს, -msmart-io-format=fmt="%d%i%s ” ვარიანტი უნდა გაიცეს.
შეფერილობის სტრიქონი შეიძლება შეიცავდეს კონვერტაციის ნებისმიერ მოქმედ სპეციფიკაციას, მათ შორის დროშებს და მოდიფიკატორებს (მაგample “%-13. 91s”) და ზუსტად უნდა ასახავდეს ფუნქციებს, რომელთა გამოყენება ორაზროვანია. სპეციფიკაციების შეუთავსებლობა ცოტა არგუმენტი, სადაც ის გამოიყენებოდა ფორმატირებული I0 ფუნქციებით, შეიძლება გამოიწვიოს კოდის უკმარისობა.
თუ fmt არის ცარიელი სტრიქონი ან არ შეიცავს შესამჩნევ კონვერტაციის სპეციფიკაციებს, უნდა გაიცეს გაფრთხილება და სრულად ფუნქციონალური ფორმატირებული I0 ფუნქციები მიბმული იყოს პროგრამის საბოლოო სურათში.
ეს პარამეტრი შეიძლება გამოყენებულ იქნას რამდენჯერმე ბრძანების ხაზზე. კონვერტაციის სპეციფიკაციები, რომლებიც გამოიყენება თითოეულ ვარიანტში, გროვდება.
2.2. omit-frame-pointer Option
ოფცია – f omit- frame-pointer ავალებს შემდგენელს, პირდაპირ გამოიყენოს სტეკის მაჩვენებელი სტეკის ობიექტებზე წვდომისთვის და, თუ ეს შესაძლებელია, გამოტოვოს კოდი, რომელიც ინახავს, ინიციალიზებს და აღადგენს ჩარჩო რეგისტრს. ის ავტომატურად ჩართულია ყველა არანულოვანი ოპტიმიზაციის დონეზე.
ოფციის უარყოფა, -fno-omit- frame-pointer-ის გამოყენებით, შეიძლება დაეხმაროს ოპტიმიზირებული კოდის გამართვას; თუმცა, ეს ვარიანტი არ იძლევა გარანტიას, რომ ჩარჩო მაჩვენებელი ყოველთვის იქნება გამოყენებული.
2.3. unroll-loops ოფციები
– funrol I-loops და -(unroll-all-loops ოფციები აკონტროლებენ სიჩქარეზე ორიენტირებულ ოპტიმიზაციებს, რომლებიც ცდილობენ ამოიღონ განშტოების შეფერხებები მარყუჟებში. Unrolled მარყუჟები, როგორც წესი, ზრდის გენერირებული კოდის შესრულების სიჩქარეს, უფრო დიდი კოდის ზომის ხარჯზე.
– funrol I-loops ოფცია ხსნის მარყუჟებს, სადაც გამეორებების რაოდენობა შეიძლება განისაზღვროს კომპილაციის დროს ან როდესაც კოდი შედის ციკლში. -funroll-all-loops ვარიანტი უფრო აგრესიულია, ხსნის ყველა მარყუჟს, მაშინაც კი, როდესაც გამეორებების რაოდენობა უცნობია. ეს, როგორც წესი, ნაკლებად ეფექტურია შესრულების სიჩქარის გასაუმჯობესებლად, ვიდრე – funrol 1-loops ვარიანტი.
2.4. მსუქანი-იტო-ობიექტები ვარიანტი
– f fat-1 to-obj ects ოფცია მოითხოვს შემდგენელს ცხიმის ობიექტის გენერირებას files, რომლებიც შეიცავს ორივეს
ობიექტის კოდი და GIMPLE (GCC-ის ერთ-ერთი შიდა წარმოდგენა), დაწერილი უნიკალური ELF სექციებზე. ასეთი ობიექტები files სასარგებლოა ბიბლიოთეკის კოდისთვის, რომელიც შეიძლება იყოს დაკავშირებული პროექტებთან, რომლებიც იყენებენ და არ იყენებენ სტანდარტული კავშირის დროის ოპტიმიზატორს, რომელსაც აკონტროლებს -flto ვარიანტი.
ამ ოფციის – fno-fat-lto-objects ფორმა, რომელიც ნაგულისხმევია, თუ არ არის მითითებული ვარიანტი, თრგუნავს ობიექტის კოდის ობიექტში ჩართვას. files, რის შედეგადაც ხდება უფრო სწრაფი აშენება. თუმცა, ასეთი ობიექტი files ყოველთვის უნდა იყოს დაკავშირებული სტანდარტული კავშირის დროის ოპტიმიზატორის გამოყენებით.
2.5. Ito- დანაყოფის ვარიანტი
The – flto-partiti on=a იგო რი თმ ვარიანტი აკონტროლებს ალგორითმს, რომელიც გამოიყენება ობიექტის დაყოფისთვის files ბმული დროის ოპტიმიზატორის გაშვებისას. არგუმენტი არცერთი არ გამორთავს დაყოფას მთლიანად და ახორციელებს ბმულის დროის ოპტიმიზაციის საფეხურს პირდაპირ მთელი პროგრამის ანალიზის (WPA) ფაზიდან. მუშაობის ეს რეჟიმი ყველაზე ოპტიმალურ შედეგს გამოიღებს შემდგენლის მეხსიერების უფრო დიდი მოთხოვნილების და აშენების ხანგრძლივობის ხარჯზე, თუმცა ნაკლებად სავარაუდოა, რომ ეს პრობლემა იყოს მცირე პროგრამებთან დაკავშირებით. ობიექტის დაყოფა files შეუძლია გააუმჯობესოს მშენებლობის შესრულება. არგუმენტი one მიუთითებს, რომ ზუსტად ერთი დანაყოფი უნდა იყოს გამოყენებული, ხოლო არგუმენტი lto1 განსაზღვრავს დაყოფას, რომელიც ასახავს ორიგინალური წყაროს მიერ ნაკარნახევი. fileს. ნაგულისხმევი არგუმენტი დაბალანსებულია, რომელიც განსაზღვრავს დაყოფას თანაბარი ზომის ნაწილებად, როდესაც ეს შესაძლებელია.
2.6. 3.6.11 განყოფილების დამატება. Mapped Linker Options
-wl, - განყოფილება - დაწყება = წმ tion=addr არ არის საყოველთაოდ გამოყენებული ლინკერის ვარიანტების ცხრილიდან, რომელიც ხელმისაწვდომია -wl შემდგენლის დრაივერის ვარიანტის გამოყენებით. ეს პარამეტრი საშუალებას გაძლევთ განათავსოთ მორგებული დასახელებული სექციები მითითებულ მისამართზე. მისი გამოყენება შეუძლებელია სტანდარტული სექციების დასაყენებლად, როგორიცაა ( . მონაცემები, . bss, . ტექსტი), რომელიც უნდა განთავსდეს -wl, -'r ვარიანტის გამოყენებით.
2.7. ცვლილება პუნქტში 4.14.2 გამოყოფილი ნაწილის შეცვლა და დაკავშირება
გაითვალისწინეთ, რომ მომხმარებლის სახელმძღვანელოს ამ განყოფილებაში მოცემული ინფორმაციის საწინააღმდეგოდ, ამ გამოშვებაში შემდგენელში განხორციელებული ცვლილებები ახლა ნიშნავს, რომ მორგებული სექციების დაკავშირება შესაძლებელია -w1-ის გამოყენებით, - სექტა იონი - დაწყება=განყოფილება=აციცირი ვარიანტი და ლინკერის სკრიპტის შეცვლის გარეშე.
რა არის ახალი
შემდეგი ახალი AVR-სამიზნე ფუნქციები, რომლებსაც შემდგენელი ახლა მხარს უჭერს. ვერსიის ნომერი ქვესათაურებში მიუთითებს შემდგენლის პირველ ვერსიაზე, რომელიც მხარს უჭერს შემდეგ ფუნქციებს.
3.1. ვერსია 2.39 (ფუნქციური უსაფრთხოების გამოშვება)
ქსელის სერვერის ლიცენზია MPLAB XC8 ფუნქციური უსაფრთხოების შემდგენელი მხარს უჭერს ქსელის სერვერის ლიცენზიას.
3.2. ვერსია 2.36
არცერთი.
3.3. ვერსია 2.35
ახალი მოწყობილობის მხარდაჭერის მხარდაჭერა ხელმისაწვდომია შემდეგი AVR ნაწილებისთვის: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 და AVR64DD32.
გაუმჯობესებული კონტექსტის შეცვლა ახალი -mcall-isr-prologues ოფცია ცვლის, თუ როგორ ინახავს შეფერხების ფუნქციები რეგისტრებს შესვლისას და როგორ აღდგება ეს რეგისტრები, როდესაც შეწყვეტის რუტინა მთავრდება. ის მუშაობს -mcall-prologues ვარიანტის ანალოგიურად, მაგრამ გავლენას ახდენს მხოლოდ შეწყვეტის ფუნქციებზე (ISRs).
კიდევ უფრო გაუმჯობესებული კონტექსტის შეცვლა ახალი -მგას-ისრ-პროლოგები ოფცია აკონტროლებს კონტექსტური გადართვის კოდს, რომელიც გენერირებულია მცირე შეფერხების სერვისის რუტინებისთვის. როდესაც ჩართულია, ეს ფუნქცია ასამბლერს მოუწევს ISR-ის სკანირებას რეგისტრის გამოყენებისთვის და მხოლოდ საჭიროების შემთხვევაში შეინახავს ამ გამოყენებულ რეგისტრებს.
რეგულირებადი ფლეშ რუკების ასახვა AVR DA და AVR DB ოჯახის ზოგიერთ მოწყობილობას აქვს SFR (მაგ. FLMAP), რომელიც განსაზღვრავს პროგრამის მეხსიერების რომელი 32k სექცია იქნება შეტანილი მონაცემთა მეხსიერებაში. ახალი – mconst-data-in-config-mapped-progmem ოფცია შეიძლება გამოყენებულ იქნას იმისთვის, რომ ლინკერმა მოათავსოს ყველა cons t-კვალიფიცირებული მონაცემი ერთ 32k განყოფილებაში და ავტომატურად მოახდინოს შესაბამისი SFR რეგისტრის ინიციალიზაცია, რათა უზრუნველყოს, რომ ეს მონაცემები დაფიქსირდეს მონაცემებში. მეხსიერების სივრცე, სადაც უფრო ეფექტური იქნება წვდომა.
მიკროჩიპი ერთიანი სტანდარტული ბიბლიოთეკები ყველა MPLAB XC შემდგენელები იზიარებენ მიკროჩიპის ერთიან სტანდარტულ ბიბლიოთეკას, რომელიც ახლა ხელმისაწვდომია MPLAB XC8-ის ამ გამოშვებით. The MPLAB® XC8 C შემდგენელი
მომხმარებლის სახელმძღვანელო AVR-სთვის® MCU აღარ შეიცავს ამ სტანდარტული ფუნქციების დოკუმენტაციას. ეს ინფორმაცია ახლა შეგიძლიათ იხილოთ მიკროჩიპის ერთიანი სტანდარტული ბიბლიოთეკის საცნობარო სახელმძღვანელო. გაითვალისწინეთ, რომ avr-libc-ის მიერ ადრე განსაზღვრული ზოგიერთი ფუნქცია აღარ არის ხელმისაწვდომი. (იხ ბიბლიოთეკის ფუნქციონირება.)
Smart I0 როგორც ახალი ერთიანი ბიბლიოთეკების ნაწილი, JO ფუნქციები printf და scanf ოჯახებში ახლა პერსონალურად გენერირებულია თითოეულ build-ზე, იმის მიხედვით, თუ როგორ გამოიყენება ეს ფუნქციები პროგრამაში. ამან შეიძლება მნიშვნელოვნად შეამციროს პროგრამის მიერ გამოყენებული რესურსები.
Smart I0 დამხმარე ვარიანტი ჭკვიანი I0 ფუნქციების (როგორიცაა printf () ან scanf ()) ზარების ანალიზის დროს, შემდგენელი ყოველთვის ვერ განსაზღვრავს ფორმატის სტრიქონიდან ან არგუმენტებიდან გამოიტანს ზარისთვის საჭირო კონვერტაციის სპეციფიკატორებს. ადრე, შემდგენელი ყოველთვის არ აკეთებდა ვარაუდებს და დარწმუნდა, რომ სრულად ფუნქციონალური 10 ფუნქცია იყო დაკავშირებული პროგრამის საბოლოო სურათში. დამატებულია ახალი – msma rt-io- format=fmt ოფცია, რათა შემდგენელმა შეძლოს მომხმარებლის მიერ ინფორმირებული კონვერტაციის სპეციფიკატორების შესახებ, რომლებიც გამოიყენება ჭკვიანი I0 ფუნქციების მიერ, რომელთა გამოყენება ორაზროვანია, რაც ხელს უშლის ზედმეტად გრძელი 10 რუტინის დაკავშირებას. (იხ smart-io-ფორმატი დამატებითი დეტალების ვარიანტი.)
მორგებული სექციების განთავსება ადრე, -W1, -section-start ოფცია ათავსებდა მითითებულ განყოფილებას მოთხოვნილ მისამართზე მხოლოდ მაშინ, როდესაც ლინკერის სკრიპტი განსაზღვრავდა გამომავალ განყოფილებას იმავე სახელით. როდესაც ეს ასე არ იყო, განყოფილება განთავსდა ლინკერის მიერ არჩეულ მისამართზე და ეს ვარიანტი არსებითად იგნორირებული იყო. ახლა ეს პარამეტრი იქნება დაცული ყველა მორგებული განყოფილებისთვის, მაშინაც კი, თუ დამაკავშირებელი სკრიპტი არ განსაზღვრავს განყოფილებას. ამასთან, გაითვალისწინეთ, რომ სტანდარტული სექციებისთვის, ასეთი. ტექსტი,. bss ან . მონაცემები, საუკეთესო მორგებულ ალოკატორს კვლავ ექნება სრული კონტროლი მათ განთავსებაზე და ოფციონს არანაირი ეფექტი არ ექნება. გამოიყენეთ -wl, -Tsection=addr ვარიანტი, როგორც აღწერილია მომხმარებლის სახელმძღვანელოში.
3.4. ვერსია 2.32
Stack Guidance ხელმისაწვდომია PRO შემდგენელის ლიცენზიით, შემდგენელის დატის სახელმძღვანელოს ფუნქცია შეიძლება გამოყენებულ იქნას პროგრამის მიერ გამოყენებული ნებისმიერი სტეკის მაქსიმალური სიღრმის შესაფასებლად. იგი აყალიბებს და აანალიზებს პროგრამის გამოძახების გრაფიკს, განსაზღვრავს თითოეული ფუნქციის დასტას გამოყენებას და აწარმოებს ანგარიშს, საიდანაც პროგრამის მიერ გამოყენებული სტეკების სიღრმის დასკვნა შეიძლება.
ეს ფუნქცია ჩართულია -mchp-stack- გამოყენების ბრძანების ხაზის პარამეტრით. სტეკის გამოყენების შეჯამება იბეჭდება შესრულების შემდეგ. დატის დეტალური ანგარიში ხელმისაწვდომია რუკაზე file, რომელიც შეიძლება მოითხოვოს ჩვეულებრივი გზით.
ახალი მოწყობილობის მხარდაჭერა ხელმისაწვდომია შემდეგი AVR ნაწილებისთვის: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTNY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32BDBDR AVR48DBXNUMX.
ამოღებული მოწყობილობის მხარდაჭერა მხარდაჭერა აღარ არის ხელმისაწვდომი შემდეგი AVR ნაწილებისთვის: AVR 16DA28, AVR16DA32 და AVR16DA48.
3.5. ვერსია 2.31 არცერთი.
3.6. ვერსია 2.30
ახალი ვარიანტი მონაცემთა ინიციალიზაციის თავიდან ასაცილებლად ახალი -mno-data-init დრაივერის ვარიანტი ხელს უშლის მონაცემთა ინიციალიზაციას და bss სექციების გასუფთავებას. ის მუშაობს ასამბლეაში do_copy_data და do_clear_bss სიმბოლოების გამოსავლის ჩახშობით. files, რაც თავის მხრივ ხელს შეუშლის ლინკერის მიერ ამ რუტინების ჩართვას.
გაძლიერებული ოპტიმიზაცია განხორციელდა ოპტიმიზაციის მთელი რიგი გაუმჯობესება, მათ შორის ზედმეტი დაბრუნების ინსტრუქციების წაშლა, ზოგიერთი ნახტომის ამოღება skip-if-bit-is ინსტრუქციის შემდეგ და გაუმჯობესებული პროცედურული აბსტრაქცია და ამ პროცესის გამეორების შესაძლებლობა.
ამ ოპტიმიზაციის ზოგიერთი ოპტიმიზაციის გასაკონტროლებლად ახლა უკვე ხელმისაწვდომია დამატებითი ოფციები, კონკრეტულად -fsection-anchors, რაც საშუალებას აძლევს სტატიკური ობიექტების წვდომას განხორციელდეს ერთი სიმბოლოს მიმართ; -მპა-იტერაციები =n, რომელიც საშუალებას იძლევა შეიცვალოს პროცედურული აბსტრაქციის გამეორებების რაოდენობა ნაგულისხმევი 2-დან; და, -mpa-callcost-shortcal 1, რომელიც ახორციელებს უფრო აგრესიულ პროცედურულ აბსტრაქციას, იმ იმედით, რომ ლინკერს შეუძლია შეამსუბუქოს გრძელი ზარები. ამ ბოლო ვარიანტს შეუძლია გაზარდოს კოდის ზომა, თუ ძირითადი ვარაუდები არ განხორციელდება.
ახალი მოწყობილობის მხარდაჭერა მხარდაჭერა ხელმისაწვდომია შემდეგი AVR ნაწილებისთვის: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DA28, AVR128DA32. 128, AVR48DB128 და AVR64DBXNUMX.
ამოღებული მოწყობილობის მხარდაჭერა მხარდაჭერა აღარ არის ხელმისაწვდომი შემდეგი AVR ნაწილებისთვის: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616TAC, ATA6617TAC, ATA664251, ATA.
3.7. ვერსია 2.29 (ფუნქციური უსაფრთხოების გამოშვება)
სათაური file კომპილატორის ბუნტ-ინებისთვის იმის უზრუნველსაყოფად, რომ შემდგენელს შეუძლია შეესაბამებოდეს ენის სპეციფიკაციებს, როგორიცაა MISRA, სათაური file, რომელიც ავტომატურად შედის , განახლებულია. ეს სათაური შეიცავს ყველა ჩაშენებული ფუნქციის პროტოტიპებს, როგორიცაა ჩაშენებული in_avr_nop ( ) და _builtin_avr_delay_cycles () . ზოგიერთი ჩაშენებული შეიძლება არ იყოს MISRA-ს შესაბამისი; მათი გამოტოვება შესაძლებელია კომპილატორის ბრძანების ხაზში განსაზღვრული XC_STRICT MISRA-ის დამატებით. ჩაშენებული ნაწილები და მათი დეკლარაციები განახლებულია ფიქსირებული სიგანის ტიპების გამოსაყენებლად.
3.8. ვერსია 2.20
ახალი მოწყობილობის მხარდაჭერა მხარდაჭერა ხელმისაწვდომია შემდეგი AVR ნაწილებისთვის: ATTINY 1624, ATTINY1626 და ATTINY 1 627.
უკეთესად მორგებული განაწილება საუკეთესო მორგების ალოკატორი (BFA) კომპილატორში გაუმჯობესდა ისე, რომ სექციები გამოიყოს იმ თანმიმდევრობით, რაც უკეთეს ოპტიმიზაციას იძლევა. BFA ახლა მხარს უჭერს დასახელებულ მისამართებს და უკეთ ამუშავებს მონაცემთა ინიციალიზაციას.
გაუმჯობესებული პროცედურული აბსტრაქცია პროცედურული აბსტრაქციის ოპტიმიზაცია ახლა შესრულებულია უფრო მეტი კოდის თანმიმდევრობებზე. წინა სიტუაციები, როდესაც ამ ოპტიმიზაციას შესაძლოა გაზრდილიყო კოდის ზომა, მოგვარებული იყო ოპტიმიზაციის კოდის გაცნობით ლინკერის ნაგვის შეგროვების პროცესის შესახებ.
AVR ასამბლერის არარსებობა AVR Assembler აღარ შედის ამ განაწილებაში. 3.9. ვერსია 2.19 (ფუნქციური უსაფრთხოება გამოშვება)
არცერთი.
3.10. ვერსია 2.10
კოდის დაფარვა ეს გამოშვება მოიცავს კოდის დაფარვის ფუნქციას, რომელიც აადვილებს პროექტის წყაროს კოდის შესრულების ხარისხს. მის გასააქტიურებლად გამოიყენეთ ვარიანტი -mcodecov=ram. თქვენს აპარატურაზე პროგრამის შესრულების შემდეგ, კოდის დაფარვის ინფორმაცია დაგროვდება მოწყობილობაში და ეს შეიძლება გადაიცეს და ნაჩვენები იყოს MPLAB X IDE-ში კოდის დაფარვის მოდულის მეშვეობით. იხილეთ IDE დოკუმენტაცია ამ მოდულის შესახებ ინფორმაციის მისაღებად.
#pragma nocodecov შეიძლება გამოყენებულ იქნას შემდგომი ფუნქციების გამოსარიცხად დაფარვის ანალიზიდან. იდეალურ შემთხვევაში, პრაგმა უნდა დაემატოს დასაწყისში file რომ მთლიანად გამოირიცხოს file დაფარვის ანალიზიდან. ალტერნატიულად, _ატრიბუტი_ ( (nocodecov)) შეიძლება გამოყენებულ იქნას კონკრეტული ფუნქციის გამოსარიცხად დაფარვის ანალიზიდან.
მოწყობილობის აღწერა files ახალი მოწყობილობა file სახელწოდებით avr_chipinfo.html მდებარეობს დოკუმენტების დირექტორიაში
შემდგენელის განაწილება. ეს file ჩამოთვლის კომპილერის მიერ მხარდაჭერილ ყველა მოწყობილობას. დააწკაპუნეთ მოწყობილობის სახელზე და ის გაიხსნება გვერდი, სადაც ნაჩვენებია ამ მოწყობილობისთვის ყველა დასაშვები კონფიგურაციის ბიტის პარამეტრი/მნიშვნელობის წყვილი, მაგ.amples.
პროცედურული აბსტრაქცია პროცედურული აბსტრაქციის ოპტიმიზაცია, რომელიც ანაცვლებს ასამბლეის კოდის საერთო ბლოკებს ამ ბლოკის ამოღებულ ასლზე ზარებით, დაემატა კომპილერს. ისინი შესრულებულია ცალკეული აპლიკაციით, რომელსაც ავტომატურად გამოიძახებს შემდგენელი 2, 3 ან დონის არჩევისას. s ოპტიმიზაცია. ეს ოპტიმიზაცია ამცირებს კოდის ზომას, მაგრამ მათ შეუძლიათ შეამცირონ შესრულების სიჩქარე და კოდის გამართვა.
პროცედურული აბსტრაქცია შეიძლება გამორთოთ ოპტიმიზაციის მაღალ დონეზე ოფციის -mno-pa გამოყენებით, ან შეიძლება ჩართოთ ოპტიმიზაციის დაბალ დონეზე (თქვენი ლიცენზიის მიხედვით) -mpa გამოყენებით. ის შეიძლება გამორთოთ ობიექტისთვის file გამოყენებით -mno-pa-on-f ile=fileსახელი, ან გამორთულია ფუნქციისთვის -mno-pa-onfunotion=f გამოყენებით unction.
თქვენი წყაროს კოდის შიგნით, პროცედურული აბსტრაქცია შეიძლება გამორთოთ ფუნქციისთვის ატრიბუტის_ ( (nopa) ) გამოყენებით ფუნქციის განსაზღვრებით, ან nopa გამოყენებით, რომელიც გაფართოვდება _ ატრიბუტზე ( (nopa, noinline) ) და ამით ხელს უშლის ფუნქციის ჩასმას. და არის ჩასმული კოდის აბსტრაქცია.
ჩაკეტვის ბიტის მხარდაჭერა პრაგმაში #pragma კონფიგურაცია ახლა შეიძლება გამოყენებულ იქნას AVR დაბლოკვის ბიტების, ისევე როგორც სხვა კონფიგურაციის ბიტების დასაზუსტებლად. შეამოწმეთ avr_chipinfo.html file (ზემოთ ნახსენები) პარამეტრის/მნიშვნელობის წყვილებისთვის ამ პრაგმაში გამოსაყენებლად.
ახალი მოწყობილობის მხარდაჭერა მხარდაჭერა ხელმისაწვდომია შემდეგი ნაწილებისთვის: AVR28DAl28, AVR64DAl28, AVR32DAl28 და AVR48DAl28.
3.11. ვერსია 2.05
მეტი ბიტი თქვენი ფულისთვის ამ შემდგენელისა და ლიცენზიის მენეჯერის macOS ვერსია ახლა 64-ბიტიანი აპლიკაციაა. ეს უზრუნველყოფს, რომ შემდგენელი დააინსტალირებს და იმუშავებს გაფრთხილების გარეშე macOS-ის ბოლო ვერსიებზე.
Const ობიექტები პროგრამის მეხსიერებაში შემდგენელს ახლა შეუძლია განათავსოს const-კვალიფიცირებული ობიექტები პროგრამის Flash მეხსიერებაში, ვიდრე ისინი განთავსებული იყოს RAM-ში. შემდგენელი შეცვლილია ისე, რომ cons t-კვალიფიცირებული გლობალური მონაცემები ინახება პროგრამის ფლეშ მეხსიერებაში და ამ მონაცემებზე წვდომა შეიძლება პირდაპირ და ირიბად იყოს შესაბამისი პროგრამის მეხსიერების ინსტრუქციების გამოყენებით. ეს ახალი ფუნქცია ჩართულია ნაგულისხმევად, მაგრამ მისი გამორთვა შესაძლებელია -mno-const-data-in-progmem ვარიანტის გამოყენებით. avrxmega3 და avrtiny არქიტექტურისთვის, ეს ფუნქცია არ არის საჭირო და ყოველთვის გამორთულია, რადგან პროგრამის მეხსიერება დატანილია ამ მოწყობილობების მონაცემთა მისამართების სივრცეში.
სტანდარტული უფასოდ ამ კომპილერის არალიცენზირებული (უფასო) ვერსიები ახლა იძლევა ოპტიმიზაციას მე-2 დონის ჩათვლით. ეს საშუალებას მისცემს მსგავსი, თუმცა არა იდენტური, გამომავალი, რაც ადრე შესაძლებელი იყო სტანდარტული ლიცენზიის გამოყენებით.
მოგესალმებით AVRASM2 AVRASM2 ასამბლეერი 8-ბიტიანი მოწყობილობებისთვის ახლა შედის XC8 შემდგენელის ინსტალერში. ამ ასამბლერს არ იყენებს XC8 შემდგენელი, მაგრამ ხელმისაწვდომია ხელნაწერი ასამბლეის წყაროზე დაფუძნებული პროექტებისთვის.
ახალი მოწყობილობის მხარდაჭერა მხარდაჭერა ხელმისაწვდომია შემდეგი ნაწილებისთვის: ATMEGA1608, ATMEGA 1609, ATMEGA808 და ATMEGA809.
3.12. ვერსია 2.00
უმაღლესი დონის მძღოლი ახალი დრაივერი, სახელად xc8 -cc, ახლა ზის წინა avr-gcc დრაივერის და xc8 დრაივერის ზემოთ და მას შეუძლია გამოიძახოს შესაბამისი შემდგენელი სამიზნე მოწყობილობის შერჩევის საფუძველზე. ეს დრაივერი იღებს GCC სტილის ვარიანტებს, რომლებიც ან ითარგმნება ან გადაეცემა შესრულებულ შემდგენელს. ეს დრაივერი საშუალებას აძლევს მსგავსი სემანტიკის მსგავსი პარამეტრების გამოყენებას ნებისმიერ AVR ან PIC სამიზნეზე და, შესაბამისად, არის კომპილატორის გამოძახების რეკომენდებული გზა. საჭიროების შემთხვევაში, ძველი avr-gcc დრაივერი შეიძლება პირდაპირ გამოიძახოთ ძველი სტილის ვარიანტების გამოყენებით, რომლებიც მიღებული იყო კომპილერის ადრინდელ ვერსიებში.
საერთო C ინტერფეისი ამ შემდგენელს ახლა შეუძლია შეესაბამებოდეს MPLAB Common C ინტერფეისს, რაც საშუალებას აძლევს წყაროს კოდის უფრო ადვილად პორტირებას ყველა MPLAB XC შემდგენელში. -mext=cci ოფცია ითხოვს ამ ფუნქციას, რაც საშუალებას აძლევს ალტერნატიულ სინტაქსს მრავალი ენის გაფართოებისთვის.
ახალი ბიბლიოთეკარის მძღოლი ა ახალი ბიბლიოთეკარის დრაივერი განთავსებულია წინა PIC ბიბლიოთეკარის და AVR avr-ar ბიბლიოთეკარის ზემოთ. ეს დრაივერი იღებს GCC-არქივერის სტილის ვარიანტებს, რომლებიც ან ითარგმნება ან გადაეცემა შესრულებულ ბიბლიოთეკარს. ახალი დრაივერი საშუალებას აძლევს მსგავსი სემანტიკის პარამეტრების გამოყენებას ნებისმიერი PIC ან AVR ბიბლიოთეკის შესაქმნელად ან მანიპულირებისთვის. file და ამდენად არის რეკომენდირებული გზა ბიბლიოთეკარის გამოსაძახებლად. თუ საჭიროა მემკვიდრეობითი პროექტებისთვის, წინა ბიბლიოთეკარის გამოძახება შეიძლება უშუალოდ ძველი სტილის ვარიანტების გამოყენებით, რომლებიც მიღებული იყო კომპილერის ადრინდელ ვერსიებში.
მიგრაციის საკითხები
შემდეგი am თვისებები, რომლებსაც ახლა სხვაგვარად ამუშავებს შემდგენელი. ამ ცვლილებებმა შეიძლება მოითხოვოს თქვენი წყაროს კოდის შეცვლა, თუ კოდი გადაიტანეთ კომპილერის ამ ვერსიაზე. ქვესათაურებში ვერსიის ნომერი მიუთითებს შემდგენლის პირველ ვერსიაზე, რომელიც მხარს უჭერს შემდგომ ცვლილებებს.
4.1. ვერსია 2.39 (ფუნქციური უსაფრთხოების გამოშვება)
არცერთი.
4.2. ვერსია 2.36 არცერთი.
4.3. ვერსია 2.35
სიმებიანი ბაზების მართვა (XC8-2420) XC-ის სხვა შემდგენლებთან შესაბამისობის უზრუნველსაყოფად, XC8 სტრიქონი ფუნქციები, როგორიცაა strtol () და ა.შ., აღარ შეეცდებიან შეყვანის სტრიქონის გარდაქმნას, თუ მითითებული ბაზა 36-ზე მეტია და სანაცვლოდ დააყენებს errno-ს EINVAL-ზე. C სტანდარტი არ აკონკრეტებს ქცევას ფუნქციები, როდესაც ეს საბაზისო მნიშვნელობა აღემატება.
სიჩქარის შეუსაბამო ოპტიმიზაცია პროცედურული აბსტრაქციის ოპტიმიზაცია ჩართული იყო მე-3 დონის ოპტიმიზაციის არჩევისას (-03). ეს ოპტიმიზაცია ამცირებს კოდის ზომას კოდის სიჩქარის ხარჯზე, ამიტომ არ უნდა შესრულებულიყო. პროექტებმა, რომლებიც იყენებენ ამ ოპტიმიზაციის დონეს, შეიძლება დაინახონ განსხვავებები კოდის ზომასა და შესრულების სიჩქარეში, როდესაც აშენდება ამ გამოშვებით.
ბიბლიოთეკის ფუნქციონირება C ბიბლიოთეკის მრავალი სტანდარტული ფუნქციის კოდი ახლა მომდინარეობს Microchip-ის ერთიანი სტანდარტული ბიბლიოთეკიდან, რომელიც შეიძლება გამოავლინოს განსხვავებული ქცევა ზოგიერთ ვითარებაში ყოფილი avr-libc ბიბლიოთეკის მიერ მოწოდებულთან შედარებით. მაგampამიტომ, აღარ არის საჭირო 1printf flt ბიბლიოთეკაში ბმული (-1printf_flt ოფცია), რათა ჩართოთ ფორმატირებული I0 მხარდაჭერა float-format specifiers-ისთვის. მიკროჩიპის ერთიანი სტანდარტული ბიბლიოთეკის ჭკვიანი 10 მახასიათებელი ამ ვარიანტს ზედმეტს ხდის. გარდა ამისა, აღარ არის საჭირო _P სუფიქსის რუტინების გამოყენება სტრიქონების და მეხსიერების ფუნქციებისთვის (მაგ. strcpy_P ( ) და ა.შ.), რომლებიც მოქმედებენ const სტრიქონებზე ფლეშში. სტანდარტული C რუტინები (მაგ. strcpy 0) სწორად იმუშავებს ასეთ მონაცემებთან, როდესაც ჩართულია const-data-in-program-memory ფუნქცია.
4.4. ვერსია 2.32
არცერთი.
4.5. ვერსია 2.31
არცერთი.
4.6. ვერსია 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-qualfied ობიექტები განთავსდება და ხელმისაწვდომი იქნება პროგრამის მეხსიერებაში (როგორც აღწერილია მისი). ეს გავლენას მოახდენს თქვენი პროექტის ზომასა და შესრულების სიჩქარეზე, მაგრამ უნდა შეამციროს RAM-ის გამოყენება. საჭიროების შემთხვევაში, ამ ფუნქციის გამორთვა შესაძლებელია -mnocons t-data-in-pr ogmem ვარიანტის გამოყენებით.
4.6. ვერსია 2.00
კონფიგურაციის ფუჟები მოწყობილობის კონფიგურაციის საკრავები ახლა შეიძლება დაპროგრამდეს კონფიგურაციის პრაგმის გამოყენებით, რასაც მოჰყვება პარამეტრის მნიშვნელობის წყვილები, რათა მიუთითოთ დაუკრავენ მდგომარეობა, მაგ. #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
აბსოლუტური ობიექტები და ფუნქციები ობიექტები და ფუნქციები ახლა შეიძლება განთავსდეს მეხსიერებაში კონკრეტულ მისამართზე CCI _at (მისამართი) სპეციფიკატორი, მაგampლე:
თუ მოიცავს
int foobar at (0)0300100);
char at(0x250) getID(int offset) ( ამ სპეციფიკატორის არგუმენტი უნდა იყოს მუდმივი, რომელიც წარმოადგენს მისამართს, რომელზეც განთავსდება პირველი ბაიტი ან ინსტრუქცია. RAM-ის მისამართები მითითებულია Ox800000-ის ოფსეტურით. ჩართეთ CCI გამოიყენეთ ეს ფუნქცია.
ახალი შეწყვეტის ფუნქციის სინტაქსი შემდგენელი ახლა იღებს CCI _ წყვეტს (რიცხ) სპეციფიკატორი მიუთითებს იმაზე, რომ C ფუნქციები არის შეფერხების დამმუშავებლები. დამახასიათებელი იღებს შეწყვეტის ნომერს, მაგampლე:
დაფიქსირებული საკითხები
შემდეგი ვარ შესწორებები, რომლებიც გაკეთდა შემდგენელში. ამან შეიძლება გამოასწოროს შეცდომები გენერირებულ კოდში ან შეცვალოს შემდგენელის მოქმედება იმით, რაც განკუთვნილი იყო ან მითითებული იყო მომხმარებლის სახელმძღვანელოში. ვერსიის ნომერი ქვესათაურებში მიუთითებს შემდგენლის პირველ ვერსიაზე, რომელიც შეიცავს შესწორებებს შემდგომი პრობლემებისთვის. სათაურში ფრჩხილებში ჩასმული იარლიყ(ებ)ი არის ამ საკითხის იდენტიფიკაცია თვალთვალის მონაცემთა ბაზაში. ეს შეიძლება იყოს სასარგებლო, თუ თქვენ გჭირდებათ დაუკავშირდეთ მხარდაჭერას.
გაითვალისწინეთ, რომ მოწყობილობის სპეციფიკური პრობლემები შესწორებულია Device Family Pack-ში (DR)) დაკავშირებულია მოწყობილობასთან. იხილეთ MPLAB პაკეტის მენეჯერი DFP-ებში განხორციელებული ცვლილებებისა და უახლესი პაკეტების ჩამოტვირთვის შესახებ ინფორმაციისთვის.
5.1. ვერსია 2.39 (ფუნქციური უსაფრთხოების გამოშვება)
არცერთი.
5.2. ვერსია 2.36
შეცდომა დაგვიანებისას (XCS–2774) ნაგულისხმევი თავისუფალი რეჟიმის ოპტიმიზაციაში მცირემა ცვლილებებმა ხელი შეუშალა ოპერანდის გამონათქვამების მუდმივ დაკეცვას დაყოვნების ჩაშენებულ ფუნქციებზე, რის შედეგადაც ისინი განიხილება როგორც არამუდმივი და იწვევს შეცდომას. ჩაშენებული in_avr_delay_cycles მოელის კომპილაციის დროის მთელი რიცხვის მუდმივას.
5.3. ვერსია 2.35
მომიჯნავე გამოყოფა გამოყენებით _at (XCS–2653) ერთიდაიგივე სახელის სექციაში მრავალი ობიექტის ადგილის მიმდებარედ განაწილება და _at ()-ის გამოყენებით არ მუშაობდა სწორად. მაგampლე:
const char arrl[ ] ატრიბუტი (section(“.mysec”) at (0x500) = (OxAB, OxCD);
const char arr2[ ] ატრიბუტი (sectionr.mysec”)= (OxEF, OxFE);
უნდა განთავსდეს arr2 დაუყოვნებლივ arri-ს შემდეგ.
განყოფილების საწყისი მისამართების მითითება (XCS–2650) -wl, -section-start ვარიანტი ჩუმად ვერ ახერხებდა სექციების განთავსებას ნომინირებულ საწყის მისამართზე. ეს პრობლემა დაფიქსირდა ნებისმიერი მორგებული დასახელებული განყოფილებისთვის; თუმცა, ის არ იმუშავებს არცერთ სტანდარტულ სექციებზე, როგორიცაა . ტექსტი ან. bss, რომელიც უნდა განთავსდეს ა -ვლ, -T ვარიანტი.
ლინკერი იშლება მოდუნებისას (XCS–2647) როდის ჩართული იყო -mrelax ოპტიმიზაცია და ეს იყო კოდის ან მონაცემთა სექციები, რომლებიც არ ჯდებოდა ხელმისაწვდომ მეხსიერებაში, ლინკერი გაფუჭდა. ახლა, ასეთ ვითარებაში, ამის ნაცვლად, შეცდომის შეტყობინებები გაიცემა.
არა არა–დაცემა–უკან (XCS–2646) -nofallback ვარიანტი არ იყო სწორად დანერგილი და არც დოკუმენტირებული. ეს ახლა შეიძლება შეირჩეს, რათა უზრუნველყოფილი იყოს, რომ შემდგენელი არ დაუბრუნდეს ოპტიმიზაციის უფრო დაბალ პარამეტრს, თუ შემდგენელი არალიცენზირებულია და ამის ნაცვლად გამოუშვას შეცდომა.
სიჩქარის შეუსაბამო ოპტიმიზაცია (XCS–2637) პროცედურული აბსტრაქციის ოპტიმიზაცია ჩართული იყო მე-3 დონის ოპტიმიზაციის არჩევისას (-03). ეს ოპტიმიზაცია ამცირებს კოდის ზომას კოდის სიჩქარის ხარჯზე, ამიტომ არ უნდა შესრულებულიყო.
ცუდი EEPROM წვდომა (XCS–2629) eeprom_read_block რუტინა არ მუშაობდა სწორად Xmega მოწყობილობებზე, როდესაც ჩართული იყო -mconst-data-in-progmem ოფცია (რაც ნაგულისხმევი მდგომარეობაა), რის შედეგადაც EEPROM მეხსიერება არ იკითხებოდა სწორად.
არასწორი მეხსიერების განაწილება (X03-2593, XC8-2651) როდის -Ttext ან -Tdata დამაკავშირებელი ვარიანტი (მაგampმითითებულია -wl-ის დრაივერის ოფციონის გამოყენებით გავლილი, შესაბამისი ტექსტის/მონაცემთა რეგიონის წარმოშობა განახლდა; თუმცა, საბოლოო მისამართი არ იყო მორგებული შესაბამისად, რამაც შეიძლება გამოიწვიოს რეგიონის გადამეტება სამიზნე მოწყობილობის მეხსიერების დიაპაზონში.
ავარია ზედმეტად მინიჭებული ფუნქციით (XC8-2580) შემდგენელი გათიშულია, თუ ფუნქცია გამოცხადდა ერთზე მეტი შეფერხების, სიგნალის ან nmi ატრიბუტების გამოყენებით, მაგ., _ ატრიბუტი_ ( ( signal , interrupt ) ).
არასწორი ATtiny შეფერხების კოდი (XC8-2465) როდესაც ATtiny მოწყობილობების აშენება და ოპტიმიზაცია გამორთული იყო (-00), შეფერხების ფუნქციებმა შესაძლოა გამოეწვია ოპერანდის დიაპაზონის ასამბლერის შეტყობინებები.
ოფციები არ არის გავლილი (XC8-2452) გამოყენებისას -ვლ ვარიანტი მრავალი, მძიმით გამოყოფილი ლინკერის ოფციებით, ლინკერის ყველა ვარიანტი არ გადადიოდა ლინკერზე.
შეცდომა პროგრამის მეხსიერების ირიბად წაკითხვისას (X03-2450) ზოგიერთ შემთხვევაში, შემდგენელმა გამოუშვა შიდა შეცდომა (შეუცნობი insn) ინდიკატორიდან პროგრამის მეხსიერებაში ორი ბაიტის მნიშვნელობის წაკითხვისას
5.4. ვერსია 2.32
ბიბლიოთეკაში მეორე წვდომა ვერ ხერხდება (X03-2381) xc8-ar.exe ბიბლიოთეკის არქივის Windows ვერსიის მეორედ გამოძახება ბიბლიოთეკის არსებულ არქივზე წვდომისთვის შესაძლოა ვერ მოხერხდეს შეცდომის შეტყობინებით სახელის გადარქმევის შეუძლებლობის გამო.
5.5. ვერსია 2.31
აუხსნელი კომპილერის წარუმატებლობა (XC8-2367) გაშვებისას ფანჯრები პლატფორმებს, რომლებსაც სისტემის დროებითი დირექტორია დაყენებული ჰქონდათ გზაზე, რომელიც მოიცავდა წერტილს '.' სიმბოლო, შესაძლოა შემდგენელმა ვერ შეასრულა.
5.6. ვერსია 2.30
გლობალური ეტიკეტები არასწორად არის განთავსებული (XC8-2299) ხელით დაწერილი ასამბლეის კოდი, რომელიც ათავსებს გლობალურს ლეიბლები ასამბლეის თანმიმდევრობებში, რომლებიც ფაქტორირებულია პროცედურული აბსტრაქციის შედეგად, შესაძლოა არ ყოფილიყო სწორად განლაგებული.
დამამშვიდებელი ავარია (XC8-2287) გამოყენებით -მშვიდად ოფციონმა შესაძლოა გამოიწვიოს ლინკერის ავარია, როდესაც კუდის ნახტომის რელაქსაციის ოპტიმიზაცია ცდილობდა წაეშალა ret ინსტრუქცია, რომელიც არ იყო a-ს ბოლოს განყოფილება.
ავარია ლეიბლების მნიშვნელობების ოპტიმიზაციისას (XC8-2282) კოდის გამოყენებით „ლეიბლები როგორც მნიშვნელობები“ GNU C ენის გაფართოებამ შესაძლოა გამოიწვიოს პროცედურული აბსტრაქციის ოპტიმიზაციის ავარია, Outlined VMA დიაპაზონის დაფიქსირების შეცდომით.
არც ისე const (XC8-2271) პროტოტიპები ამისთვის strstr () და სხვა ფუნქციები აღარ მიუთითოთ არასტანდარტული const კვალიფიკატორი დაბრუნებულ სტრიქონების მაჩვენებლებზე, როდესაც -mconst-data- inprogmem ფუნქცია გამორთულია. გაითვალისწინეთ, რომ avrxmega3 და avrtiny მოწყობილობებთან ერთად, ეს ფუნქცია მუდმივად ჩართულია.
დაკარგული ინიციალიზატორები (XC8-2269) როდესაც თარგმნაში ერთზე მეტი ცვლადია ერთეული მოთავსდა განყოფილებაში (გამოყენებით განყოფილება or ატრიბუტი ( (განყოფილება) )), და პირველი ასეთი ცვლადი იყო ნულოვანი ინიციალიზაცია ან არ გააჩნდა ინიციალატორი, დაიკარგა ინიციალიზატორები იმავე მთარგმნელობითი ერთეულის სხვა ცვლადებისთვის, რომლებიც განთავსებული იყო იმავე განყოფილებაში.
5.1. ვერსია 2.2 9 (ფუნქციური უსაფრთხოების გამოშვება) არ არის.
5.2. ვერსია 2.20
შეცდომა გრძელი ბრძანებებით (XC8-1983) AVR სამიზნის გამოყენებისას, შემდგენელი შეიძლება შეჩერებულიყო შეცდომით, თუ ბრძანების ხაზი ძალიან დიდი იყო და შეიცავდა სპეციალურ სიმბოლოებს, როგორიცაა ციტატები, უკუღმა და ა.შ.
არამიკუთვნებული rodata განყოფილება (XC8-1920) AVR დამაკავშირებელმა ვერ შეძლო მეხსიერების მინიჭება მორგებული rodata სექციებისთვის avrxmega3 და avrtiny არქიტექტურებისთვის, რაც პოტენციურად წარმოქმნის მეხსიერების გადახურვის შეცდომებს
5.3. ვერსია 2.19 (ფუნქციური უსაფრთხოების გამოშვება)
არცერთი.
5.4. ვერსია 2.10
გადაადგილების წარუმატებლობა (XC8-1891) საუკეთესო მორგებული ალოკატორი იყო მეხსიერების „ხვრელების“ დატოვება განყოფილებებს შორის დამაკავშირებელი რელაქსაციის შემდეგ. გარდა მეხსიერების ფრაგმენტაციისა, ამან გაზარდა მაკავშირებლის გადაადგილების უკმარისობის შესაძლებლობა, რომელიც დაკავშირებულია კომპიუტერთან შედარებით ნახტომებთან ან ზარების დიაპაზონის მიღმა.
ინსტრუქციები, რომლებიც არ გარდაიქმნება რელაქსაციის გზით (XC8-1889) ლინკერის რელაქსაცია არ ხდებოდა ნახტომის ან გამოძახების ინსტრუქციებისთვის, რომელთა სამიზნეები მისაწვდომი ხდებოდა მოდუნების შემთხვევაში.
დაკარგული ფუნქციონალობა (XC8E-3 ) რამდენიმე განმარტება , როგორიცაა clock_div_t და clock_presc ale_s et () , არ იყო განსაზღვრული მოწყობილობებისთვის, მათ შორის ATmega324PB, ATmega328PB, ATtiny441 და ATtiny841.
მაკროები აკლია წინაპროცესორული მაკროები _XC 8_MODE_, XC 8 VERS ION, XC და xc8 არ იყო ავტომატურად განსაზღვრული შემდგენელის მიერ. ესენი ახლა ხელმისაწვდომია.
5.5. ვერსია 2.05
შემდგენლის შიდა შეცდომა (XC8-1822) Windows-ის ქვეშ აშენებისას, კოდის ოპტიმიზაციისას შესაძლოა წარმოიშვა შემდგენლის შიდა შეცდომა.
RAM-ის გადინება გამოვლენილი არ არის (XC8-1800, XC8-1796) პროგრამები, რომლებიც აღემატებოდა ხელმისაწვდომ RAM-ს, არ იქნა აღმოჩენილი შემდგენელის მიერ ზოგიერთ სიტუაციაში, რამაც გამოიწვია გაშვების კოდის მარცხი.
გამოტოვებული ფლეშ მეხსიერება (XC8-1792) avrxmega3 და avrtiny მოწყობილობებისთვის, ფლეშ მეხსიერების ნაწილები შესაძლოა დაპროგრამებული იყოს MPLAB X IDE-ის მიერ.
ძირითადი (XC8-1788) შესრულება ვერ მოხერხდა ზოგიერთ სიტუაციაში, როდესაც პროგრამას არ ჰქონდა განსაზღვრული გლობალური ცვლადები, გაშვების გაშვების კოდი არ გასულა და მთავარ () ფუნქციას არასოდეს მიუღწევია.
არასწორი მეხსიერების ინფორმაცია (XC8-1787) avrxmega3 და avrtiny მოწყობილობებისთვის, avr-size პროგრამა იუწყებოდა, რომ მხოლოდ შეშლილი მონაცემები მოიხმარდა RAM-ს პროგრამის მეხსიერების ნაცვლად.
არასწორი პროგრამული მეხსიერების წაკითხვა (XC8-1783) პროექტები, რომლებიც შედგენილია მოწყობილობებისთვის, პროგრამული მეხსიერებით, რომლებიც შედგენილია მონაცემთა მისამართის სივრცეში და რომლებიც განსაზღვრავენ ობიექტებს PROGMEM მაკრო/ატრიბუტის გამოყენებით, შესაძლოა წაიკითხონ ეს ობიექტები არასწორი მისამართიდან.
შიდა შეცდომა ატრიბუტებთან (XC8-1773) წარმოიშვა შიდა შეცდომა, თუ თქვენ განსაზღვრავდით მაჩვენებლის ობიექტებს _at 0 ან ატრიბუტის() ჟეტონებით, მაჩვენებლის სახელსა და გაუქმებულ ტიპს შორის, მაგ.ample, char * _at (0x800150) cp; ახლა გაიცემა გაფრთხილება, თუ ასეთი კოდი შეგხვდებათ.
ძირითადი (XC8-1780, XC8-1767, XC8-1754) შესრულება ვერ მოხერხდა EEPROM ცვლადების გამოყენებამ ან კონფიგურაციის პრაგმის გამოყენებით საკრავების განსაზღვრამ შესაძლოა გამოიწვიოს მონაცემთა არასწორი ინიციალიზაცია და/ან პროგრამის შესრულების ჩაკეტვა გაშვების გაშვების კოდში, მთავარ 0-მდე მიღწევამდე.
დაუკრავების შეცდომა პატარა მოწყობილობებთან (XC8-1778, XC8-1742) attiny4/5/9/10120140 მოწყობილობებს ჰქონდათ სათაურში მითითებული არასწორი დაუკრავენ სიგრძე fileეს იწვევს ლინკერის შეცდომებს, როდესაც ცდილობთ კოდის შექმნას, რომელიც განსაზღვრავს საკრავებს.
სეგმენტაციის ხარვეზი (XC8-1777) წყვეტილი სეგმენტაციის ხარვეზი გამოსწორებულია.
ასამბლერის ავარია (XC8-1761) avr -as ასამბლერს შესაძლოა ავარიული ჰქონდეს, როდესაც კომპილერი მუშაობდა Ubuntu 18-ში.
ობიექტები არ არის გასუფთავებული (XC8-1752) Unitialized სტატიკური შენახვის ხანგრძლივობის ობიექტები შეიძლება არ იყო გასუფთავებული გაშვების გაშვების კოდით.
კონფლიქტური მოწყობილობის სპეციფიკაცია იგნორირებულია (XC8-1749). შემდგენელი არ ქმნიდა შეცდომას, როდესაც გამოყენებული იყო მოწყობილობის სპეციფიკაციის რამდენიმე ვარიანტი და მიუთითებდა სხვადასხვა მოწყობილობებზე.
მეხსიერების გაფუჭება გროვით (XC8-1748). _heap_start სიმბოლო არასწორად იყო დაყენებული, რის შედეგადაც შესაძლებელი იყო ჩვეულებრივი ცვლადები დაზიანებულიყო გროვით.
ლინკერის გადატანის შეცდომა (XC8-1739) ლინკერის გადატანის შეცდომა შეიძლება იყოს გამოშვებული, როდესაც კოდი შეიცავდა rjmn ან rcall სამიზნე ზუსტად 4k ბაიტი დაშორებით.
5.6. ვერსია 2.00 არცერთი.
ცნობილი საკითხები
ქვემოთ მოცემულია შეზღუდვები შემდგენელის მუშაობაში. ეს შეიძლება იყოს ზოგადი კოდირების შეზღუდვები, ან გადახრები მომხმარებლის სახელმძღვანელოში მოცემული ინფორმაციისგან. ფრჩხილებში ჩასმული ეტიკეტ(ებ)ი ტალღაში არის ამ საკითხის იდენტიფიკაცია თვალთვალის მონაცემთა ბაზაში. ეს შეიძლება იყოს სასარგებლო, თუ თქვენ გჭირდებათ დაუკავშირდეთ მხარდაჭერას. ის ელემენტები, რომლებსაც არ აქვთ ეტიკეტები, არის შეზღუდვები, რომლებიც აღწერს მოდი ოპერანდს და რომლებიც, სავარაუდოდ, მუდმივად დარჩება ძალაში.
6.1. MPLAB X IDE ინტეგრაცია
MPLAB IDE ინტეგრაცია თუ კომპილერი უნდა იყოს გამოყენებული MPLAB IDE-დან, მაშინ კომპილერის დაყენებამდე უნდა დააინსტალიროთ MPLAB IDE.
6.2. კოდის გენერაცია
არასწორია ინიციალიზაცია (XC8-2679) არსებობს შეუსაბამობა, თუ სად არის განთავსებული ზოგიერთი გლობალური/სტატიკური ბაიტის ზომის ობიექტების საწყისი მნიშვნელობები მონაცემთა მეხსიერებაში და სად იქნება ცვლადების წვდომა გაშვების დროს.
strtod არასწორად აყენებს endptr-ს (XC8-2652) იმ შემთხვევებში, როდესაც strtod ()-ით კონვერტაციისთვის საგნის სტრიქონი შეიცავს მცურავი წერტილის რიცხვს ექსპონენციალურ ფორმატში და არის მოულოდნელი სიმბოლო e სიმბოლოს შემდეგ, მაშინ endptr მისამართი, თუ მოწოდებულია, მიუთითებს სიმბოლოზე შემდეგ ე და არა თავად ე. მაგample: strtod (“100exy”, endptr) ;
გამოიწვევს endptr-ს, რომელიც მიუთითებს x სიმბოლოზე.
ცუდი არაპირდაპირი ფუნქციის ზარები (X03-2628) ზოგიერთ შემთხვევაში, ფუნქციის გამოძახება, რომელიც შესრულებულია სტრუქტურის ნაწილად შენახული ფუნქციის მაჩვენებლის საშუალებით, შეიძლება ვერ მოხდეს.
strtof აბრუნებს ნულს თექვსმეტობითი ათწილადებისთვის (XC8-2626) ბიბლიოთეკის ფუნქციები strtof () et al და scanf () et al, ყოველთვის გარდაქმნის თექვსმეტობითი მცურავი წერტილის რიცხვს, რომელიც არ განსაზღვრავს მაჩვენებელს ნულზე. მაგample: strtof (“Oxl”, &endptr) ; დააბრუნებს მნიშვნელობას 0 და არა 1.
სტეკის მრჩეველის არაზუსტი შეტყობინებები (XC8-2542, XC8-2541) ზოგიერთ შემთხვევაში, სტეკის მრჩეველის გაფრთხილება გამოყენებული რეკურსიის ან განუსაზღვრელი სტეკის შესახებ (შესაძლოა alloca()-ის გამოყენებით) არ არის გამოშვებული.
შეფერხების დუბლიკატი კოდის შეფერხება (XC8-2421) სადაც ერთზე მეტ შეფერხების ფუნქციას აქვს ერთი და იგივე სხეული, შემდგენელს შეიძლება ჰქონდეს გამომავალი ერთი შეწყვეტის ფუნქციის გამოძახება მეორეზე. ეს გამოიწვევს ყველა ზარის დაბინძურებული რეგისტრის ზედმეტ შენახვას და შეფერხებები ჩაირთვება მანამ, სანამ მიმდინარე შეფერხების დამმუშავებლის ეპილოგი ამოიწურება, რამაც შეიძლება გამოიწვიოს კოდის უკმარისობა.
კონს ობიექტები, რომლებიც არ არის პროგრამის მეხსიერებაში (XC8-2408) avrxmega3 და avrtiny პროექტებისთვის unitialized const ობიექტები მოთავსებულია მონაცემთა მეხსიერებაში, მიუხედავად იმისა, რომ გაფრთხილება ვარაუდობს, რომ ისინი მოთავსებულია პროგრამის მეხსიერებაში. ეს არ იმოქმედებს მოწყობილობებზე, რომლებსაც არ აქვთ პროგრამული მეხსიერება შედგენილი მონაცემთა მეხსიერების სივრცეში და არც ინიციალიზებულ ობიექტზე.
არასწორი გამომავალი DFP არასწორი ბილიკით (XCS-2376) თუ შემდგენელი გამოძახებულია არასწორი DFP ბილიკით და 'spec' file არსებობს არჩეული მოწყობილობისთვის, შემდგენელი არ აცნობებს დაკარგული მოწყობილობის ოჯახის პაკეტს და ამის ნაცვლად ირჩევს "სპეციფიკაციას" file, რამაც შეიძლება გამოიწვიოს არასწორი გამომავალი. "სპეციფიკაცია" files შეიძლება არ იყოს განახლებული განაწილებულ DFP-ებთან და განკუთვნილი იყო მხოლოდ შიდა შემდგენელის ტესტირებისთვის გამოსაყენებლად.
მეხსიერების გადახურვა არ არის გამოვლენილი (XC8-1966) შემდგენელი არ აღმოაჩენს აბსოლუტური ობიექტების მეხსიერების გადაფარვას მისამართზე (_at 0 ) და სხვა ობიექტების გამოყენებით _სექტაion () სპეციფიკატორი და რომლებიც დაკავშირებულია იმავე მისამართთან.
წარუმატებლობა ბიბლიოთეკის ფუნქციებთან და _memx (XC8-1763) მოუწოდა libgcc float ფუნქციები არგუმენტით _memx მისამართების სივრცეში შესაძლოა ვერ მოხერხდეს. გაითვალისწინეთ, რომ ბიბლიოთეკის რუტინები გამოძახებულია ზოგიერთი C ოპერატორისგან, მაგალითად, მაგალითადample, შემდეგი კოდი მოქმედებს: return regFloatVar > memxFloatVar;
შეზღუდული libgcc განხორციელება (AVRTC-731) იყიდება ATTiny4/5/9/10/20/40 პროდუქტები, სტანდარტული C / მათემატიკის ბიბლიოთეკის განხორციელება libgcc-ში ძალიან შეზღუდულია ან არ არის წარმოდგენილი.
პროგრამის მეხსიერების შეზღუდვები (AVRTC-732) პროგრამის მეხსიერების სურათები 128 კბ-ზე მეტი მხარდაჭერილია ინსტრუმენტთა ჯაჭვის მიერ; თუმცა, ცნობილია ლინკერის შეწყვეტის შემთხვევები რელაქსაციის გარეშე და გამოსადეგი შეცდომის შეტყობინების გარეშე, ვიდრე საჭირო ფუნქციის ნაკერების გენერირება, როდესაც -mrelax ოფცია გამოიყენება.
სახელის სივრცის შეზღუდვები (AVRTC-733) დასახელებული მისამართების სივრცეები მხარდაჭერილია ინსტრუმენტთა ჯაჭვის მიერ, ექვემდებარება მომხმარებლის სახელმძღვანელოს განყოფილებაში მითითებულ შეზღუდვებს სპეციალური ტიპის კვალიფიკატორები.
დროის ზონები The ბიბლიოთეკის ფუნქციები ითვალისწინებს GMT-ს და არ უჭერს მხარს ლოკალურ სასაათო სარტყლებს, ამიტომ loca Itime 0 დაბრუნდება იმავე დროს, როგორც gmtime ( ) , მაგ.ampლე.
დოკუმენტები / რესურსები
![]() |
MICROCHIP MPLAB XC8 C შემდგენელი ვერსია 2.39 გამოშვების შენიშვნები AVR MCU-სთვის [pdf] მომხმარებლის სახელმძღვანელო MPLAB XC8 C შემდგენელი ვერსია 2.39 გამოშვების შენიშვნები AVR MCU-სთვის, MPLAB XC8 C, შემდგენელი ვერსია 2.39 გამოშვების შენიშვნები AVR MCU-სთვის, გამოშვების შენიშვნები AVR MCU-სთვის |
![]() |
MICROCHIP MPLAB XC8 C შემდგენელი ვერსია 2.39 გამოშვების შენიშვნები AVR MCU-სთვის [pdf] მომხმარებლის სახელმძღვანელო MPLAB XC8 C შემდგენელი ვერსია 2.39 გამოშვების შენიშვნები AVR MCU-სთვის, MPLAB XC8 C, შემდგენელი ვერსია 2.39 გამოშვების შენიშვნები AVR MCU-სთვის, შენიშვნები AVR MCU-სთვის |
![]() |
MICROCHIP MPLAB XC8 C შემდგენელი [pdf] მომხმარებლის სახელმძღვანელო MPLAB XC8 C შემდგენელი, MPLAB XC8 C, შემდგენელი |