మైక్రోచిప్ MPLAB XC8 C కంపైలర్ సాఫ్ట్వేర్
మైక్రోచిప్ AVR పరికరాలను లక్ష్యంగా చేసుకున్నప్పుడు MPLAB XC8 C కంపైలర్కు సంబంధించిన ముఖ్యమైన సమాచారాన్ని ఈ పత్రం కలిగి ఉంటుంది.
ఈ సాఫ్ట్వేర్ను అమలు చేయడానికి ముందు దయచేసి చదవండి. మీరు 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 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 యొక్క ప్రొఫెషనల్ ఎడిషన్లు; ఉబుంటు 18.04; మరియు macOS 10.15.5. Windows కోసం బైనరీలు కోడ్-సంతకం చేయబడ్డాయి. Mac OS కోసం బైనరీలు కోడ్-సంతకం మరియు నోటరీ చేయబడ్డాయి.
మీరు నెట్వర్క్ లైసెన్స్ సర్వర్ని నడుపుతున్నట్లయితే, కంపైలర్ల ద్వారా మద్దతు ఉన్న ఆపరేటింగ్ సిస్టమ్లు కలిగిన కంప్యూటర్లు మాత్రమే లైసెన్స్ సర్వర్ను హోస్ట్ చేయడానికి ఉపయోగించవచ్చు. 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 మరియు స్క్రీన్పై ఉన్న సూచనలను అనుసరించండి.
డిఫాల్ట్ ఇన్స్టాలేషన్ డైరెక్టరీ సిఫార్సు చేయబడింది. మీరు Linuxని ఉపయోగిస్తుంటే, మీరు తప్పనిసరిగా టెర్మినల్ ఉపయోగించి మరియు రూట్ ఖాతా నుండి కంపైలర్ను ఇన్స్టాల్ చేయాలి. నిర్వాహక అధికారాలతో MacOS ఖాతాను ఉపయోగించి ఇన్స్టాల్ చేయండి.
సక్రియం ఇప్పుడు సంస్థాపనకు విడిగా నిర్వహించబడుతుంది. మరింత సమాచారం కోసం MPLAB® XC C Compilers (DS52059) కోసం డాక్యుమెంట్ లైసెన్స్ మేనేజర్ని చూడండి.
మీరు మూల్యాంకన లైసెన్స్ కింద కంపైలర్ను అమలు చేయాలని ఎంచుకుంటే, మీ మూల్యాంకన వ్యవధి ముగిసిన 14 రోజులలోపు మీరు ఇప్పుడు సంకలనం సమయంలో హెచ్చరికను పొందుతారు. మీరు మీ HPA సబ్స్క్రిప్షన్ ముగిసిన 14 రోజులలోపు ఉంటే అదే హెచ్చరిక జారీ చేయబడుతుంది.
XC నెట్వర్క్ లైసెన్స్ సర్వర్ ఒక ప్రత్యేక ఇన్స్టాలర్ మరియు సింగిల్-యూజర్ కంపైలర్ ఇన్స్టాలర్లో చేర్చబడలేదు.
XC లైసెన్స్ మేనేజర్ ఇప్పుడు ఫ్లోటింగ్ నెట్వర్క్ లైసెన్స్ల రోమింగ్కు మద్దతు ఇస్తుంది. మొబైల్ వినియోగదారులను దృష్టిలో ఉంచుకుని, ఈ ఫీచర్ ఫ్లోటింగ్ లైసెన్స్ను తక్కువ వ్యవధిలో నెట్వర్క్ ఆఫ్ చేయడానికి అనుమతిస్తుంది. ఈ ఫీచర్ని ఉపయోగించి, మీరు నెట్వర్క్ నుండి డిస్కనెక్ట్ చేయవచ్చు మరియు ఇప్పటికీ మీ MPLAB XC కంపైలర్ని ఉపయోగించవచ్చు. ఈ ఫీచర్ గురించి మరింత తెలుసుకోవడానికి XCLM ఇన్స్టాల్ యొక్క డాక్ ఫోల్డర్ను చూడండి. MPLAB X IDE రోమింగ్ను దృశ్యమానంగా నిర్వహించడానికి లైసెన్స్ల విండో (సాధనాలు > లైసెన్స్లు)ని కలిగి ఉంటుంది.
ఇన్స్టాలేషన్ సమస్యలను పరిష్కరిస్తోంది
ఏదైనా Windows ఆపరేటింగ్ సిస్టమ్లలో కంపైలర్ను ఇన్స్టాల్ చేయడంలో మీకు ఇబ్బందులు ఎదురైతే, క్రింది సూచనలను ప్రయత్నించండి.
- ఇన్స్టాల్ను అడ్మినిస్ట్రేటర్గా అమలు చేయండి.
- ఇన్స్టాలర్ అప్లికేషన్ యొక్క అనుమతులను 'పూర్తి నియంత్రణ'కి సెట్ చేయండి. (కుడి క్లిక్ చేయండి file, ప్రాపర్టీస్, సెక్యూరిటీ ట్యాబ్ ఎంచుకోండి, వినియోగదారుని ఎంచుకోండి, సవరించండి.)
- తాత్కాలిక ఫోల్డర్ యొక్క అనుమతులను “పూర్తి నియంత్రణ!
టెంప్ ఫోల్డర్ యొక్క స్థానాన్ని గుర్తించడానికి, రన్ కమాండ్లో %temp% అని టైప్ చేయండి (Windows లోగో కీ + R). ఇది తెరవబడుతుంది a file ఎక్స్ప్లోరర్ డైలాగ్ ఆ డైరెక్టరీని చూపుతుంది మరియు ఆ ఫోల్డర్ యొక్క మార్గాన్ని గుర్తించడానికి మిమ్మల్ని అనుమతిస్తుంది.
కంపైలర్ డాక్యుమెంటేషన్
స్క్రీన్షాట్లో సూచించినట్లుగా, MPLAB X IDE డ్యాష్బోర్డ్లోని నీలిరంగు సహాయ బటన్ను క్లిక్ చేసినప్పుడు మీ బ్రౌజర్లో తెరుచుకునే HTML పేజీ నుండి కంపైలర్ యొక్క వినియోగదారు గైడ్లు తెరవబడతాయి.
మీరు 8-బిట్ AVR లక్ష్యాల కోసం రూపొందిస్తున్నట్లయితే, AVR® MCU కోసం MPLAB® XC8 C కంపైలర్ యూజర్స్ గైడ్ ఈ ఆర్కిటెక్చర్కు వర్తించే కంపైలర్ ఎంపికలు మరియు లక్షణాలపై సమాచారాన్ని కలిగి ఉంటుంది.
కస్టమర్ మద్దతు
మైక్రోచిప్ ఈ కంపైలర్ సంస్కరణకు సంబంధించి బగ్ నివేదికలు, సూచనలు లేదా వ్యాఖ్యలను స్వాగతించింది. దయచేసి ఏవైనా బగ్ నివేదికలు లేదా ఫీచర్ అభ్యర్థనలను సపోర్ట్ సిస్టమ్ ద్వారా డైరెక్ట్ చేయండి.
డాక్యుమెంటేషన్ నవీకరణలు
MPLAB XC8 డాక్యుమెంటేషన్ యొక్క ఆన్లైన్ మరియు తాజా వెర్షన్ల కోసం, దయచేసి మైక్రోచిప్ యొక్క ఆన్లైన్ టెక్నికల్ డాక్యుమెంటేషన్ని సందర్శించండి webసైట్.
ఈ విడుదలలో కొత్త లేదా నవీకరించబడిన AVR డాక్యుమెంటేషన్:
- MUSL కాపీరైట్ నోటీసు
- MPLAB XC C కంపైలర్లను ఇన్స్టాల్ చేయడం మరియు లైసెన్స్ ఇవ్వడం (రివిజన్ M)
- ఎంబెడెడ్ ఇంజనీర్ల కోసం MPLAB XC8 యూజర్ యొక్క గైడ్ – AVR MCUలు (రివిజన్ A)
- MPLAB XC8 C కంపైలర్ యూజర్! AVR MCU కోసం గైడ్ (రివిజన్ F)
- మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీ రిఫరెన్స్ గైడ్ (రివిజన్ బి)
మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీ రిఫరెన్స్ గైడ్ మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీచే నిర్వచించబడిన ఫంక్షన్ల ప్రవర్తన మరియు ఇంటర్ఫేస్ను వివరిస్తుంది, అలాగే లైబ్రరీ రకాలు మరియు మాక్రోల యొక్క ఉద్దేశిత వినియోగాన్ని వివరిస్తుంది. ఈ సమాచారంలో కొంత భాగం గతంలో AVR® MCU కోసం MPLAB® XC8 C కంపైలర్ యూజర్!స్ గైడ్లో ఉంది. పరికర-నిర్దిష్ట లైబ్రరీ సమాచారం ఇప్పటికీ ఈ కంపైలర్ గైడ్లో ఉంది.
మీరు ఇప్పుడే 8-బిట్ పరికరాలు మరియు MPLAB XC8 C కంపైలర్తో ప్రారంభిస్తుంటే, MPLAB® XC8 వినియోగదారు! ఎంబెడెడ్ ఇంజనీర్ల కోసం గైడ్ - AVR® MCUs (DS50003108) MPLAB X IDEలో ప్రాజెక్ట్లను సెటప్ చేయడం మరియు కోడ్ రాయడం గురించి సమాచారాన్ని కలిగి ఉంటుంది. మీ మొదటి MPLAB XC8 C ప్రాజెక్ట్ కోసం. ఈ గైడ్ ఇప్పుడు కంపైలర్తో పంపిణీ చేయబడింది.
ఈ విడుదలలోని డాక్స్ డైరెక్టరీలో Hamate యూజర్స్ గైడ్ చేర్చబడింది. ఈ గైడ్ హమాట్ను స్వతంత్ర అప్లికేషన్గా అమలు చేసే వారి కోసం ఉద్దేశించబడింది.
కొత్తవి ఏమిటి
కంపైలర్ ఇప్పుడు మద్దతిచ్చే కొత్త AVR-లక్ష్య లక్షణాలు క్రిందివి. ఉపశీర్షికలలోని సంస్కరణ సంఖ్య అనుసరించే లక్షణాలకు మద్దతు ఇవ్వడానికి మొదటి కంపైలర్ సంస్కరణను సూచిస్తుంది.
వెర్షన్ 2.40
కొత్త పరికర మద్దతు కింది AVR భాగాలకు మద్దతు ఇప్పుడు అందుబాటులో ఉంది: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64 VR28EA64.
మెరుగైన విధానపరమైన సంగ్రహణ విధానపరమైన సంగ్రహణ (PA) ఆప్టిమైజేషన్ సాధనం మెరుగుపరచబడింది, తద్వారా ఫంక్షన్ కాల్ సూచన (కాల్ రీకాల్) కలిగి ఉన్న కోడ్ని వివరించవచ్చు. స్టాక్ ఆర్గ్యుమెంట్లను పాస్ చేయడానికి లేదా ఫంక్షన్ నుండి రిటర్న్ విలువను పొందకుండా ఉపయోగించకపోతే మాత్రమే ఇది జరుగుతుంది. వేరియబుల్ ఆర్గ్యుమెంట్ లిస్ట్తో ఫంక్షన్కు కాల్ చేస్తున్నప్పుడు లేదా ఈ ప్రయోజనం కోసం కేటాయించిన రిజిస్టర్ల కంటే ఎక్కువ ఆర్గ్యుమెంట్లను తీసుకునే ఫంక్షన్కు కాల్ చేస్తున్నప్పుడు స్టాక్ ఉపయోగించబడుతుంది. Monk-pa-outline-calls ఎంపికను ఉపయోగించి ఈ లక్షణాన్ని నిలిపివేయవచ్చు లేదా ఒక వస్తువు కోసం విధానపరమైన సంగ్రహణ పూర్తిగా నిలిపివేయబడుతుంది file లేదా -monk-pa-on-ని ఉపయోగించడం ద్వారా పని చేయండిfile మరియు -mo.-pa-on-function వరుసగా, లేదా nipa అట్రిబ్యూట్ ( nipa స్పెసిఫైయర్)ని ఫంక్షన్లతో ఎంపిక చేయడం ద్వారా
కోడ్ కవరేజ్ మాక్రో చెల్లుబాటు అయ్యే mcodecov ఎంపికను పేర్కొన్నట్లయితే కంపైలర్ ఇప్పుడు మాక్రో __CODECOVని నిర్వచిస్తుంది.
మెమరీ రిజర్వేషన్ ఎంపిక AVR లక్ష్యాలను రూపొందించేటప్పుడు xc8-cc డ్రైవర్ ఇప్పుడు -mreserve=space@start: end ఎంపికను అంగీకరిస్తుంది. ఈ ఐచ్ఛికం డేటా లేదా ప్రోగ్రామ్ మెమరీ స్థలంలో పేర్కొన్న మెమరీ పరిధిని రిజర్వ్ చేస్తుంది, ఈ ప్రాంతంలో కోడ్ లేదా ఆబ్జెక్ట్లను నింపకుండా లింకర్ను నిరోధిస్తుంది.
తెలివైన స్మార్ట్ IO స్మార్ట్ IO ఫంక్షన్లకు అనేక మెరుగుదలలు చేయబడ్డాయి, వీటిలో ప్రింట్ఎఫ్ కోర్ కోడ్కు సాధారణ ట్వీక్లు ఉన్నాయి, %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-proem ఎంపికను లింకర్ ఒక 32k విభాగంలో అన్ని కాన్స్ క్వాలిఫైడ్ డేటాను ఉంచడానికి ఉపయోగించవచ్చు మరియు ఈ డేటా డేటా మెమరీ స్పేస్లో మ్యాప్ చేయబడిందని నిర్ధారించుకోవడానికి సంబంధిత SFR రిజిస్టర్ను స్వయంచాలకంగా ప్రారంభించవచ్చు. , ఇక్కడ ఇది మరింత ప్రభావవంతంగా యాక్సెస్ చేయబడుతుంది.
మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీస్ అన్ని MPLAB XC కంపైలర్లు మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీని షేర్ చేస్తాయి, ఇది ఇప్పుడు MPLAB XC8 విడుదలతో అందుబాటులో ఉంది. MPLAB® XC8 C కంపైలర్ యూజర్స్ గైడ్/లేదా AVR® MCU ఈ ప్రామాణిక ఫంక్షన్ల కోసం డాక్యుమెంటేషన్ను కలిగి ఉండదు. ఈ సమాచారాన్ని ఇప్పుడు మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీ రిఫరెన్స్ గైడ్లో కనుగొనవచ్చు. avr-libc ద్వారా గతంలో నిర్వచించబడిన కొంత కార్యాచరణ ఇప్పుడు అందుబాటులో లేదని గమనించండి. (లిబ్రార్ చూడండి):'. కార్యాచరణ...)
స్మార్ట్ IO కొత్త ఏకీకృత లైబ్రరీలలో భాగంగా, ప్రింట్ మరియు స్కాన్ కుటుంబాలలోని IO ఫంక్షన్లు ఇప్పుడు ప్రోగ్రామ్లో ఈ ఫంక్షన్లు ఎలా ఉపయోగించబడుతున్నాయనే దాని ఆధారంగా ప్రతి బిల్డ్పై అనుకూలీకరించబడతాయి. ఇది ప్రోగ్రామ్ ఉపయోగించే వనరులను గణనీయంగా తగ్గిస్తుంది.
స్మార్ట్ IO సహాయం ఎంపిక స్మార్ట్ IO ఫంక్షన్లకు (printf () లేదా scanf () వంటి కాల్లను విశ్లేషించేటప్పుడు, కంపైలర్ ఎల్లప్పుడూ ఫార్మాట్ స్ట్రింగ్ నుండి గుర్తించలేరు లేదా కాల్కి అవసరమైన మార్పిడి స్పెసిఫైయర్ల వాదనల నుండి ఊహించలేరు. మునుపు, కంపైలర్ ఎల్లప్పుడూ ఎటువంటి ఊహలను చేయదు మరియు పూర్తి ఫంక్షనల్ IO ఫంక్షన్లు తుది ప్రోగ్రామ్ ఇమేజ్కి లింక్ చేయబడిందని నిర్ధారిస్తుంది. ఒక కొత్త – msmart-io-format=fmt ఐచ్ఛికం జోడించబడింది, తద్వారా కంపైలర్కు బదులుగా స్మార్ట్ IO ఫంక్షన్ల ద్వారా ఉపయోగించే కన్వర్షన్ స్పెసిఫైయర్ల గురించి వినియోగదారుకు తెలియజేయవచ్చు, దీని వినియోగం అస్పష్టంగా ఉంటుంది, అధిక పొడవైన IO రొటీన్లను లింక్ చేయకుండా నిరోధిస్తుంది. (మరిన్ని వివరాల కోసం smart-io-format ఎంపికను చూడండి.)
అనుకూల విభాగాలను ఉంచడం మునుపు, లింకర్ స్క్రిప్ట్ అదే పేరుతో అవుట్పుట్ విభాగాన్ని నిర్వచించినప్పుడు మాత్రమే -Wl, –section-start ఎంపిక పేర్కొన్న విభాగాన్ని అభ్యర్థించిన చిరునామాలో ఉంచుతుంది. అది కానప్పుడు, లింకర్ ఎంచుకున్న చిరునామాలో విభాగం ఉంచబడింది మరియు ఎంపిక తప్పనిసరిగా విస్మరించబడింది. లింకర్ స్క్రిప్ట్ విభాగాన్ని నిర్వచించనప్పటికీ, ఇప్పుడు ఎంపిక అన్ని అనుకూల విభాగాలకు గౌరవించబడుతుంది. గమనించండి, అయితే, ప్రామాణిక విభాగాల కోసం, అటువంటి . వచనం, . bss లేదా . డేటా, ఉత్తమంగా సరిపోయే కేటాయింపుదారు వారి ప్లేస్మెంట్పై ఇప్పటికీ పూర్తి నియంత్రణను కలిగి ఉంటారు మరియు ఎంపిక ప్రభావం చూపదు. యూజర్ గైడ్లో వివరించిన విధంగా -Wl, -Tsection=add ఎంపికను ఉపయోగించండి.
వెర్షన్ 2.32
స్టాక్ గైడెన్స్ PRO కంపైలర్ లైసెన్స్తో అందుబాటులో ఉంటుంది, ప్రోగ్రామ్ ఉపయోగించే ఏదైనా స్టాక్ గరిష్ట లోతును అంచనా వేయడానికి కంపైలర్ యొక్క స్టాక్ గైడెన్స్ ఫీచర్ ఉపయోగించబడుతుంది. ఇది ప్రోగ్రామ్ యొక్క కాల్ గ్రాఫ్ను నిర్మిస్తుంది మరియు విశ్లేషిస్తుంది, ప్రతి ఫంక్షన్ యొక్క స్టాక్ వినియోగాన్ని నిర్ణయిస్తుంది మరియు ఒక నివేదికను ఉత్పత్తి చేస్తుంది, దీని నుండి ప్రోగ్రామ్ ఉపయోగించే స్టాక్ల లోతును ఊహించవచ్చు. ఈ ఫీచర్ -mchp-stack-usage కమాండ్-లైన్ ఎంపిక ద్వారా ప్రారంభించబడింది. అమలు తర్వాత స్టాక్ వినియోగం యొక్క సారాంశం ముద్రించబడుతుంది. మ్యాప్లో వివరణాత్మక స్టాక్ నివేదిక అందుబాటులో ఉంది file, ఇది సాధారణ మార్గంలో అభ్యర్థించవచ్చు.
కొత్త పరికర మద్దతు మద్దతు కింది AVR భాగాలకు అందుబాటులో ఉంది: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64, 28 VR32DB28.
ఉపసంహరించబడిన పరికర మద్దతు మద్దతు కింది AVR భాగాలకు ఇకపై అందుబాటులో లేదు: AVR16DA28, AVR16DA32 మరియు, AVR16DA48.
వెర్షన్ 2.31
ఏదీ లేదు.
వెర్షన్ 2.30
డేటా ప్రారంభాన్ని నిరోధించడానికి కొత్త ఐచ్ఛికం కొత్త -mno-data-ini t డ్రైవర్ ఐచ్చికం డేటా యొక్క ప్రారంభాన్ని మరియు bss విభాగాల క్లియరింగ్ను నిరోధిస్తుంది. అసెంబ్లీలో do_ copy_ డేటా మరియు d o_ clear_ bss చిహ్నాల అవుట్పుట్ను అణచివేయడం ద్వారా ఇది పని చేస్తుంది files, ఇది లింకర్ ద్వారా ఆ రొటీన్లను చేర్చడాన్ని నిరోధిస్తుంది.
మెరుగుపరిచిన ఆప్టిమైజేషన్లు రిడెండెంట్ రిటర్న్ సూచనల తొలగింపు, స్కిప్-ఇఫ్-బిట్-ఇజ్ సూచనను అనుసరించి కొన్ని జంప్ల తొలగింపు మరియు మెరుగైన విధానపరమైన సంగ్రహణ మరియు ఈ ప్రక్రియను పునరావృతం చేయగల సామర్థ్యంతో సహా అనేక ఆప్టిమైజేషన్ మెరుగుదలలు చేయబడ్డాయి.
ఈ ఆప్టిమైజేషన్లలో కొన్నింటిని నియంత్రించడానికి అదనపు ఎంపికలు ఇప్పుడు అందుబాటులో ఉన్నాయి, ప్రత్యేకంగా -f సెక్షన్ యాంకర్లు, ఇది ఒక గుర్తుకు సంబంధించి స్టాటిక్ ఆబ్జెక్ట్లను యాక్సెస్ చేయడానికి అనుమతిస్తుంది; -mpai derations=n, ఇది విధానపరమైన సంగ్రహణ పునరావృతాల సంఖ్యను డిఫాల్ట్ 2 నుండి మార్చడానికి అనుమతిస్తుంది; మరియు, -mpa- కాల్ ఖర్చు- షార్ట్కాల్, ఇది లింకర్ సుదీర్ఘ కాల్లను రిలాక్స్ చేయగలదనే ఆశతో, మరింత ఉగ్రమైన విధానపరమైన సంగ్రహణను నిర్వహిస్తుంది. అంతర్లీన అంచనాలు గుర్తించబడకపోతే ఈ చివరి ఎంపిక కోడ్ పరిమాణాన్ని పెంచుతుంది.
కొత్త పరికర మద్దతు కింది AVR భాగాలకు మద్దతు అందుబాటులో ఉంది: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32 మరియు ABV128, ABV48
ఉపసంహరించబడిన పరికర మద్దతు కింది AVR భాగాలకు మద్దతు ఇకపై అందుబాటులో ఉండదు: ATA5272, ATA5790, ATA5790N,ATA5791,ATA5795,ATA6285,ATA6286,ATA6612C,ATA6613C,ATA6614Q, ATA6616.
వెర్షన్ 2.29 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
హెడర్ file కంపైలర్ బిల్ట్-ఇన్ల కోసం కంపైలర్ MISRA వంటి భాషా నిర్దేశాలకు అనుగుణంగా ఉండేలా చూసుకోవడానికి, శీర్షిక file, ఇది స్వయంచాలకంగా చేర్చబడుతుంది , నవీకరించబడింది. ఈ హెడర్లో _buil tin _avrnop () మరియు _buil tin_ avr delay_ సైకిల్స్ () వంటి అన్ని అంతర్నిర్మిత ఫంక్షన్ల ప్రోటోటైప్లు ఉన్నాయి. కొన్ని అంతర్నిర్మితాలు MISRA కంప్లైంట్ కాకపోవచ్చు; కంపైలర్ కమాండ్ లైన్కు డిఫైన్ _Xe_ STRICT_ MISRAని జోడించడం ద్వారా వీటిని విస్మరించవచ్చు. స్థిర-వెడల్పు రకాలను ఉపయోగించడానికి అంతర్నిర్మితాలు మరియు వాటి ప్రకటనలు నవీకరించబడ్డాయి.
వెర్షన్ 2.20
కొత్త పరికర మద్దతు కింది AVR భాగాలకు మద్దతు అందుబాటులో ఉంది: ATTINY1624, ATTINY1626 మరియు ATTINY1627.
బెటర్ బెస్ట్ ఫిట్ కేటాయింపు కంపైలర్లోని బెస్ట్ ఫిట్ అలోకేటర్ (BFA) మెరుగుపరచబడింది, తద్వారా విభాగాలు మెరుగైన ఆప్టిమైజేషన్ను అనుమతించే క్రమంలో కేటాయించబడతాయి. BFA ఇప్పుడు పేరు పెట్టబడిన అడ్రస్ స్పేస్లకు మద్దతిస్తుంది మరియు డేటా ప్రారంభీకరణను మెరుగ్గా నిర్వహిస్తుంది.
మెరుగైన విధానపరమైన సంగ్రహణ విధానపరమైన సంగ్రహణ ఆప్టిమైజేషన్లు ఇప్పుడు మరిన్ని కోడ్ సీక్వెన్స్లలో నిర్వహించబడతాయి. లింకర్ చెత్త సేకరణ ప్రక్రియ గురించి ఆప్టిమైజేషన్ కోడ్కు తెలియజేయడం ద్వారా ఈ ఆప్టిమైజేషన్ కోడ్ పరిమాణాన్ని పెంచే మునుపటి పరిస్థితులు పరిష్కరించబడ్డాయి.
AVR అసెంబ్లర్ లేకపోవడం AVR అసెంబ్లర్ ఈ పంపిణీతో ఇకపై చేర్చబడలేదు.
వెర్షన్ 2.19 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
వెర్షన్ 2.10
కోడ్ కవరేజ్ ప్రాజెక్ట్ యొక్క సోర్స్ కోడ్ ఎంత వరకు అమలు చేయబడిందనే విశ్లేషణను సులభతరం చేసే కోడ్ కవరేజ్ ఫీచర్ను ఈ విడుదల కలిగి ఉంది. దీన్ని ఎనేబుల్ చేయడానికి -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ఫంక్షన్= ఫంక్షన్పై -mno-paని ఉపయోగించడం ద్వారా ఫంక్షన్ కోసం పేరు, లేదా నిలిపివేయబడింది.
మీ సోర్స్ కోడ్ లోపల, ఫంక్షన్ యొక్క నిర్వచనంతో _attribute_ ((nopa))ని ఉపయోగించడం ద్వారా లేదా _nopaని ఉపయోగించడం ద్వారా విధానపరమైన సంగ్రహణను నిలిపివేయవచ్చు, ఇది లక్షణానికి ((nopa, noinline)) విస్తరిస్తుంది మరియు తద్వారా ఫంక్షన్ ఇన్లైనింగ్ జరగకుండా నిరోధిస్తుంది. మరియు ఇన్లైన్ కోడ్ యొక్క సంగ్రహణ ఉంది.
వ్యావహారికంలో బిట్ మద్దతును లాక్ చేయండి AVR లాక్ బిట్లను అలాగే ఇతర కాన్ఫిగరేషన్ బిట్లను పేర్కొనడానికి #pragma కాన్ఫిగర్ ఇప్పుడు ఉపయోగించబడుతుంది. avr చిప్ సమాచారాన్ని తనిఖీ చేయండి. html file (పైన పేర్కొన్నది) సెట్టింగు/విలువ జంటలు ఈ వ్యావహారికంతో ఉపయోగించడానికి.
కొత్త పరికర మద్దతు కింది భాగాలకు మద్దతు అందుబాటులో ఉంది: 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 డ్రైవర్ను మునుపటి కంపైలర్ సంస్కరణల్లో ఆమోదించిన పాత-శైలి ఎంపికలను ఉపయోగించి నేరుగా కాల్ చేయవచ్చు.
సాధారణ C ఇంటర్ఫేస్ ఈ కంపైలర్ ఇప్పుడు MPLAB కామన్ C ఇంటర్ఫేస్కు అనుగుణంగా ఉంటుంది, సోర్స్ కోడ్ను అన్ని MPLAB XC కంపైలర్లలో సులభంగా పోర్ట్ చేయడానికి అనుమతిస్తుంది. -mext=cci ఐచ్ఛికం ఈ లక్షణాన్ని అభ్యర్థిస్తుంది, అనేక భాషా పొడిగింపుల కోసం ప్రత్యామ్నాయ సింటాక్స్ను ప్రారంభిస్తుంది.
కొత్త లైబ్రేరియన్ డ్రైవర్ కొత్త లైబ్రేరియన్ డ్రైవర్ మునుపటి PIC లైబ్రేరియన్ మరియు AVR avr-ar లైబ్రేరియన్ పైన ఉంచబడింది. ఈ డ్రైవర్ GCC-ఆర్కైవర్-శైలి ఎంపికలను అంగీకరిస్తుంది, అవి అమలు చేయబడే లైబ్రేరియన్ కోసం అనువదించబడతాయి లేదా పంపబడతాయి. కొత్త డ్రైవర్ ఏదైనా PIC లేదా AVR లైబ్రరీని సృష్టించడానికి లేదా మార్చడానికి ఒకే విధమైన సెమాంటిక్స్తో ఒకే విధమైన ఎంపికలను అనుమతిస్తుంది. file అందువలన లైబ్రేరియన్ను పిలవడానికి సిఫార్సు చేయబడిన మార్గం. లెగసీ ప్రాజెక్ట్ల కోసం అవసరమైతే, మునుపటి కంపైలర్ వెర్షన్లలో ఆమోదించిన పాత-శైలి ఎంపికలను ఉపయోగించి మునుపటి లైబ్రేరియన్ను నేరుగా కాల్ చేయవచ్చు.
వలస సమస్యలు
కిందివి ఇప్పుడు కంపైలర్ ద్వారా విభిన్నంగా నిర్వహించబడుతున్న లక్షణాలు. ఈ కంపైలర్ వెర్షన్కి కోడ్ను పోర్ట్ చేస్తే, ఈ మార్పులకు మీ సోర్స్ కోడ్కి సవరణ అవసరం కావచ్చు. ఉపశీర్షికలలోని సంస్కరణ సంఖ్య అనుసరించే మార్పులకు మద్దతు ఇవ్వడానికి మొదటి కంపైలర్ సంస్కరణను సూచిస్తుంది.
వెర్షన్ 2.40
ఏదీ లేదు.
వెర్షన్ 2.39 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
వెర్షన్ 2.36
ఏదీ లేదు.
వెర్షన్ 2.35
స్ట్రింగ్-టు బేస్ల నిర్వహణ (XCS-2420) ఇతర XC కంపైలర్లతో అనుగుణ్యతను నిర్ధారించడానికి, XC8 స్ట్రింగ్-టు ఫంక్షన్లు, strtol () మొదలైనవి, పేర్కొన్న బేస్ 36 కంటే పెద్దది అయినట్లయితే, ఇన్పుట్ స్ట్రింగ్ను మార్చడానికి ప్రయత్నించదు మరియు బదులుగా EINVALకి ఎర్రర్నో సెట్ చేస్తుంది. C ప్రమాణం ఈ మూల విలువను అధిగమించినప్పుడు ఫంక్షన్ల ప్రవర్తనను పేర్కొనదు.
తగని స్పీడ్ ఆప్టిమైజేషన్లు స్థాయి 3 ఆప్టిమైజేషన్లను (-03) ఎంచుకునేటప్పుడు విధానపరమైన సంగ్రహణ ఆప్టిమైజేషన్లు ప్రారంభించబడ్డాయి. ఈ ఆప్టిమైజేషన్లు కోడ్ వేగం కారణంగా కోడ్ పరిమాణాన్ని తగ్గిస్తాయి, కాబట్టి అమలు చేయకూడదు. ఈ ఆప్టిమైజేషన్ స్థాయిని ఉపయోగించే ప్రాజెక్ట్లు ఈ విడుదలతో నిర్మించబడినప్పుడు కోడ్ పరిమాణం మరియు అమలు వేగంలో తేడాలను చూడవచ్చు.
లైబ్రరీ కార్యాచరణ అనేక ప్రామాణిక C లైబ్రరీ ఫంక్షన్ల కోడ్ ఇప్పుడు మైక్రోచిప్ యొక్క యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీ నుండి వచ్చింది, ఇది మునుపటి avr-libc లైబ్రరీ అందించిన దానితో పోలిస్తే కొన్ని పరిస్థితులలో భిన్నమైన ప్రవర్తనను ప్రదర్శిస్తుంది. ఉదాహరణకుample, ఫ్లోట్-ఫార్మాట్ స్పెసిఫైయర్ల కోసం ఫార్మాట్ చేయబడిన IO మద్దతును ఆన్ చేయడానికి lprintf_flt లైబ్రరీ (-print _flt ఎంపిక)లో లింక్ చేయవలసిన అవసరం లేదు. మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీ యొక్క స్మార్ట్ IO ఫీచర్లు ఈ ఎంపికను అనవసరంగా చేస్తాయి. అదనంగా, ఫ్లాష్లో కాన్స్ట్ స్ట్రింగ్లపై పనిచేసే స్ట్రింగ్ మరియు మెమరీ ఫంక్షన్ల కోసం (ఉదా strcpy_P () etc .. ) _p ప్రత్యయం రొటీన్ల ఉపయోగం ఇకపై అవసరం లేదు. const-data-in-program-memory ఫీచర్ ప్రారంభించబడినప్పుడు ప్రామాణిక C రొటీన్లు (ఉదా strcpy ()) అటువంటి డేటాతో సరిగ్గా పని చేస్తాయి.
వెర్షన్ 2.32
ఏదీ లేదు.
వెర్షన్ 2.31
ఏదీ లేదు.
వెర్షన్ 2.30
ఏదీ లేదు.
వెర్షన్ 2.29 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
వెర్షన్ 2.20
DFP లేఅవుట్ మార్చబడింది కంపైలర్ ఇప్పుడు DFPలు (డివైస్ ఫ్యామిలీ ప్యాక్లు) ఉపయోగించే వేరే లేఅవుట్ని ఊహిస్తుంది. పాత DFP ఈ విడుదలతో పని చేయకపోవచ్చు మరియు పాత కంపైలర్లు తాజా DFPలను ఉపయోగించలేరని దీని అర్థం.
వెర్షన్ 2.19 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
వెర్షన్ 2.10
ఏదీ లేదు
వెర్షన్ 2.05
ప్రోగ్రామ్ మెమరీలో కాన్స్ట్ ఆబ్జెక్ట్స్ డిఫాల్ట్గా, కాన్స్ట్-క్వాలిఫైడ్ ఆబ్జెక్ట్లు ప్రోగ్రామ్ మెమరీలో ఉంచబడతాయి మరియు యాక్సెస్ చేయబడతాయి (ఇక్కడ వివరించిన విధంగా) . ఇది మీ ప్రాజెక్ట్ యొక్క పరిమాణం మరియు అమలు వేగాన్ని ప్రభావితం చేస్తుంది, అయితే RAM వినియోగాన్ని తగ్గించాలి. అవసరమైతే -mnoconst- da ta-in-progmem ఎంపికను ఉపయోగించి ఈ ఫీచర్ని నిలిపివేయవచ్చు.
వెర్షన్ 2.00
కాన్ఫిగరేషన్ ఫ్యూజులు పరికర కాన్ఫిగరేషన్ ఫ్యూజ్లు ఇప్పుడు ఫ్యూజ్ స్థితిని పేర్కొనడానికి సెట్టింగు-విలువ జతలను అనుసరించి కాన్ఫిగర్ ప్రాగ్మాను ఉపయోగించి ప్రోగ్రామ్ చేయబడతాయి, ఉదా.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
సంపూర్ణ వస్తువులు మరియు విధులు వస్తువులు మరియు విధులు ఇప్పుడు CCI _at (చిరునామా) స్పెసిఫైయర్ ఉపయోగించి మెమరీలో నిర్దిష్ట చిరునామాలో ఉంచబడతాయి, ఉదాహరణకుampలే: #చేర్చండి int foobar వద్ద(Ox800100); char at(Ox250) IDని పొందండి (int ఆఫ్సెట్) { … } ఈ స్పెసిఫైయర్కు ఆర్గ్యుమెంట్ తప్పనిసరిగా మొదటి బైట్ లేదా సూచనను ఉంచబడే చిరునామాను సూచించే స్థిరంగా ఉండాలి. RAM చిరునామాలు 0x800000 ఆఫ్సెట్ని ఉపయోగించడం ద్వారా సూచించబడతాయి. ఈ లక్షణాన్ని ఉపయోగించడానికి CCIని ప్రారంభించండి.
కొత్త అంతరాయ ఫంక్షన్ సింటాక్స్ C ఫంక్షన్లు అంతరాయ హ్యాండ్లర్లు అని సూచించడానికి కంపైలర్ ఇప్పుడు CCI అంతరాయ (సంఖ్య) స్పెసిఫైయర్ను అంగీకరిస్తుంది. స్పెసిఫైయర్ అంతరాయ సంఖ్యను తీసుకుంటుంది, ఉదాహరణకుample: #చేర్చండి శూన్యం అంతరాయం (SPI STC_ vect _num) spi Isr(శూన్యం) { …}
స్థిర సమస్యలు
కిందివి కంపైలర్కు చేసిన దిద్దుబాట్లు. ఇవి రూపొందించబడిన కోడ్లోని బగ్లను సరిచేయవచ్చు లేదా కంపైలర్ యొక్క ఆపరేషన్ను వినియోగదారు గైడ్ ఉద్దేశించిన లేదా పేర్కొన్న దానికి మార్చవచ్చు. ఉపశీర్షికలలోని సంస్కరణ సంఖ్య, అనుసరించే సమస్యలకు పరిష్కారాలను కలిగి ఉన్న మొదటి కంపైలర్ సంస్కరణను సూచిస్తుంది. టైటిల్లోని బ్రాకెట్ చేయబడిన లేబుల్(లు) ట్రాకింగ్ డేటాబేస్లో సమస్య యొక్క గుర్తింపు. మీరు సపోర్ట్ని సంప్రదించవలసి వస్తే ఇవి ఉపయోగకరంగా ఉండవచ్చు.
పరికరంతో అనుబంధించబడిన పరికర కుటుంబ ప్యాక్ (DFP)లో కొన్ని పరికర-నిర్దిష్ట సమస్యలు సరిచేయబడ్డాయని గమనించండి. DFPలకు చేసిన మార్పుల సమాచారం కోసం మరియు తాజా ప్యాక్లను డౌన్లోడ్ చేయడానికి MPLAB ప్యాక్ మేనేజర్ని చూడండి.
వెర్షన్ 2.40
చాలా రిలాక్స్డ్ (XCS-2876) -mrelax ఎంపికను ఉపయోగిస్తున్నప్పుడు, కంపైలర్ కొన్ని విభాగాలను కలిపి కేటాయించడం లేదు, ఫలితంగా తక్కువ సరైన కోడ్ పరిమాణాలు ఉంటాయి. ఇది కొత్త MUSL లైబ్రరీలను ఉపయోగించిన కోడ్తో లేదా బలహీనమైన చిహ్నాలతో సంభవించి ఉండవచ్చు.
హెచ్చరికలో పేర్కొన్న విధంగా మ్యాపింగ్ ఫీచర్ నిలిపివేయబడలేదు (XCS-2875) Cost-data-in-config mappedprogmem ఫీచర్ ఎనేబుల్ చేయబడిన కాస్ట్-డేటా-ఇన్-ప్రోమ్ ఫీచర్పై ఆధారపడి ఉంటుంది. కాస్ట్-డేటా-ఇప్కాన్ఫిగ్-మ్యాప్డ్-ప్రోమ్ ఫీచర్ ఎంపికను ఉపయోగించి స్పష్టంగా ప్రారంభించబడితే మరియు కాస్ట్-డేటా-ఇన్ప్రోగ్మెమ్ ఫీచర్ నిలిపివేయబడితే, కాన్స్ డేటా-ఇన్-కాన్ఫిగర్-మ్యాప్డ్- అని హెచ్చరిక సందేశం ఉన్నప్పటికీ, లింక్ దశ విఫలమైంది. proem ఫీచర్ స్వయంచాలకంగా నిలిపివేయబడింది, ఇది పూర్తిగా సరైనది కాదు. ఈ పరిస్థితిలో const-data-in-config-mapped-proem ఫీచర్ ఇప్పుడు పూర్తిగా నిలిపివేయబడింది.
NVMCTRL (XCS-2848)ని సరిగ్గా యాక్సెస్ చేయడానికి DFP మార్పులు AVR64EA పరికరాలు ఉపయోగించే రన్టైమ్ స్టార్టప్ కోడ్, NVMCTRL రిజిస్టర్ కాన్ఫిగరేషన్ చేంజ్ ప్రొటెక్షన్ (CCP) కింద ఉందని మరియు కాన్స్ట్-డేటా-ఇన్ కాన్ఫిగ్మాప్డ్-ప్రోమ్ కంపైలర్ ఉపయోగించే పేజీకి IO SFRని సెట్ చేయలేకపోయిందని పరిగణనలోకి తీసుకోలేదు. లక్షణం. AVR-Ex_DFP వెర్షన్ 2.2.55లో చేసిన మార్పులు ఈ రిజిస్టర్కి సరిగ్గా వ్రాయడానికి రన్టైమ్ స్టార్టప్ కోడ్ని అనుమతిస్తుంది.
ఫ్లాష్ మ్యాపింగ్ను నివారించడానికి DFP మార్పులు (XCS-2847) AVR128DA28/32/48/64 Silicon Errata (DS80000882)లో నివేదించబడిన ఫ్లాష్ మ్యాపింగ్ పరికరం ఫీచర్తో సమస్య కోసం ఒక పని అమలు చేయబడింది. const-data-in-config-mapped-proem కంపైలర్ ఫీచర్ ప్రభావిత పరికరాలకు డిఫాల్ట్గా వర్తించదు మరియు ఈ మార్పు AVR-Ex_DFP వెర్షన్ 2.2.160లో కనిపిస్తుంది.
sinhf లేదా coshf (XCS-2834)తో బిల్డ్ ఎర్రర్ sinhf () లేదా coshf () లైబ్రరీ ఫంక్షన్లను ఉపయోగించడానికి చేసిన ప్రయత్నాలు నిర్వచించబడని సూచనను వివరించే లింక్ ఎర్రర్కు దారితీశాయి. సూచించిన తప్పిపోయిన ఫంక్షన్ ఇప్పుడు కంపైలర్ పంపిణీలో చేర్చబడింది.
నోపా (XCS-2833)తో లోపాలను రూపొందించండి అసెంబ్లర్ పేరు ()గా సూచించబడిన ఫంక్షన్తో నోపా లక్షణాన్ని ఉపయోగించడం అసెంబ్లర్ నుండి ఎర్రర్ సందేశాలను ప్రేరేపించింది. ఈ కలయిక సాధ్యం కాదు.
పాయింటర్ ఆర్గ్యుమెంట్లతో విభిన్న ఫంక్షన్ వైఫల్యం (XCS-2755, XCS-2731) కాస్ట్-డేటా-ఇన్-ప్రోమ్ ఫీచర్ ప్రారంభించబడినప్పుడు వేరియబుల్ ఆర్గ్యుమెంట్ లిస్ట్లో 24-బిట్ (_మెమో టైప్) పాయింటర్లు పాస్ అవుతాయని వేరియబుల్ నంబర్ ఆర్గ్యుమెంట్లతో ఫంక్షన్లు ఆశించాయి. డేటా మెమరీకి పాయింటర్లుగా ఉన్న ఆర్గ్యుమెంట్లు 16-బిట్ ఆబ్జెక్ట్లుగా పాస్ చేయబడుతున్నాయి, చివరికి అవి చదవబడినప్పుడు కోడ్ వైఫల్యానికి కారణమవుతుంది. కాన్స్ డేటా-ఇన్-ప్రోమ్ ఫీచర్ ప్రారంభించబడినప్పుడు, అన్ని 16-బిట్ పాయింటర్స్ ఆర్గ్యుమెంట్లు ఇప్పుడు 24-బిట్ పాయింటర్లుగా మార్చబడతాయి. strtoxxx లైబ్రరీ ఫంక్షన్లు విఫలమవుతున్నాయి (XCS-2620) const-data-in-proem ఫీచర్ ప్రారంభించబడినప్పుడు, ప్రోగ్రామ్ మెమరీలో లేని సోర్స్ స్ట్రింగ్ ఆర్గ్యుమెంట్ల కోసం strtoxxx లైబ్రరీ ఫంక్షన్లలోని ఎంటర్ పరామితి సరిగ్గా నవీకరించబడలేదు.
చెల్లని కాస్ట్ల కోసం హెచ్చరికలు (XCS-2612) కాస్ట్-ఇన్-ప్రోమ్ ఫీచర్ ప్రారంభించబడితే మరియు స్ట్రింగ్ లిటరల్ అడ్రస్ స్పష్టంగా డేటా అడ్రస్ స్పేస్కి (కాన్స్ట్ క్వాలిఫైయర్ డ్రాపింగ్) కాస్ట్ చేయబడితే కంపైలర్ ఇప్పుడు ఎర్రర్ను జారీ చేస్తుంది.ample, (uint8 t *) “హలో వరల్డ్!”. కాన్స్ట్ డేటా పాయింటర్ డేటా అడ్రస్ స్పేస్కి స్పష్టంగా ప్రసారం చేయబడినప్పుడు చిరునామా చెల్లుబాటు కాకపోతే హెచ్చరిక సమస్య.
ప్రారంభించబడని కాన్స్ట్ ఆబ్జెక్ట్ల ప్లేస్మెంట్ (XCS-2408) వారి ప్రోగ్రామ్ మెమరీ మొత్తం లేదా కొంత భాగాన్ని డేటా అడ్రస్ స్పేస్లో మ్యాప్ చేసే పరికరాలలో ప్రారంభించని కాన్స్ట్ మరియు కాన్స్ట్ v ఒలేటైల్ ఆబ్జెక్ట్లు ప్రోగ్రామ్ మెమరీలో ఉంచబడవు. ఈ పరికరాల కోసం, అటువంటి వస్తువులు ఇప్పుడు ప్రోగ్రామ్ మెమరీలో ఉంచబడ్డాయి, వాటి ఆపరేషన్ ఇతర పరికరాలకు అనుగుణంగా ఉంటుంది.
వెర్షన్ 2.39 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
వెర్షన్ 2.36
ఆలస్యం చేస్తున్నప్పుడు లోపం (XCS-2774) డిఫాల్ట్ ఫ్రీ మోడ్ ఆప్టిమైజేషన్లలో స్వల్ప మార్పులు ఆపరాండ్ ఎక్స్ప్రెషన్లను ఆలస్యం అంతర్నిర్మిత ఫంక్షన్లకు స్థిరంగా మడతపెట్టడాన్ని నిరోధించాయి, ఫలితంగా అవి నాన్కాంటాక్ట్లుగా పరిగణించబడతాయి మరియు లోపాన్ని ట్రిగ్గర్ చేస్తాయి: _buil tin avr delay_ cycles ac ompileని ఆశించింది. సమయం పూర్ణాంకం స్థిరాంకం.
వెర్షన్ 2.35
_at (XCS-2653)ని ఉపయోగించి నిరంతర కేటాయింపు ఒకే పేరుతో మరియు () వద్ద ఉపయోగించడం ద్వారా ఒక విభాగంలో బహుళ వస్తువుల స్థలాలను వరుసగా కేటాయించడం సరిగ్గా పని చేయలేదు. ఉదాహరణకుample: constchararrl [ ] ట్రై బట్టే ((సెక్ట్ ఆన్(“.మిస్సెస్”))) వద్ద (Ox50 0 ) = {Oxo , Ox CD} ; ఖరీదు char arr2[ ] at tri butte ((section(“.my s eke”))) = {Oxen, Ox FE}; అరిల్ తర్వాత వెంటనే arr2 ఉంచాలి.
విభాగం ప్రారంభ చిరునామాలను పేర్కొంటోంది (XCS-2650) నామినేట్ చేయబడిన ప్రారంభ చిరునామాలో విభాగాలను ఉంచడంలో -Wal, –section-start ఎంపిక నిశ్శబ్దంగా విఫలమైంది. ఏదైనా అనుకూల-పేరు ఉన్న విభాగాల కోసం ఈ సమస్య పరిష్కరించబడింది; అయితే, ఇది వంటి ఏ ప్రామాణిక విభాగాలకు పని చేయదు. వచనం లేదా . bss, ఇది తప్పనిసరిగా -Wl, -T ఎంపికను ఉపయోగించి ఉంచాలి.
విశ్రాంతి తీసుకుంటున్నప్పుడు లింకర్ క్రాష్ అవుతుంది (XCS-2647) -రిలాక్స్ ఆప్టిమైజేషన్ ప్రారంభించబడినప్పుడు మరియు అందుబాటులో ఉన్న మెమరీకి సరిపోని కోడ్ లేదా డేటా విభాగాలు ఉన్నప్పుడు, లింకర్ క్రాష్ అయింది. ఇప్పుడు, అటువంటి పరిస్థితిలో, బదులుగా దోష సందేశాలు జారీ చేయబడ్డాయి.
చెడ్డ EEPROM యాక్సెస్ (XCS-2629) -monist-data-in-proem ఎంపిక ప్రారంభించబడినప్పుడు leproma _read_ బ్లాక్ రొటీన్ మెగా పరికరాల్లో సరిగ్గా పని చేయలేదు (ఇది డిఫాల్ట్ స్థితి), ఫలితంగా EEPROM మెమరీ సరిగ్గా చదవబడదు.
చెల్లని మెమరీ కేటాయింపు (XCS-2593, XCS-2651) ఎప్పుడు -టెక్స్ట్ లేదా -టాటా లింకర్ ఎంపిక (ఉదాamp-Wl డ్రైవర్ ఎంపికను ఉపయోగించి le పాస్ చేయబడింది) పేర్కొనబడింది, సంబంధిత టెక్స్ట్/డేటా రీజియన్ మూలం నవీకరించబడింది; అయినప్పటికీ, ముగింపు చిరునామా తదనుగుణంగా సర్దుబాటు చేయబడలేదు, ఇది లక్ష్యం పరికరం యొక్క మెమరీ పరిధిని అధిగమించడానికి దారితీసింది.
చెల్లని ATtiny అంతరాయ కోడ్ (XCS-2465) టాటిన్ పరికరాల కోసం బిల్డింగ్ చేసినప్పుడు మరియు ఆప్టిమైజేషన్లు డిసేబుల్ చేయబడినప్పుడు (-00), ఇంటరప్ట్ ఫంక్షన్లు అసెంబ్లర్ మెసేజ్ల పరిధి వెలుపల ఆపరాండ్ని ప్రేరేపించి ఉండవచ్చు.
ఎంపికలు ఆమోదించబడలేదు (XCS-2452) బహుళ, కామాతో వేరు చేయబడిన లింకర్ ఎంపికలతో -Wl ఎంపికను ఉపయోగిస్తున్నప్పుడు, లింకర్ ఎంపికలన్నీ లింకర్కు పంపబడవు.
ప్రోగ్రామ్ మెమరీని పరోక్షంగా చదవడంలో లోపం (XCS-2450) కొన్ని సందర్భాల్లో, పాయింటర్ నుండి ప్రోగ్రామ్ మెమరీకి రెండు బైట్ విలువను చదివేటప్పుడు కంపైలర్ అంతర్గత లోపాన్ని (గుర్తించలేని insn) సృష్టించింది.
వెర్షన్ 2.32
లైబ్రరీ యొక్క రెండవ యాక్సెస్ విఫలమైంది (XCS-2381) xc8-ar యొక్క Windows వెర్షన్ను ప్రారంభించడం. exe లైబ్రరీ ఆర్కైవర్ ఇప్పటికే ఉన్న లైబ్రరీ ఆర్కైవ్ను యాక్సెస్ చేయడానికి రెండవసారి ఎర్రర్ మెసేజ్ పేరు మార్చలేకపోవటంతో విఫలమై ఉండవచ్చు.
వెర్షన్ 2.31
వివరించలేని కంపైలర్ వైఫల్యాలు (XCS-2367) సిస్టమ్ తాత్కాలిక డైరెక్టరీని డాట్తో కూడిన పథానికి సెట్ చేసిన Windows ప్లాట్ఫారమ్లపై నడుస్తున్నప్పుడు'. అక్షరం, కంపైలర్ అమలు చేయడంలో విఫలమై ఉండవచ్చు.
వెర్షన్ 2.30
అవుట్లైన్ చేసిన తర్వాత గ్లోబల్ లేబుల్లు తప్పుగా ఉన్నాయి (XCS-2299) విధానపరమైన సంగ్రహణ ద్వారా కారకం చేయబడిన అసెంబ్లీ సీక్వెన్స్లలో గ్లోబల్ లేబుల్లను ఉంచే చేతితో వ్రాసిన అసెంబ్లీ కోడ్ సరిగ్గా రీపోజిషన్ చేయబడి ఉండకపోవచ్చు.
రిలాక్సింగ్ క్రాష్ (XCS-2287) టెయిల్ జంప్ రిలాక్సేషన్ ఆప్టిమైజేషన్లు సెక్షన్ చివరిలో లేని రెట్ ఇన్స్ట్రక్షన్ను తొలగించడానికి ప్రయత్నించినప్పుడు -merlad ఎంపికను ఉపయోగించడం వల్ల లింకర్ క్రాష్ అయ్యి ఉండవచ్చు.
లేబుల్లను విలువలుగా ఆప్టిమైజ్ చేస్తున్నప్పుడు క్రాష్ అవుతుంది (XCS-2282) "విలువలుగా లేబుల్లు" GNU C భాషా పొడిగింపును ఉపయోగించే కోడ్ విధానపరమైన సంగ్రహణ ఆప్టిమైజేషన్లను క్రాష్ చేయడానికి కారణమై ఉండవచ్చు, అవుట్లైన్ చేయబడిన VMA శ్రేణి ఫిక్సప్ లోపంతో.
అంతగా లేదు (XCS-2271) ప్రారంభాలు () మరియు ఇతర ఫంక్షన్ల కోసం ప్రోటోటైప్లు -monist-data inprogmem ఫీచర్ నిలిపివేయబడినప్పుడు తిరిగి వచ్చిన స్ట్రింగ్ పాయింటర్లపై ప్రామాణికం కాని ధర క్వాలిఫైయర్ను ఇకపై పేర్కొనవద్దు. avrxmega3 మరియు avertin పరికరాలతో, ఈ ఫీచర్ శాశ్వతంగా ప్రారంభించబడిందని గమనించండి.
లాస్ట్ ఇనిషియలైజర్లు (XCS-2269) అనువాద యూనిట్లోని ఒకటి కంటే ఎక్కువ వేరియబుల్లను ఒక విభాగంలో ఉంచినప్పుడు (విభాగం లేదా లక్షణాన్ని ((విభాగం)) ఉపయోగించి), మరియు అటువంటి మొదటి వేరియబుల్ సున్నా ప్రారంభించబడినప్పుడు లేదా ఇనిషియలైజర్ను కలిగి లేనప్పుడు, అదే అనువాద యూనిట్లోని ఇతర వేరియబుల్ల కోసం ఇనిషియలైజర్లు అదే విభాగంలో ఉంచినవి పోయాయి.
వెర్షన్ 2.29 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
వెర్షన్ 2.20
దీర్ఘ ఆదేశాలతో లోపం (XCS-1983) AVR లక్ష్యాన్ని ఉపయోగిస్తున్నప్పుడు, కంపైలర్ aతో ఆగిపోయి ఉండవచ్చు file కమాండ్ లైన్ చాలా పెద్దది మరియు కోట్లు, బ్యాక్స్లాష్లు మొదలైన ప్రత్యేక అక్షరాలను కలిగి ఉంటే లోపం కనుగొనబడలేదు.
కేటాయించని రోడేటా విభాగం (XCS-1920) AVR లింకర్ avrxmega3 మరియు avrtiny ఆర్కిటెక్చర్ల కోసం నిర్మించేటప్పుడు కస్టమ్ రోడేటా విభాగాల కోసం మెమరీని కేటాయించడంలో విఫలమైంది, ఇది మెమరీ అతివ్యాప్తి లోపాలను ఉత్పత్తి చేయగలదు.
వెర్షన్ 2.19 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
వెర్షన్ 2.10
పునరావాస వైఫల్యాలు (XCS-1891) లింకర్ సడలింపు తర్వాత విభాగాల మధ్య మెమరీ 'రంధ్రాలను' వదిలివేయడం ఉత్తమ ఫిట్ అలోకేటర్. మెమరీని ఫ్రాగ్మెంటింగ్ చేయడం పక్కన పెడితే, ఇది pc-రిలేటివ్ జంప్లకు సంబంధించిన లింకర్ రీలొకేషన్ వైఫల్యాలు లేదా కాల్లు పరిధి దాటిపోయే అవకాశాన్ని పెంచింది.
సడలింపు ద్వారా సూచనలు మార్చబడలేదు (XCS-1889) జంప్ లేదా కాల్ సూచనల కోసం లింకర్ సడలింపు జరగలేదు, దీని లక్ష్యాలు రిలాక్స్ అయితే చేరుకోగలవు.
తప్పిపోయింది కార్యాచరణ (XCSE-388) నుండి అనేక నిర్వచనాలు , clock_ div_ t మరియు clock_prescale_set () వంటివి ATmega324PB, ATmega328PB, ATtiny441 మరియు ATtiny841తో సహా పరికరాల కోసం నిర్వచించబడలేదు.
మాక్రోలు లేవు ప్రీప్రాసెసర్ macros_ xcs _MODE_, _xcs VERSION, _xc మరియు xcs కంపైలర్ ద్వారా స్వయంచాలకంగా నిర్వచించబడలేదు. ఇవి ఇప్పుడు అందుబాటులో ఉన్నాయి.
వెర్షన్ 2.05
అంతర్గత కంపైలర్ లోపం (XCS-1822) Windows కింద నిర్మిస్తున్నప్పుడు, కోడ్ని ఆప్టిమైజ్ చేసేటప్పుడు అంతర్గత కంపైలర్ లోపం ఏర్పడి ఉండవచ్చు.
RAM ఓవర్ఫ్లో కనుగొనబడలేదు (XCS-1800, XCS-1796) అందుబాటులో ఉన్న RAMని మించిన ప్రోగ్రామ్లు కొన్ని సందర్భాల్లో కంపైలర్ ద్వారా కనుగొనబడలేదు, ఫలితంగా రన్టైమ్ కోడ్ వైఫల్యం ఏర్పడింది.
విస్మరించబడిన ఫ్లాష్ మెమరీ (XCS-1792) avrxmega3 మరియు avrtiny పరికరాల కోసం, ఫ్లాష్ మెమరీలోని భాగాలు MPLAB X IDE ద్వారా ప్రోగ్రామ్ చేయబడలేదు.
మెయిన్ని అమలు చేయడంలో వైఫల్యం (XCS-1788) ప్రోగ్రామ్లో గ్లోబల్ వేరియబుల్స్ నిర్వచించబడని కొన్ని సందర్భాల్లో, రన్టైమ్ స్టార్టప్ కోడ్ నిష్క్రమించలేదు మరియు ప్రధాన () ఫంక్షన్ని చేరుకోలేదు.
తప్పు మెమరీ సమాచారం (XCS-1787) avrxmega3 మరియు avrtiny పరికరాల కోసం, ప్రోగ్రామ్ మెమరీకి బదులుగా RAMని రీడ్-ఓన్లీ డేటా వినియోగిస్తోందని avr-సైజ్ ప్రోగ్రామ్ నివేదించింది.
తప్పు ప్రోగ్రామ్ మెమరీ రీడ్ (XCS-1783) డేటా అడ్రస్ స్పేస్లో మ్యాప్ చేయబడిన ప్రోగ్రామ్ మెమరీతో పరికరాల కోసం కంపైల్ చేయబడిన ప్రాజెక్ట్లు మరియు PROGMEM స్థూల/లక్షణాన్ని ఉపయోగించి ఆబ్జెక్ట్లను నిర్వచించేవి ఈ ఆబ్జెక్ట్లను తప్పు చిరునామా నుండి చదివి ఉండవచ్చు.
లక్షణాలతో అంతర్గత లోపం (XCS-1773) మీరు పాయింటర్ ఆబ్జెక్ట్లను దీనితో నిర్వచించినట్లయితే అంతర్గత లోపం సంభవించింది
పాయింటర్ పేరు మరియు డీరిఫరెన్స్ చేయబడిన రకం మధ్య _at () లేదా లక్షణం() టోకెన్లు, ఉదాహరణకుampలే, చార్ *
_at (0x80015 0) cp; అలాంటి కోడ్ ఎదురైతే ఇప్పుడు హెచ్చరిక జారీ చేయబడుతుంది.
మెయిన్ని అమలు చేయడంలో వైఫల్యం (XCS-1780, XCS-1767, XCS-1754) EEPROM వేరియబుల్స్ని ఉపయోగించడం లేదా కాన్ఫిగర్ ప్రాగ్మా ఉపయోగించి ఫ్యూజ్లను నిర్వచించడం వలన ప్రధాన ()కి చేరుకునే ముందు, రన్టైమ్ స్టార్టప్ కోడ్లో తప్పు డేటా ప్రారంభీకరణ మరియు/లేదా ప్రోగ్రామ్ ఎగ్జిక్యూషన్ లాక్ చేయబడి ఉండవచ్చు.
చిన్న పరికరాలతో ఫ్యూజ్ లోపం (XCS-1778, XCS-1742) attiny4/5/9/10/20/40 పరికరాలు వాటి హెడర్లో తప్పు ఫ్యూజ్ పొడవును కలిగి ఉన్నాయి fileఫ్యూజ్లను నిర్వచించిన కోడ్ను రూపొందించడానికి ప్రయత్నిస్తున్నప్పుడు లింకర్ దోషాలకు దారి తీస్తుంది.
విభజన లోపం (XCS-1777) అడపాదడపా విభజన లోపం సరిదిద్దబడింది.
అసెంబ్లర్ క్రాష్ (XCS-1761) కంపైలర్ ఉబుంటు 18 కింద రన్ చేయబడినప్పుడు avr-as అసెంబ్లర్ క్రాష్ అయి ఉండవచ్చు.
ఆబ్జెక్ట్లు క్లియర్ చేయబడలేదు (XCS-1752) ప్రారంభించబడని స్టాటిక్ నిల్వ వ్యవధి ఆబ్జెక్ట్లు రన్టైమ్ స్టార్టప్ కోడ్ ద్వారా క్లియర్ చేయబడి ఉండకపోవచ్చు.
వైరుధ్య పరికర వివరణ విస్మరించబడింది (XCS-1749) బహుళ పరికర స్పెసిఫికేషన్ ఎంపికలను ఉపయోగించినప్పుడు మరియు విభిన్న పరికరాలను సూచించినప్పుడు కంపైలర్ లోపాన్ని సృష్టించడం లేదు.
కుప్పల వారీగా మెమరీ అవినీతి (XCS-1748) heap_ ప్రారంభ చిహ్నం తప్పుగా సెట్ చేయబడుతోంది, దీని ఫలితంగా సాధారణ వేరియబుల్స్ కుప్ప ద్వారా పాడయ్యే అవకాశం ఉంది.
లింకర్ రీలొకేషన్ ఎర్రర్ (XCS-1739) కోడ్లో rjmp లేదా rcall సరిగ్గా 4k బైట్ల దూరంలో ఉన్న లక్ష్యాన్ని కలిగి ఉన్నప్పుడు లింకర్ రీలొకేషన్ ఎర్రర్ ఏర్పడి ఉండవచ్చు.
వెర్షన్ 2.00
ఏదీ లేదు.
తెలిసిన సమస్యలు
కంపైలర్ యొక్క ఆపరేషన్లో క్రింది పరిమితులు ఉన్నాయి. ఇవి సాధారణ కోడింగ్ పరిమితులు కావచ్చు లేదా
వినియోగదారు మాన్యువల్లో ఉన్న సమాచారం నుండి విచలనాలు. టైటిల్లోని బ్రాకెట్ చేయబడిన లేబుల్(లు) ట్రాకింగ్ డేటాబేస్లో సమస్య యొక్క గుర్తింపు. మీరు సపోర్ట్ని సంప్రదించాల్సిన అవసరం ఉన్నట్లయితే ఇది ప్రయోజనకరంగా ఉండవచ్చు. లేబుల్లు లేని అంశాలు మోడ్ ఆపరేండిని వివరించే పరిమితులు మరియు అవి శాశ్వతంగా అమలులో ఉండే అవకాశం ఉంది.
MPLAB X IDE ఇంటిగ్రేషన్
MPLAB IDE ఇంటిగ్రేషన్ MPLAB IDE నుండి కంపైలర్ని ఉపయోగించాలంటే, కంపైలర్ని ఇన్స్టాల్ చేసే ముందు మీరు తప్పనిసరిగా MPLAB IDEని ఇన్స్టాల్ చేయాలి.
కోడ్ జనరేషన్
PA మెమరీ కేటాయింపు వైఫల్యం (XCS-2881) విధానపరమైన సంగ్రహణ ఆప్టిమైజర్లను ఉపయోగిస్తున్నప్పుడు, పరికరంలో అందుబాటులో ఉన్న ప్రోగ్రామ్ మెమరీకి కోడ్ పరిమాణం దగ్గరగా ఉన్నప్పుడు లింకర్ మెమరీ కేటాయింపు లోపాలను నివేదించవచ్చు, అయినప్పటికీ ప్రోగ్రామ్ అందుబాటులో ఉన్న స్థలానికి సరిపోయేలా ఉంటుంది.
స్మార్ట్-IO అంత స్మార్ట్ కాదు (XCS-2872) కోస్ట్-డేటా-ఇన్-ప్రోమ్ ఫీచర్ డిసేబుల్ చేయబడి ఉంటే లేదా పరికరం మొత్తం ఫ్లాష్ డేటా మెమరీలోకి మ్యాప్ చేయబడి ఉంటే, కంపైలర్ యొక్క స్మార్ట్-io ఫీచర్ స్ప్రింట్ ఫంక్షన్ కోసం చెల్లుబాటు అయ్యే కానీ సబ్ ఆప్టిమల్ కోడ్ను ఉత్పత్తి చేస్తుంది.
ఇంకా తక్కువ స్మార్ట్ స్మార్ట్-IO (XCS-2869) -floe మరియు -fno-buil tin ఎంపికలు రెండూ ఉపయోగించబడినప్పుడు కంపైలర్ యొక్క స్మార్ట్-io ఫీచర్ చెల్లుబాటు అయ్యే కానీ ఉపశీర్షిక కోడ్ను ఉత్పత్తి చేస్తుంది.
సబ్ప్టిమల్ రీడ్-ఓన్లీ డేటా ప్లేస్మెంట్ (XCS-2849) లింకర్కు ప్రస్తుతం APPCODE మరియు APPDATA మెమరీ విభాగాలు లేదా మెమరీ మ్యాప్లోని [No-]చదివినప్పుడు-వ్రాయండి విభాగాల గురించి తెలియదు. ఫలితంగా, లింకర్ మెమరీలో అనుచితమైన ప్రాంతంలో చదవడానికి మాత్రమే డేటాను కేటాయించే అవకాశం ఉంది. కోస్ట్-డేటా-ఇన్-ప్రాగ్మా ఫీచర్ ఎనేబుల్ చేయబడితే, ప్రత్యేకించి కోస్ట్-డేటా-ఇన్-కాన్ఫిగర్-మ్యాప్డ్-ప్రోమ్ ఫీచర్ కూడా ఎనేబుల్ చేయబడితే, డేటా మిస్ ప్లేస్ అయ్యే అవకాశం పెరుగుతుంది. అవసరమైతే ఈ లక్షణాలను నిలిపివేయవచ్చు.
వస్తువు file ప్రాసెసింగ్ ఆర్డర్ (XCS-2863) వస్తువులు ఉండే క్రమం fileలింకర్ ద్వారా లు ప్రాసెస్ చేయబడతాయి, విధానపరమైన సంగ్రహణ ఆప్టిమైజేషన్ల (-mpa ఎంపిక) వినియోగం ఆధారంగా తేడా ఉండవచ్చు. ఇది బహుళ మాడ్యూళ్లలో బలహీనమైన ఫంక్షన్లను నిర్వచించే కోడ్ను మాత్రమే ప్రభావితం చేస్తుంది.
సంపూర్ణ (XCS-2777)తో లింకర్ లోపం RAM ప్రారంభంలో ఒక అడ్రస్ వద్ద ఒక వస్తువు సంపూర్ణంగా చేయబడినప్పుడు మరియు ప్రారంభించబడని వస్తువులు కూడా నిర్వచించబడినప్పుడు, లింకర్ లోపం ప్రేరేపించబడవచ్చు.
షార్ట్ వేక్-అప్ IDలు (XCS-2775) ATA5700/2 పరికరాల కోసం, PHID0/1 రిజిస్టర్లు 16 బిట్ల వెడల్పు కాకుండా 32 బిట్స్ వెడల్పుగా మాత్రమే నిర్వచించబడ్డాయి.
గుర్తుకు కాల్ చేస్తున్నప్పుడు లింకర్ క్రాష్ (XCS-2758) -Wl, –defsym లింకర్ ఎంపికను ఉపయోగించి నిర్వచించబడిన గుర్తును సోర్స్ కోడ్ పిలిచినప్పుడు -merlad డ్రైవర్ ఎంపికను ఉపయోగించినట్లయితే లింకర్ క్రాష్ కావచ్చు.
సరికాని ప్రారంభీకరణ (XCS-2679) డేటా మెమరీలో కొన్ని గ్లోబల్/స్టాటిక్ బైట్-సైజ్ ఆబ్జెక్ట్ల ప్రారంభ విలువలు ఎక్కడ ఉంచబడ్డాయి మరియు రన్టైమ్లో వేరియబుల్స్ యాక్సెస్ చేయబడే వాటి మధ్య వ్యత్యాసం ఉంది.
తప్పుగా ప్రారంభించబడింది ఖాళీగా సెట్ చేస్తుంది (XCS-2652) పేర్కొన్న () ద్వారా మార్పిడి కోసం సబ్జెక్ట్ స్ట్రింగ్లో ఘాతాంక ఆకృతిలో ఫ్లోటింగ్-పాయింట్ నంబర్గా కనిపించేది మరియు ఇ అక్షరం తర్వాత ఊహించని అక్షరం ఉన్న సందర్భాల్లో, ఖాళీ చిరునామా అందించబడితే, ఆ తర్వాత అక్షరాన్ని సూచిస్తుంది. ఇ మరియు ఇ కాదు. ఉదాహరణకుample: పేర్కొన్నారు ("హూయ్", ఖాళీ); 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, ఇది చెల్లని అవుట్పుట్కు దారితీయవచ్చు. 'స్పెక్' fileలు పంపిణీ చేయబడిన DFPలతో తాజాగా ఉండకపోవచ్చు మరియు అంతర్గత కంపైలర్ పరీక్షతో మాత్రమే ఉపయోగించడానికి ఉద్దేశించబడ్డాయి.
మెమరీ అతివ్యాప్తి గుర్తించబడలేదు (XCS-1966) కంపైలర్ ఒక చిరునామా వద్ద సంపూర్ణంగా చేసిన ఆబ్జెక్ట్ల మెమరీ అతివ్యాప్తిని గుర్తించడం లేదు (() వద్ద) మరియు సెక్షన్ () స్పెసిఫైయర్ని ఉపయోగించే ఇతర ఆబ్జెక్ట్లు మరియు అదే చిరునామాకు లింక్ చేయబడ్డాయి.
లైబ్రరీ ఫంక్షన్లు మరియు _meme (XCS-1763)తో వైఫల్యం _memo అడ్రస్ స్పేస్లో ఆర్గ్యుమెంట్తో కాల్డ్ లింబిక్ ఫ్లోట్ ఫంక్షన్లు విఫలం కావచ్చు. లైబ్రరీ రొటీన్లు కొంతమంది C ఆపరేటర్ల నుండి పిలవబడుతున్నాయని గమనించండి, కాబట్టి, ఉదాహరణకుample, కింది కోడ్ ప్రభావితం చేయబడింది: regFloatVar > memxFloatVarని తిరిగి ఇవ్వండి;
పరిమిత లింబిక్ అమలు (AVRTC-731) ATTiny4/5/9/10/20/40 ఉత్పత్తుల కోసం, లింబిక్లో ప్రామాణిక C / గణిత లైబ్రరీ అమలు చాలా పరిమితంగా ఉంది లేదా ఉనికిలో లేదు.
ప్రోగ్రామ్ మెమరీ పరిమితులు (AVRTC-732) 128 kb కంటే ఎక్కువ ఉన్న ప్రోగ్రామ్ మెమరీ ఇమేజ్లకు టూల్చెయిన్ మద్దతు ఇస్తుంది; ఏది ఏమైనప్పటికీ, -రిలాక్స్ ఎంపికను ఉపయోగించినప్పుడు అవసరమైన ఫంక్షన్ స్టబ్లను రూపొందించడం కంటే సడలింపు లేకుండా మరియు సహాయక దోష సందేశం లేకుండా లింకర్ ఆబార్ట్ చేసిన సందర్భాలు ఉన్నాయి.
పేరు స్థల పరిమితులు (AVRTC-733) పేరు పెట్టబడిన చిరునామా ఖాళీలు టూల్చెయిన్ ద్వారా మద్దతివ్వబడతాయి, వినియోగదారు గైడ్ విభాగంలో పేర్కొన్న పరిమితులకు లోబడి ప్రత్యేక టైప్ క్వాలిఫైయర్లు.
సమయ మండలాలు ది లైబ్రరీ ఫంక్షన్లు GMTని ఊహిస్తాయి మరియు స్థానిక సమయ మండలాలకు మద్దతు ఇవ్వవు, కాబట్టి స్థానిక సమయం () గమ్మైట్ () వలె అదే సమయాన్ని తిరిగి ఇస్తుంది.ample.
కస్టమర్ మద్దతు
file///Applications/microehipA VR కోసం /xc8/v 2 .40/docs/Read me_X C 8_. htm
పత్రాలు / వనరులు
![]() |
మైక్రోచిప్ MPLAB XC8 C కంపైలర్ సాఫ్ట్వేర్ [pdf] యజమాని మాన్యువల్ MPLAB XC8 C, MPLAB XC8 C కంపైలర్ సాఫ్ట్వేర్, కంపైలర్ సాఫ్ట్వేర్, సాఫ్ట్వేర్ |