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

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

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

सामग्री लपवा

ओव्हरview

परिचय

Microchip MPLAB® XC8 C कंपाइलरच्या या प्रकाशनात अनेक नवीन वैशिष्ट्ये, दोष निराकरणे आणि नवीन उपकरण समर्थन समाविष्ट आहे.

बिल्ड तारीख

या कंपाइलर आवृत्तीची अधिकृत बिल्ड तारीख 3 जुलै 2022 आहे.

मागील आवृत्ती

मागील MPLAB XC8 C कंपाइलर आवृत्ती 2.39 होती, एक फंक्शनल सेफ्टी कंपाइलर, 27 जानेवारी 2022 रोजी तयार करण्यात आले होते. पूर्वीचे मानक कंपाइलर 2.36 जानेवारी 27 रोजी तयार केलेले आवृत्ती 2022 होते.

फंक्शनल सेफ्टी मॅन्युअल

MPLAB XC कंपाइलर्ससाठी कार्यात्मक सुरक्षा पुस्तिका दस्तऐवजीकरण पॅकेजमध्ये उपलब्ध असते जेव्हा तुम्ही कार्यात्मक सुरक्षा परवाना खरेदी करता.

घटक परवाने आणि आवृत्त्या

AVR MCUs टूल्ससाठी MPLAB® XC8 C कंपाइलर हे GNU जनरल पब्लिक लायसन्स (GPL) अंतर्गत लिहिलेले आणि वितरित केले जाते याचा अर्थ त्याचा स्त्रोत कोड मुक्तपणे वितरित केला जातो आणि लोकांसाठी उपलब्ध आहे. GNU GPL अंतर्गत साधनांचा स्त्रोत कोड मायक्रोचिपमधून स्वतंत्रपणे डाउनलोड केला जाऊ शकतो webजागा. तुम्ही मध्ये GNU GPL वाचू शकता file नावाने तुमच्‍या इंस्‍टॉल डिरेक्‍ट्रीची उपडिरेक्‍ट्री स्थित आहे. GPL अंतर्गत तत्त्वांची सामान्य चर्चा येथे आढळू शकते. हेडरसाठी सपोर्ट कोड प्रदान केला आहे files, लिंकर स्क्रिप्ट आणि रनटाइम लायब्ररी हे प्रोप्रायटरी कोड आहेत आणि GPL अंतर्गत समाविष्ट नाहीत.

हा कंपाइलर GCC आवृत्ती 5.4.0, binutils आवृत्ती 2.26 ची अंमलबजावणी आहे आणि avr-libc आवृत्ती 2.0.0 वापरतो.

सिस्टम आवश्यकता

MPLAB XC8 C कंपाइलर आणि ते वापरत असलेले परवाना सॉफ्टवेअर विविध ऑपरेटिंग सिस्टीमसाठी उपलब्ध आहेत, ज्यात खालील 64-बिट आवृत्त्यांचा समावेश आहे: Microsoft Windows 10 च्या व्यावसायिक आवृत्त्या; उबंटू 18.04; आणि macOS 10.15.5. Windows साठी बायनरी कोड-साइन केले आहेत. मॅक ओएससाठी बायनरी कोड-साइन केलेले आणि नोटरी केलेले आहेत.

जर तुम्ही नेटवर्क परवाना सर्व्हर चालवत असाल, तर परवाना सर्व्हर होस्ट करण्यासाठी कंपाइलर्सद्वारे समर्थित ऑपरेटिंग सिस्टम असलेले संगणकच वापरले जाऊ शकतात. xclm आवृत्ती 2.0 नुसार, नेटवर्क परवाना सर्व्हर मायक्रोसॉफ्ट विंडोज सर्व्हर प्लॅटफॉर्मवर स्थापित केला जाऊ शकतो, परंतु परवाना सर्व्हरला ऑपरेटिंग सिस्टमच्या सर्व्हर आवृत्तीवर चालण्याची आवश्यकता नाही.

साधने समर्थित

हा कंपाइलर रिलीजच्या वेळी ज्ञात असलेल्या सर्व 8-बिट AVR MCU उपकरणांना समर्थन देतो. सर्व समर्थित उपकरणांच्या सूचीसाठी (कंपाइलरच्या डॉक निर्देशिकेत) पहा. या files प्रत्येक उपकरणासाठी कॉन्फिगरेशन बिट सेटिंग्ज देखील सूचीबद्ध करते.

आवृत्त्या आणि परवाना अपग्रेड

MPLAB XC8 कंपाइलर परवानाकृत (PRO) किंवा विनापरवाना (विनामूल्य) उत्पादन म्हणून सक्रिय केले जाऊ शकते. तुमच्या कंपाइलरला परवाना देण्यासाठी तुम्हाला एक सक्रियकरण की खरेदी करणे आवश्यक आहे. मोफत उत्पादनाच्या तुलनेत परवाना उच्च पातळीच्या ऑप्टिमायझेशनसाठी परवानगी देतो. परवाना नसलेला कंपाइलर परवान्याशिवाय अनिश्चित काळासाठी ऑपरेट केला जाऊ शकतो.

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

प्रतिष्ठापन आणि सक्रियन

या कंपाइलरमध्ये समाविष्ट केलेल्या नवीनतम परवाना व्यवस्थापकाबद्दल महत्त्वाच्या माहितीसाठी स्थलांतर समस्या आणि मर्यादा विभाग देखील पहा.
MPLAB IDE वापरत असल्‍यास, हे टूल इंस्‍टॉल करण्‍यापूर्वी MPLAB X IDE ची नवीनतम आवृत्ती 5.0 किंवा नंतरची स्‍थापित केल्‍याची खात्री करा. कंपाइलर स्थापित करण्यापूर्वी IDE सोडा. .exe (Windows), .run (Linux) किंवा अॅप (macOS) कंपाइलर इंस्टॉलर ऍप्लिकेशन चालवा, उदा. XC8-1.00.11403-windows.exe आणि स्क्रीनवरील दिशानिर्देशांचे अनुसरण करा.
डीफॉल्ट स्थापना निर्देशिकेची शिफारस केली जाते. जर तुम्ही लिनक्स वापरत असाल, तर तुम्ही टर्मिनल वापरून आणि रूट खात्यातून कंपाइलर इंस्टॉल केले पाहिजे. प्रशासक विशेषाधिकारांसह macOS खाते वापरून स्थापित करा.

सक्रियकरण आता इंस्टॉलेशनसाठी स्वतंत्रपणे केले जाते. अधिक माहितीसाठी MPLAB® XC C Compilers (DS52059) साठी दस्तऐवज परवाना व्यवस्थापक पहा.

तुम्ही मूल्यमापन परवान्याअंतर्गत कंपाइलर चालवणे निवडल्यास, तुमचा मूल्यमापन कालावधी संपल्यानंतर 14 दिवसांच्या आत तुम्हाला संकलनादरम्यान एक चेतावणी मिळेल. तुम्ही तुमची HPA सदस्यता संपल्यापासून 14 दिवसांच्या आत असाल तर हीच चेतावणी जारी केली जाते.

XC नेटवर्क परवाना सर्व्हर हा एक वेगळा इंस्टॉलर आहे आणि एकल-वापरकर्ता कंपाइलर इंस्टॉलरमध्ये समाविष्ट केलेला नाही.

XC परवाना व्यवस्थापक आता फ्लोटिंग नेटवर्क परवान्यांच्या रोमिंगला समर्थन देतो. मोबाइल वापरकर्त्यांना उद्देशून, हे वैशिष्ट्य फ्लोटिंग लायसन्सला कमी कालावधीसाठी नेटवर्क बंद करण्यास अनुमती देते. हे वैशिष्ट्य वापरून, तुम्ही नेटवर्कवरून डिस्कनेक्ट करू शकता आणि तरीही तुमचा MPLAB XC कंपाइलर वापरू शकता. या वैशिष्ट्याबद्दल अधिक माहितीसाठी XCLM install चे डॉक फोल्डर पहा. MPLAB X IDE मध्ये रोमिंग व्यवस्थापित करण्यासाठी परवाना विंडो (साधने > परवाने) समाविष्ट आहे.

स्थापना समस्यांचे निराकरण करणे

तुम्हाला विंडोज ऑपरेटिंग सिस्टीममध्ये कंपाइलर इन्स्टॉल करण्यात अडचणी येत असल्यास, खालील सूचना वापरून पहा.

  • प्रशासक म्हणून स्थापना चालवा.
  • इंस्टॉलर ऍप्लिकेशनच्या परवानग्या 'पूर्ण नियंत्रण' वर सेट करा. (राइट-क्लिक करा file, गुणधर्म निवडा, सुरक्षा टॅब, वापरकर्ता निवडा, संपादित करा.)
  • टेम्प फोल्डरच्या परवानग्या “फुल कंट्रोल!” वर सेट करा.

temp फोल्डरचे स्थान निश्चित करण्यासाठी, Run कमांडमध्ये %temp% टाइप करा (Windows logo key + R). हे उघडेल file एक्सप्लोरर डायलॉग ती डिरेक्टरी दर्शविते आणि तुम्हाला त्या फोल्डरचा मार्ग निर्धारित करण्यास अनुमती देईल.

कंपाइलर दस्तऐवजीकरण

स्क्रीनशॉटमध्ये दर्शविल्याप्रमाणे MPLAB X IDE डॅशबोर्डमधील निळ्या हेल्प बटणावर क्लिक केल्यावर आपल्या ब्राउझरमध्ये उघडणाऱ्या HTML पृष्ठावरून कंपाइलरचे वापरकर्ता मार्गदर्शक उघडले जाऊ शकतात.

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

ग्राहक समर्थन

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

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

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

या प्रकाशनात नवीन किंवा अद्यतनित AVR दस्तऐवजीकरण:

  • MUSL कॉपीराइट सूचना
  • MPLAB XC C कंपाइलर स्थापित करणे आणि परवाना देणे (पुनरावृत्ती M)
  • MPLAB XC8 वापरकर्त्याचे एम्बेडेड अभियंत्यांसाठी मार्गदर्शक - AVR MCUs (पुनरावृत्ती A)
  • AVR MCU साठी MPLAB XC8 C कंपाइलर वापरकर्त्याचे मार्गदर्शक (पुनरावृत्ती F)
  • मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररी संदर्भ मार्गदर्शक (पुनरावृत्ती बी)

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

तुम्ही नुकतीच 8-बिट उपकरणे आणि MPLAB XC8 C कंपाइलरसह प्रारंभ करत असाल तर, MPLAB® XC8 वापरकर्ता! एम्बेडेड अभियंत्यांसाठी मार्गदर्शक – AVR® MCUs (DS50003108) मध्ये MPLAB X IDE मध्ये प्रकल्प सेट करण्यासाठी आणि कोड लिहिण्याची माहिती आहे. तुमच्या पहिल्या MPLAB XC8 C प्रकल्पासाठी. हे मार्गदर्शक आता कंपाइलरसह वितरित केले आहे.

या प्रकाशनातील दस्तऐवज निर्देशिकेत हॅमेट वापरकर्ता मार्गदर्शक समाविष्ट केले आहे. हे मार्गदर्शक एकटे-एकटे अनुप्रयोग म्हणून हॅमेट चालवणार्‍यांसाठी आहे.

नवीन काय आहे

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

आवृत्ती ५.१

नवीन डिव्हाइस समर्थन पुढील AVR भागांसाठी आता सपोर्ट उपलब्ध आहे: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64, AVR28, AVR64 आणि AVR32EA64.
सुधारित प्रक्रियात्मक अमूर्तता प्रक्रियात्मक अ‍ॅबस्ट्रॅक्शन (पीए) ऑप्टिमायझेशन टूल सुधारित केले गेले आहे जेणेकरून फंक्शन कॉल इंस्ट्रक्शन ( कॉल रिकॉल ) ) असलेला कोड रेखांकित केला जाऊ शकतो. हे फक्त तेव्हाच होईल जेव्हा स्टॅकचा उपयोग वितर्क पास करण्यासाठी किंवा फंक्शनमधून रिटर्न व्हॅल्यू मिळवण्यासाठी केला जात नसेल. व्हेरिएबल आर्ग्युमेंट लिस्टसह फंक्शन कॉल करताना किंवा या उद्देशासाठी नियुक्त केलेल्या रजिस्टर्सपेक्षा जास्त वितर्क घेणारे फंक्शन कॉल करताना स्टॅकचा वापर केला जातो. मंक-पा-आउटलाइन-कॉल पर्याय वापरून हे वैशिष्ट्य अक्षम केले जाऊ शकते किंवा एखाद्या वस्तूसाठी प्रक्रियात्मक अमूर्तता पूर्णपणे अक्षम केली जाऊ शकते file किंवा -monk-pa-on- वापरून कार्य कराfile आणि -mo.-pa-ऑन-फंक्शन अनुक्रमे, किंवा फंक्शन्ससह निवडकपणे nipa विशेषता ( nipa स्पेसिफायर) वापरून

कोड कव्हरेज मॅक्रो वैध mcodecov पर्याय निर्दिष्ट केल्यास कंपाइलर आता मॅक्रो __CODECOV परिभाषित करतो.

मेमरी आरक्षण पर्याय xc8-cc ड्राइव्हर आता AVR लक्ष्यांसाठी तयार करताना -mreserve=space@start: end पर्याय स्वीकारेल. हा पर्याय डेटा किंवा प्रोग्राम मेमरी स्पेसमध्ये निर्दिष्ट मेमरी श्रेणी राखून ठेवतो, लिंकरला या क्षेत्रातील कोड किंवा ऑब्जेक्ट्स पॉप्युलेट करण्यापासून प्रतिबंधित करतो.

हुशार स्मार्ट आयओ स्मार्ट IO फंक्शन्समध्ये अनेक सुधारणा करण्यात आल्या आहेत, ज्यात प्रिंटएफ कोर कोडमध्ये सामान्य बदल, %n रूपांतरण निर्दिष्टकर्ता स्वतंत्र प्रकार म्हणून हाताळणे, IO फंक्शन आर्ग्युमेंट्स हाताळण्यासाठी शक्य असेल तेथे लहान डेटा प्रकार वापरणे, मागणीनुसार व्हॅरर्ग पॉप रूटीनमध्ये लिंक करणे. , आणि फील्ड रुंदी आणि अचूक हाताळणीमध्ये सामान्य कोड फॅक्टरिंग. यामुळे कोड आणि डेटाची लक्षणीय बचत होऊ शकते, तसेच IO च्या अंमलबजावणीची गती वाढू शकते.

आवृत्ती 2.39 (कार्यात्मक सुरक्षा प्रकाशन)

नेटवर्क सर्व्हर परवाना MPLAB XC8 फंक्शनल सेफ्टी कंपाइलरचे हे प्रकाशन नेटवर्क सर्व्हर परवान्यास समर्थन देते.

आवृत्ती ५.१

काहीही नाही.

आवृत्ती ५.१

नवीन डिव्हाइस समर्थन खालील 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-proem पर्यायाचा वापर लिंकरला सर्व कॉन्स पात्र डेटा एका 32k विभागात ठेवण्यासाठी केला जाऊ शकतो आणि हा डेटा डेटा मेमरी स्पेसमध्ये मॅप झाला आहे याची खात्री करण्यासाठी आपोआप संबंधित SFR रजिस्टर सुरू करू शकतो. , जेथे ते अधिक प्रभावीपणे प्रवेश केले जाईल.

मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररी सर्व MPLAB XC कंपाइलर मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररी सामायिक करतील, जे आता MPLAB XC8 च्या या प्रकाशनासह उपलब्ध आहे. MPLAB® XC8 C कंपाइलर वापरकर्ता मार्गदर्शक/किंवा AVR® MCU मध्ये यापुढे या मानक कार्यांसाठी दस्तऐवजीकरण समाविष्ट नाही. ही माहिती आता मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररी संदर्भ मार्गदर्शकामध्ये आढळू शकते. लक्षात घ्या की avr-libc द्वारे पूर्वी परिभाषित केलेली काही कार्यक्षमता यापुढे उपलब्ध नाही. (ग्रंथालय पहा):'. कार्यक्षमता...)

स्मार्ट आयओ नवीन युनिफाइड लायब्ररींचा एक भाग म्हणून, प्रिंट आणि स्कॅन फॅमिलीमधील IO फंक्शन्स आता प्रत्येक बिल्डवर सानुकूलित केली जातात, ही फंक्शन्स प्रोग्राममध्ये कशी वापरली जातात यावर आधारित. हे प्रोग्रामद्वारे वापरलेली संसाधने लक्षणीयरीत्या कमी करू शकते.
स्मार्ट IO सहाय्य पर्याय स्मार्ट IO फंक्शन्स (जसे की printf () किंवा scanf () वरील कॉल्सचे विश्लेषण करताना, कंपाइलर नेहमी फॉरमॅट स्ट्रिंगवरून निर्धारित करू शकत नाही किंवा कॉलसाठी आवश्यक असलेल्या रूपांतरण स्पेसिफायर्सच्या वितर्कांमधून अनुमान काढू शकत नाही. पूर्वी, कंपायलर नेहमी कोणतेही गृहितक करत नसत आणि पूर्णतः कार्यशील IO फंक्शन्स अंतिम प्रोग्राम प्रतिमेमध्ये जोडलेले आहेत याची खात्री करा. एक नवीन – msmart-io-format=fmt पर्याय जोडला गेला आहे ज्यामुळे कंपायलरला त्याऐवजी वापरकर्त्याद्वारे स्मार्ट IO फंक्शन्सद्वारे वापरल्या जाणार्‍या रूपांतरण स्पेसिफायरची माहिती दिली जाऊ शकते ज्याचा वापर संदिग्ध आहे, जास्त लांब IO रूटीनला लिंक होण्यापासून प्रतिबंधित करते. (अधिक तपशीलांसाठी स्मार्ट-आयओ-फॉर्मेट पर्याय पहा.)

सानुकूल विभाग ठेवणे पूर्वी, -Wl, -section-start हा पर्याय विनंती केलेल्या पत्त्यावर फक्त निर्दिष्ट विभाग ठेवतो जेव्हा लिंकर स्क्रिप्टने समान नावाचा आउटपुट विभाग परिभाषित केला होता. जेव्हा तसे झाले नाही, तेव्हा विभाग लिंकरने निवडलेल्या पत्त्यावर ठेवला गेला आणि पर्यायाकडे दुर्लक्ष केले गेले. आता पर्याय सर्व सानुकूल विभागांसाठी सन्मानित केला जाईल, जरी लिंकर स्क्रिप्टने विभाग परिभाषित केला नाही. लक्षात ठेवा, तथापि, मानक विभागांसाठी, जसे की . मजकूर, . bss किंवा . डेटा, सर्वोत्कृष्ट तंदुरुस्त वाटपकर्त्याचे अद्याप त्यांच्या प्लेसमेंटवर पूर्ण नियंत्रण असेल आणि पर्यायाचा कोणताही परिणाम होणार नाही. वापरकर्त्याच्या मार्गदर्शकामध्ये वर्णन केल्याप्रमाणे -Wl, -Tsection=add पर्याय वापरा.

आवृत्ती ५.१

स्टॅक मार्गदर्शन PRO कंपाइलर परवान्यासह उपलब्ध, कंपाइलरच्या स्टॅक मार्गदर्शन वैशिष्ट्याचा वापर प्रोग्रामद्वारे वापरल्या जाणार्‍या कोणत्याही स्टॅकच्या कमाल खोलीचा अंदाज घेण्यासाठी केला जाऊ शकतो. हे प्रोग्रामचा कॉल आलेख तयार करते आणि त्याचे विश्लेषण करते, प्रत्येक फंक्शनचा स्टॅक वापर निर्धारित करते आणि एक अहवाल तयार करते, ज्यावरून प्रोग्रामद्वारे वापरलेल्या स्टॅकच्या खोलीचा अंदाज लावला जाऊ शकतो. हे वैशिष्ट्य -mchp-stack-usage कमांड-लाइन पर्यायाद्वारे सक्षम केले आहे. अंमलबजावणीनंतर स्टॅक वापराचा सारांश छापला जातो. नकाशामध्ये तपशीलवार स्टॅक अहवाल उपलब्ध आहे file, ज्याची नेहमीच्या पद्धतीने विनंती केली जाऊ शकते.

नवीन डिव्हाइस समर्थन समर्थन खालील AVR भागांसाठी उपलब्ध आहे: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVDR32BR,28, AVR64DB32 आणि AVR32DB48.

मागे घेतलेले डिव्हाइस समर्थन समर्थन पुढील AVR भागांसाठी यापुढे उपलब्ध नाही: AVR16DA28, AVR16DA32 आणि, AVR16DA48.

आवृत्ती ५.१

काहीही नाही.

आवृत्ती ५.१

डेटा इनिशिएलायझेशन रोखण्यासाठी नवीन पर्याय एक नवीन -mno-data-ini t ड्रायव्हर पर्याय डेटा इनिशिएलायझेशन आणि bss विभाग साफ करणे प्रतिबंधित करतो. हे असेंब्लीमध्ये do_copy_डेटा आणि d o_ clear_ bss चिन्हांचे आउटपुट दाबून कार्य करते files, ज्यामुळे लिंकरद्वारे त्या नित्यक्रमांचा समावेश टाळता येईल.

वर्धित ऑप्टिमायझेशन्स अनेक ऑप्टिमायझेशन सुधारणा केल्या गेल्या आहेत, ज्यामध्ये रिडंडंट रिटर्न सूचना काढून टाकणे, स्किप-इफ-बिट-इज सूचनेनंतर काही उडी काढून टाकणे, आणि सुधारित प्रक्रियात्मक अमूर्तता आणि ही प्रक्रिया पुनरावृत्ती करण्याची क्षमता समाविष्ट आहे.

यापैकी काही ऑप्टिमायझेशन नियंत्रित करण्यासाठी अतिरिक्त पर्याय उपलब्ध आहेत, विशेषत: -f विभाग अँकर, जे एका चिन्हाच्या सापेक्ष स्थिर वस्तूंचा प्रवेश करण्यास अनुमती देतात; -mpai derations=n, जे डीफॉल्ट 2 पासून प्रक्रियात्मक अमूर्त पुनरावृत्तीची संख्या बदलण्याची परवानगी देते; आणि, -एमपीए- कॉल कॉस्ट- शॉर्टकॉल, जे अधिक आक्रमक प्रक्रियात्मक अॅब्स्ट्रॅक्शन करते, या आशेने की लिंकर लांब कॉल्स आराम करू शकेल. जर अंतर्निहित गृहीतके पूर्ण झाली नाहीत तर हा शेवटचा पर्याय कोड आकार वाढवू शकतो.

नवीन डिव्हाइस समर्थन खालील AVR भागांसाठी सपोर्ट उपलब्ध आहे: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48, AVR128DB64, AVRBRXNUMX.

मागे घेतलेले डिव्हाइस समर्थन पुढील AVR भागांसाठी सपोर्ट यापुढे उपलब्ध नाही: ATA5272, ATA5790, ATA5790N,ATA5791,ATA5795,ATA6285,ATA6286,ATA6612C,ATA6613C,ATA6614Q, ATA6616C, ATA6617C, ATA664251C, ATAXNUMXQ.

आवृत्ती 2.29 (कार्यात्मक सुरक्षा प्रकाशन)

शीर्षलेख file कंपाइलर बिल्ट-इन्ससाठी कंपाइलर भाषा वैशिष्ट्यांशी सुसंगत आहे याची खात्री करण्यासाठी जसे की MISRA, शीर्षलेख file, जे आपोआप द्वारे समाविष्ट केले जाते , अद्ययावत केले गेले आहे. या शीर्षलेखामध्ये _buil tin _avrnop () आणि _buil tin_ avr delay_ cycles () सारख्या सर्व अंगभूत कार्यांसाठी प्रोटोटाइप आहेत. काही अंगभूत MISRA अनुरूप नसू शकतात; कंपाइलर कमांड लाइनमध्ये परिभाषित _Xe_ STRICT_ MISRA जोडून हे वगळले जाऊ शकते. बिल्ट-इन आणि त्यांची घोषणा निश्चित-रुंदी प्रकार वापरण्यासाठी अद्यतनित केली गेली आहेत.

आवृत्ती ५.१

नवीन डिव्हाइस समर्थन खालील AVR भागांसाठी समर्थन उपलब्ध आहे: ATTINY1624, ATTINY1626, आणि ATTINY1627.

उत्तम सर्वोत्तम फिट वाटप कंपाइलरमधील सर्वोत्तम फिट ऍलोकेटर (BFA) सुधारित केले गेले आहे जेणेकरुन चांगल्या ऑप्टिमायझेशनची परवानगी देणार्‍या क्रमाने विभागांचे वाटप केले जाईल. BFA आता नावाच्या पत्त्याच्या स्थानांना समर्थन देते आणि डेटा इनिशिएलायझेशन चांगल्या प्रकारे हाताळते.

सुधारित प्रक्रियात्मक अमूर्तता प्रक्रियात्मक ऍब्स्ट्रॅक्शन ऑप्टिमायझेशन आता अधिक कोड अनुक्रमांवर केले जातात. या ऑप्टिमायझेशनने कोडचा आकार वाढवला असेल अशा पूर्वीच्या परिस्थितींना ऑप्टिमायझेशन कोडला लिंकरच्या कचरा संकलन प्रक्रियेबद्दल जागरूक करून संबोधित केले गेले आहे.

AVR असेंबलरची अनुपस्थिती AVR असेंबलर या वितरणामध्ये यापुढे समाविष्ट केले जाणार नाही.

आवृत्ती 2.19 (कार्यात्मक सुरक्षा प्रकाशन)

काहीही नाही.

आवृत्ती ५.१

कोड कव्हरेज या प्रकाशनामध्ये कोड कव्हरेज वैशिष्ट्य समाविष्ट आहे जे प्रकल्पाचा स्त्रोत कोड किती प्रमाणात कार्यान्वित केला गेला आहे याचे विश्लेषण सुलभ करते. ते सक्षम करण्यासाठी -mcodecov=ram पर्याय वापरा. तुमच्या हार्डवेअरवर प्रोग्राम अंमलात आणल्यानंतर, कोड कव्हरेज माहिती डिव्हाइसमध्ये एकत्रित केली जाईल आणि हे MPLAB X IDE द्वारे कोड कव्हरेज प्लगइनद्वारे हस्तांतरित आणि प्रदर्शित केले जाऊ शकते. या प्लगइनवर माहिती मिळवण्यासाठी IDE दस्तऐवजीकरण पहा. #pragma mcodecov चा वापर कव्हरेज विश्लेषणातून पुढील कार्ये वगळण्यासाठी केला जाऊ शकतो. तद्वतच प्राग्मा च्या सुरुवातीला जोडले जावे file ते संपूर्ण वगळण्यासाठी file कव्हरेज विश्लेषण पासून. वैकल्पिकरित्या, विशेषता ( (mcodecov) ) कव्हरेज विश्लेषणातून विशिष्ट कार्य वगळण्यासाठी वापरली जाऊ शकते.

डिव्हाइसचे वर्णन files एक नवीन उपकरण file avr chipinfo म्हणतात. html कंपाइलर वितरणाच्या डॉक्स निर्देशिकेत स्थित आहे. या file कंपाइलरद्वारे समर्थित सर्व उपकरणांची यादी करते. डिव्हाइसच्या नावावर क्लिक करा, आणि ते त्या डिव्हाइससाठी सर्व परवानगीयोग्य कॉन्फिगरेशन बिट सेटिंग/मूल्य जोड्या दर्शविणारे पृष्ठ उघडेल, उदाहरणार्थampलेस

प्रक्रियात्मक अमूर्तता प्रक्रियात्मक अ‍ॅब्स्ट्रॅक्शन ऑप्टिमायझेशन, जे असेंबली कोडचे सामान्य ब्लॉक त्या ब्लॉकच्या एक्सट्रॅक्टेड कॉपीवर कॉलसह बदलतात, कंपाइलरमध्ये जोडले गेले आहेत. हे वेगळ्या ऍप्लिकेशनद्वारे केले जातात, जे स्तर 2, 3 किंवा ऑप्टिमायझेशन निवडताना कंपाइलरद्वारे आपोआप मागवले जाते. हे ऑप्टिमायझेशन कोड आकार कमी करतात, परंतु ते अंमलबजावणीची गती आणि कोड डीबग करण्यायोग्यता कमी करू शकतात.
-mno-pa पर्याय वापरून उच्च ऑप्टिमायझेशन स्तरांवर प्रक्रियात्मक अ‍ॅब्स्ट्रॅक्शन अक्षम केले जाऊ शकते किंवा -mpa वापरून कमी ऑप्टिमायझेशन स्तरांवर (तुमच्या परवान्याच्या अधीन) सक्षम केले जाऊ शकते. एखाद्या वस्तूसाठी ते अक्षम केले जाऊ शकते file -mno-pa-on- वापरूनfile=fileनाव, किंवा function= फंक्शनवर -mno-pa वापरून फंक्शनसाठी अक्षम केले.
तुमच्या सोर्स कोडच्या आत, फंक्शनच्या व्याख्येसह _attribute_ ( (nopa)) वापरून किंवा _nopa वापरून फंक्शनसाठी प्रक्रियात्मक अ‍ॅब्स्ट्रॅक्शन अक्षम केले जाऊ शकते, जे विशेषता ( (nopa, noinline)) पर्यंत विस्तृत होते आणि त्यामुळे फंक्शन इनलाइनिंग होण्यापासून प्रतिबंधित करते. आणि इनलाइन कोडचे अमूर्तता आहे.
प्रॅग्मा मध्ये लॉक बिट समर्थन #pragma कॉन्फिगरेशनचा वापर आता AVR लॉक बिट्स तसेच इतर कॉन्फिगरेशन बिट्स निर्दिष्ट करण्यासाठी केला जाऊ शकतो. एव्हीआर चिप माहिती तपासा. html file (वर उल्लेख केलेला) या प्रॅग्मासह वापरण्यासाठी सेटिंग/मूल्य जोड्यांसाठी.
नवीन डिव्हाइस समर्थन खालील भागांसाठी सपोर्ट उपलब्ध आहे: AVR28DA128, AVR64DA128, AVR32DA128, आणि AVR48DA128.

आवृत्ती ५.१

आपल्या पैशासाठी अधिक बिट या कंपाइलर आणि परवाना व्यवस्थापकाची macOS आवृत्ती आता 64-बिट ऍप्लिकेशन आहे. हे macOS च्या अलीकडील आवृत्त्यांवर चेतावणीशिवाय कंपाइलर स्थापित आणि चालेल याची खात्री करेल.
प्रोग्राम मेमरीमधील कॉन्स्ट ऑब्जेक्ट्स कंपाइलर आता कॉन्स्ट-क्वालिफाईड ऑब्जेक्ट्स प्रोग्राम फ्लॅश मेमरीमध्ये ठेवू शकतो, त्या RAM मध्ये ठेवण्याऐवजी. कंपाइलरमध्ये बदल केले गेले आहेत जेणेकरून कॉन्स्ट-क्वालिफाईड ग्लोबल डेटा प्रोग्राम फ्लॅश मेमरीमध्ये संग्रहित केला जाईल आणि योग्य प्रोग्राम-मेमरी सूचना वापरून हा डेटा प्रत्यक्ष आणि अप्रत्यक्षपणे ऍक्सेस केला जाऊ शकतो. हे नवीन वैशिष्ट्य डीफॉल्टनुसार सक्षम केले आहे परंतु -mno-const-data-in-progmem पर्याय वापरून अक्षम केले जाऊ शकते. avrxmega3 आणि avrtiny आर्किटेक्चरसाठी, हे वैशिष्ट्य आवश्यक नाही आणि नेहमी अक्षम केले जाते, कारण प्रोग्राम मेमरी या उपकरणांसाठी डेटा अॅड्रेस स्पेसमध्ये मॅप केली जाते.
विनामूल्य मानक या कंपायलरच्या विनापरवाना (विनामूल्य) आवृत्त्या आता स्तर 2 पर्यंत आणि त्यासह ऑप्टिमायझेशनला अनुमती देतात. हे मानक परवाना वापरून पूर्वी शक्य असलेल्या आउटपुटच्या समान, जरी एकसारखे नसले तरी अनुमती देईल.
AVRASM2 चे स्वागत आहे 2-बिट उपकरणांसाठी AVRASM8 असेंबलर आता XC8 कंपाइलर इंस्टॉलरमध्ये समाविष्ट केले आहे. हे असेंबलर XC8 कंपाइलरद्वारे वापरले जात नाही, परंतु हस्तलिखित असेंबली स्त्रोतावर आधारित प्रकल्पांसाठी उपलब्ध आहे.
नवीन डिव्हाइस समर्थन खालील भागांसाठी सपोर्ट उपलब्ध आहे: ATMEGA1608, ATMEGA1609, ATMEGA808, आणि ATMEGA809.

आवृत्ती ५.१

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

कॉमन सी इंटरफेस हा कंपाइलर आता MPLAB कॉमन सी इंटरफेसशी सुसंगत होऊ शकतो, ज्यामुळे सर्व MPLAB XC कंपाइलरवर सोर्स कोड अधिक सहजपणे पोर्ट केला जाऊ शकतो. -mext=cci पर्याय या वैशिष्ट्याची विनंती करतो, अनेक भाषा विस्तारांसाठी पर्यायी वाक्यरचना सक्षम करतो.

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

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

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

आवृत्ती ५.१

काहीही नाही.

आवृत्ती 2.39 (कार्यात्मक सुरक्षा प्रकाशन)

काहीही नाही.

आवृत्ती ५.१

काहीही नाही.

आवृत्ती ५.१

स्ट्रिंग-टू बेस हाताळणे (XCS-2420) इतर XC कंपाइलर्ससह सुसंगतता सुनिश्चित करण्यासाठी, XC8 स्ट्रिंग-टू फंक्शन्स, जसे की strtol () इ., निर्दिष्ट केलेला बेस 36 पेक्षा मोठा असल्यास इनपुट स्ट्रिंग रूपांतरित करण्याचा प्रयत्न करणार नाही आणि त्याऐवजी EINVAL वर errno सेट करेल. जेव्हा हे मूळ मूल्य ओलांडले जाते तेव्हा C मानक फंक्शन्सचे वर्तन निर्दिष्ट करत नाही.

अयोग्य गती ऑप्टिमायझेशन स्तर 3 ऑप्टिमायझेशन (-03) निवडताना प्रक्रियात्मक अमूर्त ऑप्टिमायझेशन सक्षम केले जात होते. हे ऑप्टिमायझेशन कोड गतीच्या खर्चावर कोड आकार कमी करतात, म्हणून केले जाऊ नयेत. हे ऑप्टिमायझेशन स्तर वापरणारे प्रकल्प या प्रकाशनासह तयार केल्यावर कोड आकार आणि अंमलबजावणी गतीमध्ये फरक पाहू शकतात.

लायब्ररी कार्यक्षमता अनेक मानक C लायब्ररी फंक्शन्सचा कोड आता मायक्रोचिपच्या युनिफाइड स्टँडर्ड लायब्ररीमधून येतो, जो पूर्वीच्या avr-libc लायब्ररीच्या तुलनेत काही परिस्थितींमध्ये भिन्न वर्तन प्रदर्शित करू शकतो. उदाample, float-format specifiers साठी formatted IO समर्थन चालू करण्यासाठी lprintf_flt लायब्ररी (-print _flt पर्याय) मध्ये लिंक करणे आवश्यक नाही. मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररीची स्मार्ट IO वैशिष्ट्ये हा पर्याय अनावश्यक बनवतात. याव्यतिरिक्त, स्ट्रिंग आणि मेमरी फंक्शन्स (उदा. strcpy_P () इ.. ) साठी _p सफिक्स्ड रूटीनचा वापर करणे आवश्यक नाही जे फ्लॅशमध्ये कॉन्स्ट स्ट्रिंगवर कार्य करतात. जेव्हा कॉन्स्ट-डेटा-इन-प्रोग्राम-मेमरी वैशिष्ट्य सक्षम असेल तेव्हा मानक C रूटीन (उदा. strcpy ()) अशा डेटासह योग्यरित्या कार्य करतील.

आवृत्ती ५.१

काहीही नाही.

आवृत्ती ५.१

काहीही नाही.

आवृत्ती ५.१

काहीही नाही.

आवृत्ती 2.29 (कार्यात्मक सुरक्षा प्रकाशन)

काहीही नाही.

आवृत्ती ५.१

DFP लेआउट बदलला कंपाइलर आता DFPs (डिव्हाइस फॅमिली पॅक) द्वारे वापरलेला वेगळा लेआउट गृहीत धरतो. याचा अर्थ असा होईल की जुने DFP कदाचित या रिलीझसह कार्य करणार नाही आणि जुने कंपाइलर नवीनतम DFP वापरण्यास सक्षम असणार नाहीत.

आवृत्ती 2.19 (कार्यात्मक सुरक्षा प्रकाशन)

काहीही नाही.

आवृत्ती ५.१

काहीही नाही

आवृत्ती ५.१

प्रोग्राम मेमरीमध्ये कॉन्स्ट ऑब्जेक्ट्स लक्षात ठेवा की डीफॉल्टनुसार, const-qualfiied ऑब्जेक्ट्स प्रोग्राम मेमरीमध्ये ठेवल्या जातील आणि ऍक्सेस केल्या जातील (येथे वर्णन केल्याप्रमाणे). हे तुमच्या प्रकल्पाच्या आकारावर आणि अंमलबजावणीच्या गतीवर परिणाम करेल, परंतु RAM वापर कमी करेल. -mnoconst-da ta-in-progmem पर्याय वापरून, आवश्यक असल्यास, हे वैशिष्ट्य अक्षम केले जाऊ शकते.

आवृत्ती ५.१

कॉन्फिगरेशन फ्यूज डिव्हाइस कॉन्फिगरेशन फ्यूज आता कॉन्फिगरेशन प्राग्मा वापरून प्रोग्राम केले जाऊ शकतात आणि त्यानंतर फ्यूज स्थिती निर्दिष्ट करण्यासाठी सेटिंग-व्हॅल्यू जोड्या वापरल्या जातात, उदा.
#pragma कॉन्फिगरेशन WDT0N = SET
#pragma कॉन्फिगरेशन B0DLEVEL = B0DLEVEL_4V3
निरपेक्ष वस्तू आणि कार्ये ऑब्जेक्ट्स आणि फंक्शन्स आता CCI _at (address) स्पेसिफायर वापरून मेमरीमधील विशिष्ट पत्त्यावर ठेवल्या जाऊ शकतात, उदाहरणार्थample: #समाविष्ट करा int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } या स्पेसिफायरचा युक्तिवाद हा एक स्थिर असणे आवश्यक आहे जो पत्ता दर्शवितो ज्यावर प्रथम बाइट किंवा सूचना ठेवली जाईल. RAM पत्ते 0x800000 ऑफसेट वापरून सूचित केले जातात. हे वैशिष्ट्य वापरण्यासाठी CCI सक्षम करा.
नवीन व्यत्यय कार्य वाक्यरचना कंपाइलर आता CCI इंटरप्ट (num) स्पेसिफायर स्वीकारतो की C फंक्शन्स इंटरप्ट हँडलर आहेत. विनिर्देशक एक व्यत्यय क्रमांक घेतो, उदाहरणार्थample: #समाविष्ट करा void interrupt(SPI STC_ vect _num) spi Isr(void) { … }

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

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

लक्षात ठेवा की डिव्हाइसशी संबंधित काही डिव्हाइस-विशिष्ट समस्या डिव्हाइस फॅमिली पॅक (DFP) मध्ये दुरुस्त केल्या आहेत. DFP मध्ये केलेल्या बदलांच्या माहितीसाठी आणि नवीनतम पॅक डाउनलोड करण्यासाठी MPLAB पॅक व्यवस्थापक पहा.

आवृत्ती ५.१

खूप आरामशीर (XCS-2876) -mrelax पर्याय वापरताना, कंपाइलर काही विभागांना एकत्र वाटप करत नव्हता, परिणामी कमी इष्टतम कोड आकार मिळतो. हे कदाचित नवीन MUSL लायब्ररी वापरणाऱ्या कोडसह किंवा कमकुवत चिन्हांसह झाले असावे.
चेतावणीमध्ये नमूद केल्यानुसार मॅपिंग वैशिष्ट्य अक्षम केलेले नाही (XCS-2875) कॉस्ट-डेटा-इन-कॉन्फिगम मॅपडप्रोग्मेम वैशिष्ट्य सक्षम केलेल्या कॉस्ट-डेटा-इन-प्रोएम वैशिष्ट्यावर अवलंबून आहे. पर्याय वापरून कॉस्ट-डेटा-आयपीकॉन्फिग-मॅप्ड-प्रोएम वैशिष्ट्य स्पष्टपणे सक्षम केले असल्यास आणि कॉस्ट-डेटा-इनप्रोग्मेम वैशिष्ट्य अक्षम केले असल्यास, डेटा- इन-कॉन्फिग-मॅप्ड- बाधक असल्याचा इशारा संदेश असूनही, लिंक चरण अयशस्वी झाले. proem वैशिष्ट्य स्वयंचलितपणे अक्षम केले गेले होते, जे पूर्णपणे योग्य नव्हते. या परिस्थितीत const-data-in-config-mapped-proem वैशिष्ट्य आता पूर्णपणे अक्षम केले आहे.
NVMCTRL (XCS-2848) मध्ये योग्यरित्या प्रवेश करण्यासाठी DFP बदलते AVR64EA उपकरणांद्वारे वापरलेला रनटाइम स्टार्टअप कोड हे लक्षात घेतले नाही की NVMCTRL रजिस्टर कॉन्फिगरेशन चेंज प्रोटेक्शन (सीसीपी) अंतर्गत आहे आणि कॉन्फिगरेशन-डेटा-इन कॉन्फिगरेशन-प्रोएम कंपाइलरद्वारे वापरलेल्या पृष्ठावर IO SFR सेट करण्यास सक्षम नाही. वैशिष्ट्य AVR-Ex_DFP आवृत्ती 2.2.55 मध्ये केलेले बदल रनटाइम स्टार्टअप कोडला या रजिस्टरवर योग्यरित्या लिहिण्यास अनुमती देईल.
फ्लॅश मॅपिंग टाळण्यासाठी DFP बदल (XCS-2847) AVR128DA28/32/48/64 सिलिकॉन इरेटा (DS80000882) मध्ये नोंदवलेल्या फ्लॅश मॅपिंग डिव्हाइस वैशिष्ट्यातील समस्येसाठी एक वर्क-अराउंड कार्यान्वित केले गेले आहे. const-data-in-config-mapped-proem कंपाइलर वैशिष्ट्य प्रभावित डिव्हाइसेससाठी डीफॉल्टनुसार लागू केले जाणार नाही आणि हा बदल AVR-Ex_DFP आवृत्ती 2.2.160 मध्ये दिसून येईल.
sinhf किंवा coshf सह बिल्ड एरर (XCS-2834) sinhf () किंवा coshf () लायब्ररी फंक्शन्स वापरण्याच्या प्रयत्नांमुळे अपरिभाषित संदर्भाचे वर्णन करताना लिंक एरर आली. संदर्भित गहाळ फंक्शन आता कंपाइलर वितरणामध्ये समाविष्ट केले गेले आहे.
nopa (XCS-2833) सह त्रुटी तयार करा nopa विशेषता अशा फंक्शनसह वापरणे ज्याचे असेंबलरचे नाव () असे वापरून निर्दिष्ट केले आहे असेंबलरकडून त्रुटी संदेश ट्रिगर झाला. हे संयोजन शक्य नाही.
पॉइंटर आर्ग्युमेंट्ससह वैरिएडिक फंक्शन अयशस्वी (XCS-2755, XCS-2731) व्हेरिएबल आर्ग्युमेंट्सच्या संख्येसह फंक्शन्स जेव्हा कॉस्ट-डेटा-इन-प्रोएम वैशिष्ट्य सक्षम केलेले असते तेव्हा व्हेरिएबल आर्ग्युमेंट सूचीमध्ये 24-बिट (_मेमो प्रकार) पॉइंटर्स पास केले जाण्याची अपेक्षा करतात. डेटा मेमरीसाठी पॉइंटर असलेल्या युक्तिवादांना 16-बिट ऑब्जेक्ट्स म्हणून पास केले जात होते, ज्यामुळे ते शेवटी वाचले गेले तेव्हा कोड अयशस्वी झाला. जेव्हा कॉन्स डेटा-इन-प्रोएम वैशिष्ट्य सक्षम केले जाते, तेव्हा सर्व 16-बिट पॉइंटर आर्ग्युमेंट्स आता 24-बिट पॉइंटरमध्ये रूपांतरित केले जातात. strtoxxx लायब्ररी फंक्शन्स अयशस्वी (XCS-2620) जेव्हा const-data-in-proem वैशिष्ट्य कार्यान्वित होते, तेव्हा प्रोग्राम मेमरीमध्ये नसलेल्या स्त्रोत स्ट्रिंग वितर्कांसाठी strtoxxx लायब्ररी फंक्शन्समधील एंटर पॅरामीटर योग्यरित्या अद्यतनित केले गेले नाही.
अवैध जातींसाठी सूचना (XCS-2612) कॉस्ट-इन-प्रोएम वैशिष्ट्य सक्षम केले असल्यास आणि स्ट्रिंग लिटरलचा पत्ता स्पष्टपणे डेटा अॅड्रेस स्पेसवर टाकल्यास (कॉन्स्ट क्वालिफायर टाकून) एक त्रुटी जारी करेल, उदाहरणार्थample, (uint8 t *) “हॅलो वर्ल्ड!”. जेव्हा कॉन्स्ट डेटा पॉइंटर स्पष्टपणे डेटा अॅड्रेस स्पेसवर कास्ट केला जातो तेव्हा पत्ता अवैध असेल तर चेतावणी दिली जाते.
सुरू न केलेल्या कॉन्स्ट ऑब्जेक्ट्सचे प्लेसमेंट (XCS-2408) Uninitialized const आणि const v olatile ऑब्जेक्ट्स अशा डिव्हाइसेसवर प्रोग्राम मेमरीमध्ये ठेवल्या जात नव्हत्या जे त्यांच्या प्रोग्राम मेमरीचा सर्व भाग किंवा डेटा अॅड्रेस स्पेसमध्ये मॅप करतात. या उपकरणांसाठी, अशा वस्तू आता प्रोग्राम मेमरीमध्ये ठेवल्या जातात, ज्यामुळे त्यांचे ऑपरेशन इतर उपकरणांशी सुसंगत होते.

आवृत्ती 2.39 (कार्यात्मक सुरक्षा प्रकाशन)

काहीही नाही.

आवृत्ती ५.१

विलंब करताना त्रुटी (XCS-2774) डीफॉल्ट फ्री मोड ऑप्टिमायझेशनमधील किरकोळ बदलांमुळे बिल्ट-इन फंक्शन्समध्ये विलंब होण्यासाठी ऑपरेंड एक्स्प्रेशन्सचे सतत फोल्डिंग प्रतिबंधित होते, परिणामी त्यांना संपर्क नसलेले मानले जाते आणि त्रुटी ट्रिगर होते: _buil tin avr delay_ सायकल्स अपेक्षा करते वेळ पूर्णांक स्थिरांक.

आवृत्ती ५.१

_at (XCS-2653) वापरून सलग वाटप एकाच नावासह आणि () येथे वापरून विभागातील एकाधिक ऑब्जेक्ट्सचे सलग वाटप योग्यरित्या कार्य करत नाही. उदाample: constcharrrl [ ] at tri butte (sect on(“.misses”))) at (Ox50 0 ) = {Oxo, Ox CD} ; खर्च char arr2[ ] at tri butte ((विभाग(“.my s eke”)))) = {Oxen, Ox FE}; aril नंतर लगेच arr2 ठेवले पाहिजे.
विभाग प्रारंभ पत्ते निर्दिष्ट करणे (XCS-2650) -Wal, -section-start हा पर्याय नामनिर्देशित प्रारंभ पत्त्यावर विभाग ठेवण्यास शांतपणे अयशस्वी झाला. कोणत्याही सानुकूल-नावाच्या विभागांसाठी ही समस्या निश्चित केली गेली आहे; तथापि, ते कोणत्याही मानक विभागांसाठी कार्य करणार नाही, जसे की . मजकूर किंवा bss, जे -Wl, -T पर्याय वापरून ठेवले पाहिजे.
आराम करताना लिंकर क्रॅश होतो (XCS-2647) जेव्हा -relax ऑप्टिमायझेशन सक्षम केले होते आणि कोड किंवा डेटा विभाग होते जे उपलब्ध मेमरीमध्ये बसत नाहीत, लिंकर क्रॅश झाला. आता, अशा परिस्थितीत, त्याऐवजी त्रुटी संदेश जारी केले जातात.
खराब EEPROM प्रवेश (XCS-2629) लेप्रोमा _read_ ब्लॉक रूटीन मेगा उपकरणांवर योग्यरित्या कार्य करत नाही जेव्हा -monist-data-in-proem पर्याय सक्षम केला होता (जे डीफॉल्ट स्थिती आहे), परिणामी EEPROM मेमरी योग्यरित्या वाचली जात नाही.
अवैध मेमरी वाटप (XCS-2593, XCS-2651) जेव्हा -टेक्स्ट किंवा -टाटा लिंकर पर्याय (उदाample एक -Wl ड्रायव्हर पर्याय वापरून पास केले) निर्दिष्ट केले आहे, संबंधित मजकूर/डेटा प्रदेश मूळ अद्यतनित केला गेला आहे; तथापि, शेवटचा पत्ता त्यानुसार समायोजित केला गेला नाही, ज्यामुळे क्षेत्र लक्ष्य उपकरणाची मेमरी श्रेणी ओलांडू शकते.
अवैध ATtiny व्यत्यय कोड (XCS-2465) जेव्हा टॅटिन उपकरणे तयार केली जातात आणि ऑप्टिमायझेशन अक्षम केले होते (-00), व्यत्यय फंक्शन्सने ऑपरेंड आउट ऑफ रेंज असेंबलर संदेश ट्रिगर केले असावेत.
पर्याय पास केले जात नाहीत (XCS-2452) एकाधिक, स्वल्पविरामाने विभक्त लिंकर पर्यायांसह -Wl पर्याय वापरताना, सर्व लिंकर पर्याय लिंकरकडे पाठवले जात नव्हते.
प्रोग्राम मेमरी (XCS-2450) अप्रत्यक्षपणे वाचण्यात त्रुटी काही घटनांमध्ये, पॉइंटरपासून प्रोग्राम मेमरीमध्ये दोन बाइट मूल्य वाचताना कंपाइलरने अंतर्गत त्रुटी (ओळखता न येणारी insn) निर्माण केली.

आवृत्ती ५.१

लायब्ररीचा दुसरा प्रवेश अयशस्वी (XCS-2381) xc8-ar च्या Windows आवृत्तीची विनंती करत आहे. विद्यमान लायब्ररी संग्रहणात प्रवेश करण्यासाठी exe लायब्ररी आर्काइव्हर दुसर्‍यांदा त्रुटी संदेशाचे नाव बदलण्यात अक्षम असल्‍याने अयशस्वी झाले असावे.

आवृत्ती ५.१

अस्पष्टीकृत कंपाइलर अपयश (XCS-2367) विंडोज प्लॅटफॉर्मवर चालत असताना ज्यामध्ये सिस्टम तात्पुरती डिरेक्टरी एका पथावर सेट केली गेली होती ज्यामध्ये डॉट' समाविष्ट होते. वर्ण, कंपाइलर कार्यान्वित करण्यात अयशस्वी होऊ शकतो.

आवृत्ती ५.१

बाह्यरेखा (XCS-2299) नंतर जागतिक लेबले चुकली हाताने लिहिलेला असेंबली कोड जो असेंब्ली सीक्वेन्समध्ये ग्लोबल लेबले ठेवतो जे प्रक्रियात्मक अमूर्ततेद्वारे घटक केले जातात ते कदाचित योग्यरित्या पुनर्स्थित केले गेले नाहीत.
आरामदायी क्रॅश (XCS-2287) टेल जंप रिलॅक्सेशन ऑप्टिमायझेशनने विभागाच्या शेवटी नसलेल्या ret सूचना काढून टाकण्याचा प्रयत्न केला तेव्हा -merlad पर्याय वापरल्याने लिंकर क्रॅश झाला असावा.
मूल्ये म्हणून लेबल्स ऑप्टिमाइझ करताना क्रॅश (XCS-2282) GNU C भाषा विस्ताराने “मूल्ये म्हणून लेबल” वापरत असलेल्या कोडमुळे प्रक्रियात्मक अ‍ॅब्स्ट्रॅक्शन ऑप्टिमायझेशन क्रॅश होऊ शकते, आउटलाइन केलेल्या VMA श्रेणी स्पॅन फिक्सअप त्रुटीसह.
इतका const नाही (XCS-2271) पासून starts () आणि इतर फंक्शन्सचे प्रोटोटाइप जेव्हा -monist-data inprogmem वैशिष्ट्य अक्षम केले जाते तेव्हा परत आलेल्या स्ट्रिंग पॉइंटर्सवर नॉन-स्टँडर्ड कॉस्ट क्वालिफायर निर्दिष्ट करू नका. लक्षात ठेवा की avrxmega3 आणि avertin डिव्हाइसेससह, हे वैशिष्ट्य कायमचे सक्षम केले आहे.
हरवलेले इनिशिएलायझर (XCS-2269) जेव्हा भाषांतर युनिटमध्ये एकापेक्षा जास्त व्हेरिएबल एका विभागात (विभाग किंवा विशेषता ((विभाग)) वापरून ठेवलेले होते, आणि प्रथम असे व्हेरिएबल शून्य इनिशियलाइज केलेले होते किंवा त्यात इनिशियलायझर नव्हते, त्याच भाषांतर युनिटमधील इतर व्हेरिएबल्ससाठी इनिशियलायझर्स त्याच विभागात ठेवलेले हरवले होते.

आवृत्ती 2.29 (कार्यात्मक सुरक्षा प्रकाशन)

काहीही नाही.

आवृत्ती ५.१

लांब आदेशांसह त्रुटी (XCS-1983) एव्हीआर टार्गेट वापरताना, कंपाइलर ए सह थांबला असेल file त्रुटी आढळली नाही, जर कमांड लाइन खूप मोठी असेल आणि त्यात विशेष वर्ण जसे की कोट्स, बॅकस्लॅश इ.
असाइन न केलेला रोडाटा विभाग (XCS-1920) AVR लिंकर avrxmega3 आणि avrtiny आर्किटेक्चरसाठी तयार करताना सानुकूल rodata विभागांसाठी मेमरी नियुक्त करण्यात अयशस्वी झाला, संभाव्यत: मेमरी ओव्हरलॅप त्रुटी निर्माण करते

आवृत्ती 2.19 (कार्यात्मक सुरक्षा प्रकाशन)

काहीही नाही.

आवृत्ती ५.१

पुनर्स्थापना अयशस्वी (XCS-1891) सर्वोत्कृष्ट तंदुरुस्त वाटपकर्ता लिंकर विश्रांतीनंतर विभागांमध्ये मेमरी 'होल' सोडत होता. स्मृती खंडित करण्याव्यतिरिक्त, यामुळे पीसी-रिलेटिव्ह जंप किंवा कॉल श्रेणीबाहेर जाण्याशी संबंधित लिंकर रिलोकेशन अयशस्वी होण्याची शक्यता वाढली.
शिथिलतेने बदललेल्या सूचना (XCS-1889) लिंकर शिथिलता उडी मारण्यासाठी किंवा कॉल करण्याच्या सूचनांसाठी आली नाही ज्यांचे लक्ष्य आरामशीर असल्यास पोहोचू शकतील.
गहाळ कार्यक्षमता (XCSE-388) पासून अनेक व्याख्या , जसे की clock_ div_t आणि clock_prescale_set (), ATmega324PB, ATmega328PB, ATtiny441 आणि ATtiny841 सह, उपकरणांसाठी परिभाषित केले गेले नाहीत.
गहाळ मॅक्रो प्रीप्रोसेसर मॅक्रो_ xcs _MODE_, _xcs VERSION, _xc, आणि xcs कंपाइलरद्वारे स्वयंचलितपणे परिभाषित केले गेले नाहीत. हे आता उपलब्ध आहेत.

आवृत्ती ५.१

अंतर्गत कंपाइलर त्रुटी (XCS-1822) विंडोज अंतर्गत बिल्डिंग करताना, कोड ऑप्टिमाइझ करताना अंतर्गत कंपायलर एरर निर्माण झाली असावी.
रॅम ओव्हरफ्लो आढळला नाही (XCS-1800, XCS-1796) उपलब्ध RAM पेक्षा जास्त असलेले प्रोग्राम काही परिस्थितींमध्ये कंपाइलरद्वारे शोधले गेले नाहीत, परिणामी रनटाइम कोड अयशस्वी झाला.
वगळलेली फ्लॅश मेमरी (XCS-1792) avrxmega3 आणि avrtiny उपकरणांसाठी, MPLAB X IDE द्वारे फ्लॅश मेमरीचे काही भाग अन-प्रोग्राम केलेले राहू शकतात.
मुख्य कार्यान्वित करण्यात अयशस्वी (XCS-1788) काही परिस्थितींमध्ये जेथे प्रोग्राममध्ये कोणतेही ग्लोबल व्हेरिएबल्स परिभाषित केलेले नव्हते, रनटाइम स्टार्टअप कोड बाहेर पडला नाही आणि मुख्य () फंक्शन कधीही पोहोचला नाही.
चुकीची मेमरी माहिती (XCS-1787) avrxmega3 आणि avrtiny उपकरणांसाठी, avr-आकार प्रोग्राम अहवाल देत होता की प्रोग्राम मेमरीच्या ऐवजी केवळ-वाचनीय डेटा RAM वापरत आहे.
चुकीची प्रोग्राम मेमरी रीड (XCS-1783) डेटा अॅड्रेस स्पेसमध्ये मॅप केलेल्या प्रोग्राम मेमरी असलेल्या डिव्हाइसेससाठी संकलित केलेले प्रोजेक्ट आणि जे PROGMEM मॅक्रो/विशेषता वापरून ऑब्जेक्ट्स परिभाषित करतात त्यांनी कदाचित चुकीच्या पत्त्यावरून हे ऑब्जेक्ट्स वाचले असतील.
गुणधर्मांसह अंतर्गत त्रुटी (XCS-1773) जर तुम्ही पॉइंटर ऑब्जेक्ट्स सह परिभाषित केले असेल तर अंतर्गत त्रुटी आली
उदाampले, चार*
_at ( 0x80015 0) cp; असा कोड आढळल्यास आता चेतावणी दिली जाते.
मुख्य कार्यान्वित करण्यात अयशस्वी (XCS-1780, XCS-1767, XCS-1754) EEPROM व्हेरिएबल्स वापरणे किंवा कॉन्फिगरेशन प्राग्मा वापरून फ्यूज परिभाषित केल्यामुळे, मुख्य () वर पोहोचण्यापूर्वी, रनटाइम स्टार्टअप कोडमध्ये चुकीचे डेटा इनिशिएलायझेशन आणि/किंवा लॉक अप प्रोग्राम एक्झिक्यूशन झाले असावे.
लहान उपकरणांसह फ्यूज त्रुटी (XCS-1778, XCS-1742) attiny4/5/9/10/20/40 उपकरणांमध्ये त्यांच्या शीर्षलेखात चुकीची फ्यूज लांबी निर्दिष्ट केली होती files ज्यामुळे फ्यूज परिभाषित करणारा कोड तयार करण्याचा प्रयत्न करताना लिंकर त्रुटी निर्माण होतात.
सेगमेंटेशन फॉल्ट (XCS-1777) मधूनमधून विभागणी दोष दुरुस्त केला गेला आहे.
असेंबलर क्रॅश (XCS-1761) जेव्हा कंपाइलर उबंटू 18 अंतर्गत चालविला गेला तेव्हा avr-as assembler कदाचित क्रॅश झाला असेल.
वस्तू साफ केल्या नाहीत (XCS-1752) रनटाइम स्टार्टअप कोडद्वारे सुरू न केलेले स्टॅटिक स्टोरेज कालावधी ऑब्जेक्ट्स कदाचित साफ केले गेले नसतील.
परस्परविरोधी उपकरण तपशील दुर्लक्षित केले (XCS-1749) जेव्हा एकाधिक डिव्हाइस स्पेसिफिकेशन पर्याय वापरले आणि भिन्न डिव्हाइसेस सूचित केले तेव्हा कंपाइलर त्रुटी निर्माण करत नव्हता.
मेमरी करप्ट बाय हीप (XCS-1748) heap_ start चिन्ह चुकीच्या पद्धतीने सेट केले जात होते, परिणामी सामान्य व्हेरिएबल्स हीपद्वारे दूषित होण्याची शक्यता होती.
लिंकर रिलोकेशन एरर (XCS-1739) कोडमध्ये 4k बाइट्स दूर लक्ष्यासह rjmp किंवा rcal समाविष्ट असताना लिंकर रिलोकेशन एरर उत्सर्जित झाली असावी.

आवृत्ती ५.१

काहीही नाही.

ज्ञात समस्या

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

MPLAB X IDE एकत्रीकरण

MPLAB IDE एकत्रीकरण जर MPLAB IDE वरून कंपाइलर वापरायचा असेल, तर कंपाइलर स्थापित करण्यापूर्वी तुम्ही MPLAB IDE स्थापित करणे आवश्यक आहे.

कोड जनरेशन

PA मेमरी वाटप अयशस्वी (XCS-2881) प्रोसिजरल अॅब्स्ट्रॅक्शन ऑप्टिमायझर्स वापरताना, लिंकर मेमरी वाटप त्रुटी नोंदवू शकतो जेव्हा कोडचा आकार डिव्हाइसवरील उपलब्ध प्रोग्राम मेमरीच्या संख्येच्या जवळ असतो, जरी प्रोग्राम उपलब्ध जागेत बसण्यास सक्षम असला पाहिजे.
स्मार्ट-आयओ (XCS-2872) इतके स्मार्ट नाही जर कोस्ट-डेटा-इन-प्रोएम वैशिष्ट्य अक्षम केले असेल किंवा डिव्हाइसचे सर्व फ्लॅश डेटा मेमरीमध्ये मॅप केले असेल तर कंपाइलरचे स्मार्ट-आयओ वैशिष्ट्य स्प्रिंट फंक्शनसाठी वैध परंतु सब इष्टतम कोड व्युत्पन्न करेल.
अगदी कमी स्मार्ट Smart-IO (XCS-2869) कंपाइलरचे स्मार्ट-आयओ वैशिष्ट्य वैध परंतु सबऑप्टिमल कोड व्युत्पन्न करेल जेव्हा -फ्लो आणि -एफनो-बिल टिन पर्याय दोन्ही वापरले जातात.
सबऑप्टिमल रिड-ओन्ली डेटा प्लेसमेंट (XCS-2849) लिंकरला सध्या APPCODE आणि APPDATA मेमरी विभाग किंवा मेमरी नकाशामधील [नाही-]वाचताना-लिहा विभागांबद्दल माहिती नाही. परिणामी, लिंकर मेमरीच्या अनुपयुक्त क्षेत्रामध्ये केवळ-वाचनीय डेटा वाटप करण्याची शक्यता कमी आहे. कोस्ट-डेटा-इन-प्राग्मा वैशिष्ट्य सक्षम केले असल्यास, विशेषत: कोस्ट-डेटा-इन-कॉन्फिग-मॅप्ड-प्रोएम वैशिष्ट्य सक्षम असल्यास डेटा चुकीच्या स्थानावर जाण्याची शक्यता वाढते. आवश्यक असल्यास ही वैशिष्ट्ये अक्षम केली जाऊ शकतात.
ऑब्जेक्ट file प्रक्रिया ऑर्डर (XCS-2863) ज्या क्रमाने वस्तू files ची प्रक्रिया लिंकरद्वारे केली जाईल प्रक्रियात्मक ऍब्स्ट्रॅक्शन ऑप्टिमायझेशन (-mpa पर्याय) च्या वापरावर आधारित भिन्न असू शकते. हे केवळ कोडवर परिणाम करेल जे एकाधिक मॉड्यूल्समध्ये कमकुवत कार्ये परिभाषित करते.
परिपूर्ण (XCS-2777) सह लिंकर त्रुटी जेव्हा एखादी वस्तू RAM च्या प्रारंभी पत्त्यावर निरपेक्ष केली जाते आणि सुरू न केलेल्या वस्तू देखील परिभाषित केल्या जातात तेव्हा लिंकर त्रुटी ट्रिगर होऊ शकते.
शॉर्ट वेक-अप आयडी (XCS-2775) ATA5700/2 उपकरणांसाठी, PHID0/1 रजिस्टर्स 16 बिट्स रुंद नसून फक्त 32 बिट रुंद म्हणून परिभाषित केले जातात.
चिन्ह कॉल करताना लिंकर क्रॅश (XCS-2758) स्रोत कोडने -Wl, -defsym लिंकर पर्याय वापरून परिभाषित केलेल्या चिन्हाला कॉल केल्यावर -merlad ड्राइव्हर पर्याय वापरल्यास लिंकर क्रॅश होऊ शकतो.
चुकीचे आरंभीकरण (XCS-2679) डेटा मेमरीमध्ये काही ग्लोबल/स्टॅटिक बाइट-आकाराच्या ऑब्जेक्ट्सची प्रारंभिक मूल्ये कोठे ठेवली जातात आणि रनटाइमच्या वेळी व्हेरिएबल्स कोठे ऍक्सेस केले जातील यात तफावत आहे.
चुकीच्या पद्धतीने सुरू केलेले सेट रिक्त (XCS-2652) म्हटल्याप्रमाणे () द्वारे रुपांतरणासाठी विषय स्ट्रिंगमध्ये घातांक स्वरूपात फ्लोटिंग-पॉइंट संख्या दिसते आणि ई वर्णानंतर एक अनपेक्षित वर्ण आहे अशा घटनांमध्ये, रिकामा पत्ता, प्रदान केल्यास, नंतरच्या वर्णाकडे निर्देश करेल ई आणि ई स्वतः नाही. उदाample: सांगितले ("hooey", रिक्त); x वर्णाकडे रिकामे पॉइंटिंग होईल.
खराब अप्रत्यक्ष फंक्शन कॉल्स (XCS-2628) काही घटनांमध्ये, संरचनेचा भाग म्हणून संचयित केलेल्या फंक्शन पॉइंटरद्वारे केलेले फंक्शन कॉल अयशस्वी होऊ शकतात.
हेक्साडेसिमल फ्लोट्ससाठी strtof शून्य मिळवते (XCS-2626) लायब्ररी फंक्शन्स strtof () et al आणि scanf () et al, नेहमी हेक्साडेसिमल फ्लोटिंग-पॉइंट नंबर रूपांतरित करेल जे घातांक निर्दिष्ट करत नाही
शून्य उदाample: स्टेटर ("घुबड", &रिक्त); मूल्य 0 परत करेल, 1 नाही.
चुकीचे स्टॅक सल्लागार संदेशन (XCS-2542, XCS-2541) काही घटनांमध्ये, वापरलेल्या पुनरावृत्ती किंवा अनिश्चित स्टॅकबद्दल स्टॅक सल्लागार चेतावणी (शक्यतो alloca() च्या वापराद्वारे) उत्सर्जित केली जात नाही.
डुप्लिकेट इंटरप्ट कोडसह अयशस्वी (XCS-2421) जिथे एकापेक्षा जास्त इंटरप्ट फंक्शन एकच बॉडी असते, तिथे कंपायलरला एका इंटरप्ट फंक्शनसाठी आउटपुट असू शकते दुसऱ्याला कॉल करा. यामुळे सर्व कॉल-क्लोबर्ड रजिस्टर्स अनावश्यकपणे सेव्ह होतील, आणि सध्याच्या व्यत्यय हँडलरचा उपसंहार सुरू होण्यापूर्वीच व्यत्यय सक्षम केले जातील, ज्यामुळे कोड बिघाड होऊ शकतो.
कॉन्स्ट ऑब्जेक्ट्स प्रोग्राम मेमरीमध्ये नाहीत (XCS-2408) avrxmega3 आणि avertins प्रकल्पांसाठी undealized const ऑब्जेक्ट्स डेटा मेमरीमध्ये ठेवल्या जातात, जरी एक चेतावणी सूचित करते की ते प्रोग्राम मेमरीमध्ये ठेवलेले आहेत. हे डेटा मेमरी स्पेसमध्ये प्रोग्राम मेमरी मॅप केलेले नसलेल्या डिव्हाइसेसवर परिणाम करणार नाही, किंवा प्रारंभ केलेल्या कोणत्याही ऑब्जेक्टवर परिणाम करणार नाही.
अवैध DFP पथ (XCS-2376) सह खराब आउटपुट जर कंपायलरला अवैध DFP पथ आणि 'स्पेक' वापरून आवाहन केले असेल तर file निवडलेल्या उपकरणासाठी अस्तित्वात आहे, कंपाइलर गहाळ डिव्हाइस फॅमिली पॅकची तक्रार करत नाही आणि त्याऐवजी 'स्पेक' निवडत आहे file, जे नंतर अवैध आउटपुट होऊ शकते. 'विशेष' files कदाचित वितरीत केलेल्या DFP सह अद्ययावत नसतील आणि ते केवळ अंतर्गत कंपाइलर चाचणीसाठी वापरण्यासाठी होते.
मेमरी ओव्हरलॅप सापडला नाही (XCS-1966) संकलक एखाद्या पत्त्यावर निरपेक्ष केलेल्या वस्तूंचा मेमरी ओव्हरलॅप शोधत नाही (वर ()) आणि विभाग () निर्दिष्टकर्ता वापरून इतर ऑब्जेक्ट्स आणि जे त्याच पत्त्याशी जोडलेले आहेत.
लायब्ररी फंक्शन्स आणि _meme (XCS-1763) सह अयशस्वी _memo अॅड्रेस स्पेसमधील वादासह लिंबिक फ्लोट फंक्शन्स अयशस्वी होऊ शकतात. लक्षात घ्या की लायब्ररी रूटीन काही C ऑपरेटरकडून कॉल केले जातात, म्हणून, उदाहरणार्थample, खालील कोड प्रभावित झाला आहे: रिटर्न regFloatVar > memxFloatVar;
मर्यादित लिंबिक अंमलबजावणी (AVRTC-731) ATTiny4/5/9/10/20/40 उत्पादनांसाठी, limbic मध्ये मानक C/Math लायब्ररी अंमलबजावणी अत्यंत मर्यादित आहे किंवा सध्या नाही.
प्रोग्राम मेमरी मर्यादा (AVRTC-732) 128 kb च्या पलीकडील प्रोग्राम मेमरी प्रतिमा टूलचेनद्वारे समर्थित आहेत; तथापि, जेव्हा -relax पर्याय वापरला जातो तेव्हा आवश्यक फंक्शन स्टब व्युत्पन्न करण्याऐवजी विश्रांतीशिवाय आणि उपयुक्त त्रुटी संदेशाशिवाय लिंकर अ‍ॅबॉर्ट झाल्याची ज्ञात उदाहरणे आहेत.
नाव जागा मर्यादा (AVRTC-733) वापरकर्त्याच्या मार्गदर्शक विभागातील स्पेशल टाइप क्वालिफायर्समध्ये नमूद केलेल्या मर्यादांच्या अधीन राहून, नामांकित पत्त्याच्या जागा टूलचेनद्वारे समर्थित आहेत.
टाइम झोन द लायब्ररी कार्ये GMT गृहीत धरतात आणि स्थानिक टाइम झोनला समर्थन देत नाहीत, अशा प्रकारे स्थानिक वेळ () gummite () प्रमाणेच वेळ परत करेलampले

ग्राहक समर्थन

file:///Applications/microehipA VR साठी /xc8/v 2 .40/docs/Read me_X C 8_. htm

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

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

संदर्भ

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

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