मायक्रोचिप लोगोMPLAB® XC8 C कंपाइलर आवृत्ती 2.41 AVR® MCU साठी रिलीज नोट्स
मालकाचे मॅन्युअल

MPLAB XC8 C कंपाइलर डेव्हलपमेंट सॉफ्टवेअर

या दस्तऐवजात MPLAB XC8 C कंपायलरशी संबंधित महत्त्वाची माहिती मायक्रोचिप AVR डिव्हाइसेसना लक्ष्यित करताना आहे.
कृपया हे सॉफ्टवेअर चालवण्यापूर्वी ते वाचा. तुम्ही 8-बिट PIC डिव्हाइसेससाठी कंपायलर वापरत असल्यास PIC डॉक्युमेंटसाठी MPLAB XC8 C कंपायलर रिलीझ नोट्स पहा.

ओव्हरview

1.1. परिचय
Microchip MPLAB® XC8 C कंपाइलरच्या या प्रकाशनात अनेक नवीन वैशिष्ट्ये आणि दोष निराकरणे आहेत.
१.२. बिल्ड तारीख
या कंपाइलर आवृत्तीची अधिकृत बिल्ड तारीख 8 फेब्रुवारी 2023 आहे.
१.३. मागील आवृत्ती
मागील MPLAB XC8 C कंपाइलर आवृत्ती 2.40 जुलै 3 रोजी तयार केलेली 2022 होती.
१.४. फंक्शनल सेफ्टी मॅन्युअल
MPLAB XC कंपाइलर्ससाठी कार्यात्मक सुरक्षा पुस्तिका दस्तऐवजीकरण पॅकेजमध्ये उपलब्ध असते जेव्हा तुम्ही कार्यात्मक सुरक्षा परवाना खरेदी करता.
1.5. घटक परवाने आणि आवृत्त्या
AVR MCUs टूल्ससाठी MPLAB XC8 C कंपाइलर हे GNU जनरल पब्लिक लायसन्स (GPL) अंतर्गत लिहिलेले आणि वितरित केले जाते याचा अर्थ त्याचा स्त्रोत कोड मुक्तपणे वितरित केला जातो आणि लोकांसाठी उपलब्ध आहे.
GNU GPL अंतर्गत साधनांचा स्त्रोत कोड मायक्रोचिपमधून स्वतंत्रपणे डाउनलोड केला जाऊ शकतो webजागा. तुमच्‍या इंस्‍टॉल लायसेंस.txt avr/doc डिरेक्‍ट्रीच्‍या उपडिरेक्‍ट्रीवर नाव असलेल्‍या फाईलमध्‍ये तुम्ही GNU GPL वाचू शकता. 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 साठी बायनरी कोड-साइन आणि नोटरीकृत केल्या आहेत. MPLAB XC नेटवर्क परवाना सर्व्हर विविध प्रकारच्या 64-बिट ऑपरेटिंग सिस्टीमसाठी उपलब्ध आहे, ज्यात Microsoft Windows 10 आणि त्यावरील आवृत्तीचा समावेश आहे; उबंटू 18.04 आणि वरील; किंवा macOS 10.15 आणि वरील. विंडोज सर्व्हर, लिनक्स वितरण, जसे की Oracle® Enterprise Linux® आणि Red Hate Enterprise Linux तसेच समर्थित ऑपरेटिंग सिस्टमच्या जुन्या आवृत्त्यांसह इतर विविध ऑपरेटिंग सिस्टमवर सर्व्हर देखील चालू शकतो. तथापि, या ऑपरेटिंग सिस्टीमवर MPLAB XC नेटवर्क परवाना सर्व्हरची चाचणी केली जात नाही. MPLAB XC नेटवर्क परवाना सर्व्हर नेटवर्क परवान्यासाठी (SW006021-VM) व्हर्च्युअल मशीन परवाना वापरून समर्थित OS च्या व्हर्च्युअल मशीनवर चालविला जाऊ शकतो. MPLAB XC नेटवर्क सर्व्हरच्या सर्व 32-बिट आवृत्त्या आवृत्ती 3.00 पासून बंद केल्या आहेत.
साधने समर्थित
हा कंपाइलर रिलीजच्या वेळी सर्व उपलब्ध 8-बिट AVR MCU उपकरणांना समर्थन देतो. सर्व समर्थित उपकरणांच्या सूचीसाठी (कंपाइलरच्या निर्देशिकेत) पहा. या फायलींची यादी देखील आहे
प्रत्येक उपकरणासाठी avr_chipinfo.html डॉक कॉन्फिगरेशन बिट सेटिंग्ज.

१.७. आवृत्त्या आणि परवाना अपग्रेड
MPLAB XC8 कंपाइलर परवानाकृत (PRO) किंवा विनापरवाना (विनामूल्य) उत्पादन म्हणून सक्रिय केले जाऊ शकते. तुमच्या कंपाइलरला परवाना देण्यासाठी तुम्हाला एक सक्रियकरण की खरेदी करणे आवश्यक आहे. मोफत उत्पादनाच्या तुलनेत परवाना उच्च पातळीच्या ऑप्टिमायझेशनसाठी परवानगी देतो. परवाना नसलेला कंपाइलर परवान्याशिवाय अनिश्चित काळासाठी ऑपरेट केला जाऊ शकतो. MPLAB XC8 फंक्शनल सेफ्टी कंपाइलर मायक्रोचिपकडून खरेदी केलेल्या फंक्शनल सेफ्टी लायसन्ससह सक्रिय करणे आवश्यक आहे. या परवान्याशिवाय कंपाइलर काम करणार नाही. एकदा सक्रिय झाल्यावर, तुम्ही कोणतीही ऑप्टिमायझेशन पातळी निवडू शकता आणि सर्व कंपाइलर वैशिष्ट्ये वापरू शकता. MPLAB XC फंक्शनल सेफ्टी कंपाइलरचे हे प्रकाशन नेटवर्क सर्व्हर परवान्यास समर्थन देते.
परवाना प्रकार आणि परवान्यासह कंपाइलरच्या स्थापनेबद्दल माहितीसाठी MPLAB XC C Compilers (DS50002059) स्थापित करणे आणि परवाना देणे दस्तऐवज पहा.

1.8. स्थापना आणि सक्रियकरण
या कंपाइलरमध्ये समाविष्ट केलेल्या नवीनतम परवाना व्यवस्थापकाबद्दल महत्त्वाच्या माहितीसाठी स्थलांतर समस्या आणि मर्यादा विभाग देखील पहा.
MPLAB IDE वापरत असल्‍यास, हे टूल इंस्‍टॉल करण्‍यापूर्वी MPLAB X IDE ची नवीनतम आवृत्ती 5.0 किंवा नंतरची स्‍थापित केल्‍याची खात्री करा. कंपाइलर स्थापित करण्यापूर्वी IDE सोडा. (Windows), (Linux) किंवा (macOS) .exe .run .app कंपाइलर इंस्टॉलर ऍप्लिकेशन चालवा, उदा आणि स्क्रीनवरील दिशानिर्देशांचे अनुसरण करा. XC8-1.00.11403-windows.exe डीफॉल्ट इंस्टॉलेशन निर्देशिकेची शिफारस केली जाते. जर तुम्ही लिनक्स वापरत असाल, तर तुम्ही टर्मिनल वापरून आणि रूट खात्यातून कंपाइलर इंस्टॉल केले पाहिजे. प्रशासक विशेषाधिकारांसह macOS खाते वापरून स्थापित करा.
सक्रियकरण आता इंस्टॉलेशनसाठी स्वतंत्रपणे केले जाते. अधिक माहितीसाठी MPLAB® XC C Compilers (DS52059) साठी दस्तऐवज परवाना व्यवस्थापक पहा.
तुम्ही मूल्यमापन परवान्याअंतर्गत कंपाइलर चालवणे निवडल्यास, तुमचा मूल्यमापन कालावधी संपल्यानंतर 14 दिवसांच्या आत तुम्हाला संकलनादरम्यान एक चेतावणी मिळेल. तुम्ही तुमची HPA सदस्यता संपल्यापासून 14 दिवसांच्या आत असाल तर हीच चेतावणी जारी केली जाते.
XC नेटवर्क परवाना सर्व्हर हा एक वेगळा इंस्टॉलर आहे आणि एकल-वापरकर्ता कंपाइलर इंस्टॉलरमध्ये समाविष्ट केलेला नाही.
XC परवाना व्यवस्थापक आता फ्लोटिंग नेटवर्क परवान्यांच्या रोमिंगला सपोर्ट करतो. मोबाईल वापरकर्त्यांना उद्देशून, हे वैशिष्ट्य फ्लोटिंग लायसन्सला कमी कालावधीसाठी नेटवर्क बंद करण्यास अनुमती देते. हे वैशिष्ट्य वापरून, तुम्ही नेटवर्कवरून डिस्कनेक्ट करू शकता आणि तरीही तुमचा MPLAB XC कंपाइलर वापरू शकता. या वैशिष्ट्याबद्दल अधिक माहितीसाठी XCLM install चे डॉक फोल्डर पहा.
MPLAB X IDE मध्ये रोमिंग व्यवस्थापित करण्यासाठी परवाना विंडो (साधने > परवाने) समाविष्ट आहे.

१.८.१. स्थापना समस्यांचे निराकरण करणे
तुम्हाला कोणत्याही Windows ऑपरेटिंग सिस्टिममध्ये कंपाइलर इन्स्टॉल करताना अडचणी येत असल्यास, खालील सूचना वापरून पहा.
प्रशासक म्हणून स्थापना चालवा.
इंस्टॉलर ऍप्लिकेशनच्या परवानग्या 'पूर्ण नियंत्रण' वर सेट करा. (फाइलवर उजवे-क्लिक करा, गुणधर्म निवडा, सुरक्षा टॅब, वापरकर्ता निवडा, संपादित करा.)
टेम्प फोल्डरच्या परवानग्या 'फुल कंट्रोल' वर सेट करा.
temp फोल्डरचे स्थान निश्चित करण्यासाठी, Run कमांडमध्ये %temp% टाइप करा (Windows logo key + R).
हे ती निर्देशिका दर्शविणारा एक फाइल एक्सप्लोरर संवाद उघडेल आणि तुम्हाला त्या फोल्डरचा मार्ग निश्चित करण्यास अनुमती देईल.
१.९. कंपाइलर दस्तऐवजीकरण
स्क्रीनशॉटमध्ये दर्शविल्याप्रमाणे MPLAB X IDE डॅशबोर्डमधील निळ्या हेल्प बटणावर क्लिक केल्यावर आपल्या ब्राउझरमध्ये उघडणाऱ्या HTML पृष्ठावरून कंपाइलरचे वापरकर्ता मार्गदर्शक उघडले जाऊ शकतात.

जर तुम्ही 8-बिट AVR लक्ष्यांसाठी तयार करत असाल, तर AVR® MCU साठी MPLAB® XC8 C कंपाइलर वापरकर्त्याच्या मार्गदर्शकामध्ये या आर्किटेक्चरला लागू असलेल्या कंपाइलर पर्याय आणि वैशिष्ट्यांची माहिती आहे.

MICROCHIP MPLAB XC8 C कंपाइलर डेव्हलपमेंट सॉफ्टवेअर -

1.10.ग्राहक समर्थन
मायक्रोचिप या कंपाइलर आवृत्तीबाबत बग अहवाल, सूचना किंवा टिप्पण्यांचे स्वागत करते. कृपया कोणतेही बग अहवाल किंवा वैशिष्ट्य विनंत्या सपोर्ट सिस्टमद्वारे निर्देशित करा.

दस्तऐवजीकरण अद्यतने

MPLAB XC8 दस्तऐवजीकरणाच्या ऑनलाइन आणि अद्ययावत आवृत्त्यांसाठी, कृपया मायक्रोचिपच्या ऑनलाइन तांत्रिक दस्तऐवजीकरणाला भेट द्या webजागा. या प्रकाशनात नवीन किंवा अद्यतनित AVR दस्तऐवजीकरण:

  • AVR® MCU (पुनरावृत्ती G) साठी MPLAB® XC8 C कंपाइलर वापरकर्ता मार्गदर्शक
  • AVR® GNU टूलचेन ते MPLAB® XC8 स्थलांतर मार्गदर्शक (पुनरावृत्ती A)
  • हेक्समेट वापरकर्ता मार्गदर्शक (पुनरावृत्ती B)

AVR® GNU टूलचेन ते MPLAB® XC8 मायग्रेशन गाइड स्रोत कोडमधील बदलांचे वर्णन करते आणि तुम्ही AVR 8-बिट GNU टूलचेन मधून मायक्रोचिप MPLAB XC8 C कंपाइलरमध्ये C-आधारित प्रकल्प स्थलांतरित करण्याचा निर्णय घेतल्यास आवश्यक असणारे पर्याय तयार करतात. मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररी संदर्भ मार्गदर्शक मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररीद्वारे परिभाषित केलेल्या फंक्शन्सच्या वर्तनाचे आणि इंटरफेसचे वर्णन करते, तसेच लायब्ररी प्रकार आणि मॅक्रोचा हेतू वापरते. यापैकी काही माहिती AVR® MCU साठी MPLAB® XC8 C कंपाइलर वापरकर्ता मार्गदर्शकामध्ये पूर्वी समाविष्ट होती. डिव्हाइस-विशिष्ट लायब्ररी माहिती अद्याप या कंपाइलर मार्गदर्शकामध्ये समाविष्ट आहे.
तुम्ही नुकतीच 8-बिट उपकरणे आणि MPLAB XC8 C कंपाइलरसह सुरुवात करत असाल, तर MPLAB® XC8 वापरकर्ता मार्गदर्शक फॉर एम्बेडेड इंजिनियर्स – AVR® MCUs (DS50003108) मध्ये MPLAB X IDE मध्ये प्रकल्प सेट अप करण्याविषयी आणि तुमच्यासाठी कोड लिहिण्याबाबत माहिती आहे. पहिला MPLAB XC8 C प्रकल्प. हे मार्गदर्शक आता कंपाइलरसह वितरित केले आहे.
हेक्समेट वापरकर्ता मार्गदर्शक हे हेक्समेट एक स्वतंत्र अनुप्रयोग म्हणून चालवणाऱ्यांसाठी आहे.

नवीन काय आहे

खालील नवीन AVR-लक्ष्य वैशिष्ट्ये आहेत ज्यांना कंपाइलर आता समर्थन देतो. उपशीर्षकांमधील आवृत्ती क्रमांक खालील वैशिष्ट्यांना समर्थन देण्यासाठी प्रथम कंपायलर आवृत्ती सूचित करतो.
३.१. आवृत्ती 3.1
बूटरो सपोर्ट (XC8-3053) कंपायलर कोणत्याही विभागांची सामग्री हेक्स फाइलमध्ये 0x860000 at.bootrow अॅड्रेस प्रीफिक्ससह ठेवेल. हे विभाग BOOTROW मेमरीसाठी वापरले जातात, जे की आणि इतर सुरक्षित माहिती साठवण्यासाठी डिझाइन केलेले आहे जे फक्त बूटलोडरसाठी प्रवेशयोग्य असावे.

रिडंडंट रिटर्न एलिमिनेशन (XC8-3048) कंपाइलर आता कस्टम लिंकर स्क्रिप्ट वापरल्या जातात तेव्हा टेल जंपसह ret फंक्शन्समधील अनावश्यक सूचना काढून टाकेल. हे पूर्वी केल्या गेलेल्या सारखेच ऑप्टिमायझेशन आहे, परंतु ते आता सर्व अनाथ विभागांवर केले जाते, जरी कस्टम लिंकर स्क्रिप्ट वापरली गेली असली आणि सर्वोत्कृष्ट वाटप योजना चालू नसली तरीही. वेळ प्रकार बदल (XC8-2982, 2932) C99 मानक लायब्ररी प्रकार, time_t वरून एका प्रकारात बदलला गेला आहे, जे काही वेळ-संबंधित दीर्घ कार्यांमध्ये कोड-आकार सुधारणा देते, जसे की. स्वाक्षरी न केलेला लांब mktime()
नवीन nop (XC8-2946, 2945) मध्ये मॅक्रो जोडले गेले आहे. हा मॅक्रो no- NOP() घालतो आउटपुटमध्ये nop ऑपरेशन सूचना.
XCLM (XC8-2944) वर अद्यतनित करा कंपायलरसह वापरलेला परवाना व्यवस्थापक अद्यतनित केला गेला आहे आणि आता कंपाइलरच्या परवाना तपशील तपासताना अधिक प्रतिसाद देणारा आहे.
Trampओलायन्ड कॉल्स (XC8-2760) कंपाइलर आता लाँग-फॉर्म कॉल सूचनांना लहान सापेक्ष कॉलसह बदलू शकतो जेव्हा सूचनांचे सापेक्ष फॉर्म सामान्यतः त्यांच्या गंतव्यस्थानाच्या बाहेर असतील. या परिस्थितीत, कंपाइलर rcall अशा सूचनांसह बदलण्याचा प्रयत्न करेल जे 'tr' करेलampआवश्यक पत्त्यावर oline' अंमलबजावणी, उदाample: jmp
rcall tramp_foo ; foo कॉल होता

rcall tramp_फू

tramp_foo:
jmp foo

हे ऑप्टिमायझेशन, तत्सम प्रोग्राम फ्लो ऑप्टिमायझेशनसह, -mrelax पर्यायाद्वारे नियंत्रित केले जाते.

३.१. आवृत्ती 3.2
नवीन डिव्हाइस सपोर्ट आता खालील AVR भागांसाठी उपलब्ध आहे: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32,AVRAVR64, AVR28 64, आणि AVR32EA64.
सुधारित प्रक्रियात्मक अमूर्तता प्रक्रियात्मक अ‍ॅब्स्ट्रॅक्शन (पीए) ऑप्टिमायझेशन टूल सुधारित केले गेले आहे जेणेकरून फंक्शन कॉल इंस्ट्रक्शन (/ ) असलेला कोड वापरला जाऊ शकतो. जर स्टॅकचा वापर वितर्क पास करण्यासाठी किंवा फंक्शनमधून रिटर्न व्हॅल्यू मिळवण्यासाठी केला नसेल तरच कॉल आरकॉल होईल. व्हेरिएबल आर्ग्युमेंट लिस्टसह फंक्शन कॉल करताना किंवा या उद्देशासाठी नियुक्त केलेल्या रजिस्टर्सपेक्षा जास्त वितर्क घेणारे फंक्शन कॉल करताना स्टॅकचा वापर केला जातो. हे वैशिष्ट्य पर्याय वापरून अक्षम केले जाऊ शकते, किंवा प्रक्रियात्मक अमूर्तता ऑब्जेक्ट फाइल किंवा फंक्शनसाठी पूर्णपणे अक्षम केले जाऊ शकते - आणि, अनुक्रमे, किंवा फंक्शन्ससह गुणधर्म (विशिष्ट) वापरून.
mno-pa-आउटलाइन-कॉल -mno-pa-ऑन-file -mno-pa-ऑन-फंक्शन nopa कोड कव्हरेज मॅक्रो वैध पर्याय __nopa __CODECOV -mcodecov निर्दिष्ट असल्यास कंपाइलर आता मॅक्रो परिभाषित करतो.
मेमरी आरक्षण पर्याय AVR लक्ष्यांसाठी तयार करताना ड्रायव्हर आता xc8-cc -mreserve=space@start:end पर्याय स्वीकारेल. हा पर्याय डेटा किंवा प्रोग्राम मेमरी स्पेसमध्ये निर्दिष्ट मेमरी श्रेणी राखून ठेवतो, लिंकरला या क्षेत्रातील कोड किंवा ऑब्जेक्ट्स पॉप्युलेट करण्यापासून प्रतिबंधित करतो. स्मार्टर स्मार्ट IO स्मार्ट IO फंक्शन्समध्ये अनेक सुधारणा केल्या गेल्या आहेत, ज्यात प्रिंटफ कोर कोडमध्ये सामान्य बदल, %n रूपांतरण स्पेसिफायरला स्वतंत्र प्रकार म्हणून हाताळणे, मागणीनुसार वरर्ग पॉप रूटीनमध्ये लिंक करणे, हाताळण्यासाठी शक्य असेल तेथे लहान डेटा प्रकार वापरणे. IO फंक्शन आर्ग्युमेंट्स आणि फील्ड रुंदी आणि अचूक हाताळणीमध्ये सामान्य कोड फॅक्टरिंग. यामुळे कोड आणि डेटाची महत्त्वपूर्ण बचत होऊ शकते, तसेच IO च्या अंमलबजावणीचा वेग वाढू शकतो.

३.३. आवृत्ती 3.3 (कार्यात्मक सुरक्षा प्रकाशन)
नेटवर्क सर्व्हर परवाना MPLAB XC8 फंक्शनल सेफ्टी कंपाइलरचे हे प्रकाशन नेटवर्क सर्व्हर परवान्यास समर्थन देते.
३.१. आवृत्ती 3.4
काहीही नाही.

३.१. आवृत्ती 3.5
नवीन उपकरण समर्थन खालील AVR भागांसाठी उपलब्ध आहे: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 आणि AVR64DD32.
सुधारित संदर्भ स्विचिंग नवीन -mcall-isr-prologues पर्याय इंटरप्ट फंक्शन्स एंट्रीवर रजिस्टर्स कसे सेव्ह करतात आणि इंटरप्ट रूटीन संपल्यावर त्या रजिस्टर्स कसे रिस्टोअर केले जातात ते बदलते. हे -mcall-prologues पर्यायाप्रमाणेच कार्य करते, परंतु केवळ इंटरप्ट फंक्शन्स (ISRs) प्रभावित करते.
आणखी सुधारित संदर्भ स्विचिंग नवीन -mgas-isr-prologues पर्याय लहान व्यत्यय सेवा दिनचर्यासाठी व्युत्पन्न केलेला संदर्भ स्विच कोड नियंत्रित करतो. सक्षम केल्यावर, हे वैशिष्ट्य असेंबलरकडे नोंदणीच्या वापरासाठी ISR स्कॅन करेल आणि आवश्यक असल्यासच ही वापरलेली नोंदणी जतन करेल.
कॉन्फिगर करण्यायोग्य फ्लॅश मॅपिंग AVR DA आणि AVR DB फॅमिलीमधील काही उपकरणांमध्ये SFR (उदा. FLMAP) असते जे प्रोग्राम मेमरीचा कोणता 32k विभाग डेटा मेमरीमध्ये मॅप केला जाईल हे निर्दिष्ट करते. नवीन – mconst-data-in-config-mapped-progmem पर्यायाचा वापर लिंकरने सर्व const-पात्र डेटा एका 32k विभागात ठेवण्यासाठी केला जाऊ शकतो आणि हा डेटा डेटा मेमरीमध्ये मॅप केला आहे याची खात्री करण्यासाठी आपोआप संबंधित SFR रजिस्टर सुरू करू शकतो. जागा, जिथे ते अधिक प्रभावीपणे प्रवेश केले जाईल.
मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररी सर्व MPLAB XC कंपाइलर मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररी सामायिक करतील, जी आता MPLAB XC8 च्या या प्रकाशनासह उपलब्ध आहे. AVO MCU साठी MPLA# XC8 C कंपाइलर वापरकर्ता मार्गदर्शक यापुढे या मानक कार्यांसाठी दस्तऐवजीकरण समाविष्ट करत नाही. ही माहिती आता मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररी संदर्भ मार्गदर्शकामध्ये आढळू शकते. लक्षात घ्या की avr-libc द्वारे पूर्वी परिभाषित केलेली काही कार्यक्षमता यापुढे उपलब्ध नाही. (लीला कार्यक्षमता पहा.)
स्मार्ट I0 नवीन युनिफाइड लायब्ररींचा भाग म्हणून, प्रिंटफ आणि स्कॅनफ फॅमिलीमधील I0 फंक्शन्स आता प्रत्येक बिल्डवर सानुकूल-व्युत्पन्न केली जातात, ही फंक्शन्स प्रोग्राममध्ये कशी वापरली जातात यावर आधारित. हे प्रोग्रामद्वारे वापरलेली संसाधने लक्षणीयरीत्या कमी करू शकते.
स्मार्ट ICI सहाय्य पर्याय स्मार्ट I0 फंक्शन्ससाठी कॉलचे विश्लेषण करताना (जसे की प्रिंट f () किंवा scanf ()), कंपायलर नेहमी फॉरमॅट स्ट्रिंगवरून निर्धारित करू शकत नाही किंवा कॉलसाठी आवश्यक त्या रूपांतरण स्पेसिफायर्सच्या वितर्कांमधून अनुमान काढू शकत नाही. पूर्वी, कंपायलर नेहमी कोणतेही गृहितक करत नाही आणि पूर्णतः कार्यशील 10 फंक्शन्स अंतिम प्रोग्राम इमेजमध्ये जोडलेले असल्याची खात्री करत असे. एक नवीन – msmart-io-format=fmt पर्याय जोडला गेला आहे ज्यामुळे कंपायलरला त्याऐवजी वापरकर्त्याद्वारे स्मार्ट I0 फंक्शन्सद्वारे वापरल्या जाणार्‍या रूपांतरण स्पेसिफायरची माहिती दिली जाऊ शकते ज्याचा वापर संदिग्ध आहे, जास्त लांब 10 रूटीन लिंक होण्यापासून प्रतिबंधित करते. (अधिक तपशीलांसाठी स्मार्ट-आयओ-फॉर्मेट पर्याय पहा.)
सानुकूल विभाग ठेवणे याआधी, -W1, -section-start पर्यायाने विनंती केलेल्या पत्त्यावर फक्त निर्दिष्ट विभाग ठेवला होता जेव्हा लिंकर स्क्रिप्टने समान नावाचा आउटपुट विभाग परिभाषित केला होता. जेव्हा तसे झाले नाही, तेव्हा विभाग लिंकरने निवडलेल्या पत्त्यावर ठेवला गेला आणि पर्यायाकडे दुर्लक्ष केले गेले. आता पर्याय सर्व सानुकूल विभागांसाठी सन्मानित केला जाईल, जरी लिंकर स्क्रिप्टने विभाग परिभाषित केला नाही. लक्षात ठेवा, तथापि, मानक विभागांसाठी, जसे की . मजकूर, . bss किंवा डेटा, सर्वोत्कृष्ट तंदुरुस्त वाटपकर्त्याचे अद्याप त्यांच्या प्लेसमेंटवर पूर्ण नियंत्रण असेल आणि पर्यायाचा कोणताही परिणाम होणार नाही. वापरकर्त्याच्या मार्गदर्शकामध्ये वर्णन केल्याप्रमाणे -ton, -Tsection=addr पर्याय वापरा.
३.१. आवृत्ती 3.6
स्टॅक मार्गदर्शन PRO कंपाइलर परवान्यासह उपलब्ध, कंपाइलरच्या स्टॅक मार्गदर्शन वैशिष्ट्याचा वापर प्रोग्रामद्वारे वापरल्या जाणार्‍या कोणत्याही स्टॅकच्या कमाल खोलीचा अंदाज घेण्यासाठी केला जाऊ शकतो. हे प्रोग्रामचा कॉल आलेख तयार करते आणि त्याचे विश्लेषण करते, प्रत्येक फंक्शनचा स्टॅक वापर निर्धारित करते आणि एक अहवाल तयार करते, ज्यावरून प्रोग्रामद्वारे वापरलेल्या स्टॅकच्या खोलीचा अंदाज लावला जाऊ शकतो. हे वैशिष्ट्य -mchp-stack-usage कमांड-लाइन पर्यायाद्वारे सक्षम केले आहे. अंमलबजावणीनंतर स्टॅक वापराचा सारांश छापला जातो. नकाशामध्ये तपशीलवार स्टॅक अहवाल उपलब्ध आहे file, ज्याची नेहमीच्या पद्धतीने विनंती केली जाऊ शकते.
खालील AVR भागांसाठी नवीन डिव्हाइस समर्थन सपोर्ट उपलब्ध आहे: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DBD28, AVR32BD28, AVR64BD32, AVR32B48 16, आणि AVR28DB16. मागे घेतलेले उपकरण समर्थन पुढील AVR भागांसाठी आता उपलब्ध नाही: AVR32DA16, AVR48DAXNUMX आणि, AVRXNUMXDAXNUMX.
३.१. आवृत्ती 3.7
काहीही नाही.
३.१. आवृत्ती 3.8
डेटा इनिशिएलायझेशन रोखण्यासाठी नवीन पर्याय नवीन -mno-data-init ड्रायव्हर पर्याय डेटाचे इनिशिएलायझेशन आणि bss विभाग साफ करणे प्रतिबंधित करतो. हे डू कॉपी डेटाचे आउटपुट दाबून कार्य करते आणि असेंबलीमध्ये स्पष्ट bss चिन्हे करतात files, ज्यामुळे लिंकरद्वारे त्या नित्यक्रमांचा समावेश टाळता येईल.
वर्धित ऑप्टिमायझेशन्स अनेक ऑप्टिमायझेशन सुधारणा केल्या गेल्या आहेत, ज्यामध्ये रिडंडंट रिटर्न सूचना काढून टाकणे, स्किप-इफ-बिट-इज सूचनेनंतर काही उडी काढून टाकणे, आणि सुधारित प्रक्रियात्मक अमूर्तता आणि ही प्रक्रिया पुनरावृत्ती करण्याची क्षमता समाविष्ट आहे. यापैकी काही ऑप्टिमायझेशन नियंत्रित करण्यासाठी अतिरिक्त पर्याय उपलब्ध आहेत, विशेषत: -f विभाग-अँकर, जे एका चिन्हाच्या सापेक्ष स्थिर वस्तूंचा प्रवेश करण्यास अनुमती देतात; -mpa-iterations=n, जे डीफॉल्ट 2 पासून प्रक्रियात्मक अमूर्त पुनरावृत्तीची संख्या बदलण्याची परवानगी देते; आणि, -mpa-callcost-shortcall, जे अधिक आक्रमक प्रक्रियात्मक अमूर्तता करते, या आशेने की लिंकर लांब कॉल्स आराम करू शकेल. जर अंतर्निहित गृहीतके पूर्ण झाली नाहीत तर हा शेवटचा पर्याय कोड आकार वाढवू शकतो.
खालील AVR भागांसाठी नवीन डिव्हाइस समर्थन सपोर्ट उपलब्ध आहे: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DA28, AVR128DA32, AVR128DA48 128DB64, AVR5272DB5790, आणि AVR5790DB5791. Retracted device Support Support is no longer available for the following AVR parts: ATA5795, ATA6285, ATA6286N, ATA6612, ATA6613, ATA6614, ATA6616, ATA6617C, ATA664251C, ATAXNUMXQ, ATAXNUMXC, ATAXNUMXC, and ATAXNUMX.
३.३. आवृत्ती 3.9 (कार्यात्मक सुरक्षा प्रकाशन)
शीर्षलेख file कंपाइलर बिल्ट-इन्ससाठी कंपाइलर भाषा वैशिष्ट्यांशी सुसंगत आहे याची खात्री करण्यासाठी जसे की MISRA, शीर्षलेख file, जे आपोआप द्वारे समाविष्ट केले जाते , अद्ययावत केले गेले आहे. या शीर्षलेखामध्ये सर्व इन-बिल्ट फंक्शन्सचे प्रोटोटाइप आहेत, जसे की buildin_avr_nop ( ) आणि बिल्टइन avr delay_cycles () . काही अंगभूत MISRA अनुरूप नसू शकतात; कंपाइलर कमांड लाइनमध्ये defineXCSTRICT_MISRA जोडून हे वगळले जाऊ शकते. बिल्ट-इन्स आणि त्यांची घोषणा निश्चित-रुंदी प्रकार वापरण्यासाठी अद्यतनित केली गेली आहेत.
३.१. आवृत्ती 3.10
नवीन उपकरण समर्थन खालील AVR भागांसाठी उपलब्ध आहे: ATTINY1624, ATTINY1626, आणि ATTINY1627.
उत्तम सर्वोत्कृष्ट फिट वाटप कंपाइलरमधील सर्वोत्कृष्ट फिट वाटप (BFA) सुधारित केले गेले आहे जेणेकरुन विभाग चांगल्या ऑप्टिमायझेशनची परवानगी देणार्‍या क्रमाने वाटप केले जातील. BFA आता नावाच्या पत्त्याच्या स्थानांना समर्थन देते आणि डेटा इनिशिएलायझेशन चांगल्या प्रकारे हाताळते.
सुधारित प्रक्रियात्मक अमूर्तता प्रक्रियात्मक अ‍ॅब्स्ट्रॅक्शन ऑप्टिमायझेशन आता अधिक कोड अनुक्रमांवर केले जातात. या ऑप्टिमायझेशनने कोडचा आकार वाढवला असेल अशा पूर्वीच्या परिस्थितींना ऑप्टिमायझेशन कोडला लिंकरच्या कचरा संकलन प्रक्रियेबद्दल जागरूक करून संबोधित केले गेले आहे.
AVR असेंबलरची अनुपस्थिती AVR असेंबलर या वितरणामध्ये यापुढे समाविष्ट केले जाणार नाही.
३.३. आवृत्ती 3.11 (कार्यात्मक सुरक्षा प्रकाशन)
काहीही नाही.
३.१. आवृत्ती 3.12
कोड कव्हरेज या प्रकाशनामध्ये कोड कव्हरेज वैशिष्ट्य समाविष्ट आहे जे प्रकल्पाचा स्त्रोत कोड किती प्रमाणात कार्यान्वित केला गेला आहे याचे विश्लेषण सुलभ करते. ते सक्षम करण्यासाठी -mcodecov=ram पर्याय वापरा. तुमच्या हार्डवेअरवर प्रोग्राम अंमलात आणल्यानंतर, कोड कव्हरेज माहिती डिव्हाइसमध्ये एकत्रित केली जाईल आणि हे MPLAB X IDE द्वारे कोड कव्हरेज प्लगइनद्वारे हस्तांतरित आणि प्रदर्शित केले जाऊ शकते. या प्लगइनवर माहिती मिळवण्यासाठी IDE दस्तऐवजीकरण पहा. #pragma nocodecov चा वापर कव्हरेज विश्लेषणातून पुढील कार्ये वगळण्यासाठी केला जाऊ शकतो. तद्वतच प्राग्मा च्या सुरुवातीला जोडले जावे file ते संपूर्ण वगळण्यासाठी file कव्हरेज विश्लेषणातून. वैकल्पिकरित्या, _attribute_ ( (nocodecov) ) कव्हरेज विश्लेषणातून विशिष्ट कार्य वगळण्यासाठी वापरले जाऊ शकते.
डिव्हाइसचे वर्णन files एक नवीन उपकरण file avr_chipinfo म्हणतात. html कंपाइलर वितरणाच्या डॉक्स निर्देशिकेत स्थित आहे. या file कंपाइलरद्वारे समर्थित सर्व उपकरणांची यादी करते. डिव्हाइसच्या नावावर क्लिक करा आणि ते त्या डिव्हाइससाठी सर्व परवानगीयोग्य कॉन्फिगरेशन बिट सेटिंग/मूल्य वेदना दर्शविणारे पृष्ठ उघडेल, जसे कीampलेस प्रक्रियात्मक अमूर्तता
प्रक्रियात्मक अ‍ॅब्स्ट्रॅक्शन ऑप्टिमायझेशन, जे असेंबली कोडचे सामान्य ब्लॉक त्या ब्लॉकच्या एक्सट्रॅक्टेड कॉपीवर कॉलसह बदलतात, कंपाइलरमध्ये जोडले गेले आहेत. हे एका वेगळ्या ऍप्लिकेशनद्वारे केले जातात, जे स्तर 2, 3 किंवा s ऑप्टिमायझेशन निवडताना कंपाइलरद्वारे आपोआप मागवले जाते. हे ऑप्टिमायझेशन कोड आकार कमी करतात, परंतु ते अंमलबजावणीची गती आणि कोड डीबगबिलिटी कमी करू शकतात. -mno-pa पर्याय वापरून उच्च ऑप्टिमायझेशन स्तरांवर प्रक्रियात्मक अ‍ॅब्स्ट्रॅक्शन अक्षम केले जाऊ शकते किंवा -mpa वापरून कमी ऑप्टिमायझेशन स्तरांवर (तुमच्या परवान्याच्या अधीन) सक्षम केले जाऊ शकते. एखाद्या वस्तूसाठी ते अक्षम केले जाऊ शकते file -mno-pa-on- वापरूनfile=fileनाव, किंवा -mno-pa-on-function=function वापरून फंक्शनसाठी अक्षम केले. तुमच्या सोर्स कोडमध्ये, फंक्शनच्या व्याख्येसह विशेषता ( (nopa) ) वापरून किंवा nopa वापरून फंक्शनसाठी प्रक्रियात्मक अ‍ॅब्स्ट्रॅक्शन अक्षम केले जाऊ शकते, जे विशेषता ( (nopa, noinline) ) पर्यंत विस्तारते आणि अशा प्रकारे फंक्शन इनलाइनिंग होण्यापासून प्रतिबंधित करते. आणि इनलाइन कोडचे अमूर्तता आहे.
pragma मध्ये लॉक बिट समर्थन #pragma कॉन्फिगरेशनचा वापर आता AVR लॉक बिट्स तसेच इतर कॉन्फिगरेशन बिट्स निर्दिष्ट करण्यासाठी केला जाऊ शकतो. avr_chipinfo तपासा. html file (वर उल्लेख केलेला) या प्रॅग्मासह वापरण्यासाठी सेटिंग/मूल्य जोड्यांसाठी. नवीन उपकरण समर्थन खालील भागांसाठी उपलब्ध आहे: AVR28DAl28, AVR64DAl28, AVR32DA 128, आणि AVR48DA 128.
३.१. आवृत्ती 3.13
तुमच्या पैशासाठी अधिक बिट या कंपाइलर आणि परवाना व्यवस्थापकाची macOS आवृत्ती आता 64-बिट ऍप्लिकेशन आहे. हे macOS च्या अलीकडील आवृत्त्यांवर चेतावणीशिवाय कंपाइलर स्थापित आणि चालेल याची खात्री करेल.
प्रोग्राम मेमरीमधील कॉन्स्ट ऑब्जेक्ट्स कंपाइलर आता कॉन्स्ट-क्वालिफाईड ऑब्जेक्ट्स प्रोग्राम फ्लॅश मेमरीमध्ये ठेवू शकतो, त्या RAM मध्ये ठेवण्याऐवजी. कंपाइलरमध्ये बदल केले गेले आहेत जेणेकरून कॉन्स टी-क्वालिफाईड ग्लोबल डेटा प्रोग्राम फ्लॅश मेमरीमध्ये संग्रहित केला जाईल आणि योग्य प्रोग्राम-मेमरी सूचना वापरून हा डेटा प्रत्यक्ष आणि अप्रत्यक्षपणे ऍक्सेस केला जाऊ शकतो. हे नवीन वैशिष्ट्य डीफॉल्टनुसार सक्षम केले आहे परंतु -mno-const-data-in-progmem पर्याय वापरून अक्षम केले जाऊ शकते. avrxmega3 आणि avrtiny आर्किटेक्चरसाठी, हे वैशिष्ट्य आवश्यक नाही आणि नेहमी अक्षम केले जाते, कारण प्रोग्राम मेमरी या उपकरणांसाठी डेटा अॅड्रेस स्पेसमध्ये मॅप केली जाते.
या कंपायलरच्या विनामूल्य विनापरवाना (विनामूल्य) आवृत्त्या आता स्तर 2 पर्यंत आणि त्यासह ऑप्टिमायझेशनला अनुमती देतात. हे मानक परवाना वापरून पूर्वी जे शक्य होते ते आउटपुट एकसारखे नसले तरी त्याला अनुमती देईल.
स्वागत AVRASM2 2-बिट उपकरणांसाठी AVRASM8 असेंबलर आता XC8 कंपायलर इंस्टॉलरमध्ये समाविष्ट केले आहे. हे असेंबलर XC8 कंपाइलरद्वारे वापरले जात नाही, परंतु हस्तलिखित असेंबली स्त्रोतावर आधारित प्रकल्पांसाठी उपलब्ध आहे.
नवीन उपकरण समर्थन खालील भागांसाठी उपलब्ध आहे: ATMEGA1608, ATMEGA1609, ATMEGA808, आणि ATMEGA809.

३.१. आवृत्ती 3.14
टॉप-लेव्हल ड्रायव्हर नवीन ड्रायव्हर, ज्याला xc8-cc म्हणतात, आता आधीच्या avr-gcc ड्रायव्हर आणि xc8 ड्रायव्हरच्या वर बसतो, आणि तो लक्ष्य उपकरणाच्या निवडीवर आधारित योग्य कंपाइलरला कॉल करू शकतो. हा ड्रायव्हर GCC-शैली पर्याय स्वीकारतो, जे एकतर कार्यान्वित केल्या जात असलेल्या कंपाइलरसाठी भाषांतरित किंवा पास केले जातात. हा ड्रायव्हर कोणत्याही AVR किंवा PIC टार्गेटसह समान शब्दार्थांसह पर्यायांच्या समान संचाचा वापर करण्यास अनुमती देतो आणि अशा प्रकारे कंपाइलरला कॉल करण्याचा शिफारस केलेला मार्ग आहे. आवश्यक असल्यास, जुन्या avr-gcc ड्राइव्हरला पूर्वीच्या कंपाइलर आवृत्त्यांमध्ये स्वीकारलेल्या जुन्या-शैलीच्या पर्यायांचा वापर करून थेट कॉल केला जाऊ शकतो.
कॉमन सी इंटरफेस हा कंपाइलर आता MPLAB कॉमन सी इंटरफेसशी सुसंगत होऊ शकतो, ज्यामुळे सर्व MPLAB XC कंपाइलरवर सोर्स कोड अधिक सहजपणे पोर्ट केला जाऊ शकतो. -mext=cci पर्याय या वैशिष्ट्याची विनंती करतो, अनेक भाषा विस्तारांसाठी पर्यायी वाक्यरचना सक्षम करतो.
नवीन लायब्रेरियन ड्रायव्हर नवीन लायब्ररीयन ड्रायव्हर मागील PIC लायब्ररी लायब्ररीयन आणि AVR avr-ar लायब्ररीयनच्या वर आहे. हा ड्रायव्हर GCC-archiver-शैलीचा पर्याय स्वीकारतो, जे एकतर कार्यान्वित केल्या जाणाऱ्या ग्रंथपालासाठी भाषांतरित किंवा पाठवले जातात. नवीन ड्रायव्हर कोणत्याही PIC किंवा AVR लायब्ररी तयार करण्यासाठी किंवा हाताळण्यासाठी समान शब्दार्थांसह पर्यायांचा एक समान संच वापरण्याची परवानगी देतो. file आणि अशा प्रकारे ग्रंथपालांना बोलावण्याचा शिफारस केलेला मार्ग आहे. लेगसी प्रकल्पांसाठी आवश्यक असल्यास, पूर्वीच्या कंपाइलर आवृत्त्यांमध्ये स्वीकारलेल्या जुन्या-शैलीच्या पर्यायांचा वापर करून मागील ग्रंथपालाला थेट कॉल केले जाऊ शकते.

स्थलांतर समस्या

खालील वैशिष्ट्ये आहेत जी आता कंपाइलरद्वारे वेगळ्या पद्धतीने हाताळली जातात. या कंपाइलर आवृत्तीवर कोड पोर्ट करत असल्यास या बदलांसाठी तुमच्या स्रोत कोडमध्ये बदल करणे आवश्यक आहे. उपशीर्षकांमधील आवृत्ती क्रमांक पुढील बदलांना समर्थन देण्यासाठी प्रथम कंपायलर आवृत्ती सूचित करतो.

३.१. आवृत्ती 4.1
चुकीची fma फंक्शन्स काढली (XC8-2913) C99 स्टँडर्ड लायब्ररी fma 0 -फॅमिली फंक्शन्स ( ) ने एकाच राउंडिंगमध्ये असीम अचूकतेसह गुणाकार-जोडाची गणना केली नाही, परंतु त्याऐवजी प्रत्येक ऑपरेशनसह गोलाकार त्रुटी जमा केल्या. ही कार्ये पुरवलेल्या लायब्ररीतून काढून टाकली आहेत.
३.१. आवृत्ती 4.2
काहीही नाही.
३.३. आवृत्ती 4.3 (कार्यात्मक सुरक्षा प्रकाशन)
काहीही नाही.
४.४. आवृत्ती 4.4 काहीही नाही.
३.१. आवृत्ती 4.5
स्ट्रिंग-टू बेस (XC8-2420) हाताळणे इतर XC कंपाइलर्ससह सुसंगतता सुनिश्चित करण्यासाठी, XC8 स्ट्रिंग-टू फंक्शन्स, जसे की स्ट्रटोल () इ., निर्दिष्ट केलेला बेस 36 पेक्षा मोठा असल्यास इनपुट स्ट्रिंग रूपांतरित करण्याचा प्रयत्न करणार नाही. आणि त्याऐवजी EINVAL वर errno सेट करेल. जेव्हा हे मूळ मूल्य ओलांडले जाते तेव्हा C मानक फंक्शन्सचे वर्तन निर्दिष्ट करत नाही.
अयोग्य गती ऑप्टिमायझेशन स्तर 3 ऑप्टिमायझेशन (-03) निवडताना प्रक्रियात्मक अमूर्त ऑप्टिमायझेशन सक्षम केले जात होते. हे ऑप्टिमायझेशन कोड गतीच्या खर्चावर कोड आकार कमी करतात, म्हणून केले जाऊ नयेत. हे ऑप्टिमायझेशन स्तर वापरणारे प्रकल्प या प्रकाशनासह तयार केल्यावर कोड आकार आणि अंमलबजावणी गतीमध्ये फरक पाहू शकतात.
लायब्ररी कार्यक्षमता अनेक मानक C लायब्ररी फंक्शन्सचा कोड आता मायक्रोचिपच्या युनिफाइड स्टँडर्ड लायब्ररीमधून येतो, जो पूर्वीच्या avr-libc लायब्ररीच्या तुलनेत काही परिस्थितींमध्ये भिन्न वर्तन प्रदर्शित करू शकतो. उदाampआता, फॉरमॅट केलेले चालू करण्यासाठी 1printf flt लायब्ररी (-1printf_flt पर्याय) मध्ये लिंक करणे आवश्यक नाही. I0 फ्लोट-स्वरूप निर्दिष्टकर्त्यांसाठी समर्थन. हुशार I0 मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररीची वैशिष्ट्ये हा पर्याय अनावश्यक बनवतात. याव्यतिरिक्त, स्ट्रिंग आणि मेमरी फंक्शन्स (उदा. strcpy_P ( ) इ.) साठी _P सफिक्स्ड रूटीन वापरणे आवश्यक नाही जे फ्लॅशमध्ये कॉन्स्ट स्ट्रिंगवर कार्य करतात. जेव्हा कॉन्स्ट-डेटा-इन-प्रोग्राम-मेमरी वैशिष्ट्य सक्षम असेल तेव्हा मानक C रूटीन (उदा. strcpy ) अशा डेटासह योग्यरित्या कार्य करतील.

३.१. आवृत्ती 4.6
काहीही नाही.
३.१. आवृत्ती 4.7
काहीही नाही.
३.१. आवृत्ती 4.8
काहीही नाही.
३.३. आवृत्ती 4.1 (कार्यात्मक सुरक्षा प्रकाशन)
काहीही नाही.
३.१. आवृत्ती 4.2
DFP लेआउट बदलला कंपाइलर आता DFPs (डिव्हाइस फॅमिली पॅक) द्वारे वापरलेला वेगळा लेआउट गृहीत धरतो. याचा अर्थ असा होईल की जुने DFP कदाचित या रिलीझसह कार्य करणार नाही आणि जुने कंपाइलर नवीनतम DFP वापरण्यास सक्षम असणार नाहीत.
३.३. आवृत्ती 4.3 (कार्यात्मक सुरक्षा प्रकाशन)
काहीही नाही.
३.१. आवृत्ती 4.4
काहीही नाही
३.१. आवृत्ती 4.5
प्रोग्राम मेमरीमध्ये कॉन्स्ट ऑब्जेक्ट्स लक्षात ठेवा की डीफॉल्टनुसार, कॉन्स्ट-क्वालिफाईड ऑब्जेक्ट्स प्रोग्राम मेमरीमध्ये ठेवल्या जातील आणि ऍक्सेस केल्या जातील (वर्णित रंगानुसार). हे तुमच्या प्रकल्पाच्या आकारावर आणि अंमलबजावणीच्या गतीवर परिणाम करेल, परंतु RAM वापर कमी करेल. -mnoconst-data-in-progmem पर्याय वापरून, आवश्यक असल्यास, हे वैशिष्ट्य अक्षम केले जाऊ शकते.
३.१. आवृत्ती 4.6
कॉन्फिगरेशन फ्यूज डिव्हाइस कॉन्फिगरेशन फ्यूज आता कॉन्फिगरेशन प्रॅग्मा वापरून प्रोग्राम केले जाऊ शकतात त्यानंतर फ्यूज स्थिती निर्दिष्ट करण्यासाठी सेटिंग-व्हॅल्यू जोड्या, उदा.
#pragma कॉन्फिगरेशन WDTON = SET
#pragma कॉन्फिगरेशन BODLEVEL = BODLEVEL_4V3
निरपेक्ष वस्तू आणि कार्ये ऑब्जेक्ट्स आणि फंक्शन्स आता सीसीआय (पत्ता) निर्दिष्टकर्ता वापरून मेमरीमधील विशिष्ट पत्त्यावर ठेवल्या जाऊ शकतात, उदाहरणार्थampले:
#समाविष्ट करा
int foobar_at(0x800100);
char __at(0x250) getID(इंट ऑफसेट) { … }
या विनिर्देशकाचा युक्तिवाद असणे आवश्यक आहे एक स्थिरांक जो पत्ता दर्शवितो ज्यावर प्रथम बाइट किंवा सूचना ठेवली जाईल. RAM पत्ते 0x800000 ऑफसेट वापरून सूचित केले जातात. हे वैशिष्ट्य वापरण्यासाठी CCI सक्षम करा.
नवीन व्यत्यय कार्य वाक्यरचना कंपाइलर आता CCI _interrupt (num) स्पेसिफायर स्वीकारतो हे दर्शविण्यासाठी C फंक्शन्स इंटरप्ट हँडलर आहेत. विनिर्देशक एक व्यत्यय क्रमांक घेतो, उदाहरणार्थampले:
#समाविष्ट करा
void __interrupt(SPI_STC_vect_num) spi_Isr(void) { … }

निश्चित समस्या

कंपाइलरमध्ये केलेल्या दुरुस्त्या खालीलप्रमाणे आहेत. हे व्युत्पन्न केलेल्या कोडमधील दोषांचे निराकरण करू शकतात किंवा वापरकर्त्याच्या मार्गदर्शकाद्वारे अभिप्रेत किंवा निर्दिष्ट केलेल्या कंपाइलरच्या ऑपरेशनमध्ये बदल करू शकतात. उपशीर्षकांमधील आवृत्ती क्रमांक प्रथम कंपायलर आवृत्ती दर्शविते ज्यामध्ये पुढील समस्यांसाठी निराकरणे समाविष्ट आहेत. शीर्षकातील ब्रॅकेट केलेले लेबल हे ट्रॅकिंग डेटाबेसमधील समस्येची ओळख आहे. तुम्हाला सपोर्टशी संपर्क साधण्याची गरज असल्यास हे उपयुक्त ठरू शकतात.
लक्षात ठेवा की डिव्हाइसशी संबंधित काही डिव्हाइस-विशिष्ट समस्या डिव्हाइस फॅमिली पॅक (DFP) मध्ये दुरुस्त केल्या आहेत. DFP मध्ये केलेल्या बदलांच्या माहितीसाठी आणि नवीनतम पॅक डाउनलोड करण्यासाठी MPLAB पॅक व्यवस्थापक पहा.

३.१. आवृत्ती 5.1
व्हेंचुरा (XC8-3088) डोंगल्सवरील डोंगल समस्या कंपाइलरला परवाना देण्यासाठी वापरलेले कदाचित macOS Ventura होस्टवर योग्यरित्या वाचले गेले नसेल, परिणामी परवाना अयशस्वी झाला. XCLM परवाना व्यवस्थापकातील बदल या समस्येचे निराकरण करतात.
मेमरी वाटपाचे चुकीचे संकेत (XC8-2925) मानक लायब्ररी मेमरी मॅनेजमेंट फंक्शन्स (malloc () et al) वापरून SIZE_MAX बाइट्स (किंवा याच्या जवळचे मूल्य) वाटप करण्याचा प्रयत्न चुकीच्या पद्धतीने यशस्वी झाला. साध्या डायनॅमिक मेमरी वाटप अंमलबजावणीचा वापर करताना विनंती केलेल्या ब्लॉकच्या व्यतिरिक्त अतिरिक्त बाइट्स आवश्यक आहेत हे लक्षात घेतले नाही. NULL पॉइंटर आता परत केला जाईल आणि अशा परिस्थितीत ENOMEM वर सेट केला जाईल.
चुकीची fma फंक्शन्स काढली (XC8-2913) C99 मानक लायब्ररी fma ( ) -कुटुंब कार्ये ( ) ने एकाच राउंडिंगमध्ये असीम अचूकतेसह गुणाकार-जोडाची गणना केली नाही, परंतु त्याऐवजी प्रत्येक ऑपरेशनसह गोलाकार त्रुटी जमा केल्या. पुरवलेल्या लायब्ररीतून ही कार्ये काढून टाकली गेली आहेत.
स्ट्रिंग रूपांतरणाची चुकीची हाताळणी (XC8-2921, XC8-2652) जेव्हा स्ट्रटोड Cr द्वारे रूपांतरणासाठी 'विषय क्रम' मध्ये घातांकीय स्वरूपात फ्लोटिंग-पॉइंट संख्या दिसते आणि e/E वर्णानंतर एक अनपेक्षित वर्ण होता, तेव्हा जेथे endptr प्रदान केला गेला होता, त्याला एक पत्ता नियुक्त केला गेला होता ते e/E नंतर वर्णाकडे निर्देशित केले होते, तर ते स्वतः e/E वर्णाकडे निर्देशित केले पाहिजे कारण ते रूपांतरित केले गेले नव्हते. उदाample, strtod (“100exx”, &ep) ने 100.00 परत केले पाहिजे आणि स्ट्रिंगच्या “exx” भागाकडे निर्देशित करण्यासाठी ep सेट केले पाहिजे, तर फंक्शन योग्य मूल्य देत होते परंतु स्ट्रिंगच्या “xx” भागाकडे निर्देश करण्यासाठी ep सेट करत होते .

३.१. आवृत्ती 5.2
खूप आरामशीर (XCS-2876) -mrelax पर्याय वापरताना, कंपाइलर काही विभागांना एकत्र वाटप करत नव्हता, परिणामी कमी इष्टतम कोड आकार मिळतो. हे कदाचित नवीन MUSL लायब्ररी वापरणाऱ्या कोडसह किंवा कमकुवत चिन्हांसह झाले असावे.
चेतावणीमध्ये नमूद केल्याप्रमाणे मॅपिंग वैशिष्ट्य अक्षम केलेले नाही (XC8-2875) const-data-in-config-mappedprogmem वैशिष्ट्य सक्षम केल्या जात असलेल्या const-data-in-progmem वैशिष्ट्यावर अवलंबून आहे. पर्याय वापरून const-data-inconfig-mapped-progmem वैशिष्ट्य स्पष्टपणे सक्षम केले असल्यास आणि const-data-inprogmem वैशिष्ट्य अक्षम केले असल्यास, const-data-in-con अंजीर- असा इशारा देणारा संदेश असूनही, लिंक चरण अयशस्वी झाले. mapped-progmem वैशिष्ट्य स्वयंचलितपणे अक्षम केले गेले होते, जे पूर्णपणे योग्य नव्हते. या परिस्थितीत const-data-in-config-mapped-progmem वैशिष्ट्य आता पूर्णपणे अक्षम केले आहे.
NVMCTRL (XC8-2848) मध्ये योग्यरित्या प्रवेश करण्यासाठी DFP बदलते AVR64EA उपकरणांद्वारे वापरलेला रनटाइम स्टार्टअप कोड हे लक्षात घेतले नाही की NVMCTRL रजिस्टर कॉन्फिगरेशन चेंज प्रोटेक्शन (CCP) अंतर्गत आहे आणि कॉन्स्ट-डेटा-इन-कॉन्फिगमॅप्ड-प्रोग्मेम वापरलेल्या पृष्ठावर I0 SFR सेट करू शकत नाही. कंपाइलर वैशिष्ट्य. AVR-Ex_DFP आवृत्ती 2.2.55 मध्ये केलेले बदल रनटाइम स्टार्टअप कोडला या रजिस्टरवर योग्यरित्या लिहिण्यास अनुमती देईल.
टाळण्यासाठी DFP बदल फ्लॅश मॅपिंग (XC8-2847) AVR128DA28/32/48/64 सिलिकॉन इरेटा (D580000882) मध्ये नोंदवलेल्या फ्लॅश-मॅपिंग डिव्हाइस वैशिष्ट्यातील समस्येसाठी एक कार्य-अराउंड कार्यान्वित केले गेले आहे. const-data-in-config-mapped-progmem कंपाइलर वैशिष्ट्य प्रभावित डिव्हाइसेससाठी डीफॉल्टनुसार लागू केले जाणार नाही आणि हा बदल AVR-Dx_DFP आवृत्ती 2.2.160 मध्ये दिसून येईल.
sinhf किंवा coshf सह बिल्ड एरर (XC8-2834) sinhf () किंवा coshf () लायब्ररी फंक्शन्स वापरण्याच्या प्रयत्नांमुळे अपरिभाषित संदर्भाचे वर्णन करताना लिंक एरर आली. संदर्भित गहाळ फंक्शन आता कंपाइलर वितरणामध्ये समाविष्ट केले गेले आहे.
nopa (XC,8-2833) सह त्रुटी तयार करा asm ( ) वापरून असेंबलरचे नाव निर्दिष्ट केलेल्या फंक्शनसह nopa विशेषता वापरल्याने असेंबलरकडून त्रुटी संदेश ट्रिगर झाला. हे संयोजन शक्य नाही.
पॉइंटर आर्ग्युमेंट्ससह वैरिएडिक फंक्शन अयशस्वी (XC8-2755, XC8-2731) कॉन्स्ट-डेटा-इन-प्रोग्मेम वैशिष्ट्य सक्षम केल्यावर व्हेरिएबल आर्ग्युमेंट सूचीमध्ये 24-बिट (मेमएक्स प्रकार) पॉइंटर्स पास केले जातील अशी आर्ग्युमेंट्सच्या व्हेरिएबल संख्या असलेली फंक्शन्स अपेक्षा करतात. डेटा मेमरीसाठी पॉइंटर असलेल्या युक्तिवादांना 16-बिट ऑब्जेक्ट्स म्हणून पास केले जात होते, ज्यामुळे ते शेवटी वाचले गेले तेव्हा कोड अयशस्वी झाला. जेव्हा कॉन्स्टडेटा-इन-प्रोग्मेम वैशिष्ट्य सक्षम केले जाते, तेव्हा सर्व 16-बिट पॉइंटर आर्ग्युमेंट्स आता 24-बिट पॉइंटर्समध्ये रूपांतरित केले जातात.
strtoxxx लायब्ररी फंक्शन्स अयशस्वी (XC8-2620) जेव्हा const-data-in-progmem वैशिष्ट्य सक्षम केले होते, तेव्हा strtoxxx लायब्ररी फंक्शन्समधील endptr पॅरामीटर प्रोग्राम मेमरीमध्ये नसलेल्या स्त्रोत स्ट्रिंग वितर्कांसाठी योग्यरित्या अद्यतनित केले गेले नाही.
अवैध कास्टसाठी सूचना (XC8-2612) जर कॉन्स्ट-इन-प्रोग्मेम वैशिष्ट्य सक्षम केले असेल आणि स्ट्रिंग लिटरलचा पत्ता स्पष्टपणे डेटा अॅड्रेस स्पेसवर टाकला असेल (कॉन्स्ट क्वालिफायर टाकून) तर कंपाइलर आता त्रुटी देईल.ample, (uint 8_t *) “हॅलो वर्ल्ड!”. जेव्हा कॉन्स्ट डेटा पॉइंटर स्पष्टपणे डेटा अॅड्रेस स्पेसवर कास्ट केला जातो तेव्हा पत्ता अवैध असेल तर चेतावणी दिली जाते.
सुरू न केलेल्या कॉन्स्ट ऑब्जेक्ट्सचे प्लेसमेंट (XC8-2408) Uninitialized const आणि const volatile ऑब्जेक्ट्स अशा उपकरणांवर प्रोग्राम मेमरीमध्ये ठेवल्या जात नव्हत्या जे त्यांच्या प्रोग्राम मेमरीचा संपूर्ण किंवा काही भाग डेटा अॅड्रेस स्पेसमध्ये मॅप करतात. या उपकरणांसाठी, अशा वस्तू आता प्रोग्राम मेमरीमध्ये ठेवल्या जातात, ज्यामुळे त्यांचे ऑपरेशन इतर उपकरणांशी सुसंगत होते.

३.३. आवृत्ती 5.3 (कार्यात्मक सुरक्षा प्रकाशन)
काहीही नाही.
३.१. आवृत्ती 5.4
विलंब करताना त्रुटी (XC8-2774) डिफॉल्ट फ्री मोड ऑप्टिमायझेशनमधील किरकोळ बदलांमुळे अंगभूत फंक्शन्समध्ये विलंब होण्यासाठी ऑपरेंड एक्सप्रेशन्सचे सतत फोल्डिंग रोखले जाते, परिणामी ते स्थिर नसलेले मानले जातात आणि त्रुटी ट्रिगर करतात: बिल्टइन avr delay_cycles कंपाइल टाइम पूर्णांक स्थिरांकाची अपेक्षा करते.
३.१. आवृत्ती 5.5
_at (XC8-2653) वापरून सलग वाटप एकाच नावाच्या विभागात आणि _at ( ) वापरून अनेक ऑब्जेक्ट्सचे सलग वाटप योग्यरित्या कार्य करत नाही. उदाampले:
const char arr1[] __विशेषता__((विभाग(“.mysec”))) __at (0x500) = {0xAB, 0xCD};
const char arr2[] __विशेषता__((विभाग(“.mysec”))) = {0xEF, 0xFE};
arr2 नंतर लगेच arr1 ठेवले पाहिजे.
विभाग प्रारंभ पत्ते निर्दिष्ट करणे (XC8-2650) द -W1, -विभाग-प्रारंभ पर्याय नामनिर्देशित प्रारंभ पत्त्यावर विभाग ठेवण्यास शांतपणे अयशस्वी झाला. कोणत्याही सानुकूल-नावाच्या विभागांसाठी ही समस्या निश्चित केली गेली आहे; तथापि, ते कोणत्याही मानक विभागांसाठी कार्य करणार नाही, जसे की . मजकूर किंवा bss, जे -W1, -T पर्याय वापरून ठेवले पाहिजे.
आराम करताना लिंकर क्रॅश होतो (XC8-2647) जेव्हा -mrelax ऑप्टिमायझेशन सक्षम केले होते आणि उपलब्ध मेमरीमध्ये बसत नसलेले कोड किंवा डेटा विभाग होते, तेव्हा लिंकर क्रॅश झाला. आता, अशा परिस्थितीत, त्याऐवजी त्रुटी संदेश जारी केले जातात.

नो-फॉलिंग-बॅक नाही (XC8-2646) द -nofallback पर्याय योग्यरित्या अंमलात आणला गेला नाही किंवा दस्तऐवजीकरणही केला गेला नाही. कंपाइलर परवाना नसलेला असल्यास कंपाइलर कमी ऑप्टिमायझेशन सेटिंगमध्ये परत येणार नाही याची खात्री करण्यासाठी हे आता निवडले जाऊ शकते आणि त्याऐवजी त्रुटी जारी करेल.

अयोग्य गती ऑप्टिमायझेशन (X03-2637) स्तर 3 ऑप्टिमायझेशन (-03) निवडताना प्रक्रियात्मक अमूर्त ऑप्टिमायझेशन सक्षम केले जात होते. हे ऑप्टिमायझेशन कोड गतीच्या खर्चावर कोड आकार कमी करतात, म्हणून केले जाऊ नयेत.
खराब EEPROM प्रवेश (XC8-2629) द eeprom_read_block रूटीन Xmega उपकरणांवर योग्यरित्या कार्य करत नाही जेव्हा -mconst-data-in-progmem पर्याय सक्षम केला होता (जे डीफॉल्ट स्थिती आहे), परिणामी EEPROM मेमरी योग्यरित्या वाचली जात नाही.
अवैध मेमरी वाटप (XC8-2593, XC8-2651) जेव्हा -Ttext किंवा -Tdata लिंकर पर्याय (उदाample -vl ड्रायव्हर पर्याय वापरून पास केले) निर्दिष्ट केले आहे, संबंधित मजकूर/डेटा प्रदेश मूळ अद्यतनित केला आहे; तथापि, शेवटचा पत्ता त्यानुसार समायोजित केला गेला नाही, ज्यामुळे क्षेत्र लक्ष्य उपकरणाची मेमरी श्रेणी ओलांडू शकते.
ओव्हर-एट्रिब्युटेड फंक्शनसह क्रॅश (XC8-2580) इंटरप्ट, सिग्नल किंवा एनएमआय यापैकी एकापेक्षा जास्त गुणधर्म वापरून फंक्शन घोषित केल्यास कंपाइलर क्रॅश होतो, उदा. विशेषता ( ( सिग्नल , इंटरप्ट ) ).
अवैध ATtiny व्यत्यय कोड (XC8-2465) ATtiny डिव्हाइसेससाठी बिल्डिंग करताना आणि ऑप्टिमायझेशन अक्षम केले होते (-00), इंटरप्ट फंक्शन्सने ऑपरेंड ऑफ रेंज असेंबलर मेसेज ट्रिगर केले असावे.
पर्याय पास केले जात नाहीत (XC8-2452) एकाधिक, स्वल्पविरामाने विभक्त लिंकर पर्यायांसह पर्याय वापरत असताना, सर्व लिंकर पर्याय लिंकरला पास केले जात नव्हते.
अप्रत्यक्षपणे प्रोग्राम मेमरी वाचण्यात त्रुटी (X03-2450) काही घटनांमध्ये, पॉइंटरपासून प्रोग्राम मेमरीमध्ये दोन बाइट मूल्य वाचताना कंपाइलरने अंतर्गत त्रुटी (ओळखता न येणारी insn) निर्माण केली.
३.१. आवृत्ती 5.6
चा दुसरा प्रवेश लायब्ररी अयशस्वी (XC8-2381) xc8-ar च्या Windows आवृत्तीची विनंती करत आहे. विद्यमान लायब्ररी संग्रहणात प्रवेश करण्यासाठी .exe लायब्ररी आर्काइव्हर दुसर्‍यांदा त्रुटी संदेशाचे नाव बदलण्यात अक्षम असल्‍याने अयशस्वी झाले असावे.
३.१. आवृत्ती 5.7
अस्पष्ट संकलक अपयश (XC8-2367) विंडोज प्लॅटफॉर्मवर चालत असताना ज्यामध्ये सिस्टीम तात्पुरती निर्देशिका डॉट '.' समाविष्ट असलेल्या पथावर सेट केली होती. वर्ण, कंपाइलर कार्यान्वित करण्यात अयशस्वी होऊ शकतो.
३.१. आवृत्ती 5.8
बाह्यरेखा (XC8-2299) नंतर जागतिक लेबले चुकली हाताने लिहिलेला असेंबली कोड जो असेंब्ली सीक्वेन्समध्ये ग्लोबल लेबले ठेवतो जे प्रक्रियात्मक अमूर्ततेद्वारे घटक केले जातात ते कदाचित योग्यरित्या पुनर्स्थित केले गेले नाहीत.
आरामदायी क्रॅश (XC8-2287) टेल जंप रिलॅक्सेशन ऑप्टिमायझेशनने विभागाच्या शेवटी नसलेल्या ret सूचना काढून टाकण्याचा प्रयत्न केला तेव्हा -mrelax पर्याय वापरल्याने लिंकर क्रॅश झाला असावा.
मूल्ये म्हणून लेबल्स ऑप्टिमाइझ करताना क्रॅश (XC8-2282) GNU C भाषा विस्ताराने “मूल्ये म्हणून लेबल” वापरत असलेल्या कोडमुळे प्रक्रियात्मक अ‍ॅब्स्ट्रॅक्शन ऑप्टिमायझेशन क्रॅश होऊ शकते, आउटलाइन केलेल्या VMA श्रेणी स्पॅन फिक्सअप त्रुटीसह.
इतका const नाही (XC8-2271) st rstr ( ) आणि इतर फंक्शन्ससाठी प्रोटोटाइप जेव्हा -mconst-data-inprogmem वैशिष्ट्य अक्षम केले असेल तेव्हा परत आलेल्या स्ट्रिंग पॉइंटर्सवर नॉन-स्टँडर्ड कॉन्स्ट क्वालिफायर निर्दिष्ट करू नका. लक्षात ठेवा की avrxmega3 आणि avrtiny डिव्हाइसेससह, हे वैशिष्ट्य कायमचे सक्षम केले आहे.
पेक्षा जास्त असताना हरवलेले इनिशिएलायझर (XC8-2269) भाषांतर युनिटमधील एक व्हेरिएबल एका विभागात ठेवला होता (_विभाग किंवा _विशेषता_ ( (विभाग) ) वापरून), आणि असे पहिले व्हेरिएबल शून्य इनिशियलाइज केले होते किंवा त्यात इनिशियलायझर नव्हते, त्याच भाषांतर युनिटमधील इतर व्हेरिएबल्ससाठी इनिशियलायझर ठेवले होते. त्याच विभागात हरवले होते.
३.३. आवृत्ती 5.1 (कार्यात्मक सुरक्षा प्रकाशन)
काहीही नाही.
३.१. आवृत्ती 5.2
लांब आदेशांसह त्रुटी (XC8-1983) AVR लक्ष्य वापरताना, कंपायलर कदाचित a सह थांबला असेल file त्रुटी आढळली नाही, जर कमांड लाइन खूप मोठी असेल आणि त्यात विशेष वर्ण जसे की कोट्स, बॅकस्लॅश इ.
असाइन केलेला रोडटा विभाग (XC8-1920) AVR लिंकर avrxmega3 आणि avrtiny आर्किटेक्चरसाठी तयार करताना सानुकूल rodata विभागांसाठी मेमरी नियुक्त करण्यात अयशस्वी झाले, संभाव्यत: मेमरी ओव्हरलॅप त्रुटी निर्माण करते
३.१. आवृत्ती 5.3 (कार्यात्मक सुरक्षा प्रकाशन)
काहीही नाही.
३.१. आवृत्ती 5.4
पुनर्स्थापना अयशस्वी (XC8-1891) सर्वोत्कृष्ट तंदुरुस्त वाटपकर्ता लिंकर विश्रांतीनंतर विभागांमधील मेमरी 'होल' सोडत होता. स्मृती खंडित करण्याव्यतिरिक्त, यामुळे पीसी-रिलेटिव्ह जंप किंवा कॉल श्रेणीबाहेर जाण्याशी संबंधित लिंकर रिलोकेशन अयशस्वी होण्याची शक्यता वाढली.
शिथिलतेने बदललेल्या सूचना (XC8-1889) लिंकर शिथिलता उडी मारण्यासाठी किंवा कॉल करण्याच्या सूचनांसाठी आली नाही ज्यांचे लक्ष्य आरामशीर असल्यास पोहोचू शकते.
गहाळ कार्यक्षमता (XC8E-388) पासून अनेक व्याख्या , जसे की clock_div_t आणि clock_prescale सेट () , ATmega324PB, ATmega328PB, ATtiny441, आणि ATtiny841 सह, उपकरणांसाठी परिभाषित केलेले नाहीत.
गहाळ मॅक्रो प्रीप्रोसेसर मॅक्रो _XC8_MODE_, _XC8_VERS ION, _XC, आणि _XC8 कंपाइलरद्वारे स्वयंचलितपणे परिभाषित केले गेले नाहीत. हे आता उपलब्ध आहेत.
३.१. आवृत्ती 5.5
अंतर्गत कंपाइलर त्रुटी (XC8-1822) Windows अंतर्गत बिल्डिंग करताना, कोड ऑप्टिमाइझ करताना अंतर्गत कंपायलर त्रुटी निर्माण झाली असावी.
RAM ओव्हरफ्लो आढळला नाही (XC8-1800, XC8-1796) उपलब्ध RAM पेक्षा जास्त असलेले प्रोग्राम काही परिस्थितींमध्ये कंपाइलरद्वारे आढळले नाहीत, परिणामी रनटाइम कोड अयशस्वी झाला.
वगळलेली फ्लॅश मेमरी (XC8-1792) avrxmega3 आणि avrtiny उपकरणांसाठी, MPLAB X द्वारे फ्लॅश मेमरीचे काही भाग अन-प्रोग्राम केलेले राहू शकतात. IDE.
मुख्य कार्यान्वित करण्यात अयशस्वी (XC8-1788) काही परिस्थितींमध्ये जेथे प्रोग्राममध्ये कोणतेही ग्लोबल व्हेरिएबल्स परिभाषित केलेले नव्हते, रनटाइम स्टार्टअप कोड बाहेर पडला नाही आणि मुख्य ( ) फंक्शन कधीही पोहोचला नाही.
चुकीची मेमरी माहिती (XC8-1787) avrxmega3 आणि avrtiny उपकरणांसाठी, avr-आकार प्रोग्राम अहवाल देत होता की प्रोग्राम मेमरीच्या ऐवजी केवळ-वाचनीय डेटा RAM वापरत आहे.
चुकीची प्रोग्राम मेमरी रीड (XC8-1783) डेटा अॅड्रेस स्पेसमध्ये मॅप केलेल्या प्रोग्राम मेमरी असलेल्या डिव्हाइसेससाठी संकलित केलेले प्रोजेक्ट आणि जे PROGMEM मॅक्रो/विशेषता वापरून ऑब्जेक्ट्स परिभाषित करतात त्यांनी कदाचित चुकीच्या पत्त्यावरून हे ऑब्जेक्ट्स वाचले असतील.
गुणधर्मांसह अंतर्गत त्रुटी (XC8-1773) जर तुम्ही पॉइंटर ऑब्जेक्ट्स सह परिभाषित केले असेल तर अंतर्गत त्रुटी आली
उदाampले, चार*
_at (0x800150) cp; असा कोड आढळल्यास आता चेतावणी दिली जाते.
मुख्य कार्यान्वित करण्यात अयशस्वी (XC8-1780, XC8-1767, XC8-1754) EEPROM व्हेरिएबल्स वापरणे किंवा कॉन्फिगरेशन प्राग्मा वापरून फ्यूज परिभाषित केल्यामुळे, मुख्य ( ) वर पोहोचण्यापूर्वी, रनटाइम स्टार्टअप कोडमध्ये चुकीचे डेटा इनिशिएलायझेशन आणि/किंवा लॉक अप प्रोग्राम एक्झिक्यूशन झाले असावे.
लहान उपकरणांसह फ्यूज त्रुटी (XC8-1778, XC8-1742) attiny4/5/9/ 10/20/40 उपकरणांमध्ये त्यांच्या शीर्षलेखात चुकीची फ्यूज लांबी निर्दिष्ट केली होती files ज्यामुळे फ्यूज परिभाषित करणारा कोड तयार करण्याचा प्रयत्न करताना लिंकर त्रुटी निर्माण होतात.
सेगमेंटेशन फॉल्ट (XC8-1777) मधूनमधून विभाजन दोष दुरुस्त केला गेला आहे.
असेंबलर क्रॅश (XC8-1761) जेव्हा कंपाइलर उबंटू 18 अंतर्गत चालविला गेला तेव्हा avr-as assembler कदाचित क्रॅश झाला असेल.
वस्तू साफ केल्या नाहीत (XC8-1752) रनटाइम स्टार्टअप कोडद्वारे सुरू न केलेले स्टॅटिक स्टोरेज कालावधी ऑब्जेक्ट्स कदाचित साफ केले गेले नसतील.
परस्परविरोधी उपकरण तपशील दुर्लक्षित केले (XC8-1749) जेव्हा एकाधिक डिव्हाइस स्पेसिफिकेशन पर्याय वापरले आणि भिन्न डिव्हाइसेस सूचित केले तेव्हा कंपाइलर त्रुटी निर्माण करत नव्हता.
ढीग द्वारे मेमरी भ्रष्टाचार (XC8-1748) द _heap_start चिन्ह चुकीच्या पद्धतीने सेट केले जात होते, परिणामी सामान्य व्हेरिएबल्स हीपद्वारे खराब होण्याची शक्यता होती.
लिंकर रिलोकेशन एरर (XC8-1739) कोडमध्ये 4k बाइट्स दूर लक्ष्यासह rjmp किंवा rcal समाविष्ट असताना लिंकर रिलोकेशन एरर उत्सर्जित झाली असावी.
३.१. आवृत्ती 5.6
काहीही नाही.

ज्ञात समस्या

कंपाइलरच्या ऑपरेशनमध्ये खालील मर्यादा आहेत. हे सामान्य कोडिंग निर्बंध असू शकतात किंवा वापरकर्त्याच्या मॅन्युअलमध्ये समाविष्ट असलेल्या माहितीतील विचलन असू शकतात. शीर्षकातील ब्रॅकेट केलेले लेबल हे ट्रॅकिंग डेटाबेसमधील समस्येची ओळख आहे. तुम्हाला समर्थनाशी संपर्क साधण्याची आवश्यकता असल्यास हे फायदेशीर ठरू शकते. ज्या वस्तूंवर लेबले नाहीत त्या मर्यादा आहेत ज्या मोडी ऑपरेंडीचे वर्णन करतात आणि ज्या कायमस्वरूपी लागू राहण्याची शक्यता आहे.
६.१. MPLAB X IDE एकत्रीकरण
MPLAB IDE इंटिग्रेशन जर MPLAB IDE वरून कंपाइलर वापरायचा असेल, तर कंपाइलर इन्स्टॉल करण्यापूर्वी MPLAB IDE इंस्टॉल करणे आवश्यक आहे.
६.२. कोड जनरेशन
Segfault with section-anchors option (XC8-3045) प्रोग्राम ज्याने व्हेरिएबल आर्ग्युमेंट लिस्टसह फंक्शन्स परिभाषित केले आणि -fsection-anchors पर्याय वापरल्याने अंतर्गत कंपाइलर त्रुटी ट्रिगर झाली असेल: सेगमेंटेशन फॉल्ट.
डीबग माहिती सिंक बाहेर (XC8-2948) जेव्हा लिंकर विश्रांती ऑप्टिमायझेशन सूचना कमी करते (उदाampले कॉल टू आरकॉल सूचना), जेव्हा सेक्शनमध्ये एकापेक्षा जास्त संकुचित ऑपरेशन होत असेल तेव्हा मॅपिंगसाठी अॅड्रेसची सोर्स लाइन सिंकमध्ये राहू शकत नाही.
खालील मध्ये माजीample, foo ला दोन कॉल्स आहेत जे सापेक्ष कॉलमध्ये आराम देतात.
PA मेमरी वाटप अयशस्वी (XC8-2881) प्रोसिजरल अॅब्स्ट्रॅक्शन ऑप्टिमायझर्स वापरताना, लिंकर मेमरी वाटप त्रुटी नोंदवू शकतो जेव्हा कोडचा आकार डिव्हाइसवरील उपलब्ध प्रोग्राम मेमरीच्या संख्येच्या जवळ असतो, जरी प्रोग्राम उपलब्ध जागेत बसण्यास सक्षम असला पाहिजे.
स्मार्ट-I0 (XC8-2872) इतके स्मार्ट नाही कंपाइलरचे स्मार्ट-आयओ वैशिष्ट्य snprint f फंक्शनसाठी वैध परंतु उप-इष्टतम कोड निर्माण करेल जर const-data-in-progmem वैशिष्ट्य अक्षम केले असेल किंवा डिव्हाइसचे सर्व फ्लॅश डेटा मेमरीमध्ये मॅप केले असेल.
त्याहूनही कमी स्मार्ट Smart-I0 (XC8-2869) जेव्हा -flto आणि -fno-बिल्टिन दोन्ही पर्याय वापरले जातात तेव्हा कंपाइलरचे स्मार्ट-आयओ वैशिष्ट्य वैध परंतु सबऑप्टिमल कोड जनरेट करेल.
सबऑप्टिमल रीड-ओन्ली डेटा प्लेसमेंट (XC8-2849) लिंकरला सध्या APPCODE आणि APPDATA मेमरी विभाग किंवा मेमरी नकाशामधील [नो-रीड-व्हाइल-राइट विभागांबद्दल माहिती नाही. परिणामी, लिंकर मेमरीच्या अनुपयुक्त क्षेत्रामध्ये केवळ-वाचनीय डेटा वाटप करण्याची शक्यता कमी आहे. const-data-in-progmem वैशिष्ट्य कार्यान्वित केले असल्यास, विशेषत: const-data-in-config-mapped-progmem वैशिष्ट्य देखील सक्षम केले असल्यास, चुकीच्या स्थानावरील डेटाची शक्यता वाढते. आवश्यक असल्यास ही वैशिष्ट्ये अक्षम केली जाऊ शकतात.
ऑब्जेक्ट file प्रक्रिया ऑर्डर (XC8-2863) ज्या क्रमाने वस्तू files ची प्रक्रिया लिंकरद्वारे केली जाईल प्रक्रियात्मक ऍब्स्ट्रॅक्शन ऑप्टिमायझेशन (-mpa पर्याय) च्या वापरावर आधारित भिन्न असू शकते. हे केवळ कोडवर परिणाम करेल जे एकाधिक मॉड्यूल्समध्ये कमकुवत कार्ये परिभाषित करते.
परिपूर्ण (XC8-2777) सह लिंकर त्रुटी जेव्हा एखादी वस्तू RAM च्या प्रारंभी पत्त्यावर निरपेक्ष केली जाते आणि सुरू न केलेल्या वस्तू देखील परिभाषित केल्या जातात तेव्हा लिंकर त्रुटी ट्रिगर होऊ शकते.
शॉर्ट वेक-अप आयडी (XC8-2775) ATA5700/2 उपकरणांसाठी, PHIDO/1 रजिस्टर्स 16 बिट्स रुंद ऐवजी फक्त 32 बिट रुंद म्हणून परिभाषित केले जातात.
चिन्ह कॉल करताना लिंकर क्रॅश (XC8-2758) स्रोत कोडने -cc., –de f sym लिंकर पर्याय वापरून परिभाषित केलेल्या चिन्हाला कॉल केल्यास -mrelax ड्राइव्हर पर्याय वापरल्यास लिंकर क्रॅश होऊ शकतो.
चुकीचे आरंभीकरण (XC8-2679) तेथे काही ग्लोबल/स्टॅटिक बाइट-आकाराच्या ऑब्जेक्ट्सची प्रारंभिक मूल्ये डेटा मेमरीमध्ये कुठे ठेवली जातात आणि रनटाइमच्या वेळी व्हेरिएबल्समध्ये कुठे प्रवेश केला जाईल यामधील तफावत आहे.
खराब अप्रत्यक्ष फंक्शन कॉल्स (XC8-2628) काही घटनांमध्ये, संरचनेचा भाग म्हणून संचयित केलेल्या फंक्शन पॉइंटरद्वारे केलेले फंक्शन कॉल अयशस्वी होऊ शकतात.
हेक्साडेसिमल फ्लोट्ससाठी strtof शून्य परतावा (XC8-2626) लायब्ररी फंक्शन्स strtof et al आणि scanf ( ) et al, नेहमी हेक्साडेसिमल फ्लोटिंग-पॉइंट नंबरचे रूपांतर करेल जे घातांक शून्यावर निर्दिष्ट करत नाही. उदाampले:
strtof (“Oxl”, &endptr);
मूल्य 0 परत करेल, I नाही.
चुकीचा स्टॅक सल्लागार संदेशन (XC8-2542, XC8-2541) काही घटनांमध्ये, वापरलेल्या पुनरावृत्ती किंवा अनिश्चित स्टॅकबद्दल स्टॅक सल्लागार चेतावणी (शक्यतो alloca() च्या वापराद्वारे) उत्सर्जित केली जात नाही.
डुप्लिकेट इंटरप्ट कोडसह अयशस्वी (XC8-2421) जिथे एकापेक्षा जास्त इंटरप्ट फंक्शन एकच बॉडी असते, तिथे कंपायलरला एका इंटरप्ट फंक्शनसाठी आउटपुट असू शकते दुसऱ्याला कॉल करा. यामुळे सर्व कॉल-क्लोबर्ड रजिस्टर्स अनावश्यकपणे सेव्ह होतील, आणि सध्याच्या व्यत्यय हँडलरचा उपसंहार सुरू होण्यापूर्वीच व्यत्यय सक्षम केले जातील, ज्यामुळे कोड बिघाड होऊ शकतो.
अवैध DFP पथ (XC8-2376) सह खराब आउटपुट जर कंपायलरला अवैध DFP पथ आणि 'स्पेक' वापरून आवाहन केले असेल तर file निवडलेल्या उपकरणासाठी अस्तित्वात आहे, कंपाइलर गहाळ डिव्हाइस फॅमिली पॅकची तक्रार करत नाही आणि त्याऐवजी 'स्पेक' निवडत आहे file, जे नंतर अवैध आउटपुट होऊ शकते. 'विशेष' files कदाचित वितरीत केलेल्या DFP सह अद्ययावत नसतील आणि ते केवळ अंतर्गत कंपाइलर चाचणीसाठी वापरण्यासाठी होते.
मेमरी ओव्हरलॅप सापडला नाही (XC8-1966) संकलक एका पत्त्यावर (_at ( ) द्वारे) आणि विभाग ( ) निर्दिष्टकर्ता वापरून आणि त्याच पत्त्याशी जोडलेल्या इतर ऑब्जेक्ट्सवर निरपेक्ष बनवलेल्या वस्तूंचा मेमरी ओव्हरलॅप शोधत नाही.
लायब्ररी फंक्शन्स आणि _memx (XC8-1763) सह अयशस्वी मेमएक्स अॅड्रेस स्पेसमधील युक्तिवादासह कॉल केलेले libgcc फ्लोट फंक्शन्स अयशस्वी होऊ शकतात. लक्षात घ्या की लायब्ररी रूटीन काही C ऑपरेटरकडून कॉल केले जातात, म्हणून, उदाहरणार्थample, खालील कोड प्रभावित आहे:
regFloatVar > memxFloatVar परत करा;
मर्यादित libgcc अंमलबजावणी (AVRTC-731) ATTiny4/5/9/10/20/40 उत्पादनांसाठी, libgcc मध्ये मानक C/Math लायब्ररी अंमलबजावणी अत्यंत मर्यादित आहे किंवा सध्या नाही.
प्रोग्राम मेमरी मर्यादा (AVRTC-732) 128 kb च्या पलीकडील प्रोग्राम मेमरी प्रतिमा टूलचेनद्वारे समर्थित आहेत; तथापि, जेव्हा -mre lax पर्याय वापरला जातो तेव्हा आवश्यक फंक्शन स्टब व्युत्पन्न करण्याऐवजी विश्रांतीशिवाय आणि उपयुक्त त्रुटी संदेशाशिवाय लिंकर अ‍ॅबॉर्ट झाल्याची ज्ञात उदाहरणे आहेत.
नाव जागा मर्यादा (AVRTC-733) वापरकर्त्याच्या मार्गदर्शक विभागातील स्पेशल टाइप क्वालिफायर्समध्ये नमूद केलेल्या मर्यादांच्या अधीन राहून, नामांकित पत्त्याच्या जागा टूलचेनद्वारे समर्थित आहेत.
टाइम झोन द लायब्ररी फंक्शन्स GMT गृहीत धरतात आणि स्थानिक टाइम झोनला समर्थन देत नाहीत, अशा प्रकारे लोकलटाइम ( ) gmtime ( ) प्रमाणेच वेळ परत करेलampले

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

कागदपत्रे / संसाधने

MICROCHIP MPLAB XC8 C कंपाइलर डेव्हलपमेंट सॉफ्टवेअर [pdf] मालकाचे मॅन्युअल
MPLAB XC8 C, MPLAB XC8 C कंपाइलर डेव्हलपमेंट सॉफ्टवेअर, कंपाइलर डेव्हलपमेंट सॉफ्टवेअर, डेव्हलपमेंट सॉफ्टवेअर, सॉफ्टवेअर

संदर्भ

एक टिप्पणी द्या

तुमचा ईमेल पत्ता प्रकाशित केला जाणार नाही. आवश्यक फील्ड चिन्हांकित आहेत *