Vidokezo vya Utoaji vya MICROCHIP XC8 C Toleo la 2.45 la AVR MCU

Taarifa ya Bidhaa
Kikusanyaji cha MPLAB XC8 C ni zana ya programu inayotumika kulenga vifaa vya Microchip AVR. Imeundwa kukusanya nambari ya C na kutoa inayoweza kutekelezwa files kwa vifaa hivi. Toleo la mkusanyaji linalorejelewa katika mwongozo huu wa mtumiaji ni 2.45, likiwa na tarehe rasmi ya ujenzi ya Agosti 18, 2023. Toleo la awali lilikuwa 2.41, lililojengwa tarehe 8 Februari 2023. Kikusanyaji kinakuja na Mwongozo wa Usalama wa Utendaji, ambao hutoa maelezo ya ziada. na miongozo unapotumia vikusanyaji vya MPLAB XC vilivyo na programu zinazofanya kazi za usalama. Mwongozo huu umejumuishwa kwenye kifurushi cha hati unaponunua leseni ya kufanya kazi ya usalama. Kikusanyaji cha MPLAB XC8 C kinaweza kutumia vifaa vyote vinavyopatikana vya 8-bit AVR MCU wakati wa kutolewa. Unaweza kurejelea avr_chipinfo.html file katika saraka ya hati ya mkusanyaji kwa orodha ya vifaa vyote vinavyotumika na mipangilio yao ya biti ya usanidi. Kuna matoleo tofauti ya mkusanyaji wa MPLAB XC8 yanayopatikana. Toleo la (PRO) lenye leseni hutoa kiwango cha juu cha uboreshaji ikilinganishwa na toleo lisilolipishwa. Ili kuamilisha kikusanyaji kama bidhaa iliyoidhinishwa, unahitaji kununua kitufe cha kuwezesha. Hata hivyo, toleo lisilo na leseni linaweza kutumika kwa muda usiojulikana bila leseni. Kwa utendakazi wa programu za usalama, kikusanyaji cha Usalama Kitendaji cha MPLAB XC8 kinapatikana. Inahitaji leseni inayofanya kazi ya usalama iliyonunuliwa kutoka kwa Microchip kwa kuwezesha. Mara baada ya kuanzishwa, viwango vyote vya uboreshaji na vipengele vya mkusanyaji vinaweza kutumika. Kikusanyaji cha Usalama Kitendaji cha MPLAB XC pia kinaauni Leseni ya Seva ya Mtandao. Maelezo ya kina kuhusu usakinishaji, kuwezesha, aina za leseni, na masuala ya uhamiaji yanaweza kupatikana katika hati ya Kusakinisha na Kutoa Leseni Vikusanyaji vya MPLAB XC C (DS50002059).
Maagizo ya Matumizi ya Bidhaa
- Kabla ya kuendesha programu ya Mkusanyaji wa MPLAB XC8 C, soma mwongozo wa mtumiaji kwa taarifa muhimu na maagizo mahususi ya kulenga vifaa vya Microchip AVR.
- Ikiwa unatumia kikusanyaji kwa vifaa vya 8-bit PIC, rejelea Vidokezo vya Kutolewa kwa Mkusanyaji wa MPLAB XC8 C kwa hati ya PIC.
- Hakikisha kuwa mfumo wako wa uendeshaji unakidhi mahitaji ya mfumo wa kuendesha kikusanyaji. Nambari za macOS zimetiwa saini na kuthibitishwa. Seva ya Leseni ya Mtandao ya MPLAB XC inapatikana kwa Microsoft Windows 10 na zaidi, Ubuntu 18.04 na zaidi, na macOS 10.15 na zaidi. Kumbuka kuwa Seva ya Leseni ya Mtandao ya MPLAB XC haijajaribiwa kwenye mifumo hii ya uendeshaji.
- Seva ya Leseni ya Mtandao ya MPLAB XC inaweza kuendeshwa kwenye Mashine Pembeni za Mfumo wa Uendeshaji unaotumika kwa kutumia leseni ya mashine pepe ya leseni za mtandao (SW006021-VM). Matoleo yote ya 32-bit ya Seva ya Mtandao ya MPLAB XC yamekomeshwa kuanzia toleo la 3.00.
- Ili kuwezesha Kikusanyaji cha MPLAB XC8 C kama bidhaa iliyoidhinishwa (PRO), nunua ufunguo wa kuwezesha. Hii itatoa kiwango cha juu cha uboreshaji ikilinganishwa na toleo lisilolipishwa. Walakini, mkusanyaji asiye na leseni anaweza kuendeshwa kwa muda usiojulikana bila leseni.
- Ikiwa unatumia Kikusanya Usalama Kitendaji cha MPLAB XC8 kwa programu tumizi za usalama zinazofanya kazi, ni lazima iwashwe kwa kutumia 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. Leseni ya Seva ya Mtandao inaauniwa na toleo hili la Kikusanya Usalama Kitendaji cha MPLAB XC.
- Kwa maagizo ya kina kuhusu usakinishaji, kuwezesha, na utoaji leseni wa Kikusanyaji cha MPLAB XC8 C, rejelea Hati ya Kusakinisha na Kutoa Leseni za Vikusanyaji vya MPLAB XC C (DS50002059).
- Ikiwa unaendesha mkusanyaji chini ya leseni ya tathmini, utapokea 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.
Zaidiview
Utangulizi
Toleo hili la mkusanyaji wa Microchip MPLAB® XC8 C lina vipengele vipya kadhaa, kurekebishwa kwa hitilafu na usaidizi wa vifaa vipya.
Tarehe ya Kujenga
Tarehe rasmi ya ujenzi wa toleo hili la mkusanyaji ni tarehe 18 Agosti 2023.
Toleo Iliyopita
Toleo la awali la mkusanyaji wa MPLAB XC8 C lilikuwa 2.41, lililojengwa tarehe 8 Februari 2023.
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.
Leseni za Sehemu na Matoleo
Kikusanyaji cha MPLAB XC8 C cha zana za AVR MCUs huandikwa na kusambazwa chini ya Leseni ya Jumla ya GNU ya Umma (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 ya file iliyotajwa iko saraka ndogo ya saraka yako ya kusakinisha. Mjadala wa jumla wa kanuni za msingi za GPL unaweza kupatikana hapa. Nambari ya usaidizi iliyotolewa kwa kichwa files, hati za kiunganishi, na maktaba za 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.
Mahitaji ya Mfumo
Kikusanyaji cha MPLAB XC8 C na programu ya utoaji leseni inayoitumia zinapatikana kwa mifumo mbalimbali ya uendeshaji, ikijumuisha matoleo ya 64-bit ya yafuatayo: Matoleo ya kitaalamu ya Microsoft® Windows® 10, Ubuntu® 18.04, macOS® 13.2 (Ventura), na Fedora 34. Binaries za Windows zimetiwa saini na kanuni. Nambari za macOS zimetiwa saini na kuthibitishwa. Seva ya Leseni ya Mtandao ya MPLAB XC inapatikana kwa aina mbalimbali za mifumo ya uendeshaji ya 64-bit, ikiwa ni pamoja na Microsoft Windows 10 na zaidi; Ubuntu 18.04 na hapo juu; au macOS 10.15 na hapo juu. Seva inaweza pia kutumia mifumo mingine mbalimbali ya uendeshaji ikiwa ni pamoja na Windows Server, usambazaji wa Linux, kama vile Oracle® Enterprise Linux® na Red Hat® Enterprise Linux pamoja na matoleo ya zamani ya mifumo ya uendeshaji inayotumika. Hata hivyo, Seva ya Leseni ya Mtandao ya MPLAB XC haijaribiwa kwenye mifumo hii ya uendeshaji. Seva ya Leseni ya Mtandao ya MPLAB XC inaweza kuendeshwa kwenye Mashine Pembeni za Mfumo wa Uendeshaji unaotumika kwa kutumia leseni ya mashine pepe ya leseni za mtandao (SW006021-VM). Matoleo yote ya 32-bit ya Seva ya Mtandao ya MPLAB XC yamekomeshwa kuanzia toleo la 3.00.
Vifaa vilivyoungwa mkono
Kikusanyaji hiki kinaauni vifaa vyote vinavyopatikana vya 8-bit AVR MCU wakati wa kutolewa. Tazama avr_chipinfo.html (katika saraka ya hati ya mkusanyaji) kwa orodha ya vifaa vyote vinavyotumika. Faili hizi pia huorodhesha mipangilio ya biti ya usanidi kwa kila kifaa.
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 kutoa leseni kwa 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 Kikusanya Usalama Kitendaji cha MPLAB XC kinaauni Leseni ya Seva ya Mtandao. Tazama hati ya Kusakinisha na Kutoa Leseni Vikusanyaji vya MPLAB XC C (DS50002059) kwa taarifa kuhusu aina za leseni na usakinishaji wa kikusanyaji chenye leseni.
Ufungaji na Activation
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 programu ya kisakinishi ya .run (Linux) au .app (macOS), kwa mfano XC8-1.00.11403-windows.exe na ufuate maelekezo kwenye skrini. 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.
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 muda kuwa 'Udhibiti Kamili'.
Kuamua eneo la folda ya temp, chapa% temp% kwenye amri ya Run (ufunguo wa nembo ya Windows + R). Hii itafungua kidirisha cha kichunguzi cha faili kinachoonyesha saraka hiyo na itakuruhusu kuamua njia ya folda hiyo.
Nyaraka za Mkusanyaji
Miongozo 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.
Iwapo unaunda malengo ya 8-bit AVR, Mwongozo wa Mtumiaji wa Mkusanyaji wa MPLAB® XC8 C kwa AVR® MCU una maelezo kuhusu chaguo na vipengele hivyo vya kikusanyaji vinavyotumika kwa usanifu huu.
Usaidizi wa Wateja
Unaweza kuuliza maswali ya watumiaji wengine wa bidhaa hii katika Mijadala ya XC8. 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 hati za MPLAB XC8, tafadhali tembelea Hati ya Kiufundi ya Mtandaoni ya Microchip. webtovuti.
Hati mpya au zilizosasishwa za AVR katika toleo hili:
Hakuna
- Mwongozo wa Uhamiaji wa AVR® GNU hadi MPLAB® XC8 unafafanua mabadiliko ya msimbo wa chanzo na chaguo za kuunda ambazo zinaweza kuhitajika ikiwa utaamua kuhamisha mradi unaotegemea C kutoka kwa AVR 8-bit GNU Toolchain hadi Kikusanyaji cha Microchip MPLAB XC8 C.
- Mwongozo wa Marejeleo ya Maktaba ya Unified ya Microchip inaelezea tabia na kiolesura cha vitendakazi vilivyofafanuliwa na Maktaba ya Kawaida ya Microchip Uniified, pamoja na matumizi yaliyokusudiwa ya aina za maktaba na makro. Baadhi ya maelezo haya yalikuwemo awali katika Mwongozo wa Watumiaji wa Mkusanyaji wa MPLAB® XC8 C kwa AVR® MCU. Maelezo mahususi ya maktaba ya kifaa bado yamo katika mwongozo huu wa mkusanyaji.
- Ikiwa ndio kwanza unaanza na vifaa vya 8-bit na Kikusanyaji cha MPLAB XC8 C, Mtumiaji wa MPLAB® XC8
- Mwongozo wa Wahandisi Waliopachikwa - AVR® MCUs (DS50003108) ina maelezo kuhusu kusanidi miradi katika MPLAB X IDE na kuandika msimbo wa mradi wako wa kwanza wa MPLAB XC8 C. Mwongozo huu sasa unasambazwa na mkusanyaji.
- Mwongozo wa Mtumiaji wa Hexmate unakusudiwa wale wanaoendesha Hexmate kama programu ya kujitegemea.
Nini Kipya
Zifuatazo ni vipengele vipya vya AVR vinavyolengwa na mkusanyaji sasa anaauni. Nambari ya toleo katika vichwa vidogo inaonyesha toleo la kwanza la mkusanyaji ili kuauni vipengele vinavyofuata.
Toleo la 2.45
Msimamizi wa leseni ya Universal (XC8-3175, XCLM-224) Toleo la macOS la meneja wa leseni linalotumiwa na mkusanyaji sasa ni la ulimwengu wote, linatoa usaidizi asilia kwa mashine zote mbili za Intel- na M1. Toleo la Linux la kidhibiti leseni sasa linahitaji angalau toleo la 2.25 la glibc. Faili za mfumo wa uendeshaji wa Mac (XC8-3168, XC8-2951) Faili za mkusanyaji wa mfumo wa uendeshaji wa macOS sasa zinapatikana kwa wote, zikitoa usaidizi asilia kwa mashine za Intel- na M1. Saizi za maktaba za sehemu zinazoelea zimepunguzwa (XC8-3112, XC8-3071) Maboresho yamefanywa kwa utendaji wa maktaba ya sehemu zinazoelea, ikijumuisha sinf() pow(), sqrt(), expf(), log1fp(), na nextafterf() , ambayo inaona kupunguzwa kwa saizi ya msimbo kwa taratibu hizi. Usaidizi wa kifaa kipya sasa unapatikana kwa sehemu zifuatazo za AVR: AVR16EA28, AVR16EA32, AVR16EA48, AVR32EA28, AVR32EA32, AVR32EA48, AVR16EB14, AVR16EB20, AVR16EB28, na AVR16EB32.
Toleo la 2.41
- Usaidizi wa Bootrow (XC8-3053) Mkusanyaji ataweka maudhui ya sehemu zozote na kiambishi awali cha .bootrow kwenye anwani 0x860000 katika faili ya HEX. Sehemu hizi hutumiwa kwa kumbukumbu ya BOOTROW, ambayo imeundwa kwa ajili ya uhifadhi wa funguo na taarifa nyingine salama ambazo zinapaswa kupatikana tu kwa bootloader.
- Uondoaji wa urejeshaji usiohitajika (XC8-3048) Kikusanyaji sasa kitaondoa maagizo yasiyo ya lazima ya kurudisha nyuma katika utendakazi kwa kuruka mkia wakati hati za kiunganishi maalum zinatumika. Huu ni uboreshaji sawa na ule uliotekelezwa hapo awali, lakini sasa unafanywa kwa sehemu zote za watoto yatima, hata kama hati ya kiunganishi maalum inatumiwa na mpango bora zaidi wa ugawaji wa fitina haufanyiki.
- Mabadiliko ya aina ya wakati (XC8-2982, 2932) Aina ya maktaba ya kawaida ya C99, time_t imebadilishwa kutoka kwa aina ndefu hadi isiyo na saini, ambayo inatoa uboreshaji wa ukubwa wa msimbo katika baadhi ya vipengele vinavyohusiana na wakati, kama vile mktime().
- Nop mpya (XC8-2946, 2945) NOP kubwa () imeongezwa kwa . Jumla hii inaingiza maagizo ya nop ya kutofanya kazi kwenye pato.
- Sasisho la XCLM (XC8-2944) Kidhibiti cha leseni kinachotumiwa na kikusanyaji kimesasishwa na sasa kinaitikia zaidi anapokagua maelezo ya leseni ya mkusanyaji.
- Trampsimu zilizopigwa (XC8-2760) Mkusanyaji sasa anaweza kubadilisha maagizo ya simu ya fomu ndefu na simu fupi za jamaa wakati aina za maagizo kwa kawaida zitakuwa nje ya anuwai ya marudio yao. Katika hali hii, mkusanyaji atajaribu kuchukua nafasi na maagizo ya rcall kwa maagizo ya simu ya jmp ambayo 'trampoline' kwa anwani inayohitajika, kwa mfanoample:
Toleo la 2.40
- Usaidizi mpya wa usaidizi wa kifaa sasa unapatikana kwa sehemu zifuatazo za AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32, AVR64, AVR48, AVRXNUMX na AVRXNUMXEAXNUMX.
- Uondoaji wa kiutaratibu ulioboreshwa Zana ya uboreshaji ya uondoaji wa kiutaratibu (PA) imeboreshwa ili msimbo ulio na maagizo ya simu ya kukokotoa (simu/rcall) uweze kubainishwa. Hili litafanyika tu ikiwa rafu haitatumiwa kupitisha hoja wala kupata thamani ya kurejesha kutoka kwa chaguo la kukokotoa. Rafu hutumika wakati wa kuita chaguo za kukokotoa kwa orodha ya hoja zinazobadilika au unapoita chaguo za kukokotoa ambazo huchukua hoja nyingi kuliko rejista zilizoteuliwa kwa madhumuni haya. Kipengele hiki kinaweza kulemazwa kwa kutumia chaguo la - mno-pa-outline-calls, au uondoaji wa kiutaratibu unaweza kulemazwa kabisa kwa faili ya kitu au utendakazi kwa kutumia -mno-pa-on-file -mno-pa-on-function, mtawalia, au kwa kutumia nopa sifa (__nopa maalum) kwa kuchagua na vitendakazi.
- Ufikiaji wa jumla wa msimbo Mkusanyaji sasa anafafanua jumla __CODECOV ikiwa chaguo halali la -mcodecov limebainishwa.
- Chaguo la kuhifadhi kumbukumbu Dereva wa xc8-cc sasa atakubali -mreserve=space@start:end chaguo wakati wa kujenga kwa shabaha za AVR. Chaguo hili huhifadhi safu ya kumbukumbu iliyobainishwa katika nafasi ya kumbukumbu ya data au programu, na kuzuia kiunganishi kisijaze msimbo au vitu katika eneo hili.
- IO smart zaidi Maboresho kadhaa yamefanywa kwa vitendaji vya Smart IO, ikijumuisha marekebisho ya jumla kwenye msimbo wa msingi wa printf, kuchukulia kibainishi cha ubadilishaji cha %n kama kibadala kinachojitegemea, kinachounganisha katika mifumo ya vararg pop inapohitajika, kwa kutumia aina fupi za data inapowezekana kushughulikia. Hoja za utendakazi za IO, na kuweka msimbo wa kawaida katika upana wa uwanja na ushughulikiaji wa usahihi. Hii inaweza kusababisha uokoaji wa nambari na data, na pia kuongeza kasi ya utekelezaji wa IO.
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.
Toleo la 2.36
Hakuna.
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 wa muktadha ulioboreshwa zaidi Chaguo jipya la -mgas-isr-prologues hudhibiti msimbo wa kubadili muktadha unaozalishwa kwa taratibu ndogo za kukatiza huduma. Kikiwashwa, kipengele hiki kitakuwa na mkusanyaji kuchanganua ISR kwa matumizi ya rejista na kuhifadhi rejista hizi zilizotumika tu ikiwa inahitajika.
- Kuweka ramani ya mwendeshaji 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 iliyohitimu yote katika sehemu moja ya 32k na kuanzisha kiotomatiki rejista husika ya SFR ili kuhakikisha kuwa data hii imepangwa kwenye nafasi ya kumbukumbu ya data. , ambapo itapatikana kwa ufanisi zaidi.
- Maktaba za Kawaida za Microchip Wasanii wote wa MPLAB XC watashiriki Maktaba ya Kawaida ya Microchip, ambayo sasa inapatikana katika toleo hili la MPLAB XC8. Mwongozo wa Mtumiaji wa Mkusanyaji wa MPLAB® XC8 C kwa AVR® MCU haujumuishi tena hati za utendaji huu wa kawaida. Maelezo haya sasa yanaweza kupatikana katika Mwongozo wa Marejeleo ya Maktaba ya Unified ya Microchip. Kumbuka kwamba baadhi ya utendaji uliofafanuliwa hapo awali na avr-libc haupatikani tena. (Angalia utendaji wa Maktaba.)
- Smart IO Kama sehemu ya maktaba mpya zilizounganishwa, utendakazi wa IO katika familia za printf na scanf sasa zimeundwa mahususi kwa kila muundo, kulingana na jinsi utendaji kazi huu unavyotumika katika programu. Hii inaweza kupunguza kwa kiasi kikubwa rasilimali zinazotumiwa na programu.
- Chaguo la usaidizi la Smart IO Wakati wa kuchanganua simu kwa vitendaji mahiri vya IO (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 angefanya kila wakati. hakuna mawazo na hakikisha kwamba vitendaji vya IO vinavyofanya kazi kikamilifu vimeunganishwa kwenye picha ya mwisho ya programu Chaguo jipya -msmart-io-format=fmt limeongezwa ili mkusanyaji apate taarifa na mtumiaji wa vibainishi vya uongofu vinavyotumiwa na IO mahiri. vitendaji ambavyo utumiaji wake haueleweki, huzuia taratibu ndefu za IO kuunganishwa. (Angalia Chaguo la umbizo la smart-io kwa maelezo zaidi.)
- Kuweka sehemu maalum Hapo awali, chaguo la -Wl,–section-start liliweka tu sehemu iliyoainishwa kwenye anwani iliyoombwa wakati hati ya kiunganishi ilipofafanua 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 vile .text, .bss au .data , kigawanyaji bora zaidi kitakuwa na udhibiti kamili wa uwekaji wao, na chaguo halitakuwa na athari. Tumia -Wl,-Tsection=addr chaguo, kama ilivyoelezwa kwenye mwongozo wa mtumiaji.
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-usage chaguo la mstari wa amri. Muhtasari wa matumizi ya rafu huchapishwa baada ya utekelezaji. Ripoti ya kina ya rafu inapatikana kwenye faili ya ramani, ambayo inaweza kuombwa kwa njia ya kawaida.
- Usaidizi wa usaidizi wa kifaa kipya unapatikana kwa sehemu zifuatazo za AVR: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX, ATTINYXNUMX
- Usaidizi wa kifaa kilichobatilishwa haupatikani tena kwa sehemu zifuatazo za AVR: AVR16DA28, AVR16DA32 na, AVR16DA48.
Toleo la 2.31
Hakuna.
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 alama za do_clear_bss kwenye faili za kusanyiko, ambayo itazuia kujumuishwa 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 baadhi ya uboreshaji huu, haswa -fsection- anchors , ambayo inaruhusu ufikiaji wa vitu tuli kutekelezwa kulingana na ishara moja; -mpa- iterations=n , ambayo inaruhusu idadi ya marudio ya uondoaji wa kiutaratibu kubadilishwa kutoka chaguo-msingi ya 2; na, -mpa-callcost-shortcall, 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. - Usaidizi mpya wa usaidizi wa kifaa unapatikana kwa sehemu zifuatazo za AVR: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DA28, AVR128DB, AVR32DB128DB, AVR48DB, AVR128DB, AVR64DBXNUMXDB, AVRXNUMXDAXNUMXDB, AVRXNUMXDAXNUMX, AVRXNUMXDAXNUMX na AVRXNUMXDAXNUMXDB. VRXNUMXDBXNUMX.
- Usaidizi wa Usaidizi wa kifaa kilichorejeshwa haupatikani tena kwa sehemu zifuatazo za AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616ATA6617ATA664251ATAXNUMXATAXNUMXATAXNUMXATAXNUMXATAXNUMXATAXNUMXATA.
Toleo la 2.29 (Toleo la Usalama Utendaji)
- Faili ya kichwa kwa vijumuisho vya mkusanyaji Ili kuhakikisha kuwa mkusanyaji anaweza kuendana na maelezo ya lugha kama vile MISRA, , imesasishwa. Kichwa hiki kina mifano ya vitendaji vyote vilivyojengwa ndani, kama vile __builtin_avr_nop() na __builtin_avr_delay_cycles() . Baadhi ya majengo yanaweza yasikubaliane na MISRA; hizi zinaweza kuachwa kwa kuongeza define __XC_STRICT_MISRA kwenye safu ya amri ya mkusanyaji. Mipangilio na matamko yake yamesasishwa ili kutumia aina za upana usiobadilika.
Toleo la 2.20
- Usaidizi wa kifaa kipya unapatikana kwa sehemu zifuatazo za AVR: ATTINY1624, ATTINY1626, na ATTINY1627.
- Ugawaji bora zaidi wa kufaa Kigawanyaji bora zaidi (BFA) katika kikusanyaji kimeboreshwa ili sehemu zigawiwe kwa utaratibu unaoruhusu uboreshaji bora. BFA sasa inasaidia nafasi za anwani zilizotajwa na inashughulikia vyema uanzishaji wa data.
- Uondoaji wa kiutaratibu ulioboreshwa Uboreshaji wa uondoaji wa kiutaratibu 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 Kikusanyaji cha AVR Kikusanyaji cha AVR hakijajumuishwa tena kwenye usambazaji huu.
Toleo la 2.19 (Toleo la Usalama Utendaji)
Hakuna.
Toleo la 2.10
- Ufikiaji wa Msimbo Toleo hili linajumuisha kipengele cha ufunikaji wa msimbo ambacho huwezesha uchanganuzi wa kiwango ambacho msimbo wa chanzo cha 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 hakika pragma inapaswa kuongezwa mwanzoni mwa faili ili kuondoa faili hiyo yote kutoka kwa uchanganuzi wa chanjo. Vinginevyo, __attribute__((nocodecov)) inaweza kutumika kutenga chaguo za kukokotoa mahususi kutoka kwa uchanganuzi wa chanjo. - Faili za maelezo ya kifaa Faili mpya ya kifaa inayoitwa avr_chipinfo.html iko katika saraka ya hati ya usambazaji wa mkusanyaji. Faili hii inaorodhesha vifaa vyote vinavyotumika na mkusanyaji. Bofya kwenye jina la kifaa, na itafungua ukurasa unaoonyesha mipangilio yote inayokubalika ya usanidi/jozi za thamani za kifaa hicho, pamoja na ex.ampchini.
- Uondoaji wa kiutaratibu Uboreshaji wa uondoaji wa kitaratibu, ambao huchukua nafasi ya vizuizi vya kawaida vya msimbo wa kusanyiko na simu kwa nakala iliyotolewa ya kizuizi hicho, umeongezwa kwa mkusanyaji. Haya hutekelezwa na programu tofauti, ambayo inaombwa kiotomatiki na mkusanyaji wakati wa kuchagua uboreshaji wa kiwango cha 2, 3 au s. 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 faili ya kitu kutumia -mno-pa-on-file=filename , au kulemazwa kwa chaguo za kukokotoa kwa kutumia -mno-pa-on- function=function. Ndani ya msimbo wako wa chanzo, uondoaji wa kiutaratibu unaweza kulemazwa kwa chaguo la kukokotoa kwa kutumia __attribute__((nopa)) na ufafanuzi wa chaguo hili la kukokotoa, au kwa kutumia __nopa, ambayo hupanuka hadi __attribute__((nopa,noinline)) na hivyo kuzuia utendaji kazi usifanyike. na kuna uondoaji wa msimbo uliowekwa ndani.
- Funga uwezo wa biti katika pragma Mipangilio ya #pragma sasa inaweza kutumika kubainisha sehemu za kufuli za AVR na vile biti zingine za usanidi. Angalia faili ya avr_chipinfo.html (iliyotajwa hapo juu) kwa mpangilio/jozi za thamani za kutumia na pragma hii.
- Usaidizi wa kifaa kipya unapatikana kwa sehemu zifuatazo: AVR28DA128, AVR64DA128, AVR32DA128, na AVR48DA128.
Toleo la 2.05
- Biti zaidi za pesa yako Toleo la macOS la mkusanyaji na msimamizi wa leseni sasa ni programu-tumizi ya biti 64. Hii itahakikisha kuwa mkusanyaji atasakinisha na kukimbia bila maonyo kwenye matoleo ya hivi majuzi ya macOS.
- Const vitu kwenye kumbukumbu ya programu Mkusanyaji sasa anaweza kuweka vitu vilivyo na sifa nyingi kwenye Kumbukumbu ya Flash ya programu, badala ya kuwa na hivi kwenye RAM. Kikusanyaji kimerekebishwa ili data ya kimataifa iliyoidhinishwa ihifadhiwe kwenye kumbukumbu ya mwendeshaji wa programu na data hii inaweza kufikiwa moja kwa moja na isivyo 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.
- Matoleo ya kawaida bila malipo 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.
- Usaidizi wa kifaa kipya unapatikana kwa sehemu zifuatazo: ATMEGA1608, ATMEGA1609, ATMEGA808, na ATMEGA809.
Toleo la 2.00
- Kiendeshaji cha 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 kikusanyaji kinachofaa 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 Kawaida cha MPLAB, kikiruhusu msimbo wa chanzo kusambazwa kwa urahisi 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 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. Kiendeshaji kipya kinaruhusu chaguo sawa na semantiki zinazofanana kutumika kuunda au kuendesha faili yoyote ya maktaba ya PIC au AVR 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
Zifuatazo ni vipengele 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.
Toleo la 2.45
Hakuna.
Toleo la 2.41
Vitendaji vya fma visivyo sahihi vimeondolewa (XC8-2913) Maktaba ya kawaida ya C99 ( ) haikukokotoa ongeza-zidishi kwa usahihi usio na kipimo kwa mduara mmoja, lakini badala yake ilikusanya makosa ya kuzungusha kwa kila operesheni. Vipengele hivi vimeondolewa kwenye maktaba iliyotolewa.
Toleo la 2.40
Hakuna.
Toleo la 2.39 (Toleo la Usalama Utendaji)
Hakuna.
Toleo la 2.36
Hakuna.
Toleo la 2.35
- Ushughulikiaji wa kamba-kwa besi (XC8-2420) Ili kuhakikisha uwiano na vikusanyaji vingine vya XC, utendakazi wa kamba hadi XC8, kama vile strtol() n.k., hautajaribu tena kubadilisha mfuatano wa ingizo ikiwa msingi ulioainishwa ni mkubwa kuliko 36. na badala yake itaweka . Kiwango cha C hakibainishi tabia ya chaguo 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 (-O3). 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 vitendaji vingi vya kawaida vya maktaba ya C sasa unatoka katika Maktaba ya Kawaida ya Uniified ya Microchip, ambayo inaweza kuonyesha tabia tofauti katika hali fulani ikilinganishwa na ile iliyotolewa na maktaba ya zamani ya avr-libc. Kwa mfanoampna, si lazima tena kuunganisha kwenye maktaba ya lprintf_flt (-lprintf_flt chaguo) ili kuwasha usaidizi wa IO ulioumbizwa kwa vibainishi vya umbizo la kuelea. Vipengele mahiri vya IO vya Maktaba ya Wastani ya Microchip Uniified hufanya chaguo hili kuwa la ziada. Zaidi ya hayo, utumizi wa _P wa taratibu zilizoamilishwa kwa mfuatano na vitendaji vya kumbukumbu (km strcpy_P() n.k..) zinazofanya kazi kwenye mifuatano ya const katika mwendelezo hazihitajiki tena. Taratibu za kawaida za C (km strcpy() zitafanya kazi ipasavyo na data kama hiyo wakati kipengele cha kumbukumbu ya const-data-in-program-memory kimewashwa.
Toleo la 2.32
Hakuna.
Toleo la 2.31
Hakuna.
Toleo la 2.30
Hakuna.
Toleo la 2.29 (Toleo la Usalama Utendaji)
Hakuna.
Toleo la 2.2
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.
Toleo la 2.19 (Toleo la Usalama Utendaji)
Hakuna.
Toleo la 2.10
Hakuna
Toleo la 2.05
Const vitu katika kumbukumbu ya programu Kumbuka kwamba kwa chaguo-msingi, vitu vilivyo na sifa zitawekwa na kufikiwa kwenye kumbukumbu ya programu (kama ilivyoelezwa hapa). Hii itaathiri ukubwa na kasi ya utekelezaji wa mradi wako, lakini inapaswa kupunguza matumizi ya RAM. Kipengele hiki kinaweza kuzimwa, ikihitajika, kwa kutumia -mno-const-data-in-progmem chaguo.
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 vitendaji Kabisa Vitu na vitendaji sasa vinaweza kuwekwa kwenye anwani mahususi kwenye kumbukumbu kwa kutumia kibainishi cha CCI __at(anwani), kwa mfano.ample:
- #pamoja na
int foobar __at(0x800100);
char __at(0x250) getID(int offset) { … }
Hoja ya kibainishi hiki lazima iwe thabiti inayowakilisha anwani ambayo baiti au maagizo ya kwanza yatawekwa. Anwani za RAM zinaonyeshwa kwa kutumia kukabiliana na 0x800000. Washa CCI kutumia kipengele hiki.
- #pamoja na
- Sintaksia mpya ya ukatizaji wa kukokotoa Kikusanyaji sasa kinakubali kibainishi cha CCI __interrupt(num) ili kuashiria kuwa chaguo za kukokotoa za C ni vidhibiti vya kukatiza. Kibainishi huchukua nambari ya kukatiza, kwa mfanoample: #pamoja na batili __interrupt(SPI_STC_vect_num) spi_Isr(batili) { … }
Masuala yasiyobadilika
Yafuatayo ni marekebisho ambayo yamefanywa kwa mkusanyaji. Hizi zinaweza kurekebisha hitilafu katika msimbo uliozalishwa au kubadilisha utendakazi wa mkusanyaji kwa kile kilichokusudiwa au kubainishwa na mwongozo wa mtumiaji. Nambari ya toleo katika vichwa vidogo inaonyesha toleo la kwanza la mkusanyaji kuwa na marekebisho kwa masuala yanayofuata. Lebo zilizo kwenye mabano katika kichwa ni vitambulisho vya 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 Familia ya Kifaa (DFP) kinachohusishwa na kifaa. Tazama Kidhibiti Pakiti cha MPLAB kwa maelezo kuhusu mabadiliko yaliyofanywa kwa DFPs na kupakua vifurushi vipya zaidi.
Toleo la 2.45
- Kushindwa kwa leseni ya kutumia uzururaji (XCLM-235) Leseni za uzururaji zimeshindwa kufanya kazi ipasavyo kwenye mifumo ya Linux kwa kutumia matoleo ya glibc baadaye kuliko 2.28.
- Hitilafu ya ndani na safu za miundo (XC8-3069) Wakati washiriki wa safu-mbalimbali wa muundo walipochakatwa, kihitimu nafasi ya anwani hakikuenezwa kwa safu kwa usahihi. Hii ilisababisha kutolingana kwa maelezo ya mhitimu wa nafasi ya anwani na hitilafu ya mkusanyaji wa ndani. Hali hii imerekebishwa.
- Bad huandika mitiririko ambayo haijaanzishwa (ML-353, XC8-3100) Ikiwa mitiririko ya kawaida ya matokeo/hitilafu haikuwekwa wazi kwa kutumia FDEV_SETUP_STREAM au _init_stdout/_init_stderr , kujaribu kuiandikia ilisababisha tabia isiyojulikana. Hii pia iliathiri uandishi kutoka kwa vitendaji vya stdlib, kama vile perror(). Maandishi yoyote kwa mitiririko haya kabla hayajaanzishwa sasa yatapuuzwa.
- Kirekebishaji kisichotumika (XC8-2505) Maktaba ya avr-libc haikuauni * kirekebishaji katika vibainishi vya ubadilishaji wa mtindo wa printf, kwa mfano.ample “%.*f”. Hii sasa inatumika kwa kuanzishwa kwa Maktaba ya Kawaida ya Microchip Uniified.
- Maonyo mengi ambayo hayajaanzishwa (XC8-2409) Mkusanyaji alikuwa akitoa jumbe nyingi za onyo zinazofanana wakati anakumbana na mkusanyiko wa const ambao haukuanzishwa. Ujumbe ulipaswa kutolewa mara moja tu, ambayo ni kesi wakati hali hii inatokea.
Toleo la 2.41
- Matoleo ya Dongle kwenye Ventura (XC8-3088) Dongles zinazotumiwa kutoa leseni ya mkusanyaji huenda hazijasomwa ipasavyo kwenye wapangishi wa MacOS Ventura, na hivyo kusababisha kushindwa kwa utoaji wa leseni. Mabadiliko kwa msimamizi wa leseni ya XCLM hurekebisha suala hili.
- Dalili isiyo sahihi ya mgao wa kumbukumbu (XC8-2925) Kujaribu kutenga baiti SIZE_MAX (au thamani iliyo karibu na hii) ya kumbukumbu kwa kutumia vitendakazi vya kawaida vya usimamizi wa kumbukumbu ya maktaba (malloc() et al) iliyoombwa wakati wa kutumia utekelezaji rahisi wa ugawaji wa kumbukumbu. Kielekezi NULL sasa kitarejeshwa na errno itawekwa kuwa ENOMEM katika hali kama hizi.
- Vitendaji vya fma visivyo sahihi vimeondolewa (XC8-2913) Maktaba ya kawaida ya C99 fma()-kazi za familia ( ) haikukokotoa ongeza-zidishi kwa usahihi usio na kipimo kwa mduara mmoja, lakini badala yake ilikusanya makosa ya kuzungusha kwa kila operesheni. Vipengele hivi vimeondolewa kwenye maktaba iliyotolewa.
- Ushughulikiaji mbaya wa ubadilishaji wa kamba (XC8-2921, XC8-2652) Wakati 'mfuatano wa mada' ya ubadilishaji kwa strtod() ulikuwa na kile kilichoonekana kuwa nambari ya sehemu inayoelea katika umbizo la kielelezo na kulikuwa na herufi isiyotarajiwa baada ya e/E. character, basi ambapo endptr ilikuwa imetolewa, ilipewa anwani ambayo ilikuwa imeelekeza kwa mhusika baada ya , ambapo ilipaswa kuwa inaelekeza kwa herufi ya e//E yenyewe, kwani hiyo haikuwa imebadilishwa. Kwa mfanoample, strtod(“100exx”, &ep) inapaswa kurudisha 100.00 na kuweka ep ili kuelekeza kwenye sehemu ya “exx” ya mfuatano, ambapo chaguo la kukokotoa lilikuwa likirejesha thamani sahihi lakini ikiweka sehemu “xx” ya mfuatano.
Toleo la 2.40
- Imetulia sana (XC8-2876) Wakati wa kutumia chaguo la -mrelax, mkusanyaji hakuwa akigawa baadhi ya sehemu pamoja, na hivyo kusababisha idadi ndogo ya msimbo. Hii inaweza kuwa ilitokea kwa msimbo uliotumia maktaba mpya za MUSL au na alama dhaifu.
- Kipengele cha ramani hakijazimwa kama ilivyoelezwa katika onyo (XC8-2875) Kipengele cha progmem ya const-data-in-config-mapped kinategemea kipengele cha const-data-in-progmem kuwashwa. Ikiwa kipengele cha const-data-in-config-mapped-progmem kiliwezeshwa kwa uwazi kwa kutumia chaguo na kipengele cha const-data-in-progmem kikazimwa, hatua ya kuunganisha ilishindwa, licha ya ujumbe wa onyo unaosema kuwa const-data-in. kipengele cha -config-mapped-progmem kilikuwa kimezimwa kiotomatiki, jambo ambalo halikuwa sahihi kabisa. Kipengele cha const-data-in-config-mapped-progmem sasa kimezimwa kikamilifu katika hali hii.
- Mabadiliko ya DFP ili kufikia NVMCTRL kwa usahihi (XC8-2848) Msimbo wa kuanzisha wakati wa utekelezaji unaotumiwa na vifaa vya AVR64EA haukuzingatia kuwa rejista ya NVMCTRL ilikuwa chini ya Ulinzi wa Mabadiliko ya Usanidi (CCP) na haikuweza kuweka IO SFR kwenye ukurasa uliotumika. kwa kipengele cha mkusanyaji wa programu ya const-data-in-config-mapped-progmem. Mabadiliko yaliyofanywa katika toleo la 2.2.55 la AVR-Ex_DFP yataruhusu msimbo wa kuanza wakati wa utekelezaji kuandika kwa usahihi kwenye rejista hii.
- DFP inabadilika ili kuepuka uchoraji wa ramani (XC8-2847) Suluhu la kutatua tatizo la kipengele cha kifaa cha kuchora ramani iliyoripotiwa katika AVR128DA28/32/48/64 Silicon Errata (DS80000882) imetekelezwa. Kipengele cha mkusanyaji wa programu ya const-data-in-config-mapped-progmem hakitatumika kwa chaguomsingi kwa vifaa vilivyoathiriwa, na mabadiliko haya yataonekana katika toleo la 2.2.160 la AVR-Dx_DFP.
- Hitilafu ya kuunda na sinhf au coshf (XC8-2834) Majaribio ya kutumia vitendakazi vya maktaba sinhf() au coshf() yalisababisha hitilafu ya kiungo, kuelezea rejeleo ambalo halijabainishwa. Chaguo za kukokotoa zinazokosekana zilizorejelewa sasa zimejumuishwa katika usambazaji wa mkusanyaji.
- Jenga hitilafu na nopa (XC8-2833) Kwa kutumia sifa ya nopa iliyo na chaguo za kukokotoa ambazo jina lake la kiukusanyaji limebainishwa kwa kutumia __asm__() ilianzisha ujumbe wa makosa kutoka kwa kiunganishi. Mchanganyiko huu hauwezekani.
- Kushindwa kwa utendakazi tofauti na hoja za vielelezo (XC8-2755, XC8-2731) Kazi zilizo na idadi tofauti ya hoja zinatarajia viashiria 24-bit (__memx aina) kupitishwa katika orodha ya hoja zinazobadilika wakati kipengele cha const-data-in-progmem kinapowekwa. kuwezeshwa. Hoja ambazo zilikuwa viashiria vya kumbukumbu ya data zilikuwa zikipitishwa kama vitu vya biti 16, na kusababisha kushindwa kwa msimbo wakati zilisomwa. Wakati kipengele cha const-data-in-progmem kimewashwa, hoja zote za viashiria 16 sasa hubadilishwa kuwa viashiria 24-bit.
- Utendakazi wa maktaba ya strtoxxx haukufaulu (XC8-2620) Wakati kipengele cha const-data-in-progmem kiliwashwa, kigezo cha endptr katika vitendakazi vya maktaba ya strtoxxx hakikusasishwa ipasavyo kwa hoja za kamba chanzo zisizo kwenye kumbukumbu ya programu.
- Tahadhari kwa waigizaji batili (XC8-2612) Mkusanyaji sasa atatoa hitilafu ikiwa kipengele cha const-in-progmem kimewashwa na anwani ya mfuatano halisi inatupwa kwa uwazi kwenye nafasi ya anwani ya data (kuacha mchujo wa const), kwa ex.ample, (uint8_t *) “Hujambo Ulimwengu!” . Onyo ni suala ikiwa anwani inaweza kuwa batili wakati kielekezi cha data cha const kinatumwa kwa uwazi kwenye nafasi ya anwani ya data.
- Uwekaji wa vitu vya const ambavyo havijatumiwa (XC8-2408) Vitu visivyo na uninitialized na const volatile vitu const
hazikuwa zikiwekwa kwenye kumbukumbu ya programu kwenye vifaa vinavyoweka ramani yote au sehemu ya kumbukumbu ya programu kwenye nafasi ya anwani ya data. Kwa vifaa hivi, vitu hivyo sasa vimewekwa kwenye kumbukumbu ya programu, na kufanya operesheni yao iwe sawa na vifaa vingine.
Toleo la 2.39 (Toleo la Usalama Utendaji)
Hakuna.
Toleo la 2.36
Hitilafu wakati wa kuchelewesha (XC8-2774) Mabadiliko madogo katika uboreshaji chaguo-msingi wa Hali Huru yalizuia kukunjana mara kwa mara kwa misemo ya uendeshaji hadi ucheleweshaji wa vitendaji vilivyojumuishwa, na kusababisha kuchukuliwa kama zisizo mara kwa mara na kusababisha hitilafu: __builtin_avr_delay_cycles inatarajia mkusanyiko kamili wa wakati. mara kwa mara.
Toleo la 2.35
- Ugawaji wa pamoja kwa kutumia __at (XC8-2653) Ugawaji wa pamoja wa maeneo ya vitu vingi katika sehemu yenye jina sawa na kutumia __at() haikufanya kazi ipasavyo. Kwa mfanoample:
const char arr1[] __attribute__((sehemu(“.mysec”)))) __at (0x500) = {0xAB, 0xCD}; const char arr2[] __attribute__((sehemu(“.mysec”))) = {0xEF, 0xFE}; ilipaswa kuweka arr2 mara baada ya arr1 - Kubainisha anwani za kuanza kwa sehemu (XC8-2650) Chaguo la -Wl,–section-start lilikuwa limeshindwa kimya kimya kuweka sehemu kwenye anwani ya kuanzia iliyoteuliwa. Suala hili limetatuliwa kwa sehemu zozote zilizopewa jina maalum; hata hivyo, haitafanya kazi kwa sehemu zozote za kawaida, kama vile .text au .bss, ambazo lazima ziwekwe kwa kutumia chaguo la -Wl,-T. Kiungo huacha kufanya kazi wakati wa kupumzika (XC8-2647) Wakati uboreshaji wa -mrelax ulipowashwa na kulikuwa na sehemu za msimbo au data ambazo hazikutoshea kwenye kumbukumbu inayopatikana, kiunganishi kilianguka. Sasa, katika hali kama hiyo, ujumbe wa makosa hutolewa badala yake.
- Hakuna kurudi nyuma (XC8-2646) 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 (XC8-2637) Uboreshaji wa uondoaji wa kitaratibu ulikuwa unawashwa wakati wa kuchagua uboreshaji wa kiwango cha 3 (-O3). Uboreshaji huu hupunguza saizi ya msimbo kwa gharama ya kasi ya msimbo, kwa hivyo haikupaswa kutekelezwa.
- Ufikiaji mbaya wa EEPROM (XC8-2629) Ratiba ya eeprom_read_block haikufanya kazi ipasavyo kwenye vifaa vya Xmega wakati chaguo la - mconst-data-in-progmem lilipowezeshwa (ambayo ni hali chaguo-msingi), na kusababisha kumbukumbu ya EEPROM kutosomwa ipasavyo.
- Mgao batili wa kumbukumbu (XC8-2593, XC8-2651) Wakati -Ttext au -Tdata chaguo la kiunganishi (kwa ex.ample 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 chaguo za kukokotoa ilitangazwa kwa kutumia zaidi ya sifa moja ya kukatiza, ishara au nmi, kwa mfano, __attribute__((__signal__, __interrupt__)).
- Msimbo batili wa kukatiza wa ATtiny (XC8-2465) Wakati ujenzi wa vifaa vya ATtiny na uboreshaji ulizimwa (-O0), utendakazi wa kukatiza huenda ulisababisha utendakazi nje ya masafa.
- Chaguo ambazo hazijapitishwa (XC8-2452) Unapotumia chaguo la -Wl na chaguo nyingi za kiunganishi zilizotenganishwa kwa koma, si chaguo zote za kiunganishi zilikuwa zikipitishwa kwa kiunganishi.
- Hitilafu ya kusoma kumbukumbu ya programu (XC8-2450) Katika baadhi ya matukio, mkusanyaji alitoa hitilafu ya ndani (unrecognizable insn ) wakati wa kusoma thamani ya byte mbili kutoka kwa pointer hadi kumbukumbu ya programu.
Toleo la 2.32
Ufikiaji wa pili wa maktaba umeshindwa (XC8-2381) Kuomba 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.
Toleo la 2.31
Hitilafu za mkusanyaji zisizoelezeka (XC8-2367) Wakati wa kuendesha kwenye mifumo ya Windows ambayo saraka ya muda ya mfumo imewekwa kwenye njia iliyojumuisha nukta '.' tabia, mkusanyaji anaweza kuwa ameshindwa kutekeleza.
Toleo la 2.30
- Lebo za kimataifa zimewekwa vibaya baada ya kubainisha (XC8-2299) Msimbo wa mkusanyiko ulioandikwa kwa mkono ambao huweka lebo za kimataifa ndani ya mlolongo wa mikusanyiko ambayo hutolewa kwa uondoaji wa kiutaratibu huenda haujawekwa upya ipasavyo.
- Ajali ya kupumzika (XC8-2287) Kutumia chaguo la -mrelax huenda kumesababisha kiunganishi kushindwa kufanya kazi wakati uboreshaji wa kulegea kwa kuruka mkia ulipojaribu kuondoa maagizo ya kurejesha tena ambayo hayakuwa mwishoni mwa sehemu.
- Kuacha kufanya kazi wakati wa kuboresha lebo kama thamani (XC8-2282) Msimbo kwa kutumia "Lebo kama thamani" kiendelezi cha lugha ya GNU C huenda kilisababisha uboreshaji wa uondoaji wa kiutaratibu kuvurugika, huku kukiwa na hitilafu ya urekebishaji wa misururu.
- Sio hivyo const (XC8-2271) Prototypes za strstr() na kazi zingine kutoka usibainishe tena kihitimu kisicho cha kawaida kwenye viashiria vya kamba vilivyorejeshwa wakati kipengele cha const -mconst-data-in-progmem kimezimwa. Kumbuka kuwa ukiwa na avrxmega3 na vifaa vya avrtiny, kipengele hiki kimewashwa kabisa.
- Vianzilishi vilivyopotea (XC8-2269) Wakati zaidi ya kigezo kimoja katika kitengo cha kutafsiri kiliwekwa katika sehemu (kwa kutumia __section au __attribute__((section)) ), na kigezo cha kwanza kama hicho kilianzishwa sifuri au hakikuwa na kianzilishi, vianzilishi vya vigezo vingine katika kitengo sawa cha tafsiri ambavyo viliwekwa katika sehemu moja vilipotea.
Toleo la 2.29 (Toleo la Usalama Utendaji)
Hakuna.
Toleo la 2.20
- Hitilafu na amri ndefu (XC8-1983) Wakati wa kutumia lengo la AVR, mkusanyaji anaweza kuwa amesimama na faili ambayo haijapatikana, 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.
Toleo la 2.19 (Toleo la Usalama Utendaji)
Hakuna.
Toleo la 2.10
- Hitilafu za uhamishaji (XC8-1891) Kisambazaji kinachofaa zaidi kilikuwa ni kuacha '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-388) Ufafanuzi kadhaa kutoka , kama vile clock_div_t na clock_prescale_set() , hazikufafanuliwa kwa vifaa, ikiwa ni pamoja na ATmega324PB, ATmega328PB, ATtiny441, na ATtiny841.
- Macros zinazokosekana Kichakataji makro _XC8_MODE_, __XC8_VERSION, __XC , na __XC8 hufafanuliwa kiotomatiki na mkusanyaji. Hizi sasa zinapatikana.
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 hazikugunduliwa na mkusanyaji katika hali fulani, na kusababisha hitilafu ya msimbo wa wakati wa utekelezaji.
- Kumbukumbu ya mweko iliyoachwa (XC8-1792) Kwa vifaa vya avrxmega3 na avrtiny, sehemu za kumbukumbu ya mweko 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 kusoma tu 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() 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.
- Kukosa 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 kuanza wakati wa kuanza, kabla ya kufikia kuu( )
- Hitilafu ya fuse yenye vifaa vidogo (XC8-1778, XC8-1742) Vifaa vya attiny4/5/9/10/20/40 vilikuwa na urefu wa fuse usio sahihi uliobainishwa katika faili za vichwa vyao ambao husababisha makosa ya kiunganishi wakati wa kujaribu kuunda msimbo ambao ulifafanua fuse. .
- Hitilafu ya sehemu (XC8-1777) Hitilafu ya sehemu ya vipindi imerekebishwa.
- Ajali ya Assembler (XC8-1761) Kikusanyaji cha avr-as kinaweza kuwa kilianguka wakati kikusanyaji kiliendeshwa chini ya Ubuntu 18.
- Vipengee ambavyo havijafutwa (XC8-1752) Vipengee vya muda wa hifadhi tuli ambavyo havijaanzishwa huenda havijafutwa na msimbo wa kuanzisha wakati wa kutekelezwa.
- Ubainishaji wa kifaa unaokinzana umepuuzwa (XC8-1749) Kikusanyaji hakikuwa kikizalisha hitilafu wakati chaguo nyingi za ubainishaji wa kifaa zilitumiwa na kuashiria vifaa tofauti.
- Uharibifu wa kumbukumbu kwa lundo (XC8-1748) Alama ya __heap_start 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 rjmp au rcall yenye lengo la baiti 4k haswa.
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 kichwa ni vitambulisho vya 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.
Ujumuishaji wa IDE ya MPLAB X
- Ujumuishaji wa Kitambulisho cha MPLAB Ikiwa Kikusanyaji kitatumiwa kutoka kwa IDE ya MPLAB, basi lazima usakinishe IDE ya MPLAB kabla ya kusakinisha Kikusanyaji.
- Mkusanyiko wa maelezo ya utatuzi (XC8-3157) Maelezo ya utatuzi yanayotolewa na mkusanyaji hayatoi kwa usahihi aina ya kitu kwa mkusanyiko katika nafasi ya anwani ya __memx. Hii itazuia uchunguzi wa kitu kwenye IDE.
Uzalishaji wa Kanuni
- Segfault iliyo na chaguo la nanga za sehemu (XC8-3045) Programu ambayo ilifafanua kazi zilizo na orodha tofauti za hoja na zinazotumia chaguo la -fsection-anchors huenda zilisababisha hitilafu ya mkusanyaji wa ndani: Kosa la sehemu.
- Maelezo ya utatuzi hayajasawazishwa (XC8-2948) Wakati uboreshaji wa kiunganishi wa kulegeza unapunguza maagizo (kwa ex.ample call to rcall maelekezo), mstari wa chanzo wa kushughulikia michoro huenda usisawazishe wakati kuna zaidi ya operesheni moja ya kupunguza inayotokea katika sehemu. Katika exampna, kuna simu mbili kwa foo ambazo huishia kupumzika kwa simu za jamaa.
- Kushindwa kwa ugawaji wa kumbukumbu ya PA (XC8-2881) Wakati wa kutumia viboreshaji vya kiutaratibu, kiunganishi kinaweza kuripoti hitilafu za ugawaji kumbukumbu wakati saizi ya msimbo iko karibu na kiasi cha kumbukumbu ya programu inayopatikana kwenye kifaa, ingawa programu inapaswa kuwa na uwezo wa kutoshea inayopatikana. nafasi.
- Sio smart sana Smart-IO (XC8-2872) Kipengele cha smart-io cha mkusanyaji kitatoa msimbo halali lakini usio bora zaidi wa kitendakazi cha snprintf ikiwa kipengele cha const-data-in-progmem kimezimwa au ikiwa kifaa kina vifaa vyake vyote. flash iliyopangwa kwenye kumbukumbu ya data.
- Smart-IO (XC8-2869) ya Smart-IO (XCXNUMX-XNUMX) ya mkusanyaji wa smart-io itazalisha msimbo halali lakini ndogo wakati chaguzi za -flto na -fno-builtin zitatumika.
- Uwekaji mdogo wa data ya kusoma pekee (XC8-2849) Kiunganishi kwa sasa hajui sehemu za kumbukumbu za APPCODE na APPDATA, wala mgawanyiko wa [No-]Read-While-Write katika ramani ya kumbukumbu. Kwa hivyo, kuna nafasi ndogo kwamba kiunganishi kinaweza kutenga data ya kusoma tu katika eneo lisilofaa la kumbukumbu. Uwezekano wa data potofu huongezeka ikiwa kipengele cha const-data-in-progmem kimewashwa, hasa ikiwa kipengele cha const-data-in-config-mapped-progmem pia kimewashwa. Vipengele hivi vinaweza kulemazwa ikiwa inahitajika.
- Agizo la uchakataji wa faili za kitu (XC8-2863) Utaratibu ambao faili za vitu zitachakatwa na kiunganishi unaweza kutofautiana kulingana na utumiaji wa uboreshaji wa kiutaratibu (chaguo-mpa). Hii ingeathiri tu nambari ambayo inafafanua utendaji dhaifu katika moduli nyingi.
- Hitilafu ya kiunganishi yenye absolute (XC8-2777) Wakati kitu kimefanywa kuwa kamilifu kwenye anwani mwanzoni mwa RAM na vitu ambavyo havijaanzishwa pia vimefafanuliwa, hitilafu ya kiunganishi inaweza kuanzishwa.
- Vitambulisho vifupi vya kuamka (XC8-2775) Kwa vifaa vya ATA5700/2, rejista za PHID0/1 zinafafanuliwa tu kuwa na upana wa biti 16, badala ya upana wa biti 32.
- Kiunganishi huacha kufanya kazi wakati wa kupiga simu ishara (XC8-2758) Kiunganishi kinaweza kuanguka ikiwa chaguo la -mrelax la kiendeshi litatumika wakati msimbo wa chanzo unapoita ishara ambayo imefafanuliwa kwa kutumia chaguo la – Wl,–defsym la kiunganishi.
- Uanzishaji usio sahihi (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.
- Simu mbovu za utendakazi zisizo za moja kwa moja (XC8-2628) Katika baadhi ya matukio, simu za utendakazi zinazopigwa kupitia kiashiria cha utendakazi kilichohifadhiwa kama sehemu ya muundo zinaweza kushindwa.
- Strtof hurejesha sufuri kwa kuelea kwa heksadesimali (XC8-2626) Kitendaji cha maktaba strtof() et al na scanf() et al, kitabadilisha nambari ya sehemu inayoelea ya heksadesimali ambayo haibainishi kipeo hadi sufuri. Kwa mfanoample: strtof(“0x1”, &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 uliotumiwa (huenda kupitia matumizi ya alloca()) halitozwi.
- Kushindwa kwa msimbo wa kukatiza unaorudiwa (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 utawezeshwa hata kabla ya epilogue ya kidhibiti cha sasa cha kukatiza, ambayo inaweza kusababisha kushindwa kwa msimbo.
- Toleo mbovu lenye njia batili ya DFP (XC8-2376) Ikiwa kikusanyaji kimetumiwa kwa njia batili ya DFP na faili ya 'spec' ipo kwa kifaa kilichochaguliwa, mkusanyaji haoni ripoti ya kifurushi cha familia ya kifaa kilichokosekana na badala yake anachagua 'spec'. faili, ambayo inaweza kusababisha matokeo batili. Faili za 'maalum' huenda 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()) na vitu vingine kwa kutumia kibainishi cha __section() na ambacho kimeunganishwa kwa anwani sawa.
- Kushindwa kwa vitendakazi vya maktaba na __memx (XC8-1763) Huitwa vitendaji vya kuelea vya libgcc kwa hoja katika nafasi ya anwani ya __memx kunaweza 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 majina (AVRTC-733) Nafasi za anwani zilizotajwa zinaauniwa na mnyororo wa zana, kulingana na mapungufu yaliyotajwa katika sehemu ya mwongozo wa mtumiaji Vigezo vya Aina Maalum.
- Kanda za saa The kazi za maktaba huchukulia GMT na hazitumii saa za eneo, kwa hivyo localtime() zitarudi kwa wakati ule ule gmtime() , kwa ex.ample.
Nyaraka / Rasilimali
![]() |
Vidokezo vya Utoaji vya MICROCHIP XC8 C Toleo la 2.45 la AVR MCU [pdf] Maagizo AVR MCU, XC8 C, XC8 C Compiler Version 2.45 Release Notes for AVR MCU, Compiler Version 2.45 Release Notes for AVR MCU, Version 2.45 Release Notes for AVR MCU, Release Notes for AVR MCU, Notes for AVR MCU, AVR MCU |

