MICROCHIP - nemboVidokezo vya Utoaji vya MPLAB XC8 C Toleo la 2.39 la AVR MCU
Mwongozo wa Mtumiaji

WARAKA HUU UNA MAELEZO MUHIMU KUHUSIANA NA KAMPANISHI YA MPLAB XC8 C INAPOLENGA VIFAA VYA MICROCHIP AVR. TAFADHALI ISOME KABLA YA KUENDESHA SOFTWARE HII.
ANGALIA MAELEZO YA KUTOLEWA YA MPLAB XC8 C COMPILER KWA WARAKA WA PIC IKIWA UNATUMIA KAMPANISA KWA VIFAA 8-BIT PIC.

Zaidiview

1.1. Utangulizi
Toleo hili la mkusanyaji wa Microchip MPLAB® XC8 C ni mkusanyaji wa usalama utendakazi, kulingana na toleo la v2.36 la kikusanyaji hiki na ambacho sasa kinaauni Leseni ya Seva ya Mtandao.
1.2. Tarehe ya Kutolewa
Tarehe rasmi ya kutolewa kwa toleo hili la mkusanyaji ni tarehe 27 Januari 2022.
1.3. Toleo Lililotangulia
Toleo la awali la mkusanyaji wa MPLAB XC8 C lilikuwa 2.36, lililotolewa 25 Januari 2022.
1.4. Mwongozo wa Usalama wa Utendaji
Mwongozo wa Utendaji wa Usalama kwa wakusanyaji wa MPLAB XC unapatikana katika kifurushi cha hati unaponunua leseni inayofanya kazi ya usalama.
1.5. Leseni za Sehemu na Matoleo® yeye MPLAB
Kikusanyaji cha XC8 C cha zana za AVR MCUs huandikwa na kusambazwa chini ya Leseni ya Jumla ya Umma ya GNU (GPL) ambayo ina maana kwamba msimbo wake wa chanzo unasambazwa bila malipo na kupatikana kwa umma.
Msimbo wa chanzo wa zana chini ya GNU GPL unaweza kupakuliwa kando na Microchip webtovuti. Unaweza kusoma GNU GPL katika faili iliyotajwa inayopatikana saraka ndogo ya saraka yako ya kusakinisha license.txt avr/doc. Mjadala wa jumla wa kanuni za msingi za GPL unaweza kupatikana hapa.
Msimbo wa usaidizi uliotolewa kwa faili za vichwa, hati za kiunganishi, na maktaba zinazotumika wakati wa utekelezaji ni msimbo wa umiliki na haujashughulikiwa chini ya GPL.
Kikusanyaji hiki ni utekelezaji wa toleo la GCC 5.4.0, toleo la binutils 2.26, na hutumia toleo la avr-libc 2.0.0.
1.6. Mahitaji ya Mfumo
Kikusanyaji cha MPLAB XC8 C na programu ya utoaji leseni inayoitumia zinapatikana kwa aina mbalimbali za mifumo ya uendeshaji, ikijumuisha matoleo ya 64-bit ya yafuatayo: Matoleo ya kitaalamu ya Microsoft Windows 10; Ubuntu 18.04; na macOS 10.15.5. Binaries za Windows zimetiwa saini na msimbo. Nambari za macOS zimetiwa saini na kuthibitishwa.
Ikiwa unatumia seva ya leseni ya mtandao, ni kompyuta zilizo na mifumo ya uendeshaji inayoungwa mkono na wakusanyaji pekee ndizo zinaweza kutumika kupangisha seva ya leseni. Kuanzia toleo la 2.0 la xclm, seva ya leseni ya mtandao inaweza kusakinishwa kwenye jukwaa la Microsoft Windows Server, lakini seva ya leseni haihitaji kufanya kazi kwenye toleo la seva la mfumo wa uendeshaji.
1.7. Vifaa Vinavyotumika
Kikusanyaji hiki kinaauni vifaa vyote vya 8-bit AVR MCU vinavyojulikana wakati wa kutolewa. Tazama (katika mkusanyaji avr_chipinfo.html directory) kwa orodha ya vifaa vyote vinavyotumika. Faili hizi pia huorodhesha mipangilio ya hati ya usanidi kwa kila kifaa.
1.8. Matoleo na Maboresho ya Leseni
Kikusanyaji cha MPLAB XC8 kinaweza kuamilishwa kama bidhaa iliyoidhinishwa (PRO) au isiyo na leseni (Bure). Unahitaji kununua ufunguo wa kuwezesha ili kupata leseni ya mkusanyaji wako. Leseni inaruhusu kiwango cha juu cha uboreshaji ikilinganishwa na bidhaa Bila malipo. Mkusanyaji asiye na leseni anaweza kuendeshwa kwa muda usiojulikana bila leseni.
Mkusanyaji wa Usalama Utendaji wa MPLAB XC8 lazima uanzishwe kwa leseni ya utendaji kazi iliyonunuliwa kutoka kwa Microchip. Mkusanyaji haitafanya kazi bila leseni hii. Mara baada ya kuanzishwa, unaweza kuchagua kiwango chochote cha uboreshaji na kutumia vipengele vyote vya mkusanyaji. Toleo hili la Usalama Utendaji wa MPLAB XC
Mkusanyaji anaauni Leseni ya Seva ya Mtandao.
Tazama hati ya Kusakinisha na Kutoa Leseni Vikusanyaji vya MPLAB XC C (DS50002059) kwa maelezo kuhusu aina za leseni na usakinishaji wa kikusanyaji chenye leseni.
1.9. Ufungaji na Uanzishaji
Tazama pia sehemu za Masuala ya Uhamiaji na Mapungufu kwa maelezo muhimu kuhusu kidhibiti kipya cha leseni kilichojumuishwa na mkusanyaji huyu.
Ikiwa unatumia MPLAB IDE, hakikisha kuwa umesakinisha toleo jipya zaidi la MPLAB X IDE 5.0 au toleo jipya zaidi kabla ya kusakinisha zana hii. Acha IDE kabla ya kusakinisha mkusanyaji. Endesha (Windows), (Linux) au (macOS) .exe .run .programu ya kusanikisha kisakinishi, kwa mfano na ufuate maelekezo kwenye skrini.
XC8-1.00.11403-windows.exe
Saraka ya usakinishaji chaguo-msingi inapendekezwa. Ikiwa unatumia Linux, lazima usakinishe mkusanyaji kwa kutumia terminal na kutoka kwa akaunti ya mizizi. Sakinisha kwa kutumia akaunti ya macOS na marupurupu ya msimamizi.
Uamilisho sasa unafanywa kando kwa usakinishaji. Tazama hati ya Meneja wa Leseni kwa Wasanii wa MPLAB® XC C (DS52059) kwa maelezo zaidi.
Ukichagua kuendesha mkusanyaji chini ya leseni ya tathmini, sasa utapata onyo wakati wa ujumuishaji ukiwa ndani ya siku 14 za mwisho wa kipindi chako cha tathmini. Onyo kama hilo hutolewa ikiwa uko ndani ya siku 14 baada ya mwisho wa usajili wako wa HPA.
Seva ya Leseni ya Mtandao ya XC ni kisakinishi tofauti na haijajumuishwa katika kisakinishi cha mkusanyaji cha mtumiaji mmoja.
Kidhibiti cha Leseni cha XC sasa kinaauni utumiaji wa leseni za mtandao zinazoelea. Inalenga watumiaji wa simu, kipengele hiki kinaruhusu leseni inayoelea kwenda nje ya mtandao kwa muda mfupi. Kwa kutumia kipengele hiki, unaweza kutenganisha kutoka kwa mtandao na bado utumie kikusanyaji chako cha MPLAB XC. Tazama folda ya hati ya usakinishaji wa XCLM kwa zaidi juu ya kipengele hiki.
MPLAB X IDE inajumuisha dirisha la Leseni (Zana > Leseni) ili kudhibiti utumiaji wa mitandao kwa njia inayoonekana.

1.9.1. Kutatua Masuala ya Ufungaji
Ikiwa utapata matatizo ya kusakinisha kikusanyaji chini ya mifumo yoyote ya uendeshaji ya Windows, jaribu mapendekezo yafuatayo.

  • Endesha usakinishaji kama msimamizi.
  • Weka ruhusa za programu ya kusakinisha kuwa 'Udhibiti kamili'. (Bonyeza faili kulia, chagua Sifa, kichupo cha Usalama, chagua mtumiaji, hariri.)
  • Weka ruhusa za folda ya temp kuwa "Udhibiti Kamili!.
  • Kuamua eneo la folda ya temp, chapa kwenye amri ya Run (ufunguo wa nembo ya Windows + R). %temp% Hii itafungua kidirisha cha kichunguzi cha faili kinachoonyesha saraka hiyo na itakuruhusu kuamua njia ya folda hiyo.

1.10. Nyaraka za Mkusanyaji

Vidokezo vya Utoaji vya MICROCHIP MPLAB XC8 C Toleo la 2.39 la AVR MCU - docomentMiongozo ya mtumiaji ya mkusanyaji inaweza kufunguliwa kutoka kwa ukurasa wa HTML unaofunguliwa katika kivinjari chako unapobofya kitufe cha usaidizi cha bluu kwenye dashibodi ya MPLAB X IDE, kama inavyoonyeshwa kwenye picha ya skrini.
Ikiwa unaunda malengo ya 8-bit AVR, Mwongozo wa Mkusanyaji wa Mtumiaji® wa MPLAB® XC8 C kwa AVR.
MCU ina taarifa juu ya chaguo hizo za mkusanyaji na vipengele vinavyotumika kwa usanifu huu.

1.11. Msaada kwa Wateja
Microchip inakaribisha ripoti za hitilafu, mapendekezo au maoni kuhusu toleo hili la mkusanyaji. Tafadhali elekeza ripoti zozote za hitilafu au maombi ya kipengele kupitia Mfumo wa Usaidizi.

Sasisho za Nyaraka

Kwa matoleo ya mtandaoni na ya kisasa ya nyaraka za MPLAB XC8, tafadhali tembelea Microchip's Online.
Nyaraka za Kiufundi webtovuti.
Hati mpya au zilizosasishwa za AVR katika toleo hili:
Kusakinisha na Kutoa Leseni za Vikusanyaji vya MPLAB® XC C (DS50002059) marekebisho L
Mwongozo wa Marejeleo ya Maktaba ya Unified ya Microchip inaelezea tabia na kiolesura cha vitendaji vilivyofafanuliwa na Maktaba ya Kawaida ya Microchip Uniified, pamoja na matumizi yaliyokusudiwa ya aina na maktaba ya jumla. Baadhi ya maelezo haya yalikuwemo hapo awali katika Mwongozo wa Watumiaji wa Mkusanyiko wa MPLA® XC8 C kwa AVR.
MCU. Maelezo mahususi ya maktaba ya kifaa bado yamo katika mwongozo huu wa mkusanyaji.
Mwongozo wa Mtumiaji wa Hexmate umejumuishwa kwenye saraka katika toleo hili. Mwongozo huu umekusudiwa kwa hati zinazoendesha Hexmate kama programu ya kujitegemea.
Sehemu zifuatazo hutoa masahihisho na maelezo ya ziada kwa yale yanayopatikana katika miongozo ya mtumiaji iliyosafirishwa na mkusanyaji.

2.1. Chaguo la umbizo la smart-io
Chaguo la-msmart-io-format=fmt fmt, ambapo kuna mfuatano ulio na vipimo vya ugeuzaji vya IO vilivyoumbizwa, hufahamisha mkusanyaji kwamba vipimo vilivyoorodheshwa vinatumiwa na vitendaji mahiri vya IO.
Ili kupunguza ukubwa wa msimbo, mkusanyaji hubinafsisha msimbo wa maktaba unaohusishwa na kuchapisha na kuchanganua familia za vitendaji mahiri vya IO, kulingana na maelezo ya ubadilishaji yaliyopo katika mifuatano ya umbizo iliyounganishwa kwenye simu zote kwa vipengele hivi. Kipengele hiki ni kiotomatiki kabisa na hakiwezi kuzimwa.
Katika baadhi ya hali, mkusanyaji hawezi kubainisha taarifa ya matumizi kutoka kwa simu iliyoumbizwa ya chaguo za kukokotoa za IO. Ikiwa chaguo limetumika, vipimo vya uongofu vinavyohitajika kwa kazi hizi hupatikana kutoka kwa kamba; la sivyo, mkusanyaji hafikirii jinsi vitendaji vya -msmart-io-format=fmt fmt vinatumiwa na kuhakikisha kwamba vitendaji vilivyoumbizwa kikamilifu vya IO vinaunganishwa kwenye taswira ya programu ya mwisho.
Kwa mfanoample, zingatia simu zifuatazo kwa vitendaji mahiri vya IO.

vscanf(“%d:%li”, va_list1);
vprintf(“%-s%d”, va_list2);
vprintf(fmt1, va_list3);// matumizi ya utata
vscanf(fmt2, va_list4);// matumizi ya utata

Wakati wa kuchakata simu mbili za mwisho, mkusanyaji hawezi kupata habari yoyote ya utumiaji kutoka kwa safu za umbizo, au hoja. Katika matukio haya, chaguo la -msmart-io-format linaweza kutumika na litaruhusu vitendaji bora zaidi vya umbizo la I0 kuzalishwa, hivyo basi kupunguza ukubwa wa msimbo wa programu. Kwa mfanoample, ikiwa mifuatano ya umbizo iliyoelekezwa na fmtl na fmt2 kwa pamoja inatumia viambishi vya ubadilishaji vya “%d”, “%i” na ”% s” pekee, the -msmart-io-format=fmt=”%d%i%s ” chaguo linapaswa kutolewa.

Mfuatano wa rangi unaweza kuwa na vipimo vyovyote halali vya ugeuzaji, ikiwa ni pamoja na bendera na virekebishaji (kwa mfanoample “%-13. 91s"), na inapaswa kuakisi zile zinazotumiwa na chaguo za kukokotoa ambazo matumizi yake ni ya kutatanisha. Kushindwa kujumuisha vipimo katika kidogo hoja ambapo imetumiwa na vitendaji vya muundo wa I0 inaweza kusababisha kutofaulu kwa nambari.
Ikiwa fmt ni mfuatano tupu au au haina ubainishaji wowote unaoweza kutambulika, onyo litatolewa na vitendakazi vya I0 vilivyoumbizwa kikamilifu vitaunganishwa kwenye picha ya mwisho ya programu.
Chaguo hili linaweza kutumika mara kadhaa kwenye mstari wa amri. Vigezo vya ubadilishaji vinavyotumiwa na kila chaguo vimekusanywa.

2.2. omit-frame-pointer Chaguo
Chaguo la – f omit- fremu-pointer huelekeza mkusanyaji kutumia kielekezi cha rafu moja kwa moja kufikia vitu kwenye rafu na, ikiwezekana, kuacha msimbo unaohifadhi, kuanzisha na kurejesha rejista ya fremu. Inawashwa kiotomatiki katika viwango vyote vya uboreshaji visivyo sifuri.
Kukanusha chaguo, kwa kutumia -fno-omit- frame-pointer, kunaweza kusaidia kutatua msimbo ulioboreshwa; hata hivyo, chaguo hili halihakikishi kwamba pointer ya sura itatumika daima.

2.3. unroll-loops Chaguzi
Mizunguko ya - funrol I-loops na -(kufungua-chaguo za vitanzi vyote hudhibiti uboreshaji unaoelekezwa kwa kasi ambao hujaribu kuondoa ucheleweshaji wa matawi katika vitanzi. Mizunguko iliyofunguliwa kwa kawaida huongeza kasi ya utekelezaji wa msimbo unaozalishwa, kwa gharama ya saizi kubwa ya msimbo.
Chaguo la - funrol I-loops hufungua vitanzi ambapo idadi ya marudio inaweza kubainishwa wakati wa kukusanya au msimbo unapoingia kwenye kitanzi. Chaguo la -funroll-all-loops ni kali zaidi, linafungua loops zote, hata wakati idadi ya marudio haijulikani. Kwa kawaida haina ufanisi katika kuboresha kasi ya utekelezaji kuliko chaguo la - funrol 1-loops.

2.4. mafuta-Ito-vitu Chaguo
The – f fat-1 to-obj ects chaguo maombi kwamba compiler kuzalisha kitu mafuta files, ambazo zina zote mbili
msimbo wa kitu na GIMPLE (moja ya uwakilishi wa ndani wa GCC), iliyoandikwa kwa sehemu za kipekee za ELF. Vitu kama hivyo files ni muhimu kwa msimbo wa maktaba ambao unaweza kuunganishwa na miradi inayofanya na haitumii kiboreshaji cha wakati wa kiungo, kinachodhibitiwa na -flto chaguo.
Aina ya - fno-fat-lto-objects ya chaguo hili, ambayo ni chaguo-msingi ikiwa hakuna chaguo iliyobainishwa, inakandamiza ujumuishaji wa msimbo wa kitu kwenye kitu. files, na kusababisha ujenzi wa haraka. Walakini, kitu kama hicho files lazima iunganishwe kila wakati kwa kutumia kiboreshaji cha muda wa kiungo.

2.5. Chaguo la kizigeu cha Ito
The - flto-partiti kwenye=a Igo ri thm chaguo hudhibiti kanuni inayotumika kugawanya kitu files wakati wa kuendesha kiboreshaji cha muda wa kiungo. Hoja hakuna huzima ugawaji kabisa na kutekeleza hatua ya uboreshaji wa muda wa kiungo moja kwa moja kutoka kwa awamu nzima ya uchanganuzi wa programu (WPA). Njia hii ya operesheni itatoa matokeo bora zaidi, kwa gharama ya mahitaji makubwa ya kumbukumbu ya mkusanyaji na nyakati ndefu za ujenzi, ingawa hii haiwezekani kuwa suala na programu ndogo. Kugawanya kitu files inaweza kuboresha utendaji wa kujenga. Hoja ya kwanza inabainisha kuwa kizigeu kimoja kinapaswa kutumika, na hoja lto1 inabainisha kugawanya vioo vilivyoagizwa na chanzo asili. files. Hoja chaguo-msingi ni ya uwiano, ambayo inabainisha kugawanya katika vipande vya ukubwa sawa, inapowezekana.

2.6. Nyongeza kwa Sehemu ya 3.6.11 Chaguzi za Kiunganishi kilichopangwa kwenye Ramani
The -wl, - kuanza kwa sehemu =sek tion=kuongeza haipo kwenye jedwali la chaguzi za kiunganishi zinazotumika kawaida, zinazopatikana kwa kutumia -wl chaguo la kiendesha mkusanyaji. Chaguo hili huruhusu uwekaji wa sehemu zilizopewa jina maalum kwenye anwani iliyobainishwa. Haiwezi kutumika kuweka sehemu za kawaida, kama ( . data, . bss, . text), ambayo lazima iwekwe kwa kutumia -wl, -'r chaguo.

2.7. Marekebisho ya Kifungu cha 4.14.2 Kubadilisha na Kuunganisha Sehemu Iliyotengwa
Kumbuka kuwa kinyume na maelezo yaliyo katika sehemu hii ya mwongozo wa Mtumiaji, mabadiliko yaliyofanywa kwa mkusanyaji katika toleo hili sasa yanamaanisha kuwa sehemu maalum zinaweza kuunganishwa kwa kutumia -w1, - kitengo ioni- start=section=cir chaguo na bila kulazimika kurekebisha hati ya kiunganishi.

Nini Kipya

Vipengee vifuatavyo ni vinavyolengwa na mkusanyaji sasa. Nambari ya toleo katika vichwa vidogo inaonyesha toleo la kwanza la mkusanyaji ili kuauni vipengele vinavyofuata.

3.1. Toleo la 2.39 (Toleo la Usalama Utendaji)
Leseni ya Seva ya Mtandao Toleo hili la Kikusanyaji cha Usalama Kitendaji cha MPLAB XC8 kinaauni Leseni ya Seva ya Mtandao.

3.2. Toleo la 2.36 
Hakuna.
3.3. Toleo la 2.35 
Usaidizi wa kifaa kipya unapatikana kwa sehemu zifuatazo za AVR: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28, na AVR64DD32.
Ubadilishaji wa muktadha ulioboreshwa Chaguo jipya la -mcall-isr-prologues hubadilisha jinsi vitendakazi vya kukatiza huhifadhi rejista wakati wa kuingia na jinsi rejista hizo zinavyorejeshwa wakati utaratibu wa kukatiza unakoma. Inafanya kazi kwa njia sawa na -mcall-prologues chaguo, lakini huathiri tu kazi za kukatiza (ISRs).
Ubadilishaji muktadha ulioboreshwa zaidi Mpya -mgas-isr-matangulizi chaguo hudhibiti msimbo wa kubadili muktadha unaozalishwa kwa taratibu ndogo za huduma za kukatiza. Kikiwashwa, kipengele hiki kitakuwa na mkusanyaji kuchanganua ISR kwa matumizi ya rejista na kuhifadhi rejista hizi zilizotumika tu ikiwa inahitajika.
Uwekaji ramani wa mweko unaoweza kusanidiwa Baadhi ya vifaa katika familia ya AVR DA na AVR DB vina SFR (km FLMAP) ambayo inabainisha ni sehemu gani ya 32k ya kumbukumbu ya programu itachorwa kwenye kumbukumbu ya data. Chaguo mpya - mconst-data-in-config-mapped-progmem inaweza kutumika kufanya kiunganishi kuweka data zote zilizohitimu katika sehemu moja ya 32k na kuanzisha kiotomatiki rejista husika ya SFR ili kuhakikisha kuwa data hii imepangwa kwenye data. nafasi ya kumbukumbu, ambapo itapatikana kwa ufanisi zaidi.

Microchip Unified Standard Maktaba zote MPLAB Wakusanyaji wa XC watashiriki Maktaba ya Kawaida ya Microchip Unified, ambayo sasa inapatikana kwa toleo hili la MPLAB XC8. The MPLAB® Mkusanyaji wa XC8 C
Mwongozo wa Mtumiaji wa AVR® MCU haijumuishi tena uhifadhi wa vipengele hivi vya kawaida. Habari hii sasa inaweza kupatikana katika Mwongozo wa Marejeleo ya Maktaba ya Microchip Unified Standard. Kumbuka kuwa baadhi ya utendakazi uliofafanuliwa hapo awali na avr-libc haupatikani tena. (Angalia Utendaji wa maktaba.)
Smart I0 Kama sehemu ya maktaba mpya zilizounganishwa, utendakazi wa JO katika familia za printf na scanf sasa zimetolewa maalum kwa kila muundo, kulingana na jinsi vipengele hivi vinatumika katika mpango. Hii inaweza kupunguza kwa kiasi kikubwa rasilimali zinazotumiwa na programu.
Chaguo la usaidizi la Smart I0 Wakati wa kuchanganua simu kwa vitendaji mahiri vya I0 (kama vile printf () au scanf ()), kikusanyaji hakiwezi kubaini kila wakati kutoka kwa mfuatano wa umbizo au kukisia kutoka kwa hoja vibainishi hivyo vya ubadilishaji vinavyohitajika na simu. Hapo awali, mkusanyaji hangeweza kudhani kila wakati na kuhakikisha kuwa vipengele 10 vinavyofanya kazi kikamilifu viliunganishwa kwenye picha ya mwisho ya programu. Chaguo jipya - msma rt-io- format=fmt limeongezwa ili mkusanyaji afahamishwe na mtumiaji wa viambishi vya ubadilishaji vinavyotumiwa na vitendaji mahiri vya I0 ambavyo utumiaji wake haueleweki, hivyo basi kuzuia taratibu 10 zisiunganishwe. (Angalia smart-io-format Chaguo kwa maelezo zaidi.)
Kuweka sehemu maalum Hapo awali, chaguo la -W1, -section-start liliweka tu sehemu maalum kwenye anwani iliyoombwa wakati hati ya kiunganishi ilifafanua sehemu ya pato kwa jina sawa. Wakati haikuwa hivyo, sehemu hiyo iliwekwa kwenye anwani iliyochaguliwa na kiunganishi na chaguo hilo lilipuuzwa kimsingi. Sasa chaguo litaheshimiwa kwa sehemu zote maalum, hata kama hati ya kiunganishi haifafanui sehemu hiyo. Kumbuka, hata hivyo, kwamba kwa sehemu za kawaida, kama . maandishi,. bss au . data, kigawanyaji bora zaidi bado kitakuwa na udhibiti kamili juu ya uwekaji wao, na chaguo halitakuwa na athari. Tumia -wl, -Sehemu=ongeza chaguo, kama ilivyoelezewa katika mwongozo wa mtumiaji.

3.4. Toleo la 2.32
Mwongozo wa Rafu Unapatikana kwa leseni ya mkusanyaji wa PRO, kipengele cha mwongozo wa rafu kinaweza kutumiwa kukadiria kina cha juu cha rafu yoyote inayotumiwa na programu. Huunda na kuchanganua grafu ya simu ya programu, huamua matumizi ya rafu ya kila chaguo la kukokotoa, na kutoa ripoti, ambayo kina cha rundo kinachotumiwa na programu kinaweza kukisiwa.
Kipengele hiki kimewezeshwa kupitia -mchp-stack- chaguo la mstari wa amri ya matumizi. Muhtasari wa matumizi ya rafu huchapishwa baada ya utekelezaji. Ripoti ya kina ya rafu inapatikana kwenye ramani file, ambayo inaweza kuombwa kwa njia ya kawaida.
Usaidizi wa usaidizi wa kifaa kipya unapatikana kwa sehemu zifuatazo za AVR: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTNY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX
Usaidizi wa kifaa kilichobatilishwa haupatikani tena kwa sehemu zifuatazo za AVR: AVR 16DA28, AVR16DA32 na, AVR16DA48.

3.5. Toleo la 2.31 Hakuna.
3.6. Toleo la 2.30
Chaguo jipya la kuzuia uanzishaji wa data Chaguo jipya la kiendeshi -mno-data-init huzuia uanzishaji wa data na ufutaji wa sehemu za bss. Inafanya kazi kwa kukandamiza matokeo ya do_copy_data na do_clear_bss alama kwenye mkusanyiko files, ambayo nayo itazuia kuingizwa kwa taratibu hizo na kiunganishi.
Uboreshaji Ulioimarishwa Idadi ya maboresho ya uboreshaji yamefanywa, ikiwa ni pamoja na kuondolewa kwa maagizo yasiyo ya lazima ya kurejesha, kuondolewa kwa baadhi ya miruko kufuatia maagizo ya kuruka-ikiwa-bit-ni, na uondoaji wa utaratibu ulioboreshwa na uwezo wa kukariri mchakato huu.
Chaguo za ziada sasa zinapatikana ili kudhibiti uboreshaji huu, haswa -fsection-anchors, ambayo inaruhusu ufikiaji wa vitu tuli kufanywa kulingana na ishara moja; -mpa-marudio =n, ambayo inaruhusu idadi ya marudio ya uondoaji wa kiutaratibu kubadilishwa kutoka chaguo-msingi ya 2; na, -mpa-callcost-shortcal 1, ambayo hufanya uondoaji wa kiutaratibu kwa ukali zaidi, kwa matumaini kwamba kiunganishi kinaweza kupumzika simu ndefu. Chaguo hili la mwisho linaweza kuongeza saizi ya nambari ikiwa mawazo ya msingi hayatatekelezwa.
Mpya usaidizi wa kifaa Usaidizi unapatikana kwa sehemu zifuatazo za AVR: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DA28, AVR128DB, AVR32DB, AVR128DB48DB, AVR128DB64DB, AVRXNUMXDBXNUMXDB, AVRXNUMXDAXNUMXDB
Usaidizi wa kifaa ulioghairiwa Usaidizi haupatikani tena kwa sehemu zifuatazo za AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, 6617CATA664251, ATAXNUMXC, XNUMX, ATAXNUMX, ATAXNUMXC na ATAXNUMXC.

3.7. Toleo la 2.29 (Toleo la Usalama Utendaji)
Kijajuu file kwa mkusanyaji bunt-ins Ili kuhakikisha kuwa mkusanyaji anaweza kuendana na vipimo vya lugha kama vile MISRA, the kichwa file, ambayo imejumuishwa kiotomatiki na , imesasishwa. Kichwa hiki kina mifano ya vitendaji vyote vilivyojengwa ndani, kama vile kujengwa ndani_avr_nop ( ) na _builtin_avr_delay_cycles () . Baadhi ya majengo yanaweza yasikubaliane na MISRA; hizi zinaweza kuachwa kwa kuongeza fafanua XC_STRICT MISRA kwenye safu ya amri ya mkusanyaji. Vipengele vilivyojengewa ndani na matamko yao yamesasishwa ili kutumia aina za upana usiobadilika.

3.8. Toleo la 2.20
Mpya usaidizi wa kifaa Usaidizi unapatikana kwa sehemu zifuatazo za AVR: ATTINY 1624, ATTINY1626, na ATTINY 1 627.
Mgao bora unaofaa zaidi Kigawanyaji bora zaidi (BFA) katika kikusanyaji kimeboreshwa ili sehemu zigawiwe kwa mpangilio unaoruhusu uboreshaji bora. BFA sasa inasaidia nafasi za anwani zilizotajwa na inashughulikia vyema uanzishaji wa data.
Uondoaji wa kiutaratibu ulioboreshwa Uboreshaji wa kiutaratibu wa uondoaji sasa unafanywa kwa mfuatano zaidi wa misimbo. Hali za awali ambapo uboreshaji huu unaweza kuwa na ukubwa wa msimbo ulioongezeka umeshughulikiwa kwa kufanya msimbo wa uboreshaji kufahamu mchakato wa ukusanyaji wa takataka wa kiunganishi.
Kutokuwepo kwa AVR Assembler Kikusanyaji cha AVR hakijajumuishwa tena kwenye usambazaji huu. 3.9. Toleo la 2.19 (Usalama wa Kitendaji Kutolewa)
Hakuna.
3.10. Toleo la 2.10
Chanjo ya Kanuni Toleo hili linajumuisha kipengele cha kufunika msimbo ambacho huwezesha uchanganuzi wa kiwango ambacho msimbo wa chanzo wa mradi umetekelezwa. Tumia chaguo -mcodecov=ram ili kuiwezesha. Baada ya utekelezaji wa programu kwenye maunzi yako, maelezo ya chanjo ya msimbo yatakusanywa kwenye kifaa, na hii inaweza kuhamishwa hadi na kuonyeshwa na MPLAB X IDE kupitia programu-jalizi ya chanjo ya msimbo. Tazama hati za IDE kwa habari juu ya programu-jalizi hii inaweza kupatikana.
#pragma nocodecov inaweza kutumika kutenga vitendakazi vifuatavyo kwenye uchanganuzi wa chanjo. Kwa kweli pragma inapaswa kuongezwa mwanzoni mwa file kuwatenga yote hayo file kutoka kwa uchambuzi wa chanjo. Vinginevyo, _attribute_ ( (nocodecov)) inaweza kutumika kutenga chaguo za kukokotoa mahususi kutoka kwa uchanganuzi wa chanjo.
Maelezo ya kifaa files Kifaa kipya file inayoitwa avr_chipinfo.html iko katika saraka ya hati ya

usambazaji wa mkusanyaji. Hii file huorodhesha vifaa vyote vinavyoungwa mkono na mkusanyaji. Bofya kwenye jina la kifaa, na itafungua ukurasa unaoonyesha mipangilio/jozi zote za thamani za usanidi zinazoruhusiwa za kifaa hicho, pamoja na ex.ampchini.

Uondoaji wa kiutaratibu Uboreshaji wa uondoaji wa kiutaratibu, ambao hubadilisha vizuizi vya kawaida vya msimbo wa kusanyiko na simu hadi nakala iliyotolewa ya kizuizi hicho, umeongezwa kwa mkusanyaji. Haya hufanywa na programu tumizi tofauti, ambayo inaombwa kiotomatiki na mkusanyaji wakati wa kuchagua kiwango cha 2, 3 au s uboreshaji. Uboreshaji huu hupunguza ukubwa wa msimbo, lakini unaweza kupunguza kasi ya utekelezaji na utatuzi wa msimbo.
Utoaji wa kiutaratibu unaweza kuzimwa katika viwango vya juu zaidi vya uboreshaji kwa kutumia chaguo -mno-pa, au unaweza kuwashwa katika viwango vya chini vya uboreshaji (kulingana na leseni yako) kwa kutumia -mpa. Inaweza kuzimwa kwa kitu file kutumia -mno-pa-on-f ile=filejina, au kulemazwa kwa chaguo za kukokotoa kwa kutumia -mno-pa-onfunotion=f kukatwa.
Ndani ya msimbo wako wa chanzo, uondoaji wa kiutaratibu unaweza kulemazwa kwa chaguo la kukokotoa kwa kutumia attribute_ ( (nopa) ) na ufafanuzi wa kitendakazi, au kwa kutumia nopa, ambayo hupanuka hadi _attribute_ ( (nopa, noinline) ) na hivyo kuzuia utendaji kazi usifanyike. na kuna uondoaji wa msimbo uliowekwa ndani.
Funga msaada kidogo katika pragma Mipangilio ya #pragma sasa inaweza kutumika kubainisha sehemu za kufuli za AVR na vile biti zingine za usanidi. Angalia avr_chipinfo.html file (iliyotajwa hapo juu) kwa mpangilio/jozi za thamani za kutumia na pragma hii.
Mpya usaidizi wa kifaa Usaidizi unapatikana kwa sehemu zifuatazo: AVR28DAl28, AVR64DAl28, AVR32DAl28, na AVR48DAl28.

3.11. Toleo la 2.05
Biti zaidi kwa pesa yako Toleo la macOS la mkusanyaji na meneja wa leseni sasa ni programu ya 64-bit. Hii itahakikisha kuwa mkusanyaji atasakinisha na kukimbia bila maonyo kwenye matoleo ya hivi majuzi ya macOS.
Const vitu katika kumbukumbu ya programu Mkusanyaji sasa anaweza kuweka vipengee vilivyostahiki katika mpango wa kumbukumbu ya Flash, badala ya kuwa na hizi ziko kwenye RAM. Kikusanyaji kimerekebishwa ili cons t-qualified data global kuhifadhiwa katika kumbukumbu ya programu flash na data hii inaweza kufikiwa moja kwa moja na kwa njia isiyo ya moja kwa moja kwa kutumia maagizo yanayofaa ya kumbukumbu ya programu. Kipengele hiki kipya kimewezeshwa kwa chaguo-msingi lakini kinaweza kulemazwa kwa kutumia -mno-const-data-in-progmem chaguo. Kwa usanifu wa avrxmega3 na avrtiny, kipengele hiki hakihitajiki na daima kimezimwa, kwa kuwa kumbukumbu ya programu imewekwa kwenye nafasi ya anwani ya data ya vifaa hivi.
Kawaida kwa bure Matoleo yasiyo na leseni (ya Bila malipo) ya kikusanyaji hiki sasa yanaruhusu uboreshaji hadi na kujumuisha kiwango cha 2. Hii itaruhusu utoaji sawa, ingawa haufanani, na ule uliowezekana hapo awali kwa kutumia leseni ya Kawaida.
Karibu AVRASM2 Kikusanyaji cha AVRASM2 cha vifaa vya 8-bit sasa kimejumuishwa kwenye kisakinishi cha mkusanyaji cha XC8. Kikusanyaji hiki hakitumiwi na mkusanyaji wa XC8, lakini kinapatikana kwa miradi kulingana na chanzo cha kusanyiko kilichoandikwa kwa mkono.
Mpya usaidizi wa kifaa Usaidizi unapatikana kwa sehemu zifuatazo: ATMEGA1608, ATMEGA 1609, ATMEGA808, na ATMEGA809.

3.12. Toleo la 2.00
Dereva wa kiwango cha juu Dereva mpya, anayeitwa xc8 -cc, sasa anakaa juu ya kiendeshi cha awali cha avr-gcc na kiendeshi cha xc8, na anaweza kuita mkusanyaji anayefaa kulingana na uteuzi wa kifaa lengwa. Kiendeshaji hiki kinakubali chaguo za mtindo wa GCC, ambazo hutafsiriwa au kupitishwa kwa mkusanyaji anayetekelezwa. Kiendeshaji hiki huruhusu chaguo sawa na semantiki zinazofanana kutumika kwa lengo lolote la AVR au PIC na kwa hivyo ndiyo njia inayopendekezwa ya kuomba mkusanyaji. Ikihitajika, kiendeshi cha zamani cha avr-gcc kinaweza kuitwa moja kwa moja kwa kutumia chaguo za mtindo wa zamani ambacho kilikubaliwa katika matoleo ya awali ya mkusanyaji.
Kiolesura cha kawaida cha C Kikusanyaji hiki sasa kinaweza kulingana na Kiolesura cha MPLAB Common C, kikiruhusu msimbo wa chanzo kusambazwa kwa urahisi zaidi kwenye vikusanyaji vyote vya MPLAB XC. Chaguo la -mext=cci linaomba kipengele hiki, kuwezesha sintaksia mbadala kwa viendelezi vingi vya lugha.
Dereva mpya wa maktaba A dereva mpya wa maktaba amewekwa juu ya msimamizi wa maktaba wa PIC na msimamizi wa maktaba wa AVR avr-ar. Kiendeshaji hiki kinakubali chaguo za mtindo wa kiweka kumbukumbu cha GCC, ambazo hutafsiriwa au kupitishwa kwa msimamizi wa maktaba anayetekelezwa. Dereva mpya huruhusu chaguo sawa na semantiki zinazofanana kutumika kuunda au kudanganya maktaba yoyote ya PIC au AVR. file na kwa hivyo ndiyo njia inayopendekezwa ya kuomba msimamizi wa maktaba. Ikihitajika kwa miradi iliyopitwa na wakati, msimamizi wa maktaba aliyetangulia anaweza kuitwa moja kwa moja kwa kutumia chaguo za mtindo wa zamani ambazo zilikubaliwa katika matoleo ya awali ya mkusanyaji.

Masuala ya Uhamiaji

Vipengele vifuatavyo ni ambavyo sasa vinashughulikiwa tofauti na mkusanyaji. Mabadiliko haya yanaweza kuhitaji kubadilishwa kwa msimbo wako wa chanzo ikiwa msimbo wa kuhamisha kwa toleo hili la mkusanyaji. Nambari ya toleo katika vichwa vidogo inaonyesha toleo la kwanza la mkusanyaji ili kusaidia mabadiliko yanayofuata.

4.1. Toleo la 2.39 (Toleo la Usalama Utendaji)
Hakuna.
4.2. Toleo la 2.36 Hakuna.
4.3. Toleo 2.35
Ushughulikiaji wa kamba-kwa besi (XC8-2420) Ili kuhakikisha uthabiti na watunzi wengine wa XC, kamba ya XC8 kazi, kama vile strtol () n.k., haitajaribu tena kubadilisha mfuatano wa ingizo ikiwa msingi uliobainishwa ni mkubwa kuliko 36 na badala yake utaweka errno kuwa EINVAL. Kiwango cha C hakibainishi tabia ya huduma za kukokotoa wakati thamani hii ya msingi imepitwa.
Uboreshaji wa kasi usiofaa Uboreshaji wa kiutaratibu ulikuwa unawashwa wakati wa kuchagua uboreshaji wa kiwango cha 3 (-03). Uboreshaji huu hupunguza saizi ya msimbo kwa gharama ya kasi ya msimbo, kwa hivyo haikupaswa kutekelezwa. Miradi inayotumia kiwango hiki cha uboreshaji inaweza kuona tofauti katika saizi ya msimbo na kasi ya utekelezaji inapoundwa na toleo hili.
Utendaji wa maktaba Msimbo wa utendakazi mwingi wa kawaida wa maktaba ya C sasa unatoka kwenye Maktaba ya Kawaida ya Unified ya Microchip, ambayo inaweza kuonyesha tabia tofauti katika hali fulani ikilinganishwa na ile iliyotolewa na maktaba ya zamani ya avr-libc. Kwa mfanoamphata hivyo, si lazima tena kuunganisha kwenye maktaba ya 1printf flt (-1printf_flt chaguo) ili kuwasha usaidizi wa umbizo wa I0 kwa viambishi vya umbizo la kuelea. Vipengele 10 mahiri vya Maktaba ya Kawaida ya Microchip Unified hufanya chaguo hili kuwa la ziada. Zaidi ya hayo, utumiaji wa _P wa utaratibu wa kiambishi kwa mfuatano na vitendaji vya kumbukumbu (km strcpy_P ( ) n.k..) zinazofanya kazi kwenye tungo za const katika mweko hazihitajiki tena. Taratibu za kawaida za C (km strcpy 0 ) zitafanya kazi ipasavyo na data kama hiyo wakati kipengele cha const-data-in-program-memory kimewashwa.

4.4. Toleo la 2.32
Hakuna.
4.5. Toleo la 2.31
Hakuna.
4.6. Toleo la 2.30
Hakuna.
4.1. Toleo la 2.29 (Toleo la Usalama Utendaji)
Hakuna.
4.2. Toleo la 2.20
Mpangilio Uliobadilishwa wa DFP Mkusanyaji sasa anachukua mpangilio tofauti unaotumiwa na DFPs (Vifurushi vya Familia ya Kifaa). Hii itamaanisha kuwa DFP ya zamani huenda isifanye kazi na toleo hili, na watunzi wakubwa hawataweza kutumia DFP za hivi punde.

4.3. Toleo la 2.19 (Toleo la Usalama Utendaji)
Hakuna.
4.4. Toleo la 2.10 Hakuna
4.5. Toleo la 2.05
Const vitu katika kumbukumbu ya programu Kumbuka kwamba kwa chaguo-msingi, vitu vilivyo na sifa zitawekwa na kufikiwa katika kumbukumbu ya programu (kama ilivyoelezwa yake). Hii itaathiri ukubwa na kasi ya utekelezaji wa mradi wako, lakini inapaswa kupunguza matumizi ya RAM. Kipengele hiki kinaweza kuzimwa, ikihitajika, kwa kutumia -mnocons t-data-in-pr ogmem chaguo.

4.6. Toleo la 2.00
Fuse za usanidi Fuse za usanidi wa kifaa sasa zinaweza kupangwa kwa kutumia pragma ya usanidi ikifuatiwa na kuweka-thamani jozi ili kubainisha hali ya fuse, kwa mfano #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
Vitu na kazi kamili Vitu na kazi sasa zinaweza kuwekwa kwenye anwani maalum kwenye kumbukumbu kwa kutumia CCI _at (anwani) kibainishi, kwa mfanoample:
ikiwa ni pamoja na
int foobar kwa (0)0300100);
char at(0x250) getID(int offset) ( Hoja kwa kibainishi hiki lazima kiwe kisichobadilika kinachowakilisha anwani ambayo baiti au maagizo ya kwanza yatawekwa. Anwani za RAM zinaonyeshwa kwa kutumia mkato wa Ox800000. Washa CCI itumie tumia kipengele hiki.
Sintaksia mpya ya kukatiza kitendakazi Kikusanyaji sasa inakubali CCI _interrupt (nambari) kibainishi kuashiria kuwa chaguo za kukokotoa za C ni vidhibiti vya kukatiza. Kiainishi huchukua nambari ya kukatiza, kwa mfanoample:

Masuala yasiyobadilika

Yafuatayo ni masahihisho ambayo yamefanywa kwa mkusanyaji. Hizi zinaweza kurekebisha hitilafu katika msimbo uliozalishwa au kubadilisha utendakazi wa mkusanyaji hadi ule uliokusudiwa au kubainishwa na mwongozo wa mtumiaji. Nambari ya toleo katika vichwa vidogo inaonyesha toleo la kwanza la mkusanyaji kuwa na marekebisho ya masuala yanayofuata. Lebo zilizo kwenye mabano katika kichwa ni kitambulisho cha suala hilo katika hifadhidata ya ufuatiliaji. Hizi zinaweza kuwa muhimu ikiwa unahitaji kuwasiliana na usaidizi.
Kumbuka kuwa baadhi ya masuala mahususi ya kifaa hurekebishwa katika Kifurushi cha Kifaa cha Familia (DR)) inayohusishwa na kifaa. Tazama Kidhibiti Pakiti cha MPLAB kwa maelezo kuhusu mabadiliko yaliyofanywa kwa DFPs na kupakua vifurushi vipya zaidi.

5.1. Toleo la 2.39 (Toleo la Usalama Utendaji)
Hakuna.
5.2. Toleo la 2.36
Hitilafu wakati wa kuchelewesha (XCS-2774) Mabadiliko madogo katika uboreshaji chaguomsingi wa hali Bila malipo yalizuia kukunjana mara kwa mara kwa misemo ya uendeshaji hadi ucheleweshaji wa vitendaji vilivyojumuishwa, na kusababisha kuchukuliwa kama zisizo thabiti na kusababisha hitilafu. iliyojengwa ndani_ya_avr_delay_cycles inatarajia mkusanyiko kamili wa wakati.

5.3. Toleo la 2.35
Inashikamana ugawaji kutumia _at (XCS-2653) Ugawaji sawia wa mahali pa vitu vingi katika sehemu yenye jina sawa na kutumia _at () haikufanya kazi ipasavyo. Kwa mfanoample:
const char arrl[ ] sifa (sehemu(“.mysec”) katika (0x500) = (OxAB, OxCD);
const char arr2[ ] sifa (sectionr.mysec”)= (OxEF, OxFE);
inapaswa kuwa imeweka arr2 mara baada ya arri.
Inabainisha anwani za kuanza kwa sehemu (XCS-2650) The -wl, -section-start chaguo lilishindwa kuweka sehemu kimya kimya kwenye anwani ya kuanzia iliyoteuliwa. Suala hili limerekebishwa kwa sehemu zozote zilizopewa jina maalum; hata hivyo, haitafanya kazi kwa sehemu zozote za kawaida, kama vile . maandishi au. bss, ambayo lazima iwekwe kwa kutumia a -wl, -T chaguo.
Kiungo huanguka wakati wa kupumzika (XCS-2647) Wakati uboreshaji -mrelax uliwezeshwa na zilikuwa sehemu za msimbo au data ambazo hazikuendana na kumbukumbu inayopatikana, kiunganishi kilianguka. Sasa, katika hali kama hiyo, ujumbe wa makosa hutolewa badala yake.
Hapana hapana-kuanguka-nyuma (XCS-2646) The Chaguo la -nofallback halikutekelezwa kwa usahihi, wala kurekodiwa. Hii sasa inaweza kuchaguliwa ili kuhakikisha kuwa mkusanyaji hatarudi kwenye mpangilio wa chini wa uboreshaji ikiwa mkusanyaji hana leseni, na badala yake atatoa hitilafu.
Uboreshaji wa kasi usiofaa (XCS-2637) Uboreshaji wa kiutaratibu ulikuwa unawashwa wakati wa kuchagua uboreshaji wa kiwango cha 3 (-03). Uboreshaji huu hupunguza saizi ya msimbo kwa gharama ya kasi ya msimbo, kwa hivyo haikupaswa kutekelezwa.
Ufikiaji mbaya wa EEPROM (XCS-2629) Ratiba ya eeprom_read_block haikufanya kazi ipasavyo kwenye vifaa vya Xmega wakati -mconst-data-in-progmem chaguo lilipowezeshwa (ambayo ndiyo hali chaguo-msingi), na kusababisha kumbukumbu ya EEPROM kutosomwa ipasavyo.
Mgao batili wa kumbukumbu (X03-2593, XC8-2651) Wakati chaguo la -Ttext au -Tdata kiunganishi (kwa mfanoample kupita kwa kutumia -wl dereva chaguo) imebainishwa, asili ya eneo la maandishi/data inayolingana ilisasishwa; hata hivyo, anwani ya mwisho haikurekebishwa ipasavyo, ambayo inaweza kusababisha eneo kuzidi safu ya kumbukumbu ya kifaa lengwa.
Kuacha kufanya kazi kwa kipengele cha kukokotoa zaidi (XC8-2580) Kikusanyaji kilianguka ikiwa kipengele cha kukokotoa kilitangazwa kwa kutumia zaidi ya moja ya sifa za kukatiza, mawimbi au nmi, kwa mfano, _attribute_ ( ( signal , interrupt ) ).
Msimbo batili wa kukatiza wa ATtiny (XC8-2465) Wakati wa kujenga vifaa vya ATtiny na uboreshaji kuzimwa (-00), utendakazi wa kukatiza huenda ulianzisha utendakazi nje ya masafa ya ujumbe wa kiunganishi.
Chaguzi ambazo hazijapitishwa (XC8-2452) Wakati wa kutumia -wl chaguo lenye chaguo nyingi, zilizotenganishwa kwa koma, sio chaguo zote za kiunganishi zilikuwa zikipitishwa kwa kiunganishi.
Hitilafu ya kusoma kumbukumbu ya programu (X03-2450) katika baadhi ya matukio, mkusanyaji alitoa kosa la ndani (insn isiyoweza kutambulika) wakati wa kusoma thamani ya byte mbili kutoka kwa pointer hadi kumbukumbu ya programu

5.4. Toleo la 2.32
Ufikiaji wa pili wa maktaba unashindwa (X03-2381) Kualika toleo la Windows la kumbukumbu ya maktaba ya xc8-ar.exe mara ya pili ili kufikia kumbukumbu iliyopo ya maktaba kunaweza kuwa kumeshindwa kwa kushindwa kubadilisha jina la ujumbe wa hitilafu.

5.5. Toleo la 2.31
Isiyoelezewa kushindwa kwa mkusanyaji (XC8-2367) Wakati wa kukimbia Windows mifumo iliyokuwa na saraka ya muda ya mfumo iliyowekwa kwa njia iliyojumuisha nukta '.' tabia, mkusanyaji anaweza kuwa ameshindwa kutekeleza.

5.6. Toleo la 2.30
Lebo za kimataifa zilikosewa baada ya kuelezea (XC8-2299) msimbo wa mkusanyiko ulioandikwa kwa mkono ambao unaweka kimataifa lebo ndani ya mpangilio wa mkusanyiko ambazo zimetolewa kwa uondoaji wa kiutaratibu zinaweza kuwa hazijawekwa tena ipasavyo.
Ajali ya kupumzika (XC8-2287) Kwa kutumia -tulia chaguo linaweza kuwa limesababisha kiunganishi kuanguka wakati uboreshaji wa kupumzika kwa kuruka mkia ulijaribu kuondoa maagizo ambayo hayakuwa mwishoni mwa a sehemu.
Kuacha kufanya kazi wakati wa kuboresha lebo kama thamani (XC8-2282) Msimbo kwa kutumia "Lebo kama maadili" GNU C kiendelezi cha lugha kinaweza kuwa kimesababisha uboreshaji wa uondoaji wa kiutaratibu kuvurugika, na hitilafu ya urekebishaji ya masafa ya VMA Iliyoainishwa.
Sio hivyo const (XC8-2271) Prototypes kwa strstr () na kazi zingine kutoka usibainishe tena kichujio kisicho cha kawaida cha const kwenye viashiria vya kamba vilivyorejeshwa wakati kipengele cha -mconst-data- inprogmem kimezimwa. Kumbuka kuwa ukiwa na avrxmega3 na vifaa vya avrtiny, kipengele hiki kimewashwa kabisa.
Vianzilishi vilivyopotea (XC8-2269) Wakati zaidi ya kigezo kimoja katika tafsiri kitengo kiliwekwa katika sehemu (kwa kutumia sehemu or sifa ( (sehemu) )), na kigezo cha kwanza kama hicho kilianzishwa sifuri au hakikuwa na kianzilishi, vianzishi vya viambishi vingine katika kitengo sawa cha tafsiri ambavyo viliwekwa katika sehemu sawa vilipotea.

5.1. Toleo la 2.2 9 (Toleo la Usalama Linalofanya Kazi) Hakuna. 
5.2. Toleo la 2.20
Hitilafu na amri ndefu (XC8-1983) Wakati wa kutumia lengo la AVR, mkusanyaji anaweza kuwa amesimama na kosa ambalo halijapatikana, ikiwa mstari wa amri ulikuwa mkubwa sana na una wahusika maalum wa quotes, backslashs, nk.
Sehemu ya rodata ambayo haijakabidhiwa (XC8-1920) Kiunganishi cha AVR kimeshindwa kukabidhi kumbukumbu kwa sehemu maalum za rodata wakati wa kujenga usanifu wa avrxmega3 na avrtiny, uwezekano wa kusababisha hitilafu za mwingiliano wa kumbukumbu.

5.3. Toleo la 2.19 (Toleo la Usalama Utendaji)
Hakuna.
5.4. Toleo la 2.10
Hitilafu za uhamishaji (XC8-1891) Kisambazaji kinachofaa zaidi kilikuwa kinaacha 'mashimo' ya kumbukumbu kati ya sehemu baada ya kulegea kwa kiunganishi. Kando na kugawanyika kwa kumbukumbu, hii iliongeza uwezekano wa kuwa na hitilafu za kuhamisha kiunganishi zinazohusiana na mirukaji inayohusiana na kompyuta au simu kuwa nje ya anuwai.
Maagizo ambayo hayajabadilishwa kwa kustarehesha (XC8-1889) Urejeshaji wa kiunganishi haukutokea kwa maagizo ya kuruka au kupiga simu ambayo malengo yake yanaweza kufikiwa yakilegezwa.
Haipo utendakazi ( XC8E-3 ) Ufafanuzi kadhaa kutoka , kama vile clock_div_t na clock_presc ale_s et () , hazikufafanuliwa kwa vifaa, ikiwa ni pamoja na ATmega324PB, ATmega328PB, ATtiny441, na ATtiny841.
Macro zinazokosekana Makro ya awali _XC 8_MODE_, XC 8 VERS ION, XC, na xc8 hazikufafanuliwa kiotomatiki na mkusanyaji. Hizi sasa zinapatikana.

5.5. Toleo la 2.05
Kosa la mkusanyaji wa ndani (XC8-1822) Wakati wa kujenga chini ya Windows, hitilafu ya mkusanyaji wa ndani inaweza kuwa imetolewa wakati wa kuboresha nambari.
Kiwango cha ziada cha RAM hakijatambuliwa (XC8-1800, XC8-1796) Programu ambazo zilizidi RAM inayopatikana hazikutambuliwa na mkusanyaji katika hali fulani, na kusababisha kushindwa kwa msimbo wa wakati wa kutekeleza.
Kumbukumbu ya flash iliyoachwa (XC8-1792) Kwa vifaa vya avrxmega3 na avrtiny, sehemu za kumbukumbu ya flash zinaweza kuwa zimeachwa bila kupangwa na MPLAB X IDE.
Kushindwa kutekeleza kuu (XC8-1788) Katika baadhi ya hali ambapo programu haikuwa na vigeu vya kimataifa vilivyofafanuliwa, msimbo wa uanzishaji wa wakati wa utekelezaji haukutoka na chaguo kuu la kukokotoa () halikufikiwa kamwe.
Maelezo ya kumbukumbu yasiyo sahihi (XC8-1787) Kwa vifaa vya avrxmega3 na avrtiny, mpango wa ukubwa wa avr ulikuwa ukiripoti kuwa data ya wazimu pekee ilikuwa ikitumia RAM badala ya kumbukumbu ya programu.
Kumbukumbu isiyo sahihi ya programu iliyosomwa (XC8-1783) Miradi iliyokusanywa kwa ajili ya vifaa vilivyo na kumbukumbu ya programu iliyopangwa kwenye nafasi ya anwani ya data na ambayo inafafanua vitu kwa kutumia PROGMEM macro/sifa inaweza kuwa imesoma vitu hivi kutoka kwa anwani isiyo sahihi.
Hitilafu ya ndani yenye sifa (XC8-1773) Hitilafu ya ndani ilitokea ikiwa ulifafanua vitu vya pointer na _at 0 au attribute() tokeni kati ya jina la pointer na aina isiyorejelewa, kwa ex.ample, char * _at (0x800150) cp; Onyo sasa limetolewa ikiwa nambari kama hiyo itapatikana.

Imeshindwa kutekeleza kuu (XC8-1780, XC8-1767,XC8-1754) Kutumia vigeu vya EEPROM au kufafanua fuse kwa kutumia pragma ya usanidi kunaweza kusababisha uanzishaji usio sahihi wa data na/au kufunga utekelezaji wa programu katika msimbo wa kuanzisha wakati wa kuanza, kabla ya kufikia main 0 .

Hitilafu ya fuse na vifaa vidogo (XC8-1778, XC8-1742) Vifaa vya attiny4/5/9/10120140 vilikuwa na urefu wa fuse usio sahihi uliobainishwa kwenye kichwa chao. files ambayo husababisha makosa ya kiunganishi wakati wa kujaribu kuunda nambari inayofafanua fuse.

Hitilafu ya sehemu (XC8-1777) Hitilafu ya mara kwa mara ya sehemu imerekebishwa.

Ajali ya Assembler (XC8-1761) Kikusanyaji cha avr -as kinaweza kuwa kilianguka wakati mkusanyaji uliendeshwa chini ya Ubuntu 18.

Vitu havijafutwa (XC8-1752) Vipengee vya muda wa hifadhi tuli ambavyo havijaanzishwa huenda havijafutwa na msimbo wa kuanzisha wakati wa utekelezaji.

Vipimo vya kifaa vinavyokinzana vimepuuzwa (XC8-1749) The mkusanyaji hakuwa akizalisha hitilafu wakati chaguo nyingi za vipimo vya kifaa zilipotumiwa na kuashiria vifaa tofauti.

Uharibifu wa kumbukumbu kwa lundo (XC8-1748) The _heap_start ishara ilikuwa ikiwekwa kimakosa, na kusababisha uwezekano wa viambajengo vya kawaida kuharibiwa na lundo.

Hitilafu ya kuhamisha kiungo (XC8-1739) Hitilafu ya kuhamisha kiunganishi huenda ilitolewa wakati msimbo ulikuwa na rjmn au rcall yenye lengo la umbali wa baiti 4k haswa.

5.6. Toleo la 2.00 Hakuna.

Masuala Yanayojulikana

Yafuatayo ni mapungufu katika utendakazi wa mkusanyaji. Hizi zinaweza kuwa vikwazo vya jumla vya usimbaji, au mikengeuko kutoka kwa maelezo yaliyomo kwenye mwongozo wa mtumiaji. Lebo zilizo kwenye mabano katika wimbi ni kitambulisho cha suala hilo katika hifadhidata ya ufuatiliaji. Hii inaweza kuwa na manufaa ikiwa unahitaji kuwasiliana na usaidizi. Vipengee hivyo ambavyo havina lebo ni vizuizi vinavyoelezea modi operandi na ambavyo vina uwezekano wa kubaki na athari kabisa.
6.1. Kitambulisho cha MPLAB X Kuunganisha
MPLAB Ujumuishaji wa IDE Ikiwa Kikusanyaji kitatumika kutoka kwa MPLAB IDE, basi lazima usakinishe MPLAB IDE kabla ya kusakinisha Compiler.
6.2. Uzalishaji wa Kanuni
Si sahihi uanzishaji (XC8-2679) Kuna tofauti kati ya ambapo thamani za awali za baadhi ya vitu vya ukubwa wa kimataifa/tuli huwekwa kwenye kumbukumbu ya data na ambapo viambajengo vitafikiwa wakati wa utekelezaji.
strtod inaweka vibaya endptr (XC8-2652) Katika hali ambapo kifungu cha somo cha ubadilishaji kwa strtod () kina kile kinachoonekana kuwa nambari ya sehemu inayoelea katika umbizo la kielelezo na kuna herufi isiyotarajiwa baada ya herufi e, basi anwani ya endptr, ikiwa imetolewa, itaelekeza kwa herufi baada ya. e na sio e yenyewe. Kwa mfanoample: strtod (“100exy”, endptr) ;

itasababisha endptr kuelekeza kwa herufi x.

Simu mbaya za utendakazi zisizo za moja kwa moja (X03-2628) Katika baadhi ya matukio, simu za kukokotoa zinazopigwa kupitia kiashiria cha utendakazi kilichohifadhiwa kama sehemu ya muundo zinaweza kushindwa.

Strtof inarudisha sifuri kwa kuelea kwa hexadecimal (XC8-2626) Maktaba hufanya kazi kwa strtof () et al na scanf () et al, itabadilisha nambari ya sehemu inayoelea ya heksadesimali ambayo haibainishi kipeo hadi sufuri. Kwa mfanoample: strtof (“Oxl”, &endptr) ; itarudisha thamani 0, sio 1.
Ujumbe usio sahihi wa mshauri wa rafu (XC8-2542, XC8-2541) Katika baadhi ya matukio, onyo la mshauri wa rafu kuhusu kujirudia au mrundikano usiojulikana unaotumika (huenda kupitia matumizi ya alloca()) halitozwi.
Imeshindwa na msimbo wa kukatiza nakala (XC8-2421) Ambapo zaidi ya kitendakazi kimoja cha kukatiza kina mwili sawa, kikusanyaji kinaweza kuwa na matokeo ya kitendakazi kimoja cha kukatiza kukiita kingine. Hii itasababisha rejista zote zilizofungwa simu kuhifadhiwa bila sababu, na ukatizaji utawashwa hata kabla ya epilogue ya kidhibiti cha sasa cha kukatiza, ambayo inaweza kusababisha kushindwa kwa msimbo.
Const vitu visivyo kwenye kumbukumbu ya programu (XC8-2408) Kwa miradi ya avrxmega3 na avrtiny vitu vilivyounganishwa vya const huwekwa kwenye kumbukumbu ya data, ingawa onyo linapendekeza kuwa vimewekwa kwenye kumbukumbu ya programu. Hii haitaathiri vifaa ambavyo havina kumbukumbu ya programu iliyopangwa kwenye nafasi ya kumbukumbu ya data, wala haitaathiri kitu chochote ambacho kimeanzishwa.
Matokeo mabaya yenye njia batili ya DFP (XCS-2376) Ikiwa mkusanyaji amealikwa kwa njia batili ya DFP na 'spec' file ipo kwa ajili ya kifaa kilichochaguliwa, mkusanyaji haripoti kifurushi cha familia cha kifaa kilichokosekana na badala yake anachagua 'spec'. file, ambayo inaweza kusababisha matokeo batili. 'spec' fileHuenda zisisasishwe na DFP zilizosambazwa na zilikusudiwa kutumiwa na majaribio ya mkusanyaji wa ndani pekee.
Muingiliano wa kumbukumbu haujatambuliwa (XC8-1966) Mkusanyaji haoni mwingiliano wa kumbukumbu wa vitu vilivyofanywa kuwa kamili kwenye anwani (kupitia _at 0 ) na vitu vingine kwa kutumia _madhehebuion () kibainishi na ambacho kimeunganishwa na anwani sawa.
Kukosa utendakazi wa maktaba na _memx (XC8-1763) Inaitwa kazi za kuelea za libgcc na hoja katika nafasi ya anwani ya _memx inaweza kushindwa. Kumbuka kuwa taratibu za maktaba zinaitwa kutoka kwa waendeshaji wengine wa C, kwa hivyo, kwa mfanoample, nambari ifuatayo imeathiriwa: rudisha regFloatVar > memxFloatVar;
Utekelezaji mdogo wa libgcc (AVRTC-731) Kwa Bidhaa za ATTiny4/5/9/10/20/40, utekelezaji wa kawaida wa maktaba ya C/Math katika libgcc ni mdogo sana au haupo.
Mapungufu ya kumbukumbu ya programu (AVRTC-732) Picha za kumbukumbu ya programu zaidi ya kb 128 zinaauniwa na mnyororo wa zana; hata hivyo, kuna matukio yanayojulikana ya utoaji mimba wa kiunganishi bila kulegea na bila ujumbe wa hitilafu unaosaidia badala ya kutoa vijiti vinavyohitajika wakati chaguo la -mrelax linatumiwa.
Vikomo vya nafasi ya jina (AVRTC-733) Nafasi za anwani zilizopewa jina zinatumika na msururu wa zana, kulingana na vikwazo vilivyotajwa katika sehemu ya mwongozo wa mtumiaji Vihitimu vya Aina Maalum.
Kanda za saa The kazi za maktaba huchukulia GMT na hazitumii saa za eneo, kwa hivyo loca It ime 0 itarudi kwa wakati uleule gmtime ( ) , kwa ex.ample.

Nyaraka / Rasilimali

Vidokezo vya Utoaji vya MICROCHIP MPLAB XC8 C Toleo la 2.39 la AVR MCU [pdf] Mwongozo wa Mtumiaji
Toleo la 8 la Kikusanyaji cha MPLAB XC2.39 C la Kutolewa kwa AVR MCU, MPLAB XC8 C, Toleo la 2.39 la Mkusanyaji Madokezo ya AVR MCU, Maelezo ya Kutolewa kwa AVR MCU
Vidokezo vya Utoaji vya MICROCHIP MPLAB XC8 C Toleo la 2.39 la AVR MCU [pdf] Mwongozo wa Mtumiaji
Toleo la 8 la Mkusanyaji wa MPLAB XC2.39 C Madokezo ya Toleo la AVR MCU, MPLAB XC8 C, Toleo la 2.39 la Mkusanyaji Madokezo ya AVR MCU, Maelezo ya AVR MCU
Mkusanyaji wa MICROCHIP MPLAB XC8 C [pdf] Mwongozo wa Mtumiaji
Mkusanyaji wa MPLAB XC8 C, MPLAB XC8 C, Mkusanyaji

Marejeleo

Acha maoni

Barua pepe yako haitachapishwa. Sehemu zinazohitajika zimetiwa alama *