AVR MCU కోసం మైక్రోచిప్ XC8 C కంపైలర్ వెర్షన్ 2.45 విడుదల నోట్స్

ఉత్పత్తి సమాచారం
MPLAB XC8 C కంపైలర్ అనేది మైక్రోచిప్ AVR పరికరాలను లక్ష్యంగా చేసుకోవడానికి ఉపయోగించే సాఫ్ట్వేర్ సాధనం. ఇది C కోడ్ని కంపైల్ చేయడానికి మరియు ఎక్జిక్యూటబుల్ని రూపొందించడానికి రూపొందించబడింది fileఈ పరికరాల కోసం s. ఈ యూజర్ మాన్యువల్లో సూచించబడిన కంపైలర్ వెర్షన్ 2.45, దీని అధికారిక నిర్మాణ తేదీ ఆగస్టు 18, 2023. మునుపటి వెర్షన్ 2.41, ఫిబ్రవరి 8, 2023న నిర్మించబడింది. కంపైలర్ అదనపు సమాచారాన్ని అందించే ఫంక్షనల్ సేఫ్టీ మాన్యువల్తో వస్తుంది. మరియు ఫంక్షనల్ సేఫ్టీ అప్లికేషన్లతో MPLAB XC కంపైలర్లను ఉపయోగిస్తున్నప్పుడు మార్గదర్శకాలు. మీరు ఫంక్షనల్ సేఫ్టీ లైసెన్స్ను కొనుగోలు చేసినప్పుడు ఈ మాన్యువల్ డాక్యుమెంటేషన్ ప్యాకేజీలో చేర్చబడుతుంది. MPLAB XC8 C కంపైలర్ విడుదల సమయంలో అందుబాటులో ఉన్న అన్ని 8-బిట్ AVR MCU పరికరాలకు మద్దతు ఇస్తుంది. మీరు avr_chipinfo.htmlని చూడవచ్చు file కంపైలర్ యొక్క డాక్ డైరెక్టరీలో మద్దతు ఉన్న అన్ని పరికరాల జాబితా మరియు వాటి కాన్ఫిగరేషన్ బిట్ సెట్టింగ్ల కోసం. MPLAB XC8 కంపైలర్ యొక్క వివిధ ఎడిషన్లు అందుబాటులో ఉన్నాయి. లైసెన్స్ పొందిన (PRO) ఎడిషన్ ఉచిత ఎడిషన్తో పోలిస్తే అధిక స్థాయి ఆప్టిమైజేషన్ను అందిస్తుంది. కంపైలర్ను లైసెన్స్ పొందిన ఉత్పత్తిగా సక్రియం చేయడానికి, మీరు యాక్టివేషన్ కీని కొనుగోలు చేయాలి. అయితే, లైసెన్స్ లేని సంస్కరణను లైసెన్స్ లేకుండా నిరవధికంగా ఉపయోగించవచ్చు. ఫంక్షనల్ సేఫ్టీ అప్లికేషన్ల కోసం, MPLAB XC8 ఫంక్షనల్ సేఫ్టీ కంపైలర్ అందుబాటులో ఉంది. యాక్టివేషన్ కోసం మైక్రోచిప్ నుండి కొనుగోలు చేసిన ఫంక్షనల్ సేఫ్టీ లైసెన్స్ దీనికి అవసరం. యాక్టివేట్ చేసిన తర్వాత, అన్ని ఆప్టిమైజేషన్ స్థాయిలు మరియు కంపైలర్ ఫీచర్లు ఉపయోగించబడతాయి. MPLAB XC ఫంక్షనల్ సేఫ్టీ కంపైలర్ నెట్వర్క్ సర్వర్ లైసెన్స్కు కూడా మద్దతు ఇస్తుంది. ఇన్స్టాలేషన్, యాక్టివేషన్, లైసెన్స్ రకాలు మరియు మైగ్రేషన్ సమస్యల గురించి సవివరమైన సమాచారం MPLAB XC C Compilers (DS50002059) డాక్యుమెంట్లో ఇన్స్టాల్ చేయడం మరియు లైసెన్సింగ్ చేయడం వంటివి చూడవచ్చు.
ఉత్పత్తి వినియోగ సూచనలు
- MPLAB XC8 C కంపైలర్ సాఫ్ట్వేర్ను అమలు చేయడానికి ముందు, మైక్రోచిప్ AVR పరికరాలను లక్ష్యంగా చేసుకోవడానికి నిర్దిష్టమైన ముఖ్యమైన సమాచారం మరియు సూచనల కోసం వినియోగదారు మాన్యువల్ని చదవండి.
- మీరు 8-బిట్ PIC పరికరాల కోసం కంపైలర్ని ఉపయోగిస్తుంటే, PIC డాక్యుమెంట్ కోసం MPLAB XC8 C కంపైలర్ విడుదల గమనికలను చూడండి.
- కంపైలర్ను అమలు చేయడానికి మీ ఆపరేటింగ్ సిస్టమ్ సిస్టమ్ అవసరాలకు అనుగుణంగా ఉందని నిర్ధారించుకోండి. MacOS కోసం బైనరీలు కోడ్-సంతకం మరియు నోటరీ చేయబడ్డాయి. MPLAB XC నెట్వర్క్ లైసెన్స్ సర్వర్ Microsoft Windows 10 మరియు అంతకంటే ఎక్కువ, Ubuntu 18.04 మరియు అంతకంటే ఎక్కువ మరియు macOS 10.15 మరియు అంతకంటే ఎక్కువ వాటి కోసం అందుబాటులో ఉంది. MPLAB XC నెట్వర్క్ లైసెన్స్ సర్వర్ ఈ ఆపరేటింగ్ సిస్టమ్లలో పరీక్షించబడలేదని గమనించండి.
- MPLAB XC నెట్వర్క్ లైసెన్స్ సర్వర్ నెట్వర్క్ లైసెన్స్ల (SW006021-VM) కోసం వర్చువల్ మెషీన్ లైసెన్స్ని ఉపయోగించి మద్దతు ఉన్న OS యొక్క వర్చువల్ మెషీన్లపై అమలు చేయబడుతుంది. MPLAB XC నెట్వర్క్ సర్వర్ యొక్క అన్ని 32-బిట్ వెర్షన్లు వెర్షన్ 3.00 నుండి నిలిపివేయబడ్డాయి.
- MPLAB XC8 C కంపైలర్ను లైసెన్స్ పొందిన (PRO) ఉత్పత్తిగా యాక్టివేట్ చేయడానికి, యాక్టివేషన్ కీని కొనుగోలు చేయండి. ఇది ఉచిత సంస్కరణతో పోలిస్తే అధిక స్థాయి ఆప్టిమైజేషన్ను అందిస్తుంది. అయితే, లైసెన్స్ లేని కంపైలర్ను లైసెన్స్ లేకుండా నిరవధికంగా ఆపరేట్ చేయవచ్చు.
- మీరు ఫంక్షనల్ సేఫ్టీ అప్లికేషన్ల కోసం MPLAB XC8 ఫంక్షనల్ సేఫ్టీ కంపైలర్ని ఉపయోగిస్తుంటే, అది మైక్రోచిప్ నుండి కొనుగోలు చేసిన ఫంక్షనల్ సేఫ్టీ లైసెన్స్తో తప్పనిసరిగా యాక్టివేట్ చేయబడాలి. ఈ లైసెన్స్ లేకుండా కంపైలర్ పనిచేయదు. యాక్టివేట్ చేసిన తర్వాత, మీరు ఏదైనా ఆప్టిమైజేషన్ స్థాయిని ఎంచుకోవచ్చు మరియు అన్ని కంపైలర్ లక్షణాలను ఉపయోగించవచ్చు. MPLAB XC ఫంక్షనల్ సేఫ్టీ కంపైలర్ యొక్క ఈ విడుదల ద్వారా నెట్వర్క్ సర్వర్ లైసెన్స్కు మద్దతు ఉంది.
- MPLAB XC8 C కంపైలర్ యొక్క ఇన్స్టాలేషన్, యాక్టివేషన్ మరియు లైసెన్సింగ్పై వివరణాత్మక సూచనల కోసం, MPLAB XC కంపైలర్లను ఇన్స్టాల్ చేయడం మరియు లైసెన్సింగ్ చేయడం (DS50002059) పత్రాన్ని చూడండి.
- మీరు మూల్యాంకన లైసెన్స్ క్రింద కంపైలర్ను నడుపుతున్నట్లయితే, మీరు మీ మూల్యాంకన వ్యవధి ముగిసిన 14 రోజులలోపు ఉన్నప్పుడు సంకలనం సమయంలో మీకు హెచ్చరిక అందుతుంది. మీరు మీ HPA సబ్స్క్రిప్షన్ ముగిసిన 14 రోజులలోపు ఉంటే అదే హెచ్చరిక జారీ చేయబడుతుంది.
పైగాview
పరిచయం
Microchip MPLAB® XC8 C కంపైలర్ యొక్క ఈ విడుదల అనేక కొత్త ఫీచర్లు, బగ్ పరిష్కారాలు మరియు కొత్త పరికరాలకు మద్దతును కలిగి ఉంది.
నిర్మాణ తేదీ
ఈ కంపైలర్ వెర్షన్ యొక్క అధికారిక నిర్మాణ తేదీ 18 ఆగస్టు 2023.
మునుపటి సంస్కరణ
మునుపటి MPLAB XC8 C కంపైలర్ వెర్షన్ 2.41, 8 ఫిబ్రవరి, 2023న నిర్మించబడింది.
ఫంక్షనల్ సేఫ్టీ మాన్యువల్
మీరు ఫంక్షనల్ సేఫ్టీ లైసెన్స్ను కొనుగోలు చేసినప్పుడు MPLAB XC కంపైలర్ల కోసం ఫంక్షనల్ సేఫ్టీ మాన్యువల్ డాక్యుమెంటేషన్ ప్యాకేజీలో అందుబాటులో ఉంటుంది.
కాంపోనెంట్ లైసెన్స్లు మరియు సంస్కరణలు
AVR MCUల సాధనాల కోసం MPLAB XC8 C కంపైలర్ GNU జనరల్ పబ్లిక్ లైసెన్స్ (GPL) క్రింద వ్రాయబడి పంపిణీ చేయబడుతుంది అంటే దాని సోర్స్ కోడ్ ఉచితంగా పంపిణీ చేయబడుతుంది మరియు ప్రజలకు అందుబాటులో ఉంటుంది. GNU GPL క్రింద ఉన్న సాధనాల కోసం సోర్స్ కోడ్ మైక్రోచిప్ నుండి విడిగా డౌన్లోడ్ చేయబడవచ్చు webసైట్. మీరు GNU GPLని చదవవచ్చు file మీ ఇన్స్టాల్ డైరెక్టరీ యొక్క ఉప డైరెక్టరీని గుర్తించబడింది. GPL అంతర్లీనంగా ఉన్న సూత్రాల సాధారణ చర్చను ఇక్కడ చూడవచ్చు. హెడర్ కోసం సపోర్ట్ కోడ్ అందించబడింది fileలు, లింకర్ స్క్రిప్ట్లు మరియు రన్టైమ్ లైబ్రరీలు యాజమాన్య కోడ్ మరియు GPL పరిధిలోకి రావు. ఈ కంపైలర్ GCC వెర్షన్ 5.4.0, binutils వెర్షన్ 2.26 అమలు, మరియు avr-libc వెర్షన్ 2.0.0ని ఉపయోగిస్తుంది.
సిస్టమ్ అవసరాలు
MPLAB XC8 C కంపైలర్ మరియు అది ఉపయోగించే లైసెన్సింగ్ సాఫ్ట్వేర్ క్రింది వాటి యొక్క 64-బిట్ వెర్షన్లతో సహా వివిధ ఆపరేటింగ్ సిస్టమ్లకు అందుబాటులో ఉన్నాయి: Microsoft® Windows® 10, Ubuntu® 18.04, MacOS® 13.2 (Ventura) యొక్క ప్రొఫెషనల్ ఎడిషన్లు మరియు Fedora 34. Windows కోసం బైనరీలు కోడ్-సంతకం చేయబడ్డాయి. MacOS కోసం బైనరీలు కోడ్-సంతకం మరియు నోటరీ చేయబడ్డాయి. MPLAB XC నెట్వర్క్ లైసెన్స్ సర్వర్ Microsoft Windows 64 మరియు అంతకంటే ఎక్కువ వాటితో సహా వివిధ 10-బిట్ ఆపరేటింగ్ సిస్టమ్లకు అందుబాటులో ఉంది; ఉబుంటు 18.04 మరియు అంతకంటే ఎక్కువ; లేదా macOS 10.15 మరియు అంతకంటే ఎక్కువ. సర్వర్ Windows Server, Linux పంపిణీలు, Oracle® Enterprise Linux® మరియు Red Hat® 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) పత్రాన్ని ఇన్స్టాల్ చేయడం మరియు లైసెన్సింగ్ చేయడం చూడండి.
సంస్థాపన మరియు యాక్టివేషన్
ఈ కంపైలర్తో చేర్చబడిన తాజా లైసెన్స్ మేనేజర్ గురించి ముఖ్యమైన సమాచారం కోసం మైగ్రేషన్ సమస్యలు మరియు పరిమితుల విభాగాలను కూడా చూడండి. MPLAB IDEని ఉపయోగిస్తుంటే, ఈ సాధనాన్ని ఇన్స్టాల్ చేసే ముందు తాజా MPLAB X IDE వెర్షన్ 5.0 లేదా తదుపరిది ఇన్స్టాల్ చేయాలని నిర్ధారించుకోండి. కంపైలర్ను ఇన్స్టాల్ చేసే ముందు IDE నుండి నిష్క్రమించండి. .run (Linux) లేదా .app (macOS) కంపైలర్ ఇన్స్టాలర్ అప్లికేషన్ను అమలు చేయండి, ఉదా XC8-1.00.11403-windows.exe మరియు స్క్రీన్పై ఉన్న సూచనలను అనుసరించండి. డిఫాల్ట్ ఇన్స్టాలేషన్ డైరెక్టరీ సిఫార్సు చేయబడింది. మీరు Linuxని ఉపయోగిస్తుంటే, మీరు తప్పనిసరిగా టెర్మినల్ ఉపయోగించి మరియు రూట్ ఖాతా నుండి కంపైలర్ను ఇన్స్టాల్ చేయాలి. నిర్వాహక అధికారాలతో MacOS ఖాతాను ఉపయోగించి ఇన్స్టాల్ చేయండి. సక్రియం ఇప్పుడు సంస్థాపనకు విడిగా నిర్వహించబడుతుంది. మరింత సమాచారం కోసం MPLAB® XC C Compilers (DS52059) కోసం డాక్యుమెంట్ లైసెన్స్ మేనేజర్ని చూడండి. మీరు మూల్యాంకన లైసెన్స్ కింద కంపైలర్ను అమలు చేయాలని ఎంచుకుంటే, మీ మూల్యాంకన వ్యవధి ముగిసిన 14 రోజులలోపు మీరు ఇప్పుడు సంకలనం సమయంలో హెచ్చరికను పొందుతారు. మీరు మీ HPA సబ్స్క్రిప్షన్ ముగిసిన 14 రోజులలోపు ఉంటే అదే హెచ్చరిక జారీ చేయబడుతుంది. XC నెట్వర్క్ లైసెన్స్ సర్వర్ ఒక ప్రత్యేక ఇన్స్టాలర్ మరియు సింగిల్-యూజర్ కంపైలర్ ఇన్స్టాలర్లో చేర్చబడలేదు. XC లైసెన్స్ మేనేజర్ ఇప్పుడు ఫ్లోటింగ్ నెట్వర్క్ లైసెన్స్ల రోమింగ్కు మద్దతు ఇస్తుంది. మొబైల్ వినియోగదారులను లక్ష్యంగా చేసుకుని, ఈ ఫీచర్ ఫ్లోటింగ్ లైసెన్స్ను తక్కువ వ్యవధిలో నెట్వర్క్ను ఆపివేయడానికి అనుమతిస్తుంది. ఈ ఫీచర్ని ఉపయోగించి, మీరు నెట్వర్క్ నుండి డిస్కనెక్ట్ చేయవచ్చు మరియు ఇప్పటికీ మీ MPLAB XC కంపైలర్ని ఉపయోగించవచ్చు. ఈ ఫీచర్ గురించి మరింత తెలుసుకోవడానికి XCLM ఇన్స్టాల్ యొక్క డాక్ ఫోల్డర్ను చూడండి. MPLAB X IDE రోమింగ్ని దృశ్యమానంగా నిర్వహించడానికి లైసెన్స్ల విండో (సాధనాలు > లైసెన్స్లు)ని కలిగి ఉంటుంది.
ఇన్స్టాలేషన్ సమస్యలను పరిష్కరిస్తోంది
ఏదైనా Windows ఆపరేటింగ్ సిస్టమ్లలో కంపైలర్ను ఇన్స్టాల్ చేయడంలో మీకు ఇబ్బందులు ఎదురైతే, ఈ క్రింది సూచనలను ప్రయత్నించండి.
- ఇన్స్టాల్ను అడ్మినిస్ట్రేటర్గా అమలు చేయండి.
- ఇన్స్టాలర్ అప్లికేషన్ యొక్క అనుమతులను 'పూర్తి నియంత్రణ'కి సెట్ చేయండి. (ఫైల్పై కుడి-క్లిక్ చేయండి, ప్రాపర్టీస్, సెక్యూరిటీ ట్యాబ్ ఎంచుకోండి, వినియోగదారుని ఎంచుకోండి, సవరించండి.)
- తాత్కాలిక ఫోల్డర్ యొక్క అనుమతులను 'పూర్తి నియంత్రణ'కి సెట్ చేయండి.
టెంప్ ఫోల్డర్ యొక్క స్థానాన్ని గుర్తించడానికి, రన్ కమాండ్లో %temp% అని టైప్ చేయండి (Windows లోగో కీ + R). ఇది ఆ డైరెక్టరీని చూపించే ఫైల్ ఎక్స్ప్లోరర్ డైలాగ్ను తెరుస్తుంది మరియు ఆ ఫోల్డర్ యొక్క మార్గాన్ని నిర్ణయించడానికి మిమ్మల్ని అనుమతిస్తుంది.
కంపైలర్ డాక్యుమెంటేషన్
స్క్రీన్షాట్లో సూచించినట్లుగా, MPLAB X IDE డ్యాష్బోర్డ్లోని నీలిరంగు సహాయ బటన్ను క్లిక్ చేసినప్పుడు మీ బ్రౌజర్లో తెరుచుకునే HTML పేజీ నుండి కంపైలర్ యొక్క వినియోగదారు గైడ్లు తెరవబడతాయి.
మీరు 8-బిట్ AVR లక్ష్యాల కోసం రూపొందిస్తున్నట్లయితే, AVR® MCU కోసం MPLAB® XC8 C కంపైలర్ యూజర్స్ గైడ్ ఈ ఆర్కిటెక్చర్కు వర్తించే కంపైలర్ ఎంపికలు మరియు లక్షణాలపై సమాచారాన్ని కలిగి ఉంటుంది.
కస్టమర్ మద్దతు
మీరు XC8 ఫోరమ్లో ఈ ఉత్పత్తికి సంబంధించిన ఇతర వినియోగదారుల ప్రశ్నలను అడగవచ్చు. మైక్రోచిప్ ఈ కంపైలర్ సంస్కరణకు సంబంధించి బగ్ నివేదికలు, సూచనలు లేదా వ్యాఖ్యలను స్వాగతించింది. దయచేసి ఏవైనా బగ్ నివేదికలు లేదా ఫీచర్ అభ్యర్థనలను సపోర్ట్ సిస్టమ్ ద్వారా డైరెక్ట్ చేయండి.
డాక్యుమెంటేషన్ నవీకరణలు
MPLAB XC8 డాక్యుమెంటేషన్ యొక్క ఆన్లైన్ మరియు తాజా వెర్షన్ల కోసం, దయచేసి మైక్రోచిప్ యొక్క ఆన్లైన్ టెక్నికల్ డాక్యుమెంటేషన్ని సందర్శించండి webసైట్.
ఈ విడుదలలో కొత్త లేదా నవీకరించబడిన AVR డాక్యుమెంటేషన్:
ఏదీ లేదు
- AVR® GNU Toolchain to 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-లక్ష్య లక్షణాలు క్రిందివి. ఉపశీర్షికలలోని సంస్కరణ సంఖ్య అనుసరించే లక్షణాలకు మద్దతు ఇవ్వడానికి మొదటి కంపైలర్ సంస్కరణను సూచిస్తుంది.
వెర్షన్ 2.45
యూనివర్సల్ లైసెన్స్ మేనేజర్ (XC8-3175, XCLM-224) కంపైలర్తో ఉపయోగించిన లైసెన్స్ మేనేజర్ యొక్క macOS వెర్షన్ ఇప్పుడు సార్వత్రికమైనది, ఇది Intel- మరియు M1-ఆధారిత మెషీన్లకు స్థానిక మద్దతును అందిస్తోంది. లైసెన్స్ మేనేజర్ యొక్క Linux సంస్కరణకు ఇప్పుడు glibc యొక్క కనీసం వెర్షన్ 2.25 అవసరం. Mac యూనివర్సల్ బైనరీలు (XC8-3168, XC8-2951) MacOS కోసం కంపైలర్ బైనరీ ఫైల్లు ఇప్పుడు సార్వత్రికమైనవి, Intel- మరియు M1-ఆధారిత మెషీన్లకు స్థానిక మద్దతును అందిస్తోంది. తగ్గించబడిన ఫ్లోటింగ్-పాయింట్ లైబ్రరీ సైజులు (XC8-3112, XC8-3071) sinf() pow(), sqrt(), expf(), log1fp(), మరియు nextafterf()తో సహా ఫ్లోటింగ్-పాయింట్ లైబ్రరీ ఫంక్షన్లకు మెరుగుదలలు చేయబడ్డాయి. , ఇది ఈ నిత్యకృత్యాల కోసం కోడ్ పరిమాణంలో తగ్గింపును చూస్తుంది. కింది AVR భాగాలకు కొత్త పరికర మద్దతు మద్దతు ఇప్పుడు అందుబాటులో ఉంది: AVR16EA28, AVR16EA32, AVR16EA48, AVR32EA28, AVR32EA32, AVR32EA48, AVR16EB14, AVR16EB20, AVR16EB
వెర్షన్ 2.41
- బూట్రో మద్దతు (XC8-3053) కంపైలర్ HEX ఫైల్లో 0x860000 చిరునామాలో .bootrow ప్రిఫిక్స్తో ఏదైనా విభాగాల కంటెంట్ను ఉంచుతుంది. ఈ విభాగాలు BOOTROW మెమరీ కోసం ఉపయోగించబడతాయి, ఇది బూట్లోడర్కు మాత్రమే అందుబాటులో ఉండే కీలు మరియు ఇతర సురక్షిత సమాచారం యొక్క నిల్వ కోసం రూపొందించబడింది.
- రిడెండెంట్ రిటర్న్ ఎలిమినేషన్ (XC8-3048) కంపైలర్ ఇప్పుడు కస్టమ్ లింకర్ స్క్రిప్ట్లను ఉపయోగించినప్పుడు టెయిల్ జంప్తో ఫంక్షన్లలో రిడెండెంట్ రెట్ సూచనలను తొలగిస్తుంది. ఇది గతంలో ప్రదర్శించిన దానితో సమానమైన ఆప్టిమైజేషన్, కానీ ఇప్పుడు కస్టమ్ లింకర్ స్క్రిప్ట్ ఉపయోగించబడినప్పటికీ మరియు ఉత్తమ ఫిట్ కేటాయింపు పథకం అమలులో లేనప్పటికీ, ఇది ఇప్పుడు అన్ని అనాథ విభాగాలలో ప్రదర్శించబడుతుంది.
- సమయ రకం మార్పు (XC8-2982, 2932) C99 ప్రామాణిక లైబ్రరీ రకం, time_t చాలా కాలం నుండి సంతకం చేయని పొడవైన రకానికి మార్చబడింది, ఇది mktime() వంటి కొన్ని సమయ-సంబంధిత ఫంక్షన్లలో కోడ్-పరిమాణ మెరుగుదలలను అందిస్తుంది.
- కొత్త nop (XC8-2946, 2945) మాక్రో NOP() దీనికి జోడించబడింది . ఈ మాక్రో అవుట్పుట్లో nop-నో-ఆపరేషన్ సూచనను ఇన్సర్ట్ చేస్తుంది.
- XCLMకి నవీకరించండి (XC8-2944) కంపైలర్తో ఉపయోగించిన లైసెన్స్ మేనేజర్ నవీకరించబడింది మరియు ఇప్పుడు కంపైలర్ లైసెన్స్ వివరాలను తనిఖీ చేస్తున్నప్పుడు మరింత ప్రతిస్పందిస్తుంది.
- Trampఒలైన్డ్ కాల్లు (XC8-2760) సూచనల యొక్క సాపేక్ష ఫారమ్లు సాధారణంగా వాటి గమ్యస్థానం పరిధిలో లేనప్పుడు కంపైలర్ ఇప్పుడు దీర్ఘ-రూప కాల్ సూచనలను తక్కువ సాపేక్ష కాల్లతో భర్తీ చేయగలదు. ఈ పరిస్థితిలో, కంపైలర్ jmp కాల్ సూచనలకు rcall సూచనలతో భర్తీ చేయడానికి ప్రయత్నిస్తుంది, అది 'trampఅవసరమైన చిరునామాకు ఓలైన్ అమలు, ఉదాహరణకుampలే:
వెర్షన్ 2.40
- కింది AVR భాగాలకు ఇప్పుడు కొత్త పరికర మద్దతు మద్దతు అందుబాటులో ఉంది: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64DD28, AVR64DD32, 64, మరియు AVR48EAXNUMX.
- మెరుగైన విధానపరమైన సంగ్రహణ విధానపరమైన సంగ్రహణ (PA) ఆప్టిమైజేషన్ సాధనం మెరుగుపరచబడింది, తద్వారా ఫంక్షన్ కాల్ సూచన (కాల్/rcall) కలిగి ఉన్న కోడ్ని వివరించవచ్చు. స్టాక్ ఆర్గ్యుమెంట్లను పాస్ చేయడానికి లేదా ఫంక్షన్ నుండి రిటర్న్ విలువను పొందకుండా ఉపయోగించకపోతే మాత్రమే ఇది జరుగుతుంది. వేరియబుల్ ఆర్గ్యుమెంట్ లిస్ట్తో ఫంక్షన్కు కాల్ చేస్తున్నప్పుడు లేదా ఈ ప్రయోజనం కోసం కేటాయించిన రిజిస్టర్ల కంటే ఎక్కువ ఆర్గ్యుమెంట్లను తీసుకునే ఫంక్షన్కు కాల్ చేస్తున్నప్పుడు స్టాక్ ఉపయోగించబడుతుంది. -mno-pa-outline-calls ఎంపికను ఉపయోగించి ఈ ఫీచర్ నిలిపివేయబడుతుంది లేదా -mno-pa-on-ని ఉపయోగించడం ద్వారా ఆబ్జెక్ట్ ఫైల్ మరియు ఫంక్షన్ కోసం విధానపరమైన సంగ్రహణ పూర్తిగా నిలిపివేయబడుతుంది.file -mno-pa-on-function, వరుసగా, లేదా nopa లక్షణాన్ని (__nopa స్పెసిఫైయర్) ఎంపిక చేయడం ద్వారా ఫంక్షన్లతో.
- కోడ్ కవరేజ్ మాక్రో చెల్లుబాటు అయ్యే -mcodecov ఎంపిక పేర్కొనబడితే కంపైలర్ ఇప్పుడు మాక్రో __CODECOVని నిర్వచిస్తుంది.
- మెమరీ రిజర్వేషన్ ఎంపిక AVR లక్ష్యాలను నిర్మించేటప్పుడు xc8-cc డ్రైవర్ ఇప్పుడు -mreserve=space@start:end ఎంపికను అంగీకరిస్తుంది. ఈ ఐచ్ఛికం డేటా లేదా ప్రోగ్రామ్ మెమరీ స్థలంలో పేర్కొన్న మెమరీ పరిధిని రిజర్వ్ చేస్తుంది, ఈ ప్రాంతంలో కోడ్ లేదా ఆబ్జెక్ట్లను నింపకుండా లింకర్ను నిరోధిస్తుంది.
- స్మార్టర్ స్మార్ట్ IO స్మార్ట్ IO ఫంక్షన్లకు అనేక మెరుగుదలలు చేయబడ్డాయి, వీటిలో printf కోర్ కోడ్కు సాధారణ ట్వీక్లు ఉన్నాయి, %n కన్వర్షన్ స్పెసిఫైయర్ను స్వతంత్ర వేరియంట్గా పరిగణించడం, డిమాండ్పై vararg పాప్ రొటీన్లలో లింక్ చేయడం, హ్యాండ్లింగ్ కోసం సాధ్యమైన చోట తక్కువ డేటా రకాలను ఉపయోగించడం. IO ఫంక్షన్ ఆర్గ్యుమెంట్లు మరియు ఫీల్డ్ వెడల్పు మరియు ఖచ్చితత్వ నిర్వహణలో సాధారణ కోడ్ను కారకం. ఇది ముఖ్యమైన కోడ్ మరియు డేటా పొదుపులకు దారి తీస్తుంది, అలాగే IO యొక్క అమలు వేగాన్ని పెంచుతుంది.
వెర్షన్ 2.39 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
నెట్వర్క్ సర్వర్ లైసెన్స్ MPLAB XC8 ఫంక్షనల్ సేఫ్టీ కంపైలర్ యొక్క ఈ విడుదల నెట్వర్క్ సర్వర్ లైసెన్స్కు మద్దతు ఇస్తుంది.
వెర్షన్ 2.36
ఏదీ లేదు.
వెర్షన్ 2.35
- కింది AVR భాగాలకు కొత్త పరికర మద్దతు మద్దతు అందుబాటులో ఉంది: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 మరియు AVR64DD32.
- మెరుగైన సందర్భ మార్పిడి కొత్త -mcall-isr-prologues ఎంపిక ఇంటర్ప్ట్ ఫంక్షన్లు ఎంట్రీలో రిజిస్టర్లను ఎలా సేవ్ చేస్తాయి మరియు అంతరాయ రొటీన్ ముగిసినప్పుడు ఆ రిజిస్టర్లు ఎలా పునరుద్ధరించబడతాయి. ఇది -mcall-prologues ఎంపిక మాదిరిగానే పనిచేస్తుంది, కానీ అంతరాయ ఫంక్షన్లను (ISRలు) మాత్రమే ప్రభావితం చేస్తుంది.
- మరింత మెరుగైన సందర్భ మార్పిడి కొత్త -mgas-isr-prologues ఎంపిక చిన్న అంతరాయ సేవా రొటీన్ల కోసం రూపొందించబడిన సందర్భ స్విచ్ కోడ్ను నియంత్రిస్తుంది. ప్రారంభించబడినప్పుడు, ఈ ఫీచర్ అసెంబ్లర్ రిజిస్టర్ వినియోగం కోసం ISRని స్కాన్ చేస్తుంది మరియు అవసరమైతే ఈ ఉపయోగించిన రిజిస్టర్లను మాత్రమే సేవ్ చేస్తుంది.
- కాన్ఫిగర్ చేయదగిన ఫ్లాష్ మ్యాపింగ్ AVR DA మరియు AVR DB కుటుంబంలోని కొన్ని పరికరాలు SFR (ఉదా. FLMAP)ని కలిగి ఉంటాయి, ఇది ప్రోగ్రామ్ మెమరీలో ఏ 32k విభాగం డేటా మెమరీలో మ్యాప్ చేయబడుతుందో నిర్దేశిస్తుంది. కొత్త - mconst-data-in-config-mapped-progmem ఎంపికను లింకర్ అన్ని అర్హత కలిగిన డేటాను ఒక 32k విభాగంలో ఉంచడానికి ఉపయోగించవచ్చు మరియు ఈ డేటా డేటా మెమరీ స్థలంలో మ్యాప్ చేయబడిందని నిర్ధారించుకోవడానికి సంబంధిత SFR రిజిస్టర్ను స్వయంచాలకంగా ప్రారంభించవచ్చు. , ఇక్కడ ఇది మరింత ప్రభావవంతంగా యాక్సెస్ చేయబడుతుంది.
- మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీలు అన్ని MPLAB XC కంపైలర్లు మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీని షేర్ చేస్తాయి, ఇది ఇప్పుడు MPLAB XC8 విడుదలతో అందుబాటులో ఉంది. AVR® MCU కోసం MPLAB® XC8 C కంపైలర్ యూజర్స్ గైడ్ ఈ ప్రామాణిక ఫంక్షన్ల కోసం డాక్యుమెంటేషన్ను కలిగి ఉండదు. ఈ సమాచారం ఇప్పుడు మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీ రిఫరెన్స్ గైడ్లో కనుగొనబడుతుంది. గతంలో avr-libc ద్వారా నిర్వచించబడిన కొంత కార్యాచరణ ఇప్పుడు అందుబాటులో లేదని గమనించండి. (లైబ్రరీ కార్యాచరణను చూడండి.)
- స్మార్ట్ IO కొత్త యూనిఫైడ్ లైబ్రరీలలో భాగంగా, ప్రింట్ఎఫ్ మరియు స్కాన్ఎఫ్ ఫ్యామిలీలలోని ఐఓ ఫంక్షన్లు ఇప్పుడు ప్రోగ్రామ్లో ఈ ఫంక్షన్లు ఎలా ఉపయోగించబడుతున్నాయనే దాని ఆధారంగా ప్రతి బిల్డ్పై అనుకూలీకరించబడతాయి. ఇది ప్రోగ్రామ్ ఉపయోగించే వనరులను గణనీయంగా తగ్గిస్తుంది.
- స్మార్ట్ IO సహాయ ఎంపిక స్మార్ట్ IO ఫంక్షన్లకు (printf() లేదా scanf() కాల్లను విశ్లేషించేటప్పుడు కంపైలర్ ఎల్లప్పుడూ ఫార్మాట్ స్ట్రింగ్ నుండి గుర్తించలేరు లేదా కాల్కి అవసరమైన మార్పిడి స్పెసిఫైయర్లను ఆర్గ్యుమెంట్ల నుండి ఊహించలేరు. ఇంతకుముందు, కంపైలర్ ఎల్లప్పుడూ చేస్తుంది ఊహలు లేవు మరియు పూర్తి ఫంక్షనల్ IO ఫంక్షన్లు ఫైనల్ ప్రోగ్రామ్ ఇమేజ్కి లింక్ చేయబడిందని నిర్ధారించుకోండి.ఒక కొత్త -msmart-io-format=fmt ఐచ్ఛికం జోడించబడింది, తద్వారా కంపైలర్కు బదులుగా స్మార్ట్ IO ఉపయోగించే కన్వర్షన్ స్పెసిఫైయర్ల గురించి వినియోగదారు తెలియజేయవచ్చు. అస్పష్టంగా ఉండే ఫంక్షన్లు, అతి పొడవైన IO రొటీన్లను లింక్ చేయకుండా నిరోధించడం. (మరిన్ని వివరాల కోసం స్మార్ట్-io-ఫార్మాట్ ఎంపికను చూడండి.)
- కస్టమ్ విభాగాలను ఉంచడం గతంలో, లింకర్ స్క్రిప్ట్ అదే పేరుతో అవుట్పుట్ విభాగాన్ని నిర్వచించినప్పుడు మాత్రమే -Wl,–section-start ఎంపిక పేర్కొన్న విభాగాన్ని అభ్యర్థించిన చిరునామాలో ఉంచుతుంది. అది కానప్పుడు, లింకర్ ఎంచుకున్న చిరునామాలో విభాగం ఉంచబడింది మరియు ఎంపిక తప్పనిసరిగా విస్మరించబడింది. లింకర్ స్క్రిప్ట్ విభాగాన్ని నిర్వచించనప్పటికీ, ఇప్పుడు ఎంపిక అన్ని అనుకూల విభాగాలకు గౌరవించబడుతుంది. అయితే, .టెక్స్ట్, .bss లేదా .డేటా వంటి ప్రామాణిక విభాగాల కోసం, ఉత్తమమైన ఫిట్ కేటాయింపుదారు వారి ప్లేస్మెంట్పై పూర్తి నియంత్రణను కలిగి ఉంటారని మరియు ఎంపిక ప్రభావం చూపదని గమనించండి. యూజర్ గైడ్లో వివరించిన విధంగా -Wl,-Tsection=addr ఎంపికను ఉపయోగించండి.
వెర్షన్ 2.32
- PRO కంపైలర్ లైసెన్స్తో స్టాక్ గైడెన్స్ అందుబాటులో ఉంటుంది, ప్రోగ్రామ్ ఉపయోగించే ఏదైనా స్టాక్ గరిష్ట లోతును అంచనా వేయడానికి కంపైలర్ యొక్క స్టాక్ గైడెన్స్ ఫీచర్ ఉపయోగించబడుతుంది. ఇది ప్రోగ్రామ్ యొక్క కాల్ గ్రాఫ్ను నిర్మిస్తుంది మరియు విశ్లేషిస్తుంది, ప్రతి ఫంక్షన్ యొక్క స్టాక్ వినియోగాన్ని నిర్ణయిస్తుంది మరియు ఒక నివేదికను ఉత్పత్తి చేస్తుంది, దీని నుండి ప్రోగ్రామ్ ఉపయోగించే స్టాక్ల లోతును ఊహించవచ్చు. ఈ ఫీచర్ -mchp-stack-usage కమాండ్-లైన్ ఎంపిక ద్వారా ప్రారంభించబడింది. అమలు తర్వాత స్టాక్ వినియోగం యొక్క సారాంశం ముద్రించబడుతుంది. మాప్ ఫైల్లో వివరణాత్మక స్టాక్ నివేదిక అందుబాటులో ఉంది, దీనిని సాధారణ పద్ధతిలో అభ్యర్థించవచ్చు.
- కింది AVR భాగాలకు కొత్త పరికర మద్దతు మద్దతు అందుబాటులో ఉంది: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28DB, AV32DB, AV28DB64 32, మరియు AVR32DB48.
- ఉపసంహరించబడిన పరికర మద్దతు మద్దతు క్రింది AVR భాగాలకు అందుబాటులో లేదు: AVR16DA28, AVR16DA32 మరియు, AVR16DA48.
వెర్షన్ 2.31
ఏదీ లేదు.
వెర్షన్ 2.30
- డేటా ప్రారంభాన్ని నిరోధించడానికి కొత్త ఐచ్ఛికం కొత్త -mno-data-init డ్రైవర్ ఐచ్ఛికం డేటాను ప్రారంభించడాన్ని మరియు bss విభాగాల క్లియరింగ్ను నిరోధిస్తుంది. అసెంబ్లీ ఫైల్లలో do_clear_bss చిహ్నాల అవుట్పుట్ను అణచివేయడం ద్వారా ఇది పని చేస్తుంది, ఇది లింకర్ ద్వారా ఆ రొటీన్లను చేర్చడాన్ని నిరోధిస్తుంది.
- మెరుగుపరిచిన ఆప్టిమైజేషన్లు రిడెండెంట్ రిటర్న్ సూచనల తొలగింపు, స్కిప్-ఇఫ్-బిట్-ఇజ్ సూచనను అనుసరించి కొన్ని జంప్ల తొలగింపు మరియు మెరుగైన విధానపరమైన సంగ్రహణ మరియు ఈ ప్రక్రియను పునరావృతం చేయగల సామర్థ్యంతో సహా అనేక ఆప్టిమైజేషన్ మెరుగుదలలు చేయబడ్డాయి.
ఈ ఆప్టిమైజేషన్లలో కొన్నింటిని నియంత్రించడానికి అదనపు ఎంపికలు ఇప్పుడు అందుబాటులో ఉన్నాయి, ప్రత్యేకించి -fsection- యాంకర్స్, ఇది ఒక చిహ్నానికి సంబంధించి స్థిరమైన వస్తువులను యాక్సెస్ చేయడానికి అనుమతిస్తుంది; -mpa- iterations=n , ఇది విధానపరమైన సంగ్రహణ పునరావృతాల సంఖ్యను డిఫాల్ట్ 2 నుండి మార్చడానికి అనుమతిస్తుంది; మరియు, -mpa-callcost-shortcall, ఇది మరింత ఉగ్రమైన విధానపరమైన సంగ్రహణను నిర్వహిస్తుంది, లింకర్ సుదీర్ఘ కాల్లను విశ్రాంతి తీసుకోగలదనే ఆశతో. అంతర్లీన అంచనాలు గుర్తించబడకపోతే ఈ చివరి ఎంపిక కోడ్ పరిమాణాన్ని పెంచుతుంది. - కింది AVR భాగాలకు కొత్త పరికర మద్దతు మద్దతు అందుబాటులో ఉంది: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DA28, AVR128DA32, 128DB48, AVR128DB64, మరియు AVRXNUMXDBXNUMX.
- ఉపసంహరించబడిన పరికర మద్దతు మద్దతు ఈ క్రింది AVR భాగాలకు అందుబాటులో లేదు: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612, ATA6613C, ATA6614C, ATA6616C, ATA6617Q, ATA664251
వెర్షన్ 2.29 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
- కంపైలర్ బిల్ట్-ఇన్ల కోసం హెడర్ ఫైల్, కంపైలర్ MISRA వంటి భాషా స్పెసిఫికేషన్లకు అనుగుణంగా ఉండేలా చూసుకోవడానికి, ది , నవీకరించబడింది. ఈ హెడర్లో __builtin_avr_nop() మరియు __builtin_avr_delay_cycles() వంటి అన్ని అంతర్నిర్మిత ఫంక్షన్ల ప్రోటోటైప్లు ఉన్నాయి. కొన్ని అంతర్నిర్మితాలు MISRA కంప్లైంట్ కాకపోవచ్చు; కంపైలర్ కమాండ్ లైన్కు నిర్వచించిన __XC_STRICT_MISRAని జోడించడం ద్వారా వీటిని విస్మరించవచ్చు. బిల్ట్-ఇన్లు మరియు వాటి డిక్లరేషన్లు స్థిర-వెడల్పు రకాలను ఉపయోగించడానికి నవీకరించబడ్డాయి.
వెర్షన్ 2.20
- కింది AVR భాగాలకు కొత్త పరికర మద్దతు మద్దతు అందుబాటులో ఉంది: ATTINY1624, ATTINY1626 మరియు ATTINY1627.
- మెరుగైన ఉత్తమ ఫిట్ కేటాయింపు కంపైలర్లోని ఉత్తమ ఫిట్ కేటాయింపు (BFA) మెరుగుపరచబడింది, తద్వారా మెరుగైన ఆప్టిమైజేషన్ను అనుమతించే క్రమంలో విభాగాలు కేటాయించబడతాయి. BFA ఇప్పుడు పేరు పెట్టబడిన అడ్రస్ స్పేస్లకు మద్దతిస్తుంది మరియు డేటా ప్రారంభీకరణను మెరుగ్గా నిర్వహిస్తుంది.
- మెరుగైన విధానపరమైన సంగ్రహణ విధానపరమైన సంగ్రహణ ఆప్టిమైజేషన్లు ఇప్పుడు మరిన్ని కోడ్ సీక్వెన్స్లలో నిర్వహించబడతాయి. లింకర్ చెత్త సేకరణ ప్రక్రియ గురించి ఆప్టిమైజేషన్ కోడ్కు తెలియజేయడం ద్వారా ఈ ఆప్టిమైజేషన్ కోడ్ పరిమాణాన్ని పెంచే మునుపటి పరిస్థితులు పరిష్కరించబడ్డాయి.
- AVR అసెంబ్లర్ లేకపోవడం ఈ పంపిణీతో AVR అసెంబ్లర్ చేర్చబడలేదు.
వెర్షన్ 2.19 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
వెర్షన్ 2.10
- కోడ్ కవరేజ్ ఈ విడుదలలో కోడ్ కవరేజ్ ఫీచర్ని కలిగి ఉంటుంది, ఇది ప్రాజెక్ట్ యొక్క సోర్స్ కోడ్ ఎంత వరకు అమలు చేయబడిందనే విశ్లేషణను సులభతరం చేస్తుంది. దీన్ని ఎనేబుల్ చేయడానికి -mcodecov=ram ఎంపికను ఉపయోగించండి. మీ హార్డ్వేర్లో ప్రోగ్రామ్ని అమలు చేసిన తర్వాత, కోడ్ కవరేజ్ సమాచారం పరికరంలో క్రోడీకరించబడుతుంది మరియు ఇది MPLAB X IDE ద్వారా కోడ్ కవరేజ్ ప్లగ్ఇన్ ద్వారా బదిలీ చేయబడుతుంది మరియు ప్రదర్శించబడుతుంది. ఈ ప్లగ్ఇన్పై సమాచారం కోసం IDE డాక్యుమెంటేషన్ని చూడండి.
కవరేజ్ విశ్లేషణ నుండి తదుపరి ఫంక్షన్లను మినహాయించడానికి #pragma nocodecov ఉపయోగించబడుతుంది. కవరేజ్ విశ్లేషణ నుండి మొత్తం ఫైల్ను మినహాయించడానికి ఆదర్శవంతంగా వ్యావహారికం ఫైల్ ప్రారంభంలో జోడించబడాలి. ప్రత్యామ్నాయంగా, కవరేజ్ విశ్లేషణ నుండి నిర్దిష్ట ఫంక్షన్ను మినహాయించడానికి __attribute__((nocodecov)) ఉపయోగించవచ్చు. - పరికర వివరణ ఫైళ్లు avr_chipinfo.html అనే కొత్త పరికర ఫైల్ కంపైలర్ డిస్ట్రిబ్యూషన్ యొక్క డాక్స్ డైరెక్టరీలో ఉంది. ఈ ఫైల్ కంపైలర్ ద్వారా మద్దతిచ్చే అన్ని పరికరాలను జాబితా చేస్తుంది. పరికరం పేరుపై క్లిక్ చేయండి మరియు అది ఆ పరికరం కోసం అనుమతించదగిన అన్ని కాన్ఫిగరేషన్ బిట్ సెట్టింగ్/విలువ జతలను చూపే పేజీని తెరుస్తుంది.ampలెస్.
- విధానపరమైన సంగ్రహణ విధానపరమైన సంగ్రహణ ఆప్టిమైజేషన్లు, అసెంబ్లీ కోడ్ యొక్క సాధారణ బ్లాక్లను ఆ బ్లాక్ యొక్క సంగ్రహించిన కాపీకి కాల్లతో భర్తీ చేస్తాయి, ఇవి కంపైలర్కు జోడించబడ్డాయి. ఇవి ఒక ప్రత్యేక అప్లికేషన్ ద్వారా నిర్వహించబడతాయి, ఇది స్థాయి 2, 3 లేదా s ఆప్టిమైజేషన్లను ఎంచుకున్నప్పుడు కంపైలర్ ద్వారా స్వయంచాలకంగా అమలు చేయబడుతుంది. ఈ ఆప్టిమైజేషన్లు కోడ్ పరిమాణాన్ని తగ్గిస్తాయి, అయితే అవి అమలు వేగం మరియు కోడ్ డీబగబిలిటీని తగ్గించవచ్చు. -mno-pa ఎంపికను ఉపయోగించి విధానపరమైన సంగ్రహణ అధిక ఆప్టిమైజేషన్ స్థాయిలలో నిలిపివేయబడుతుంది లేదా -mpaని ఉపయోగించడం ద్వారా తక్కువ ఆప్టిమైజేషన్ స్థాయిలలో (మీ లైసెన్స్కు లోబడి) ప్రారంభించబడుతుంది. ఇది -mno-pa-on-ని ఉపయోగించి ఆబ్జెక్ట్ ఫైల్ కోసం నిలిపివేయబడుతుందిfile=fileపేరు , లేదా -mno-pa-on- function=functionని ఉపయోగించడం ద్వారా ఒక ఫంక్షన్ కోసం నిలిపివేయబడింది. మీ సోర్స్ కోడ్ లోపల, ఫంక్షన్ యొక్క నిర్వచనంతో __attribute__((nopa))ని ఉపయోగించడం ద్వారా లేదా __attribute__((nopa,noinline))కి విస్తరించే __nopaని ఉపయోగించడం ద్వారా విధానపరమైన సంగ్రహణను నిలిపివేయవచ్చు మరియు తద్వారా ఫంక్షన్ ఇన్లైనింగ్ జరగకుండా నిరోధిస్తుంది. మరియు ఇన్లైన్ కోడ్ యొక్క సంగ్రహణ ఉంది.
- ప్రాగ్మాలో లాక్ బిట్ మద్దతు AVR లాక్ బిట్లను అలాగే ఇతర కాన్ఫిగరేషన్ బిట్లను పేర్కొనడానికి #pragma కాన్ఫిగర్ ఇప్పుడు ఉపయోగించబడుతుంది. ఈ ప్రాగ్మాతో ఉపయోగించడానికి సెట్టింగ్/విలువ జతల కోసం avr_chipinfo.html ఫైల్ను (పైన పేర్కొన్నది) తనిఖీ చేయండి.
- కింది భాగాలకు కొత్త పరికర మద్దతు మద్దతు అందుబాటులో ఉంది: AVR28DA128, AVR64DA128, AVR32DA128 మరియు AVR48DA128.
వెర్షన్ 2.05
- మీ బక్ కోసం మరిన్ని బిట్లు ఈ కంపైలర్ మరియు లైసెన్స్ మేనేజర్ యొక్క macOS వెర్షన్ ఇప్పుడు 64-బిట్ అప్లికేషన్. MacOS యొక్క ఇటీవలి సంస్కరణల్లో హెచ్చరికలు లేకుండా కంపైలర్ ఇన్స్టాల్ చేయబడుతుందని మరియు రన్ అవుతుందని ఇది నిర్ధారిస్తుంది.
- ప్రోగ్రామ్ మెమరీలో కాన్స్ట్ ఆబ్జెక్ట్లు కంపైలర్ ఇప్పుడు కాన్స్ట్-క్వాలిఫైడ్ ఆబ్జెక్ట్లను ప్రోగ్రామ్ ఫ్లాష్ మెమరీలో ఉంచవచ్చు, వీటిని RAMలో ఉంచడం కంటే. కంపైలర్ సవరించబడింది, తద్వారా కాన్స్ట్-క్వాలిఫైడ్ గ్లోబల్ డేటా ప్రోగ్రామ్ ఫ్లాష్ మెమరీలో నిల్వ చేయబడుతుంది మరియు ఈ డేటాను తగిన ప్రోగ్రామ్-మెమరీ సూచనలను ఉపయోగించి ప్రత్యక్షంగా మరియు పరోక్షంగా యాక్సెస్ చేయవచ్చు. ఈ కొత్త ఫీచర్ డిఫాల్ట్గా ప్రారంభించబడింది కానీ -mno-const-data-in-progmem ఎంపికను ఉపయోగించి నిలిపివేయవచ్చు. avrxmega3 మరియు avrtiny ఆర్కిటెక్చర్ల కోసం, ఈ ఫీచర్ అవసరం లేదు మరియు ఈ పరికరాల కోసం డేటా అడ్రస్ స్పేస్లో ప్రోగ్రామ్ మెమరీ మ్యాప్ చేయబడినందున, ఇది ఎల్లప్పుడూ నిలిపివేయబడుతుంది.
- ఈ కంపైలర్ యొక్క ఉచిత లైసెన్స్ లేని (ఉచిత) వెర్షన్లు ఇప్పుడు స్థాయి 2 వరకు మరియు దానితో సహా ఆప్టిమైజేషన్లను అనుమతిస్తాయి. ఇది ప్రామాణిక లైసెన్స్ని ఉపయోగించి గతంలో సాధ్యమయ్యే అవుట్పుట్కు సారూప్యమైన, ఒకేలా కానప్పటికీ, అవుట్పుట్ను అనుమతిస్తుంది.
- AVRASM2కి స్వాగతం 2-బిట్ పరికరాల కోసం AVRASM8 అసెంబ్లర్ ఇప్పుడు XC8 కంపైలర్ ఇన్స్టాలర్లో చేర్చబడింది. ఈ అసెంబ్లర్ XC8 కంపైలర్ ద్వారా ఉపయోగించబడదు, కానీ చేతితో వ్రాసిన అసెంబ్లీ మూలం ఆధారంగా ప్రాజెక్ట్లకు అందుబాటులో ఉంది.
- కింది భాగాలకు కొత్త పరికర మద్దతు మద్దతు అందుబాటులో ఉంది: ATMEGA1608, ATMEGA1609, ATMEGA808 మరియు ATMEGA809.
వెర్షన్ 2.00
- అగ్ర-స్థాయి డ్రైవర్ xc8-cc అని పిలువబడే ఒక కొత్త డ్రైవర్, ఇప్పుడు మునుపటి avr-gcc డ్రైవర్ మరియు xc8 డ్రైవర్కు పైన ఉంది మరియు ఇది లక్ష్య పరికరం ఎంపిక ఆధారంగా తగిన కంపైలర్కు కాల్ చేయవచ్చు. ఈ డ్రైవర్ GCC-శైలి ఎంపికలను అంగీకరిస్తుంది, అవి అమలు చేయబడే కంపైలర్కు అనువదించబడతాయి లేదా పంపబడతాయి. ఈ డ్రైవర్ ఏదైనా AVR లేదా PIC లక్ష్యంతో ఒకే విధమైన సెమాంటిక్స్తో ఒకే విధమైన ఎంపికల సెట్ను ఉపయోగించడానికి అనుమతిస్తుంది మరియు ఇది కంపైలర్ను అమలు చేయడానికి సిఫార్సు చేయబడిన మార్గం. అవసరమైతే, పాత avr-gcc డ్రైవర్ను మునుపటి కంపైలర్ సంస్కరణల్లో ఆమోదించిన పాత-శైలి ఎంపికలను ఉపయోగించి నేరుగా కాల్ చేయవచ్చు.
- కామన్ సి ఇంటర్ఫేస్ ఈ కంపైలర్ ఇప్పుడు MPLAB కామన్ సి ఇంటర్ఫేస్కు అనుగుణంగా ఉంటుంది, సోర్స్ కోడ్ను అన్ని MPLAB XC కంపైలర్లలో సులభంగా పోర్ట్ చేయడానికి అనుమతిస్తుంది. -mext=cci ఐచ్ఛికం ఈ లక్షణాన్ని అభ్యర్థిస్తుంది, అనేక భాషా పొడిగింపుల కోసం ప్రత్యామ్నాయ సింటాక్స్ను ప్రారంభిస్తుంది.
- కొత్త లైబ్రేరియన్ డ్రైవర్ మునుపటి PIC లైబ్రేరియన్ మరియు AVR avr-ar లైబ్రేరియన్ పైన కొత్త లైబ్రేరియన్ డ్రైవర్ ఉంచబడ్డాడు. ఈ డ్రైవర్ GCC-ఆర్కైవర్-శైలి ఎంపికలను అంగీకరిస్తుంది, అవి అమలు చేయబడే లైబ్రేరియన్ కోసం అనువదించబడతాయి లేదా పంపబడతాయి. కొత్త డ్రైవర్ ఏదైనా PIC లేదా AVR లైబ్రరీ ఫైల్ని సృష్టించడానికి లేదా మార్చడానికి సారూప్య సెమాంటిక్స్తో సారూప్య ఎంపికల సెట్ను ఉపయోగించబడుతుంది మరియు లైబ్రేరియన్ని పిలవడానికి ఇది సిఫార్సు చేయబడిన మార్గం. లెగసీ ప్రాజెక్ట్ల కోసం అవసరమైతే, మునుపటి కంపైలర్ వెర్షన్లలో అంగీకరించిన పాత-శైలి ఎంపికలను ఉపయోగించి మునుపటి లైబ్రేరియన్ను నేరుగా కాల్ చేయవచ్చు.
వలస సమస్యలు
కిందివి ఇప్పుడు కంపైలర్ ద్వారా విభిన్నంగా నిర్వహించబడుతున్న లక్షణాలు. ఈ కంపైలర్ వెర్షన్కి కోడ్ని పోర్ట్ చేస్తే, ఈ మార్పులకు మీ సోర్స్ కోడ్కి సవరణ అవసరం కావచ్చు. ఉపశీర్షికలలోని సంస్కరణ సంఖ్య అనుసరించే మార్పులకు మద్దతు ఇవ్వడానికి మొదటి కంపైలర్ సంస్కరణను సూచిస్తుంది.
వెర్షన్ 2.45
ఏదీ లేదు.
వెర్షన్ 2.41
సరికాని fma విధులు తీసివేయబడ్డాయి (XC8-2913) C99 ప్రామాణిక లైబ్రరీ ( ) ఒకే రౌండింగ్కు అనంతమైన ఖచ్చితత్వంతో గుణకారం-జోడించడాన్ని గణించలేదు, బదులుగా ప్రతి ఆపరేషన్తో రౌండింగ్ ఎర్రర్లు పేరుకుపోయాయి. ఈ విధులు సరఫరా చేయబడిన లైబ్రరీ నుండి తీసివేయబడ్డాయి.
వెర్షన్ 2.40
ఏదీ లేదు.
వెర్షన్ 2.39 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
వెర్షన్ 2.36
ఏదీ లేదు.
వెర్షన్ 2.35
- స్ట్రింగ్-టు బేస్ల హ్యాండ్లింగ్ (XC8-2420) ఇతర XC కంపైలర్లతో అనుగుణ్యతను నిర్ధారించడానికి, strtol() మొదలైన XC8 స్ట్రింగ్-టు ఫంక్షన్లు, పేర్కొన్న బేస్ 36 కంటే పెద్దగా ఉంటే ఇన్పుట్ స్ట్రింగ్ను మార్చడానికి ప్రయత్నించదు. మరియు బదులుగా సెట్ చేస్తుంది. C ప్రమాణం ఈ మూల విలువను అధిగమించినప్పుడు ఫంక్షన్ల ప్రవర్తనను పేర్కొనదు.
- తగని స్పీడ్ ఆప్టిమైజేషన్లు లెవల్ 3 ఆప్టిమైజేషన్లను (-O3) ఎంచుకునేటప్పుడు విధానపరమైన సంగ్రహణ ఆప్టిమైజేషన్లు ప్రారంభించబడ్డాయి. ఈ ఆప్టిమైజేషన్లు కోడ్ వేగం కారణంగా కోడ్ పరిమాణాన్ని తగ్గిస్తాయి, కాబట్టి అమలు చేయకూడదు. ఈ ఆప్టిమైజేషన్ స్థాయిని ఉపయోగించే ప్రాజెక్ట్లు ఈ విడుదలతో నిర్మించబడినప్పుడు కోడ్ పరిమాణం మరియు అమలు వేగంలో తేడాలను చూడవచ్చు.
- లైబ్రరీ కార్యాచరణ అనేక ప్రామాణిక C లైబ్రరీ ఫంక్షన్ల కోడ్ ఇప్పుడు మైక్రోచిప్ యొక్క యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీ నుండి వచ్చింది, ఇది మునుపటి avr-libc లైబ్రరీ అందించిన దానితో పోలిస్తే కొన్ని పరిస్థితులలో భిన్నమైన ప్రవర్తనను ప్రదర్శిస్తుంది. ఉదాహరణకుample, ఫ్లోట్-ఫార్మాట్ స్పెసిఫైయర్ల కోసం ఫార్మాట్ చేయబడిన IO మద్దతును ఆన్ చేయడానికి lprintf_flt లైబ్రరీ (-lprintf_flt ఎంపిక)లో లింక్ చేయవలసిన అవసరం లేదు. మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీ యొక్క స్మార్ట్ IO ఫీచర్లు ఈ ఎంపికను అనవసరంగా చేస్తాయి. అదనంగా, స్ట్రింగ్ మరియు మెమరీ ఫంక్షన్ల కోసం _P సఫిక్స్డ్ రొటీన్లను ఉపయోగించడం (ఉదా. strcpy_P() మొదలైనవి..) ఫ్లాష్లో కాన్స్ట్ స్ట్రింగ్లపై పనిచేయడం ఇకపై అవసరం లేదు. const-data-in-program-memory ఫీచర్ ప్రారంభించబడినప్పుడు ప్రామాణిక C రొటీన్లు (ఉదా strcpy() అటువంటి డేటాతో సరిగ్గా పని చేస్తాయి.
వెర్షన్ 2.32
ఏదీ లేదు.
వెర్షన్ 2.31
ఏదీ లేదు.
వెర్షన్ 2.30
ఏదీ లేదు.
వెర్షన్ 2.29 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
వెర్షన్ 2.2
DFP లేఅవుట్ మార్చబడింది కంపైలర్ ఇప్పుడు DFPలు (డివైస్ ఫ్యామిలీ ప్యాక్లు) ఉపయోగించే వేరొక లేఅవుట్ని ఊహిస్తుంది. పాత DFP ఈ విడుదలతో పని చేయకపోవచ్చు మరియు పాత కంపైలర్లు తాజా DFPలను ఉపయోగించలేరని దీని అర్థం.
వెర్షన్ 2.19 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
వెర్షన్ 2.10
ఏదీ లేదు
వెర్షన్ 2.05
ప్రోగ్రామ్ మెమరీలో కాన్స్ట్ ఆబ్జెక్ట్లు డిఫాల్ట్గా, కాన్స్ట్-క్వాలిఫైడ్ ఆబ్జెక్ట్లు ప్రోగ్రామ్ మెమరీలో ఉంచబడతాయి మరియు యాక్సెస్ చేయబడతాయి (ఇక్కడ వివరించిన విధంగా). ఇది మీ ప్రాజెక్ట్ యొక్క పరిమాణం మరియు అమలు వేగాన్ని ప్రభావితం చేస్తుంది, అయితే RAM వినియోగాన్ని తగ్గించాలి. అవసరమైతే -mno-const-data-in-progmem ఎంపికను ఉపయోగించి ఈ లక్షణాన్ని నిలిపివేయవచ్చు.
వెర్షన్ 2.00
- కాన్ఫిగరేషన్ ఫ్యూజులు పరికర కాన్ఫిగరేషన్ ఫ్యూజ్లు ఇప్పుడు ఫ్యూజ్ స్థితిని పేర్కొనడానికి సెట్టింగ్-విలువ జతలను అనుసరించి కాన్ఫిగరేషన్ ప్రాగ్మాను ఉపయోగించి ప్రోగ్రామ్ చేయబడతాయి, ఉదా #pragma config WDTON = సెట్ #ప్రాగ్మా కాన్ఫిగరేషన్ BODLEVEL = BODLEVEL_4V3
- సంపూర్ణ వస్తువులు మరియు విధులు CCI __at(చిరునామా) స్పెసిఫైయర్ ఉపయోగించి ఇప్పుడు ఆబ్జెక్ట్లు మరియు ఫంక్షన్లను నిర్దిష్ట చిరునామాలో మెమరీలో ఉంచవచ్చు, ఉదాహరణకుampలే:
- #చేర్చండి
int foobar __at(0x800100);
చార్ __at(0x250) getID(int ఆఫ్సెట్) {…}
ఈ స్పెసిఫైయర్కు ఆర్గ్యుమెంట్ తప్పనిసరిగా మొదటి బైట్ లేదా సూచన ఉంచబడే చిరునామాను సూచించే స్థిరాంకం అయి ఉండాలి. RAM చిరునామాలు 0x800000 ఆఫ్సెట్ని ఉపయోగించడం ద్వారా సూచించబడతాయి. ఈ లక్షణాన్ని ఉపయోగించడానికి CCIని ప్రారంభించండి.
- #చేర్చండి
- కొత్త అంతరాయ ఫంక్షన్ సింటాక్స్ C ఫంక్షన్లు అంతరాయ హ్యాండ్లర్లు అని సూచించడానికి కంపైలర్ ఇప్పుడు CCI __interrupt(num) స్పెసిఫైయర్ని అంగీకరిస్తుంది. స్పెసిఫైయర్ అంతరాయ సంఖ్యను తీసుకుంటుంది, ఉదాహరణకుample: #చేర్చండి శూన్యం __interrupt(SPI_STC_vect_num) spi_Isr(శూన్యం) { …}
స్థిర సమస్యలు
కిందివి కంపైలర్కు చేసిన దిద్దుబాట్లు. ఇవి రూపొందించబడిన కోడ్లోని బగ్లను సరిచేయవచ్చు లేదా కంపైలర్ యొక్క ఆపరేషన్ను వినియోగదారు గైడ్ ద్వారా ఉద్దేశించిన లేదా నిర్దేశించిన దానికి మార్చవచ్చు. ఉపశీర్షికలలోని సంస్కరణ సంఖ్య, అనుసరించే సమస్యలకు పరిష్కారాలను కలిగి ఉన్న మొదటి కంపైలర్ సంస్కరణను సూచిస్తుంది. శీర్షికలో బ్రాకెట్ చేయబడిన లేబుల్(లు) ట్రాకింగ్ డేటాబేస్లో సమస్య యొక్క గుర్తింపు. మీరు సపోర్ట్ని సంప్రదించవలసి వస్తే ఇవి ఉపయోగకరంగా ఉండవచ్చు.
పరికరంతో అనుబంధించబడిన పరికర కుటుంబ ప్యాక్ (DFP)లో కొన్ని పరికర-నిర్దిష్ట సమస్యలు సరిచేయబడ్డాయని గమనించండి. DFPలకు చేసిన మార్పుల సమాచారం కోసం మరియు తాజా ప్యాక్లను డౌన్లోడ్ చేయడానికి MPLAB ప్యాక్ మేనేజర్ని చూడండి.
వెర్షన్ 2.45
- రోమింగ్ లైసెన్స్ వైఫల్యం (XCLM-235) రోమింగ్ లైసెన్స్లు 2.28 కంటే తర్వాత glibc సంస్కరణలను ఉపయోగించి Linux ప్లాట్ఫారమ్లలో సరిగ్గా పని చేయడంలో విఫలమయ్యాయి.
- నిర్మాణాల శ్రేణులతో అంతర్గత లోపం (XC8-3069) నిర్మాణం యొక్క బహుళ-డైమెన్షనల్ శ్రేణి సభ్యులు ప్రాసెస్ చేయబడినప్పుడు, చిరునామా స్పేస్ క్వాలిఫైయర్ శ్రేణికి సరిగ్గా ప్రచారం చేయబడలేదు. ఇది అడ్రస్ స్పేస్ క్వాలిఫైయర్ సమాచారంలో అసమతుల్యత మరియు అంతర్గత కంపైలర్ ఎర్రర్కు దారితీసింది. ఈ పరిస్థితి సరిదిద్దబడింది.
- ప్రారంభించని స్ట్రీమ్లకు చెడ్డ వ్రాతలు (ML-353, XC8-3100) FDEV_SETUP_STREAM లేదా _init_stdout/_init_stderr ఉపయోగించి ప్రామాణిక అవుట్పుట్/ఎర్రర్ స్ట్రీమ్లను స్పష్టంగా సెటప్ చేయకుంటే, వాటికి వ్రాయడానికి ప్రయత్నించడం వలన ప్రవర్తన అస్పష్టంగా ఉంటుంది. ఇది perror() వంటి stdlib ఫంక్షన్ల నుండి వ్రాతలను కూడా ప్రభావితం చేసింది. ఈ స్ట్రీమ్లను ప్రారంభించే ముందు వాటికి వ్రాసిన ఏవైనా ఇప్పుడు విస్మరించబడతాయి.
- మద్దతు లేని మాడిఫైయర్ (XC8-2505) avr-libc లైబ్రరీ printf-శైలి మార్పిడి స్పెసిఫైయర్లలో * మాడిఫైయర్కు మద్దతు ఇవ్వలేదు, ఉదాహరణకుample "%.*f". ఇప్పుడు మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీ పరిచయంతో దీనికి మద్దతు ఉంది.
- బహుళ అన్ఇనిషియలైజ్డ్ హెచ్చరికలు (XC8-2409) ప్రారంభించబడని కాన్స్ట్ శ్రేణిని ఎదుర్కొన్నప్పుడు కంపైలర్ బహుళ సారూప్య హెచ్చరిక సందేశాలను జారీ చేస్తోంది. సందేశం ఒక్కసారి మాత్రమే జారీ చేయబడాలి, ఇప్పుడు ఈ పరిస్థితి ఏర్పడినప్పుడు ఇది జరుగుతుంది.
వెర్షన్ 2.41
- వెంచురా (XC8-3088)లో డాంగిల్ సమస్యలు కంపైలర్కు లైసెన్స్ ఇవ్వడానికి ఉపయోగించిన డాంగిల్లు macOS Ventura హోస్ట్లలో సరిగ్గా చదవబడకపోవచ్చు, ఫలితంగా లైసెన్సింగ్ వైఫల్యాలు ఏర్పడతాయి. XCLM లైసెన్స్ మేనేజర్కి మార్పులు ఈ సమస్యను సరి చేస్తాయి.
- మెమరీ కేటాయింపు యొక్క తప్పు సూచన (XC8-2925) సాధారణ డైనమిక్ మెమరీ కేటాయింపు అమలును ఉపయోగిస్తున్నప్పుడు అభ్యర్థించిన ప్రామాణిక లైబ్రరీ మెమరీ మేనేజ్మెంట్ ఫంక్షన్లను (malloc() et al) ఉపయోగించి మెమరీ యొక్క SIZE_MAX బైట్లను (లేదా దీనికి దగ్గరగా ఉన్న విలువ) కేటాయించడానికి ప్రయత్నించడం. NULL పాయింటర్ ఇప్పుడు తిరిగి ఇవ్వబడుతుంది మరియు అటువంటి పరిస్థితుల్లో ENOMEMకి తప్పుగా సెట్ చేయబడుతుంది.
- సరికాని fma ఫంక్షన్లు తీసివేయబడ్డాయి (XC8-2913) C99 స్టాండర్డ్ లైబ్రరీ fma()-ఫ్యామిలీ ఫంక్షన్లు ( ) ఒకే రౌండింగ్కు అనంతమైన ఖచ్చితత్వంతో గుణకారం-జోడించడాన్ని గణించలేదు, బదులుగా ప్రతి ఆపరేషన్తో రౌండింగ్ ఎర్రర్లు పేరుకుపోయాయి. ఈ విధులు సరఫరా చేయబడిన లైబ్రరీ నుండి తీసివేయబడ్డాయి.
- స్ట్రింగ్ కన్వర్షన్ యొక్క తప్పు నిర్వహణ (XC8-2921, XC8-2652) strtod() ద్వారా మార్పిడి కోసం 'సబ్జెక్ట్ సీక్వెన్స్' ఘాతాంక ఆకృతిలో ఫ్లోటింగ్-పాయింట్ నంబర్గా కనిపించే దానిని కలిగి ఉన్నప్పుడు మరియు e/E తర్వాత ఊహించని అక్షరం ఏర్పడింది. అక్షరం, ఆపై endptr అందించబడిన చోట, దానికి ఒక చిరునామా కేటాయించబడింది, అది e//E అక్షరాన్ని చూపుతూ ఉండాలి, అయితే అది మార్చబడలేదు. ఉదాహరణకుample, strtod(“100exx”, &ep) 100.00ని అందించాలి మరియు స్ట్రింగ్లోని “exx” భాగాన్ని సూచించడానికి epని సెట్ చేయాలి, అయితే ఫంక్షన్ సరైన విలువను తిరిగి ఇస్తుంది కానీ స్ట్రింగ్లోని “xx” భాగాన్ని సెట్ చేస్తుంది.
వెర్షన్ 2.40
- చాలా రిలాక్స్డ్ (XC8-2876) -mrelax ఎంపికను ఉపయోగిస్తున్నప్పుడు, కంపైలర్ కొన్ని విభాగాలను కలిపి కేటాయించడం లేదు, ఫలితంగా తక్కువ సరైన కోడ్ పరిమాణాలు ఉంటాయి. ఇది కొత్త MUSL లైబ్రరీలను ఉపయోగించిన కోడ్తో లేదా బలహీనమైన చిహ్నాలతో సంభవించి ఉండవచ్చు.
- హెచ్చరికలో పేర్కొన్న విధంగా మ్యాపింగ్ ఫీచర్ డిసేబుల్ చేయబడలేదు (XC8-2875) const-data-in-config-mapped-progmem ఫీచర్ ఎనేబుల్ చేయబడిన const-data-in-progmem ఫీచర్పై ఆధారపడి ఉంటుంది. const-data-in-config-mapped-progmem ఫీచర్ ఎంపికను ఉపయోగించి స్పష్టంగా ప్రారంభించబడితే మరియు const-data-in-progmem ఫీచర్ నిలిపివేయబడితే, const-data-in అని హెచ్చరిక సందేశం ఉన్నప్పటికీ, లింక్ దశ విఫలమైంది -config-mapped-progmem ఫీచర్ స్వయంచాలకంగా నిలిపివేయబడింది, ఇది పూర్తిగా సరైనది కాదు. ఈ పరిస్థితిలో const-data-in-config-mapped-progmem ఫీచర్ ఇప్పుడు పూర్తిగా నిలిపివేయబడింది.
- NVMCTRL (XC8-2848)ని సరిగ్గా యాక్సెస్ చేయడానికి DFP మార్పులు AVR64EA పరికరాలు ఉపయోగించే రన్టైమ్ స్టార్టప్ కోడ్, NVMCTRL రిజిస్టర్ కాన్ఫిగరేషన్ చేంజ్ ప్రొటెక్షన్ (CCP) కింద ఉందని మరియు IO SFRని ఉపయోగించిన పేజీకి సెట్ చేయలేకపోయిందని పరిగణనలోకి తీసుకోలేదు. const-data-in-config-mapped-progmem కంపైలర్ ఫీచర్ ద్వారా. AVR-Ex_DFP వెర్షన్ 2.2.55లో చేసిన మార్పులు ఈ రిజిస్టర్కి సరిగ్గా వ్రాయడానికి రన్టైమ్ స్టార్టప్ కోడ్ని అనుమతిస్తుంది.
- ఫ్లాష్ మ్యాపింగ్ను నివారించడానికి DFP మార్పులు (XC8-2847) AVR128DA28/32/48/64 సిలికాన్ ఎర్రాటా (DS80000882)లో నివేదించబడిన ఫ్లాష్-మ్యాపింగ్ పరికర ఫీచర్తో సమస్య కోసం ఒక పని అమలు చేయబడింది. const-data-in-config-mapped-progmem కంపైలర్ ఫీచర్ ప్రభావిత పరికరాలకు డిఫాల్ట్గా వర్తించదు మరియు ఈ మార్పు AVR-Dx_DFP వెర్షన్ 2.2.160లో కనిపిస్తుంది.
- sinhf లేదా coshf (XC8-2834)తో బిల్డ్ ఎర్రర్ sinhf() లేదా coshf() లైబ్రరీ ఫంక్షన్లను ఉపయోగించడానికి చేసిన ప్రయత్నాల ఫలితంగా లింక్ లోపం ఏర్పడి, నిర్వచించబడని సూచనను వివరిస్తుంది. సూచించిన తప్పిపోయిన ఫంక్షన్ ఇప్పుడు కంపైలర్ పంపిణీలో చేర్చబడింది.
- nopa (XC8-2833)తో ఎర్రర్లను రూపొందించండి, దాని అసెంబ్లర్ పేరు __asm__()ని ఉపయోగించి సూచించబడిన ఫంక్షన్తో నోపా లక్షణాన్ని ఉపయోగించడం అసెంబ్లర్ నుండి ఎర్రర్ సందేశాలను ప్రేరేపించింది. ఈ కలయిక సాధ్యం కాదు.
- పాయింటర్ ఆర్గ్యుమెంట్లతో వేరియడిక్ ఫంక్షన్ వైఫల్యం (XC8-2755, XC8-2731) వేరియబుల్ ఆర్గ్యుమెంట్లతో కూడిన ఫంక్షన్లు 24-బిట్ (__memx రకం) పాయింటర్లను వేరియబుల్ ఆర్గ్యుమెంట్ లిస్ట్లో కాన్స్ట్-డేటా-ఇన్-ప్రోగ్మెమ్ ఫీచర్ అయినప్పుడు పాస్ చేయాలని ఆశిస్తున్నాయి. ప్రారంభించబడింది. డేటా మెమరీకి పాయింటర్లుగా ఉన్న ఆర్గ్యుమెంట్లు 16-బిట్ ఆబ్జెక్ట్లుగా పాస్ చేయబడుతున్నాయి, చివరికి అవి చదవబడినప్పుడు కోడ్ వైఫల్యానికి కారణమవుతుంది. const-data-in-progmem ఫీచర్ ప్రారంభించబడినప్పుడు, అన్ని 16-బిట్ పాయింటర్ ఆర్గ్యుమెంట్లు ఇప్పుడు 24-బిట్ పాయింటర్లుగా మార్చబడతాయి.
- strtoxxx లైబ్రరీ ఫంక్షన్లు విఫలమవుతున్నాయి (XC8-2620) const-data-in-progmem ఫీచర్ ప్రారంభించబడినప్పుడు, ప్రోగ్రామ్ మెమరీలో లేని సోర్స్ స్ట్రింగ్ ఆర్గ్యుమెంట్ల కోసం strtoxxx లైబ్రరీ ఫంక్షన్లలోని endptr పరామితి సరిగ్గా నవీకరించబడలేదు.
- చెల్లని కాస్ట్ల కోసం హెచ్చరికలు (XC8-2612) const-in-progmem ఫీచర్ ప్రారంభించబడితే మరియు స్ట్రింగ్ లిటరల్ చిరునామా స్పష్టంగా డేటా అడ్రస్ స్పేస్కు ప్రసారం చేయబడితే (కానిస్ట్ క్వాలిఫైయర్ని డ్రాప్ చేయడం) కంపైలర్ ఇప్పుడు ఎర్రర్ను జారీ చేస్తుంది.ample, (uint8_t *) “హలో వరల్డ్!” . కాన్స్ట్ డేటా పాయింటర్ డేటా అడ్రస్ స్పేస్కి స్పష్టంగా ప్రసారం చేయబడినప్పుడు చిరునామా చెల్లుబాటు కాకపోతే హెచ్చరిక సమస్య.
- అన్ఇనిషియలైజ్డ్ కాన్స్ట్ ఆబ్జెక్ట్ల ప్లేస్మెంట్ (XC8-2408) Uninitialized మరియు const అస్థిర వస్తువులు const
వారి ప్రోగ్రామ్ మెమరీ మొత్తం లేదా కొంత భాగాన్ని డేటా అడ్రస్ స్పేస్లో మ్యాప్ చేసే పరికరాలలో ప్రోగ్రామ్ మెమరీలో ఉంచబడలేదు. ఈ పరికరాల కోసం, అటువంటి వస్తువులు ఇప్పుడు ప్రోగ్రామ్ మెమరీలో ఉంచబడ్డాయి, వాటి ఆపరేషన్ ఇతర పరికరాలకు అనుగుణంగా ఉంటుంది.
వెర్షన్ 2.39 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
వెర్షన్ 2.36
ఆలస్యం చేస్తున్నప్పుడు లోపం (XC8-2774) డిఫాల్ట్ ఫ్రీ మోడ్ ఆప్టిమైజేషన్లలో స్వల్ప మార్పులు ఆపరాండ్ ఎక్స్ప్రెషన్లను ఆలస్యం అంతర్నిర్మిత ఫంక్షన్లకు స్థిరంగా మడతపెట్టడాన్ని నిరోధించాయి, ఫలితంగా అవి స్థిరం కానివిగా పరిగణించబడతాయి మరియు లోపాన్ని ప్రేరేపిస్తాయి: __builtin_avr_delay_cycles కంపైల్ సమయ పూర్ణాంకాన్ని ఆశించింది. స్థిరమైన.
వెర్షన్ 2.35
- __at (XC8-2653)ని ఉపయోగించి ఒకే పేరుతో మరియు __at()ని ఉపయోగించి ఒక విభాగంలో బహుళ ఆబ్జెక్ట్ల స్థలాల యొక్క నిరంతర కేటాయింపు సరిగ్గా పని చేయలేదు. ఉదాహరణకుampలే:
const char arr1[] __attribute__((section(“.mysec”))) __at (0x500) = {0xAB, 0xCD}; const char arr2[] __attribute__((విభాగం(“.mysec”))) = {0xEF, 0xFE}; arr2 తర్వాత వెంటనే arr1ని ఉంచాలి - సెక్షన్ ప్రారంభ చిరునామాలను పేర్కొనడం (XC8-2650) -Wl,–section-start ఎంపిక సెక్షన్లను నామినేటెడ్ ప్రారంభ చిరునామాలో ఉంచడంలో నిశ్శబ్దంగా విఫలమైంది. ఏదైనా అనుకూల-పేరు ఉన్న విభాగాల కోసం ఈ సమస్య పరిష్కరించబడింది; అయినప్పటికీ, ఇది .text లేదా .bss వంటి ఏ ప్రామాణిక విభాగాలకు పని చేయదు, వీటిని తప్పనిసరిగా -Wl,-T ఎంపికను ఉపయోగించి ఉంచాలి. విశ్రాంతి తీసుకునేటప్పుడు లింకర్ క్రాష్ అవుతుంది (XC8-2647) -mrelax ఆప్టిమైజేషన్ ప్రారంభించబడినప్పుడు మరియు అందుబాటులో ఉన్న మెమరీకి సరిపోని కోడ్ లేదా డేటా విభాగాలు ఉన్నప్పుడు, లింకర్ క్రాష్ అవుతుంది. ఇప్పుడు, అటువంటి పరిస్థితిలో, బదులుగా దోష సందేశాలు జారీ చేయబడ్డాయి.
- నో-ఫాలింగ్-బ్యాక్ లేదు (XC8-2646) –nofallback ఎంపిక సరిగ్గా అమలు చేయబడలేదు లేదా డాక్యుమెంట్ చేయబడలేదు. కంపైలర్ లైసెన్స్ లేనిది అయితే కంపైలర్ తక్కువ ఆప్టిమైజేషన్ సెట్టింగ్కు తిరిగి రాదని మరియు బదులుగా లోపాన్ని జారీ చేస్తుందని నిర్ధారించడానికి ఇప్పుడు దీనిని ఎంచుకోవచ్చు.
- తగని స్పీడ్ ఆప్టిమైజేషన్లు (XC8-2637) లెవల్ 3 ఆప్టిమైజేషన్లను (-O3) ఎంచుకున్నప్పుడు విధానపరమైన సంగ్రహణ ఆప్టిమైజేషన్లు ప్రారంభించబడ్డాయి. ఈ ఆప్టిమైజేషన్లు కోడ్ వేగం కారణంగా కోడ్ పరిమాణాన్ని తగ్గిస్తాయి, కాబట్టి అమలు చేయకూడదు.
- చెడ్డ EEPROM యాక్సెస్ (XC8-2629) – mconst-data-in-progmem ఎంపిక ప్రారంభించబడినప్పుడు Xmega పరికరాలలో eeprom_read_block రొటీన్ సరిగ్గా పని చేయలేదు (ఇది డిఫాల్ట్ స్థితి), ఫలితంగా EEPROM మెమరీ సరిగ్గా చదవబడదు.
- చెల్లని మెమరీ కేటాయింపు (XC8-2593, XC8-2651) -Ttext లేదా -Tdata లింకర్ ఎంపిక (ఉదా కోసంamp-Wl డ్రైవర్ ఎంపికను ఉపయోగించి le పాస్ చేయబడింది) పేర్కొనబడింది, సంబంధిత టెక్స్ట్/డేటా రీజియన్ మూలం నవీకరించబడింది; అయినప్పటికీ, ముగింపు చిరునామా తదనుగుణంగా సర్దుబాటు చేయబడలేదు, ఇది లక్ష్యం పరికరం యొక్క మెమరీ పరిధిని అధిగమించడానికి దారితీసింది.
- ఓవర్-ఆట్రిబ్యూటెడ్ ఫంక్షన్తో క్రాష్ (XC8-2580) ఇంటర్ప్ట్, సిగ్నల్ లేదా nmi అట్రిబ్యూట్లలో ఒకటి కంటే ఎక్కువ ఉపయోగించి ఫంక్షన్ ప్రకటించబడితే కంపైలర్ క్రాష్ అవుతుంది, ఉదా, __attribute__((__signal__, __interrupt__)).
- చెల్లని ATtiny అంతరాయ కోడ్ (XC8-2465) ATtiny పరికరాల కోసం రూపొందించినప్పుడు మరియు ఆప్టిమైజేషన్లు నిలిపివేయబడినప్పుడు (-O0), అంతరాయ ఫంక్షన్లు ఆపరేండ్ని పరిధికి వెలుపల ట్రిగ్గర్ చేసి ఉండవచ్చు
- ఎంపికలు పాస్ చేయబడలేదు (XC8-2452) బహుళ, కామాతో వేరు చేయబడిన లింకర్ ఎంపికలతో -Wl ఎంపికను ఉపయోగిస్తున్నప్పుడు, లింకర్ ఎంపికలన్నీ లింకర్కు పంపబడవు.
- ప్రోగ్రామ్ మెమరీని పరోక్షంగా చదవడంలో లోపం (XC8-2450) కొన్ని సందర్భాల్లో, పాయింటర్ నుండి ప్రోగ్రామ్ మెమరీకి రెండు బైట్ విలువను చదివేటప్పుడు కంపైలర్ అంతర్గత లోపాన్ని (గుర్తించలేని insn ) ఉత్పత్తి చేసింది.
వెర్షన్ 2.32
లైబ్రరీ యొక్క రెండవ యాక్సెస్ విఫలమవుతుంది (XC8-2381) ఇప్పటికే ఉన్న లైబ్రరీ ఆర్కైవ్ను యాక్సెస్ చేయడానికి xc8-ar.exe లైబ్రరీ ఆర్కైవర్ యొక్క విండోస్ వెర్షన్ను రెండవసారి ప్రారంభించడం లోపం సందేశం పేరు మార్చలేకపోవటంతో విఫలమై ఉండవచ్చు.
వెర్షన్ 2.31
వివరించలేని కంపైలర్ వైఫల్యాలు (XC8-2367) విండోస్ ప్లాట్ఫారమ్లపై నడుస్తున్నప్పుడు సిస్టమ్ తాత్కాలిక డైరెక్టరీని డాట్ '.' అక్షరం, కంపైలర్ అమలు చేయడంలో విఫలమై ఉండవచ్చు.
వెర్షన్ 2.30
- గ్లోబల్ లేబుల్స్ అవుట్లైన్ చేసిన తర్వాత తప్పుగా ఉంచబడ్డాయి (XC8-2299) విధానపరమైన సంగ్రహణ ద్వారా కారకం చేయబడిన అసెంబ్లీ సీక్వెన్స్లలో గ్లోబల్ లేబుల్లను ఉంచే చేతితో వ్రాసిన అసెంబ్లీ కోడ్ సరిగ్గా రీపోజిషన్ చేయబడి ఉండకపోవచ్చు.
- రిలాక్సింగ్ క్రాష్ (XC8-2287) -mrelax ఎంపికను ఉపయోగించడం వలన టెయిల్ జంప్ రిలాక్సేషన్ ఆప్టిమైజేషన్లు సెక్షన్ చివరిలో లేని రెట్ సూచనలను తొలగించడానికి ప్రయత్నించినప్పుడు లింకర్ క్రాష్ అయ్యేలా చేసి ఉండవచ్చు.
- లేబుల్లను విలువలుగా ఆప్టిమైజ్ చేస్తున్నప్పుడు క్రాష్ (XC8-2282) కోడ్ని ఉపయోగించి "లేబుల్లను విలువలుగా" GNU C భాష పొడిగింపు విధానపరమైన సంగ్రహణ ఆప్టిమైజేషన్లను క్రాష్ చేయడానికి కారణమై ఉండవచ్చు, శ్రేణి పరిధుల పరిష్కార లోపంతో.
- అంత const కాదు (XC8-2271) strstr() మరియు ఇతర ఫంక్షన్ల కోసం ప్రోటోటైప్లు const -mconst-data-in-progmem ఫీచర్ నిలిపివేయబడినప్పుడు తిరిగి వచ్చిన స్ట్రింగ్ పాయింటర్లపై ప్రామాణికం కాని క్వాలిఫైయర్ను పేర్కొనవద్దు. avrxmega3 మరియు avrtiny పరికరాలతో, ఈ ఫీచర్ శాశ్వతంగా ప్రారంభించబడిందని గమనించండి.
- లాస్ట్ ఇనిషియలైజర్లు (XC8-2269) అనువాద యూనిట్లోని ఒకటి కంటే ఎక్కువ వేరియబుల్లను ఒక విభాగంలో ఉంచినప్పుడు (__విభాగం లేదా __attribute__((విభాగం))) , మరియు అటువంటి మొదటి వేరియబుల్ సున్నా ప్రారంభించబడింది లేదా ఇనిషియలైజర్ను కలిగి లేనప్పుడు అదే విభాగంలో ఉంచబడిన అదే అనువాద యూనిట్లోని ఇతర వేరియబుల్స్ పోయాయి.
వెర్షన్ 2.29 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
వెర్షన్ 2.20
- దీర్ఘ ఆదేశాలతో లోపం (XC8-1983) AVR లక్ష్యాన్ని ఉపయోగిస్తున్నప్పుడు, కమాండ్ లైన్ చాలా పెద్దది మరియు కోట్లు, బ్యాక్స్లాష్లు మొదలైన ప్రత్యేక అక్షరాలను కలిగి ఉన్నట్లయితే, కంపైలర్ ఫైల్ కనుగొనబడలేదు లోపంతో ఆగిపోయి ఉండవచ్చు.
- కేటాయించని రోడేటా విభాగం (XC8-1920) AVR లింకర్ avrxmega3 మరియు avrtiny ఆర్కిటెక్చర్ల కోసం నిర్మించేటప్పుడు కస్టమ్ రోడేటా విభాగాల కోసం మెమరీని కేటాయించడంలో విఫలమైంది, ఇది మెమరీ అతివ్యాప్తి లోపాలను కలిగిస్తుంది.
వెర్షన్ 2.19 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
వెర్షన్ 2.10
- పునరావాస వైఫల్యాలు (XC8-1891) లింకర్ సడలింపు తర్వాత విభాగాల మధ్య మెమరీ 'రంధ్రాలను' వదిలివేయడం ఉత్తమ ఫిట్ కేటాయింపుదారు. మెమరీని ఫ్రాగ్మెంటింగ్ చేయడం పక్కన పెడితే, ఇది pc-రిలేటివ్ జంప్లకు సంబంధించిన లింకర్ రీలొకేషన్ వైఫల్యాలు లేదా కాల్లు పరిధి దాటిపోయే అవకాశాన్ని పెంచింది.
- సడలింపు ద్వారా రూపాంతరం చెందని సూచనలు (XC8-1889) జంప్ లేదా కాల్ సూచనల కోసం లింకర్ సడలింపు జరగలేదు, దీని లక్ష్యాలను సడలించినట్లయితే చేరుకోవచ్చు.
- తప్పిపోయింది కార్యాచరణ (XC8E-388) నుండి అనేక నిర్వచనాలు , clock_div_t మరియు clock_prescale_set() వంటివి ATmega324PB, ATmega328PB, ATtiny441 మరియు ATtiny841తో సహా పరికరాల కోసం నిర్వచించబడలేదు.
- మాక్రోలు లేవు ప్రీప్రాసెసర్ మాక్రోలు _XC8_MODE_, __XC8_VERSION, __XC , మరియు __XC8 కంపైలర్ ద్వారా స్వయంచాలకంగా నిర్వచించబడ్డాయి. ఇవి ఇప్పుడు అందుబాటులో ఉన్నాయి.
వెర్షన్ 2.05
- అంతర్గత కంపైలర్ లోపం (XC8-1822) Windows కింద నిర్మిస్తున్నప్పుడు, కోడ్ని ఆప్టిమైజ్ చేసేటప్పుడు అంతర్గత కంపైలర్ లోపం ఏర్పడి ఉండవచ్చు.
- RAM ఓవర్ఫ్లో కనుగొనబడలేదు (XC8-1800, XC8-1796) అందుబాటులో ఉన్న RAMని మించిన ప్రోగ్రామ్లు కొన్ని సందర్భాల్లో కంపైలర్ ద్వారా గుర్తించబడలేదు, ఫలితంగా రన్టైమ్ కోడ్ వైఫల్యం ఏర్పడింది.
- విస్మరించబడిన ఫ్లాష్ మెమరీ (XC8-1792) avrxmega3 మరియు avrtiny పరికరాల కోసం, ఫ్లాష్ మెమరీలోని భాగాలు MPLAB X IDE ద్వారా ప్రోగ్రామ్ చేయబడలేదు.
- మెయిన్ని అమలు చేయడంలో వైఫల్యం (XC8-1788) ప్రోగ్రామ్లో ఎటువంటి గ్లోబల్ వేరియబుల్స్ నిర్వచించబడని కొన్ని సందర్భాల్లో, రన్టైమ్ స్టార్టప్ కోడ్ నిష్క్రమించలేదు మరియు మెయిన్() ఫంక్షన్ని చేరుకోలేదు.
- తప్పు మెమరీ సమాచారం (XC8-1787) avrxmega3 మరియు avrtiny పరికరాల కోసం, ప్రోగ్రామ్ మెమరీకి బదులుగా రీడ్-ఓన్లీ డేటా RAMని వినియోగిస్తోందని avr-సైజ్ ప్రోగ్రామ్ నివేదిస్తోంది.
- తప్పు ప్రోగ్రామ్ మెమరీ రీడ్ (XC8-1783) డేటా అడ్రస్ స్పేస్లో ప్రోగ్రామ్ మెమరీని మ్యాప్ చేసిన పరికరాల కోసం కంపైల్ చేయబడిన ప్రాజెక్ట్లు మరియు PROGMEM స్థూల/లక్షణాన్ని ఉపయోగించి ఆబ్జెక్ట్లు తప్పు చిరునామా నుండి ఈ వస్తువులను చదివి ఉండవచ్చు.
- అట్రిబ్యూట్లతో అంతర్గత లోపం (XC8-1773) మీరు పాయింటర్ పేరు మరియు డీరిఫరెన్స్ చేసిన రకానికి మధ్య __at() లేదా అట్రిబ్యూట్() టోకెన్లతో పాయింటర్ ఆబ్జెక్ట్లను నిర్వచించినట్లయితే అంతర్గత లోపం ఏర్పడింది.ample, చార్ * __at(0x800150) cp; అలాంటి కోడ్ ఎదురైతే ఇప్పుడు హెచ్చరిక జారీ చేయబడుతుంది.
- ప్రధాన (XC8-1780, XC8-1767, XC8-1754) అమలు చేయడంలో వైఫల్యం EEPROM వేరియబుల్లను ఉపయోగించడం లేదా కాన్ఫిగ్ ప్రాగ్మాను ఉపయోగించి ఫ్యూజ్లను నిర్వచించడం తప్పు డేటా ప్రారంభానికి కారణమై ఉండవచ్చు మరియు/లేదా రన్టైమ్ స్టార్టప్ కోడ్లో ప్రోగ్రామ్ ఎగ్జిక్యూషన్ను లాక్ చేసి ఉండవచ్చు. )
- చిన్న పరికరాలతో ఫ్యూజ్ లోపం (XC8-1778, XC8-1742) attiny4/5/9/10/20/40/XNUMX/XNUMX పరికరాలు ఫ్యూజ్లను నిర్వచించే కోడ్ను రూపొందించడానికి ప్రయత్నించినప్పుడు లింకర్ ఎర్రర్లకు దారితీసే వాటి హెడర్ ఫైల్లలో తప్పు ఫ్యూజ్ పొడవును కలిగి ఉన్నాయి. .
- సెగ్మెంటేషన్ లోపం (XC8-1777) అడపాదడపా విభజన లోపం సరిదిద్దబడింది.
- అసెంబ్లర్ క్రాష్ (XC8-1761) ఉబుంటు 18 కింద కంపైలర్ రన్ చేయబడినప్పుడు avr-as అసెంబ్లర్ క్రాష్ అయి ఉండవచ్చు.
- ఆబ్జెక్ట్లు క్లియర్ చేయబడలేదు (XC8-1752) రన్టైమ్ స్టార్టప్ కోడ్ ద్వారా ప్రారంభించబడని స్టాటిక్ స్టోరేజ్ వ్యవధి ఆబ్జెక్ట్లు క్లియర్ చేయబడి ఉండకపోవచ్చు.
- వైరుధ్య పరికర నిర్దేశాలు విస్మరించబడ్డాయి (XC8-1749) బహుళ పరికర నిర్దేశక ఎంపికలను ఉపయోగించినప్పుడు మరియు వివిధ పరికరాలను సూచించినప్పుడు కంపైలర్ లోపాన్ని సృష్టించడం లేదు.
- కుప్ప ద్వారా మెమరీ కరప్షన్ (XC8-1748) __heap_start చిహ్నం తప్పుగా సెట్ చేయబడుతోంది, దీని ఫలితంగా సాధారణ వేరియబుల్స్ కుప్ప ద్వారా పాడయ్యే అవకాశం ఉంది.
- లింకర్ రీలొకేషన్ ఎర్రర్ (XC8-1739) కోడ్లో rjmp లేదా rcall సరిగ్గా 4k బైట్ల దూరంలో ఉన్న లక్ష్యాన్ని కలిగి ఉన్నప్పుడు లింకర్ రీలొకేషన్ ఎర్రర్ ఏర్పడి ఉండవచ్చు.
వెర్షన్ 2.00
ఏదీ లేదు.
తెలిసిన సమస్యలు
కంపైలర్ యొక్క ఆపరేషన్లో క్రింది పరిమితులు ఉన్నాయి. ఇవి సాధారణ కోడింగ్ పరిమితులు కావచ్చు లేదా వినియోగదారు మాన్యువల్లో ఉన్న సమాచారం నుండి విచలనాలు కావచ్చు. శీర్షికలో బ్రాకెట్ చేయబడిన లేబుల్(లు) ట్రాకింగ్ డేటాబేస్లో సమస్య యొక్క గుర్తింపు. మీరు సపోర్ట్ని సంప్రదించవలసి వస్తే ఇది ప్రయోజనకరంగా ఉండవచ్చు. లేబుల్లు లేని అంశాలు మోడీ కార్యనిర్వహణను వివరించే పరిమితులు మరియు అవి శాశ్వతంగా అమలులో ఉండే అవకాశం ఉంది.
MPLAB X IDE ఇంటిగ్రేషన్
- MPLAB IDE ఇంటిగ్రేషన్ MPLAB IDE నుండి కంపైలర్ని ఉపయోగించాలంటే, కంపైలర్ని ఇన్స్టాల్ చేసే ముందు మీరు తప్పనిసరిగా MPLAB IDEని ఇన్స్టాల్ చేయాలి.
- అర్రే డీబగ్ సమాచారం (XC8-3157) కంపైలర్ ద్వారా ఉత్పత్తి చేయబడిన డీబగ్ సమాచారం __memx చిరునామా స్థలంలో శ్రేణుల కోసం ఆబ్జెక్ట్ రకాన్ని ఖచ్చితంగా తెలియజేయదు. ఇది IDEలో ఆబ్జెక్ట్ని గమనించడాన్ని నిరోధిస్తుంది.
కోడ్ జనరేషన్
- సెగ్ఫాల్ట్ విత్ సెక్షన్-యాంకర్స్ ఆప్షన్ (XC8-3045) ప్రోగ్రామ్ వేరియబుల్ ఆర్గ్యుమెంట్ లిస్ట్లతో ఫంక్షన్లను నిర్వచిస్తుంది మరియు -fsection-anchors ఎంపికను ఉపయోగిస్తుంది, ఇది అంతర్గత కంపైలర్ లోపాన్ని ప్రేరేపించి ఉండవచ్చు: సెగ్మెంటేషన్ లోపం
- డీబగ్ సమాచారం సమకాలీకరించబడలేదు (XC8-2948) లింకర్ సడలింపు ఆప్టిమైజేషన్లు సూచనలను కుదించినప్పుడు (ఉదా కోసంampఆర్కాల్ సూచనలకు కాల్ చేయండి), ఒక విభాగంలో ఒకటి కంటే ఎక్కువ ష్రింక్ ఆపరేషన్లు జరుగుతున్నప్పుడు చిరునామా మ్యాపింగ్లకు సోర్స్ లైన్ సింక్లో ఉండకపోవచ్చు. దిగువ మాజీలోampఅయితే, ఫూకి రెండు కాల్లు ఉన్నాయి, అవి సాపేక్ష కాల్లకు రిలాక్స్గా ఉంటాయి.
- PA మెమరీ కేటాయింపు వైఫల్యం (XC8-2881) విధానపరమైన సంగ్రహణ ఆప్టిమైజర్లను ఉపయోగిస్తున్నప్పుడు, పరికరంలో అందుబాటులో ఉన్న ప్రోగ్రామ్ మెమరీకి కోడ్ పరిమాణం దగ్గరగా ఉన్నప్పుడు లింకర్ మెమరీ కేటాయింపు లోపాలను నివేదించవచ్చు, అయినప్పటికీ ప్రోగ్రామ్ అందుబాటులో ఉన్న మెమరీని ఫిట్ చేయగలదు. స్థలం.
- అంత స్మార్ట్ స్మార్ట్-IO (XC8-2872) కంపైలర్ యొక్క స్మార్ట్-io ఫీచర్ const-data-in-progmem ఫీచర్ డిసేబుల్ చేయబడి ఉంటే లేదా పరికరం మొత్తం కలిగి ఉన్నట్లయితే snprintf ఫంక్షన్ కోసం చెల్లుబాటు అయ్యే కానీ ఉప-ఆప్టిమల్ కోడ్ను ఉత్పత్తి చేస్తుంది. డేటా మెమరీలోకి ఫ్లాష్ మ్యాప్ చేయబడింది.
- తక్కువ స్మార్ట్ స్మార్ట్-IO (XC8-2869) కంపైలర్ యొక్క స్మార్ట్-io ఫీచర్ -flto మరియు -fno-builtin ఎంపికలు రెండింటినీ ఉపయోగించినప్పుడు చెల్లుబాటు అయ్యే కానీ ఉప-ఆప్టిమల్ కోడ్ను ఉత్పత్తి చేస్తుంది.
- సబ్ప్టిమల్ రీడ్-ఓన్లీ డేటా ప్లేస్మెంట్ (XC8-2849) లింకర్కు ప్రస్తుతం APPCODE మరియు APPDATA మెమరీ విభాగాలు లేదా మెమరీ మ్యాప్లో [No-]చదివే సమయంలో-వ్రాయడం విభాగాల గురించి తెలియదు. ఫలితంగా, లింకర్ మెమరీలో అనుచితమైన ప్రాంతంలో చదవడానికి మాత్రమే డేటాను కేటాయించే అవకాశం ఉంది. const-data-in-progmem ఫీచర్ ఎనేబుల్ చేయబడితే, ప్రత్యేకించి const-data-in-config-mapped-progmem ఫీచర్ కూడా ప్రారంభించబడితే, డేటా మిస్ ప్లేస్ అయ్యే అవకాశం పెరుగుతుంది. అవసరమైతే ఈ లక్షణాలను నిలిపివేయవచ్చు.
- ఆబ్జెక్ట్ ఫైల్ ప్రాసెసింగ్ ఆర్డర్ (XC8-2863) లింకర్ ద్వారా ఆబ్జెక్ట్ ఫైల్లు ప్రాసెస్ చేయబడే క్రమం విధానపరమైన సంగ్రహణ ఆప్టిమైజేషన్ల (-mpa ఎంపిక) వినియోగం ఆధారంగా భిన్నంగా ఉండవచ్చు. ఇది బహుళ మాడ్యూళ్లలో బలహీనమైన ఫంక్షన్లను నిర్వచించే కోడ్ను మాత్రమే ప్రభావితం చేస్తుంది.
- సంపూర్ణ (XC8-2777)తో లింకర్ లోపం RAM ప్రారంభంలో ఒక చిరునామాలో సంపూర్ణంగా చేయబడినప్పుడు మరియు ప్రారంభించబడని వస్తువులు కూడా నిర్వచించబడినప్పుడు, లింకర్ లోపం ప్రేరేపించబడవచ్చు.
- షార్ట్ వేక్-అప్ IDలు (XC8-2775) ATA5700/2 పరికరాల కోసం, PHID0/1 రిజిస్టర్లు 16 బిట్ల వెడల్పు కాకుండా 32 బిట్ల వెడల్పుగా మాత్రమే నిర్వచించబడ్డాయి.
- చిహ్నాన్ని కాల్ చేస్తున్నప్పుడు లింకర్ క్రాష్ (XC8-2758) సోర్స్ కోడ్ – Wl,–defsym లింకర్ ఎంపికను ఉపయోగించి నిర్వచించబడిన చిహ్నాన్ని కాల్ చేసినప్పుడు -mrelax డ్రైవర్ ఎంపికను ఉపయోగించినట్లయితే లింకర్ క్రాష్ కావచ్చు.
- సరికాని ప్రారంభీకరణ (XC8-2679) డేటా మెమరీలో కొన్ని గ్లోబల్/స్టాటిక్ బైట్-పరిమాణ ఆబ్జెక్ట్ల ప్రారంభ విలువలు ఎక్కడ ఉంచబడ్డాయి మరియు రన్టైమ్లో వేరియబుల్స్ యాక్సెస్ చేయబడే వాటి మధ్య వ్యత్యాసం ఉంది.
- చెడు పరోక్ష ఫంక్షన్ కాల్లు (XC8-2628) కొన్ని సందర్భాల్లో, నిర్మాణంలో భాగంగా నిల్వ చేయబడిన ఫంక్షన్ పాయింటర్ ద్వారా చేసిన ఫంక్షన్ కాల్లు విఫలం కావచ్చు.
- strtof హెక్సాడెసిమల్ ఫ్లోట్ల కోసం సున్నాని అందిస్తుంది (XC8-2626) లైబ్రరీ ఫంక్షన్లు strtof() et al మరియు scanf() et al, ఎల్లప్పుడూ హెక్సాడెసిమల్ ఫ్లోటింగ్-పాయింట్ సంఖ్యను మారుస్తుంది, అది ఘాతాంకాన్ని సున్నాకి పేర్కొనదు. ఉదాహరణకుample: strtof(“0x1”, &endptr); విలువ 0ని అందిస్తుంది, 1 కాదు.
- సరికాని స్టాక్ అడ్వైజర్ మెసేజింగ్ (XC8-2542, XC8-2541) కొన్ని సందర్భాల్లో, పునరావృతం లేదా అనిశ్చిత స్టాక్కు సంబంధించి స్టాక్ అడ్వైజర్ హెచ్చరిక (బహుశా alloca()ని ఉపయోగించడం ద్వారా) విడుదల చేయబడదు.
- డూప్లికేట్ ఇంటరప్ట్ కోడ్ (XC8-2421)తో వైఫల్యం ఒకటి కంటే ఎక్కువ ఇంటర్ప్ట్ ఫంక్షన్లు ఒకే బాడీని కలిగి ఉంటే, కంపైలర్ ఒక అంతరాయ ఫంక్షన్కి కాల్ చేసే అవుట్పుట్ను కలిగి ఉండవచ్చు. ఇది అన్ని కాల్-క్లాబర్డ్ రిజిస్టర్లు అనవసరంగా సేవ్ చేయబడటానికి దారి తీస్తుంది మరియు ప్రస్తుత అంతరాయ హ్యాండ్లర్ యొక్క ఎపిలోగ్ రన్ కాకముందే అంతరాయాలు ప్రారంభించబడతాయి, ఇది కోడ్ వైఫల్యానికి దారితీయవచ్చు.
- చెల్లని DFP పాత్తో చెడు అవుట్పుట్ (XC8-2376) చెల్లని DFP పాత్తో కంపైలర్ ప్రారంభించబడి మరియు ఎంచుకున్న పరికరం కోసం 'స్పెక్' ఫైల్ ఉనికిలో ఉన్నట్లయితే, కంపైలర్ తప్పిపోయిన పరికర ఫ్యామిలీ ప్యాక్ని నివేదించదు మరియు బదులుగా 'స్పెక్'ని ఎంచుకుంటుంది. ఫైల్, ఇది చెల్లని అవుట్పుట్కు దారితీయవచ్చు. 'స్పెక్' ఫైల్లు పంపిణీ చేయబడిన DFPలతో తాజాగా ఉండకపోవచ్చు మరియు అంతర్గత కంపైలర్ పరీక్షతో మాత్రమే ఉపయోగించడానికి ఉద్దేశించబడ్డాయి.
- మెమరీ అతివ్యాప్తి గుర్తించబడలేదు (XC8-1966) కంపైలర్ ఒక చిరునామా (__at() ద్వారా) మరియు __సెక్షన్() స్పెసిఫైయర్ని ఉపయోగించి మరియు అదే చిరునామాకు లింక్ చేయబడిన ఇతర వస్తువుల వద్ద సంపూర్ణంగా చేసిన ఆబ్జెక్ట్ల మెమరీ అతివ్యాప్తిని గుర్తించడం లేదు.
- లైబ్రరీ ఫంక్షన్లతో వైఫల్యం మరియు __memx (XC8-1763) __memx చిరునామా స్థలంలో ఆర్గ్యుమెంట్తో కాల్డ్ libgcc ఫ్లోట్ ఫంక్షన్లు విఫలం కావచ్చు. లైబ్రరీ రొటీన్లు కొంతమంది C ఆపరేటర్ల నుండి పిలవబడుతున్నాయని గమనించండి, కాబట్టి, ఉదాహరణకుample, కింది కోడ్ ప్రభావితం చేయబడింది: regFloatVar > memxFloatVarని తిరిగి ఇవ్వండి;
- పరిమిత libgcc అమలు (AVRTC-731) ATTiny4/5/9/10/20/40 ఉత్పత్తుల కోసం, libgccలో ప్రామాణిక C / Math లైబ్రరీ అమలు చాలా పరిమితంగా ఉంది లేదా ప్రస్తుతం లేదు.
- ప్రోగ్రామ్ మెమరీ పరిమితులు (AVRTC-732) 128 kb కంటే ఎక్కువ ఉన్న ప్రోగ్రామ్ మెమరీ ఇమేజ్లకు టూల్చెయిన్ మద్దతు ఇస్తుంది; ఏది ఏమైనప్పటికీ, -mrelax ఎంపికను ఉపయోగించినప్పుడు అవసరమైన ఫంక్షన్ స్టబ్లను రూపొందించడం కంటే సడలింపు లేకుండా మరియు సహాయక దోష సందేశం లేకుండా లింకర్ ఆబార్ట్ చేసిన సందర్భాలు ఉన్నాయి.
- పేరు స్థల పరిమితులు (AVRTC-733) పేరు పెట్టబడిన చిరునామా ఖాళీలు టూల్చెయిన్ ద్వారా మద్దతునిస్తాయి, వినియోగదారు గైడ్ విభాగంలో పేర్కొన్న పరిమితులకు లోబడి ప్రత్యేక రకం అర్హతలు.
- సమయ మండలాలు ది లైబ్రరీ ఫంక్షన్లు GMTని ఊహిస్తాయి మరియు స్థానిక సమయ మండలాలకు మద్దతు ఇవ్వవు, కాబట్టి స్థానిక సమయం() gmtime() వలె అదే సమయానికి తిరిగి వస్తుంది, ఉదాహరణకుample.
పత్రాలు / వనరులు
![]() |
AVR MCU కోసం మైక్రోచిప్ XC8 C కంపైలర్ వెర్షన్ 2.45 విడుదల నోట్స్ [pdf] సూచనలు AVR MCU, XC8 C, XC8 C కంపైలర్ వెర్షన్ 2.45 AVR MCU కోసం విడుదల గమనికలు, కంపైలర్ వెర్షన్ 2.45 AVR MCU కోసం విడుదల గమనికలు, AVR MCU కోసం వెర్షన్ 2.45 విడుదల గమనికలు, AVR AVR AVR కోసం విడుదల గమనికలు, MCU కోసం NotesUR, MCU కోసం నోట్స్ |

