MICROCHIP MPLAB XC8 C Compiler Software 

MICROCHIP MPLAB XC8 C Compiler Software

ANG DOKUMENTONG ITO AY MAY MAHALAGANG IMPORMASYON NA KAUGNAY SA MPLAB XC8 C COMPILER KAPAG NAGTA-TARGE NG MGA MICROCHIP AVR DEVICES.
PAKIBASA ITO BAGO PAtakbuhin ang SOFTWARE NA ITO. TINGNAN ANG MPLAB XC8 C COMPILER RELEASE NOTES PARA SA PIC DOCUMENT KUNG GINAGAMIT MO ANG COMPILER PARA SA 8-BIT PIC DEVICES.

Mga nilalaman magtago

Tapos naview

Panimula

Ang release na ito ng Microchip MPLAB® XC8 C compiler ay naglalaman ng ilang bagong feature, pag-aayos ng bug, at bagong suporta sa device.

Petsa ng Pagbuo

Ang opisyal na petsa ng pagbuo ng bersyon ng compiler na ito ay ang 3 Hulyo 2022.

Nakaraang Bersyon

Ang dating bersyon ng compiler ng MPLAB XC8 C ay 2.39, isang functional safety compiler, na binuo noong 27 Enero 2022. Ang dating karaniwang compiler ay bersyon 2.36, na binuo noong 27 Enero 2022.

Functional Safety Manual

Ang isang Functional Safety Manual para sa mga MPLAB XC compiler ay makukuha sa documentation package kapag bumili ka ng functional safety license.

Mga Lisensya at Bersyon ng Bahagi

Ang MPLAB® XC8 C Compiler para sa mga tool ng AVR MCU ay isinulat at ipinamamahagi sa ilalim ng GNU General Public License (GPL) na nangangahulugan na ang source code nito ay malayang ipinamamahagi at magagamit sa publiko. Ang source code para sa mga tool sa ilalim ng GNU GPL ay maaaring i-download nang hiwalay mula sa Microchip's weblugar. Maaari mong basahin ang GNU GPL sa file pinangalanang matatagpuan ang subdirectory ng iyong direktoryo ng pag-install. Ang isang pangkalahatang talakayan ng mga prinsipyong pinagbabatayan ng GPL ay maaaring matagpuan dito. Ibinigay ang code ng suporta para sa header files, linker script, at runtime library ay proprietary code at hindi sakop sa ilalim ng GPL.

Ang compiler na ito ay isang pagpapatupad ng GCC na bersyon 5.4.0, binutils na bersyon 2.26, at gumagamit ng avr-libc na bersyon 2.0.0.

Mga Kinakailangan sa System

Ang MPLAB XC8 C compiler at ang licensing software na ginagamit nito ay available para sa iba't ibang operating system, kabilang ang 64-bit na bersyon ng mga sumusunod: Propesyonal na edisyon ng Microsoft Windows 10; Ubuntu 18.04; at macOS 10.15.5. Ang mga binary para sa Windows ay nilagdaan ng code. Ang mga binary para sa mac OShave ay nilagdaan ng code at na-notaryo.

Kung nagpapatakbo ka ng isang server ng lisensya sa network, tanging ang mga computer na may mga operating system na sinusuportahan ng mga compiler ang maaaring gamitin upang i-host ang server ng lisensya. Mula sa bersyon ng xclm 2.0, ang server ng lisensya ng network ay maaaring mai-install sa isang platform ng Microsoft Windows Server, ngunit ang server ng lisensya ay hindi kailangang tumakbo sa isang bersyon ng server ng operating system.

Sinusuportahan ang mga aparato

Sinusuportahan ng compiler na ito ang lahat ng 8-bit na AVR MCU device na kilala sa oras ng paglabas. Tingnan (sa direktoryo ng doc ng compiler) para sa isang listahan ng lahat ng sinusuportahang device. Ang mga ito filenaglilista din ng mga setting ng configuration bit para sa bawat device.

Mga Edisyon at Pag-upgrade ng Lisensya

Ang MPLAB XC8 compiler ay maaaring i-activate bilang isang lisensyado (PRO) o hindi lisensyadong (Libre) na produkto. Kailangan mong bumili ng activation key para bigyan ng lisensya ang iyong compiler. Ang isang lisensya ay nagbibigay-daan para sa isang mas mataas na antas ng pag-optimize kumpara sa Libreng produkto. Ang isang hindi lisensyadong compiler ay maaaring patakbuhin nang walang katiyakan nang walang lisensya.

Ang isang MPLAB XC8 Functional Safety compiler ay dapat na i-activate gamit ang isang functional na lisensya sa kaligtasan na binili mula sa Microchip. Hindi gagana ang compiler nang walang lisensyang ito. Kapag na-activate na, maaari kang pumili ng anumang antas ng pag-optimize at gamitin ang lahat ng feature ng compiler. Ang release na ito ng MPLAB XC Functional Safety Compiler ay sumusuporta sa Network Server License.
Tingnan ang dokumento ng Pag-install at Paglilisensya ng MPLAB XC C Compiler (DS50002059) para sa impormasyon sa mga uri ng lisensya at pag-install ng compiler na may lisensya.

Pag-install at pag-activate

Tingnan din ang mga seksyong Mga Isyu at Limitasyon sa Paglipat para sa mahalagang impormasyon tungkol sa pinakabagong manager ng lisensya na kasama sa compiler na ito.
Kung gumagamit ng MPLAB IDE, tiyaking i-install ang pinakabagong bersyon ng MPLAB X IDE na 5.0 o mas bago bago i-install ang tool na ito. Ihinto ang IDE bago i-install ang compiler. Patakbuhin ang .exe (Windows), .run (Linux) o app (macOS) compiler installer application, hal XC8-1.00.11403-windows.exe at sundin ang mga direksyon sa screen.
Inirerekomenda ang default na direktoryo ng pag-install. Kung gumagamit ka ng Linux, dapat mong i-install ang compiler gamit ang isang terminal at mula sa isang root account. Mag-install gamit ang isang macOS account na may mga pribilehiyo ng administrator.

Ang pag-activate ay isinasagawa na ngayon nang hiwalay sa pag-install. Tingnan ang dokumento License Manager para sa MPLAB® XC C Compiler (DS52059) para sa higit pang impormasyon.

Kung pipiliin mong patakbuhin ang compiler sa ilalim ng lisensya sa pagsusuri, makakakuha ka na ngayon ng babala sa panahon ng compilation kapag nasa loob ka ng 14 na araw ng pagtatapos ng iyong panahon ng pagsusuri. Ang parehong babala ay ibinibigay kung ikaw ay nasa loob ng 14 na araw ng pagtatapos ng iyong subscription sa HPA.

Ang XC Network License Server ay isang hiwalay na installer at hindi kasama sa single-user compiler installer.

Sinusuportahan na ngayon ng XC License Manager ang roaming ng mga lisensya ng lumulutang na network. Nilalayon sa mga mobile user, pinapayagan ng feature na ito ang isang lumulutang na lisensya na umalis sa network sa loob ng maikling panahon. Gamit ang tampok na ito, maaari kang magdiskonekta mula sa network at gamitin pa rin ang iyong MPLAB XC compiler. Tingnan ang doc folder ng XCLM install para sa higit pa sa feature na ito. Kasama sa MPLAB X IDE ang isang Licenses window (Tools > Licenses) para biswal na pamahalaan ang roaming.

Paglutas ng mga Isyu sa Pag-install

Kung nakakaranas ka ng mga kahirapan sa pag-install ng compiler sa ilalim ng alinman sa mga operating system ng Windows, subukan ang mga sumusunod na mungkahi.

  • Patakbuhin ang pag-install bilang isang administrator.
  • Itakda ang mga pahintulot ng installer application sa 'Buong kontrol'. (I-right-click ang file, piliin ang Properties, Security tab, piliin ang user, i-edit.)
  • Itakda ang mga pahintulot ng temp folder sa “Full Control!

Upang matukoy ang lokasyon ng temp folder, i-type ang %temp% sa Run command (Windows logo key + R). Ito ay magbubukas ng a file explorer dialog na nagpapakita ng direktoryo na iyon at magbibigay-daan sa iyo na matukoy ang landas ng folder na iyon.

Compiler Documentation

Ang mga gabay ng gumagamit ng compiler ay mabubuksan mula sa HTML na pahina na bubukas sa iyong browser kapag nag-click sa asul na help button sa MPLAB X IDE dashboard, gaya ng ipinahiwatig sa screenshot.

Compiler Documentation
Kung gumagawa ka para sa 8-bit na mga target ng AVR, ang Gabay sa Gumagamit ng MPLAB® XC8 C Compiler para sa AVR® MCU ay naglalaman ng impormasyon sa mga opsyon at feature ng compiler na naaangkop sa arkitektura na ito.

Suporta sa Customer

Tinatanggap ng Microchip ang mga ulat ng bug, mungkahi o komento tungkol sa bersyon ng compiler na ito. Mangyaring idirekta ang anumang mga ulat ng bug o mga kahilingan sa tampok sa pamamagitan ng Support System.

Mga Update sa Dokumentasyon

Para sa on-line at up-to-date na mga bersyon ng dokumentasyon ng MPLAB XC8, pakibisita ang Online Technical Documentation ng Microchip website.

Bago o na-update na dokumentasyon ng AVR sa release na ito:

  • Paunawa sa copyright ng MUSL
  • Pag-install at Paglilisensya ng mga Compiler ng MPLAB XC C (rebisyon M)
  • Gabay ng Gumagamit ng MPLAB XC8 para sa Mga Naka-embed na Engineer – Mga AVR MCU (rebisyon A)
  • Gabay ng Gumagamit ng MPLAB XC8 C Compiler para sa AVR MCU (rebisyon F)
  • Microchip Unified Standard Library Reference Guide (rebisyon B)

Ang Microchip Unified Standard Library Reference Guide ay naglalarawan sa gawi ng at interface sa mga function na tinukoy ng Microchip Unified Standard Library, pati na rin ang nilalayong paggamit ng mga uri at macro ng library. Ang ilan sa impormasyong ito ay dating nasa MPLAB® XC8 C Compiler User!s Guide para sa AVR® MCU. Ang impormasyon ng library na partikular sa device ay nakapaloob pa rin sa gabay ng compiler na ito.

Kung nagsisimula ka pa lang sa mga 8-bit na device at sa MPLAB XC8 C Compiler, ang MPLAB® XC8 User!s Guide para sa Mga Naka-embed na Engineer – AVR® MCUs (DS50003108) ay may impormasyon sa pagse-set up ng mga proyekto sa MPLAB X IDE at writing code para sa iyong unang proyekto ng MPLAB XC8 C. Ang gabay na ito ay ipinamahagi na ngayon kasama ng compiler.

Ang Gabay sa Gumagamit ng Hamate ay isinama sa direktoryo ng mga doc sa paglabas na ito. Ang gabay na ito ay inilaan para sa mga nagpapatakbo ng Hamate bilang isang stand-alone na application.

Ano ang Bago

Ang mga sumusunod ay mga bagong feature na target ng AVR na sinusuportahan na ngayon ng compiler. Ang numero ng bersyon sa mga subheading ay nagpapahiwatig ng unang bersyon ng compiler na sumusuporta sa mga sumusunod na tampok.

Bersyon 2.40

Bagong suporta sa device Available na ang suporta para sa mga sumusunod na bahagi ng AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32, at AVR64EA48.
Pinahusay na abstraction ng pamamaraan Ang procedural abstraction (PA) optimization tool ay napabuti upang ang code na naglalaman ng function call instruction ( call recall ) ) ay maaaring mabalangkas. Ito ay magaganap lamang kung ang stack ay hindi ginagamit upang ipasa ang mga argumento o makakuha ng return value mula sa function. Ginagamit ang stack kapag tumatawag sa isang function na may variable na listahan ng argumento o kapag tumatawag sa isang function na tumatagal ng mas maraming argumento kaysa sa mga register na itinalaga para sa layuning ito. Maaaring hindi paganahin ang feature na ito gamit ang monk-pa-outline-calls na opsyon, o ang procedure abstraction ay maaaring ganap na i-disable para sa isang object file o function sa pamamagitan ng paggamit ng -monk-pa-on-file at -mo.-pa-on-function ayon sa pagkakabanggit, o sa pamamagitan ng paggamit ng nipa attribute ( nipa specifier) ​​nang piling may mga function

Code coverage macro Tinutukoy na ngayon ng compiler ang macro __CODECOV kung may tinukoy na wastong mcodecov na opsyon.

Opsyon sa pagpapareserba ng memorya Tatanggapin na ngayon ng driver ng xc8-cc ang -mreserve=space@start: end na opsyon kapag gumagawa para sa mga target ng AVR. Inilalaan ng opsyong ito ang tinukoy na hanay ng memorya sa alinman sa puwang ng memorya ng data o program, na pumipigil sa linker na i-populate ang code o mga bagay sa lugar na ito.

Mas matalinong matalinong IO Maraming mga pagpapahusay ang ginawa sa mga function ng Smart IO, kabilang ang mga pangkalahatang pag-aayos sa printf core code, na tinatrato ang %n conversion specifier bilang isang independiyenteng variant, nagli-link sa vararg pop routines on demand, gamit ang mas maiikling uri ng data kung posible para sa paghawak ng mga argumento ng function ng IO , at pag-factor ng karaniwang code sa lapad ng field at paghawak ng katumpakan. Maaari itong magresulta sa makabuluhang pagtitipid ng code at data, pati na rin ang pagtaas ng bilis ng pagpapatupad ng IO.

Bersyon 2.39 (Functional Safety Release)

Lisensya sa Network Server Ang release na ito ng MPLAB XC8 Functional Safety Compiler ay sumusuporta sa Network Server License.

Bersyon 2.36

wala.

Bersyon 2.35

Bagong suporta sa device Available ang suporta para sa mga sumusunod na bahagi ng AVR: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28, at AVR64DD32.

Pinahusay na paglipat ng konteksto Binabago ng bagong opsyon na -mcall-isr-prologues kung paano ise-save ng mga interrupt function ang mga register sa pagpasok at kung paano ibinabalik ang mga register na iyon kapag natapos na ang interrupt routine. Gumagana ito sa katulad na paraan sa -mcall-prologues na opsyon, ngunit nakakaapekto lamang sa mga interrupt function (ISRs).

Mas pinahusay na paglipat ng konteksto Ang bagong -mgas-isr-prologues na opsyon ay kumokontrol sa mga konteksto na itch code na nabuo para sa maliliit na nakakagambalang mga gawain sa serbisyo. Kapag pinagana, ang tampok na ito ay magkakaroon ng assembler na i-scan ang ISR para sa paggamit ng rehistro at i-save lamang ang mga ginamit na register na ito kung kinakailangan.

Nako-configure ang flash mapping Ang ilang device sa AVR DA at AVR DB family ay may SFR (hal. FLMAP) na tumutukoy kung aling 32k na seksyon ng memory ng program ang imamapa sa memorya ng data. Ang bagong – mconst-data-in-config-mapped-proem na opsyon ay maaaring gamitin upang ilagay ng linker ang lahat ng cons qualified na data sa isang 32k na seksyon at awtomatikong simulan ang nauugnay na SFR register upang matiyak na ang data na ito ay nakamapa sa espasyo ng memorya ng data , kung saan ito ay maa-access nang mas epektibo.

Microchip Unified Standard Libraries Ang lahat ng MPLAB XC compiler ay magbabahagi ng Microchip Unified Standard Library, na available na ngayon sa release na ito ng MPLAB XC8. Hindi na kasama sa MPLAB® XC8 C Compiler User's Guide/o AVR® MCU ang dokumentasyon para sa mga karaniwang function na ito. Ang impormasyong ito ay matatagpuan na ngayon sa Microchip Unified Standard Library Reference Guide. Tandaan na ang ilang functionality na dating tinukoy ng avr-libc ay hindi na available. (Tingnan ang Librar):'. functionality...)

Matalinong IO Bilang bahagi ng mga bagong pinag-isang aklatan, ang mga function ng IO sa mga pamilya ng pag-print at pag-scan ay pasadyang nabuo sa bawat build, batay sa kung paano ginagamit ang mga function na ito sa programa. Ito ay maaaring makabuluhang bawasan ang mga mapagkukunang ginagamit ng isang programa.
Opsyon sa tulong ng Smart IO Kapag sinusuri ang mga tawag sa mga function ng smart IO (gaya ng printf () o scanf () ), hindi palaging matukoy ng compiler mula sa string ng format o mahinuha mula sa mga argumento ang mga tinukoy na conversion na kinakailangan ng tawag. Dati, ang compiler ay palaging walang mga pagpapalagay at tinitiyak na ang ganap na gumaganang mga function ng IO ay naka-link sa panghuling imahe ng programa. Ang isang bagong – msmart-io-format=fmt na opsyon ay idinagdag upang ang compiler ay maaaring ipaalam sa halip ng user ng mga conversion specifier na ginagamit ng matalinong mga function ng IO na ang paggamit ay hindi maliwanag, na pumipigil sa labis na mahabang IO routines mula sa pag-link. (Tingnan ang Opsyon ng smart-io-format para sa higit pang mga detalye.)

Paglalagay ng mga custom na seksyon Dati, ang -Wl, –section-start na opsyon ay inilagay lamang ang tinukoy na seksyon sa hiniling na address kapag tinukoy ng linker script ang isang output section na may parehong pangalan. Kapag hindi iyon ang kaso, ang seksyon ay inilagay sa isang address na pinili ng linker at ang opsyon ay mahalagang binalewala. Ngayon ang pagpipilian ay pararangalan para sa lahat ng mga custom na seksyon, kahit na ang linker script ay hindi tukuyin ang seksyon. Tandaan, gayunpaman, na para sa mga karaniwang seksyon, tulad ng . text, . bss o . data, ang pinakamahusay na angkop na allocator ay magkakaroon pa rin ng kumpletong kontrol sa kanilang pagkakalagay, at ang opsyon ay walang epekto. Gamitin ang -Wl, -Tsection=add na opsyon, gaya ng inilarawan sa gabay ng gumagamit.

Bersyon 2.32

Stack Guidance Magagamit na may lisensya ng PRO compiler, ang tampok na gabay ng stack ng compiler ay maaaring gamitin upang tantiyahin ang maximum na lalim ng anumang stack na ginagamit ng isang programa. Binubuo at sinusuri nito ang call graph ng isang program, tinutukoy ang paggamit ng stack ng bawat function, at gumagawa ng ulat, kung saan maaaring mahinuha ang lalim ng mga stack na ginamit ng program. Ang tampok na ito ay pinagana sa pamamagitan ng -mchp-stack-usage command-line na opsyon. Ang isang buod ng paggamit ng stack ay naka-print pagkatapos ng pagpapatupad. Ang isang detalyadong ulat ng stack ay magagamit sa mapa file, na maaaring hilingin sa karaniwang paraan.

Suporta sa suporta ng bagong device ay available para sa mga sumusunod na bahagi ng AVR: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVRXNUMXDBXNUMXDB at AVRXNUMXDBXNUMX.

Suporta sa suporta sa binawi na device ay hindi na magagamit para sa mga sumusunod na bahagi ng AVR: AVR16DA28, AVR16DA32 at, AVR16DA48.

Bersyon 2.31

wala.

Bersyon 2.30

Bagong opsyon upang maiwasan ang pagsisimula ng data Ang isang bagong -mno-data-ini t driver na opsyon ay pumipigil sa pagsisimula ng data at ang pag-clear ng mga seksyon ng bss. Gumagana ito sa pamamagitan ng pagpigil sa output ng do_ copy_ data at d o_ clear_ bss na mga simbolo sa pagpupulong files, na kung saan ay mapipigilan ang pagsasama ng mga nakagawiang iyon ng linker.

Mga pinahusay na pag-optimize Ang ilang mga pagpapabuti sa pag-optimize ay ginawa, kabilang ang pag-alis ng mga paulit-ulit na mga tagubilin sa pagbabalik, ang pag-alis ng ilang mga jumps kasunod ng isang skip-if-bit-is na pagtuturo, at pinahusay na pamamaraan ng abstraction at ang kakayahang ulitin ang prosesong ito.

Available na ngayon ang mga karagdagang opsyon para makontrol ang ilan sa mga pag-optimize na ito, partikular na -f section anchors, na nagbibigay-daan sa pag-access ng mga static na bagay na maisagawa nang may kaugnayan sa isang simbolo; -mpai derations=n, na nagpapahintulot sa bilang ng mga pag-ulit ng abstraction ng pamamaraan na mabago mula sa default na 2; at, -mpa- call cost- shortcall, na nagsasagawa ng mas agresibong procedural abstraction, sa pag-asang makakapag-relax ang linker ng mahabang tawag. Ang huling opsyon na ito ay maaaring tumaas ang laki ng code kung ang mga pinagbabatayan na pagpapalagay ay hindi natanto.

Bagong suporta sa device Available ang suporta para sa mga sumusunod na bahagi ng AVR: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48, at AVR128DB.

Binawi ang Suporta sa device Hindi na available ang suporta para sa mga sumusunod na bahagi ng AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, at 664251.

Bersyon 2.29 (Functional Safety Release)

Header file para sa compiler built-in Upang matiyak na ang compiler ay maaaring sumunod sa mga detalye ng wika tulad ng MISRA, ang header file, na awtomatikong kasama ng , ay na-update. Ang header na ito ay naglalaman ng mga prototype para sa lahat ng in-built na function, gaya ng _buil tin _avrnop () at _buil tin_ avr delay_ cycles () . Ang ilang mga built-in ay maaaring hindi sumusunod sa MISRA; ang mga ito ay maaaring tanggalin sa pamamagitan ng pagdaragdag ng define _Xe_ STRICT_ MISRA sa compiler command line. Ang mga built-in at ang kanilang mga deklarasyon ay na-update upang gumamit ng mga fixed-width na uri.

Bersyon 2.20

Bagong suporta sa device Available ang suporta para sa mga sumusunod na bahagi ng AVR: ATTINY1624, ATTINY1626, at ATTINY1627.

Mas mahusay na angkop na alokasyon Ang best fit allocator (BFA) sa compiler ay napabuti upang ang mga seksyon ay inilalaan sa isang order na nagpapahintulot sa mas mahusay na pag-optimize. Sinusuportahan na ngayon ng BFA ang mga pinangalanang puwang ng address at mas mahusay na pinangangasiwaan ang pagsisimula ng data.

Pinahusay na abstraction ng pamamaraan Ang mga pamamaraan ng abstraction optimization ay ginagawa na ngayon sa higit pang mga pagkakasunud-sunod ng code. Ang mga nakaraang sitwasyon kung saan ang pag-optimize na ito ay maaaring tumaas ang laki ng code ay natugunan sa pamamagitan ng pagpapaalam sa optimization code ng proseso ng pangongolekta ng basura ng linker.

Kawalan ng AVR Assembler Ang AVR Assembler ay hindi na kasama sa pamamahagi na ito.

Bersyon 2.19 (Functional Safety Release)

wala.

Bersyon 2.10

Code Coverage Kasama sa release na ito ang feature na saklaw ng code na nagpapadali sa pagsusuri sa lawak kung saan naisakatuparan ang source code ng isang proyekto. Gamitin ang opsyon -mcodecov=ram para paganahin ito. Pagkatapos ng pagpapatupad ng programa sa iyong hardware, ang impormasyon sa saklaw ng code ay iko-collate sa device, at ito ay maaaring ilipat sa at ipakita ng MPLAB X IDE sa pamamagitan ng isang code coverage plugin. Tingnan ang dokumentasyon ng IDE para sa impormasyon sa plugin na ito ay maaaring makuha. Maaaring gamitin ang #pragma mcodecov upang ibukod ang mga kasunod na function mula sa pagsusuri sa saklaw. Sa isip, ang pragma ay dapat idagdag sa simula ng file upang ibukod ang kabuuan na iyon file mula sa pagsusuri sa saklaw. Bilang kahalili, maaaring gamitin ang attribute ( (mcodecov) ) upang ibukod ang isang partikular na function mula sa pagsusuri sa saklaw.

Paglalarawan ng device files Isang bagong device file tinatawag na avr chipinfo. html ay matatagpuan sa docs directory ng compiler distribution. Ito file naglilista ng lahat ng device na sinusuportahan ng compiler. Mag-click sa pangalan ng device, at magbubukas ito ng page na nagpapakita ng lahat ng pinapayagang configuration bit setting/value pairs para sa device na iyon, kasama ang examples.

abstraction ng pamamaraan Ang mga pag-optimize ng abstraction ng pamamaraan, na pumapalit sa mga karaniwang bloke ng assembly code ng mga tawag sa isang kinuhang kopya ng bloke na iyon, ay idinagdag sa compiler. Ang mga ito ay ginagampanan ng isang hiwalay na application, na awtomatikong hinihimok ng compiler kapag pumipili ng level 2, 3 ors optimizations. Binabawasan ng mga pag-optimize na ito ang laki ng code, ngunit maaari nilang bawasan ang bilis ng pagpapatupad at pag-debug ng code.
Ang abstraction ng pamamaraan ay maaaring hindi paganahin sa mas mataas na antas ng pag-optimize gamit ang opsyon -mno-pa, o maaaring paganahin sa mas mababang antas ng pag-optimize (napapailalim sa iyong lisensya) sa pamamagitan ng paggamit -mpa. Maaari itong hindi paganahin para sa isang bagay file gamit ang -mno-pa-on-file=filepangalan, o hindi pinagana para sa isang function sa pamamagitan ng paggamit -mno-pa sa function= function.
Sa loob ng iyong source code, maaaring hindi paganahin ang abstraction ng pamamaraan para sa isang function sa pamamagitan ng paggamit ng _attribute_ ( (nopa)) na may kahulugan ng function, o sa pamamagitan ng paggamit ng _nopa, na lumalawak sa attribute ( (nopa, noinline)) at sa gayon ay pinipigilan ang function inlining na maganap at mayroong abstraction ng inlined code.
I-lock ang bit na suporta sa pragma Magagamit na ngayon ang #pragma config para tukuyin ang AVR lock bits gayundin ang iba pang configuration bits. Suriin ang impormasyon ng avr chip. html file (nabanggit sa itaas) para sa mga pares ng setting/halaga na gagamitin sa pragma na ito.
Bagong suporta sa device Available ang suporta para sa mga sumusunod na bahagi: AVR28DA128, AVR64DA128, AVR32DA128, at AVR48DA128.

Bersyon 2.05

Higit pang mga piraso para sa iyong pera Ang bersyon ng macOS ng compiler at manager ng lisensya na ito ay isa nang 64-bit na application. Titiyakin nito na mai-install at tatakbo ang compiler nang walang babala sa mga kamakailang bersyon ng macOS.
Const objects sa program memory Ang compiler ay maaari na ngayong maglagay ng const-qualified na mga object sa program Flash memory, sa halip na ilagay ang mga ito sa RAM. Ang compiler ay binago upang ang const-qualified na pandaigdigang data ay naka-imbak sa program flash memory at ang data na ito ay maaaring direkta at hindi direktang ma-access gamit ang naaangkop na mga tagubilin sa memory-program. Ang bagong feature na ito ay pinagana bilang default ngunit maaaring i-disable gamit ang -mno-const-data-in-progmem na opsyon. Para sa avrxmega3 at avrtiny na mga arkitektura, ang tampok na ito ay hindi kinakailangan at palaging hindi pinagana, dahil ang memorya ng programa ay nakamapa sa espasyo ng address ng data para sa mga device na ito.
Standard nang libre Ang mga hindi lisensyadong (Libre) na bersyon ng compiler na ito ay nagbibigay-daan na ngayon sa mga pag-optimize hanggang sa at kabilang ang antas 2. Ito ay magpapahintulot sa isang katulad, bagama't hindi magkapareho, na output sa kung ano ang dating posible gamit ang isang Standard na lisensya.
Maligayang pagdating AVRASM2 Ang AVRASM2 assembler para sa 8-bit na device ay kasama na ngayon sa XC8 compiler installer. Ang assembler na ito ay hindi ginagamit ng XC8 compiler, ngunit magagamit para sa mga proyekto batay sa sulat-kamay na pinagmulan ng pagpupulong.
Bagong suporta sa device Available ang suporta para sa mga sumusunod na bahagi: ATMEGA1608, ATMEGA1609, ATMEGA808, at ATMEGA809.

Bersyon 2.00

Top-level na Driver Ang isang bagong driver, na tinatawag na xc8-cc, ay nakaupo na ngayon sa itaas ng dating avr-gcc driver at ang xc8 driver, at maaari nitong tawagan ang naaangkop na compiler batay sa pagpili ng target na device. Ang driver na ito ay tumatanggap ng GCC-style na mga opsyon, na maaaring isinalin para sa o ipinasa sa compiler na isinasagawa. Ang driver na ito ay nagbibigay-daan sa isang katulad na hanay ng mga opsyon na may katulad na mga semantika na magamit sa anumang target ng AVR o PIC at sa gayon ay ang inirerekomendang paraan upang ma-invoke ang compiler. Kung kinakailangan, ang lumang avr-gcc driver ay maaaring direktang tawagan gamit ang mga lumang istilong opsyon na tinanggap nito sa mga naunang bersyon ng compiler.

Karaniwang C Interface Ang compiler na ito ay maaari na ngayong umayon sa MPLAB Common C Interface, na nagpapahintulot sa source code na mas madaling ma-port sa lahat ng MPLAB XC compiler. Hinihiling ng opsyong -mext=cci ang feature na ito, na nagpapagana ng kahaliling syntax para sa maraming extension ng wika.

Bagong librarian driver Ang isang bagong librarian driver ay nakaposisyon sa itaas ng nakaraang PIC librarian at ang AVR avr-ar librarian. Ang driver na ito ay tumatanggap ng GCC-archiver-style na mga opsyon, na maaaring isinalin para sa o ipinapasa sa librarian na pinapagana. Ang bagong driver ay nagbibigay-daan sa isang katulad na hanay ng mga opsyon na may katulad na mga semantika na magamit upang lumikha o manipulahin ang anumang PIC o AVR library file at sa gayon ay ang inirerekomendang paraan upang tawagan ang librarian. Kung kinakailangan para sa mga legacy na proyekto, maaaring direktang tawagan ang dating librarian gamit ang mga lumang-style na opsyon na tinanggap nito sa mga naunang bersyon ng compiler.

Mga Isyu sa Migrasyon

Ang mga sumusunod ay mga tampok na ngayon ay hinahawakan nang iba ng compiler. Ang mga pagbabagong ito ay maaaring mangailangan ng pagbabago sa iyong source code kung magpo-port ng code sa bersyon ng compiler na ito. Ang numero ng bersyon sa mga subheading ay nagpapahiwatig ng unang bersyon ng compiler na sumusuporta sa mga pagbabagong kasunod.

Bersyon 2.40

wala.

Bersyon 2.39 (Functional Safety Release)

wala.

Bersyon 2.36

wala.

Bersyon 2.35

Paghawak ng mga string-to na base (XCS-2420) Upang matiyak ang pagkakapare-pareho sa iba pang mga XC compiler, ang XC8 string-to function, tulad ng strtol () atbp., ay hindi na magtatangka na mag-convert ng input string kung ang base na tinukoy ay mas malaki sa 36 at sa halip ay itatakda ang errno sa EINVAL. Ang pamantayang C ay hindi tumutukoy sa pag-uugali ng mga pag-andar kapag nalampasan ang batayang halaga na ito.

Mga hindi naaangkop na pag-optimize ng bilis Pinagana ang mga pag-optimize ng abstraction ng pamamaraan kapag pumipili ng mga level 3 na optimization (-03). Binabawasan ng mga pag-optimize na ito ang laki ng code sa gastos ng bilis ng code, kaya hindi dapat ginawa. Ang mga proyektong gumagamit ng antas ng pag-optimize na ito ay maaaring makakita ng mga pagkakaiba sa laki ng code at bilis ng pagpapatupad kapag binuo gamit ang release na ito.

Pag-andar ng library Ang code para sa marami sa mga karaniwang function ng C library ay nagmumula na ngayon sa Microchip's Unified Standard Library, na maaaring magpakita ng iba't ibang pag-uugali sa ilang mga pangyayari kumpara sa ibinigay ng dating avr-libc library. Para kay exampNgayon, hindi na kailangang mag-link sa lprintf_flt library (-print _flt na opsyon) para i-on ang naka-format na suporta sa IO para sa mga specifier ng float-format. Ang matalinong mga feature ng IO ng Microchip Unified Standard Library ay ginagawang redundant ang opsyong ito. Bilang karagdagan, ang paggamit ng _p suffixed routines para sa string at memory function (hal. strcpy_P () etc .. ) na gumagana sa const string sa flash ay hindi na kailangan. Ang karaniwang C routines (hal. strcpy ()) ay gagana nang tama sa naturang data kapag ang const-data-in-program-memory na tampok ay pinagana.

Bersyon 2.32

wala.

Bersyon 2.31

wala.

Bersyon 2.30

wala.

Bersyon 2.29 (Functional Safety Release)

wala.

Bersyon 2.20

Binago ang layout ng DFP Ipinapalagay na ngayon ng compiler ang ibang layout na ginagamit ng mga DFP (Device Family Pack). Nangangahulugan ito na maaaring hindi gumana ang isang mas lumang DFP sa release na ito, at hindi magagamit ng mga mas lumang compiler ang mga pinakabagong DFP.

Bersyon 2.19 (Functional Safety Release)

wala.

Bersyon 2.10

wala

Bersyon 2.05

Const object sa memorya ng programa Tandaan na ang bilang default, const-qualfiied na mga bagay ay ilalagay at ia-access sa memorya ng programa (tulad ng inilarawan dito) . Maaapektuhan nito ang laki at bilis ng pagpapatupad ng iyong proyekto, ngunit dapat bawasan ang paggamit ng RAM. Ang tampok na ito ay maaaring hindi paganahin, kung kinakailangan, gamit ang -mnoconst- da ta-in-progmem na opsyon.

Bersyon 2.00

Mga piyus ng configuration Ang mga piyus ng configuration ng device ay maaari na ngayong i-program gamit ang isang config pragma na sinusundan ng mga pares ng setting-value upang tukuyin ang estado ng fuse, hal.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Mga ganap na bagay at pag-andar Ang mga bagay at function ay maaari na ngayong ilagay sa tiyak na address sa memorya gamit ang CCI _at (address) specifier, para sa example: #isama int foobar sa(Ox800100); char at(Ox250) get ID(int offset) { … } Ang argument sa specifier na ito ay dapat na pare-pareho na kumakatawan sa address kung saan ilalagay ang unang byte o pagtuturo. Ang mga address ng RAM ay ipinahiwatig sa pamamagitan ng paggamit ng offset na 0x800000. Paganahin ang CCI na gamitin ang feature na ito.
Bagong interrupt function syntax Tinatanggap na ngayon ng compiler ang CCI interrupt (num) specifier upang ipahiwatig na ang mga function ng C ay mga interrupt handler. Ang specifier ay kumukuha ng interrupt na numero, halimbawaample: #isama void interrupt(SPI STC_ vect _num) spi Isr(void) { … }

Mga Naayos na Isyu

Ang mga sumusunod ay mga pagwawasto na ginawa sa compiler. Maaaring ayusin ng mga ito ang mga bug sa nabuong code o baguhin ang pagpapatakbo ng compiler sa nilayon o tinukoy ng gabay ng user. Ang numero ng bersyon sa mga subheading ay nagpapahiwatig ng unang bersyon ng compiler na naglalaman ng mga pag-aayos para sa mga kasunod na isyu. Ang (mga) naka-bracket na label sa pamagat ay ang pagkakakilanlan ng isyu na iyon sa database ng pagsubaybay. Maaaring maging kapaki-pakinabang ang mga ito kung kailangan mong makipag-ugnayan sa suporta.

Tandaan na ang ilang isyu na partikular sa device ay itinatama sa Device Family Pack (DFP) na nauugnay sa device. Tingnan ang MPLAB Pack Manager para sa impormasyon sa mga pagbabagong ginawa sa mga DFP at upang i-download ang pinakabagong mga pack.

Bersyon 2.40

Masyadong nakakarelaks (XCS-2876) Kapag ginagamit ang pagpipiliang -mrelax, hindi naglalaan ang compiler ng ilang mga seksyon nang magkasama, na nagreresulta sa hindi gaanong pinakamainam na laki ng code. Maaaring naganap ito gamit ang code na gumamit ng mga bagong library ng MUSL o may mahinang simbolo.
Ang tampok na pagmamapa ay hindi pinagana gaya ng nakasaad sa babala (XCS-2875) Ang tampok na cost-data-in-config na mappedprogmem ay umaasa sa tampok na cost-data-in-proem na pinagana. Kung ang tampok na cost-data-ipconfig-mapped-proem ay tahasang pinagana gamit ang opsyon at ang cost-data-inprogmem na feature ay hindi pinagana, nabigo ang hakbang sa pag-link, sa kabila ng mensahe ng babala na nagsasaad na ang cons data- in-config-mapped- Ang tampok na proem ay awtomatikong hindi pinagana, na hindi ganap na tama. Ang tampok na const-data-in-config-mapped-proem ay ganap na hindi pinagana sa sitwasyong ito.
Mga pagbabago sa DFP upang ma-access nang tama ang NVMCTRL (XCS-2848) Ang runtime startup code na ginamit ng mga AVR64EA device ay hindi isinasaalang-alang na ang NVMCTRL register ay nasa ilalim ng Configuration Change Protection (CCP) at hindi nagawang itakda ang IO SFR sa page na ginamit ng const-data-in configmapped-proem compiler tampok. Ang mga pagbabagong ginawa sa AVR-Ex_DFP na bersyon 2.2.55 ay magbibigay-daan sa runtime startup code na magsulat nang tama sa register na ito.
Mga pagbabago sa DFP upang maiwasan ang flash mapping (XCS-2847) Ang isang solusyon para sa isang problema sa tampok na flash mapping device na iniulat sa AVR128DA28/32/48/64 Silicon Errata (DS80000882) ay ipinatupad. Ang tampok na const-data-in-config-mapped-proem compiler ay hindi ilalapat bilang default para sa mga apektadong device, at ang pagbabagong ito ay lalabas sa AVR-Ex_DFP na bersyon 2.2.160.
Error sa pagbuo gamit ang sinhf o coshf (XCS-2834) Ang mga pagtatangkang gamitin ang sinhf () o coshf () na mga function ng library ay nagresulta sa isang error sa link, na naglalarawan ng hindi natukoy na sanggunian. Ang nawawalang function na isinangguni ay isinama na ngayon sa pamamahagi ng compiler.
Gumawa ng mga error gamit ang nopa (XCS-2833) Gamit ang katangian ng nopa na may function na tinukoy ang pangalan ng assembler nito bilang () nag-trigger ng mga mensahe ng error mula sa assembler. Ang kumbinasyong ito ay hindi posible.
Variadic function failure na may mga pointer argument (XCS-2755, XCS-2731) Inaasahan ng mga function na may variable na bilang ng mga argumento ang 24-bit (_memo type) na mga pointer na maipapasa sa listahan ng variable na argumento kapag pinagana ang feature na cost-data-in-proem. Ang mga argumento na mga pointer sa memorya ng data ay ipinapasa bilang 16-bit na mga bagay, na nagiging sanhi ng pagkabigo ng code kapag binasa ang mga ito. Kapag ang cons data- in-proem feature ay pinagana, lahat ng 16-bit pointer argument ay na-convert na ngayon sa 24-bit pointer. Nabigo ang mga function ng library ng strtoxxx (XCS-2620) Kapag pinagana ang tampok na const-data-in-proem, hindi na-update nang maayos ang enter parameter sa mga function ng strtoxxx library para sa mga argumento ng source string na wala sa memorya ng program.
Mga alerto para sa mga di-wastong cast (XCS-2612) Maglalabas na ngayon ng error ang compiler kung naka-enable ang feature na cost-in-proem at ang address ng literal na string ay tahasang na-cast sa espasyo ng address ng data (ibinaba ang const qualifier), para sa example, (uint8 t *) “Hello World!”. Ang isang babala ay isyu kung ang address ay maaaring hindi wasto kapag ang isang const data pointer ay tahasang na-cast sa data address space.
Paglalagay ng hindi nasimulang const object (XCS-2408) Hindi inilagay ang mga hindi inisyal na const at const v olatile na bagay sa memorya ng program sa mga device na nagmamapa ng lahat o bahagi ng memorya ng kanilang program sa espasyo ng address ng data. Para sa mga device na ito, ang mga naturang bagay ay inilalagay na ngayon sa memorya ng programa, na ginagawang pare-pareho ang kanilang operasyon sa iba pang mga device .

Bersyon 2.39 (Functional Safety Release)

wala.

Bersyon 2.36

Error kapag naantala (XCS-2774) Ang mga maliliit na pagbabago sa default na Free mode optimizations ay humadlang sa patuloy na pagtiklop ng mga expression ng operand sa pagkaantala na built-in na mga function, na nagreresulta sa mga ito ay itinuturing bilang mga hindi contact at nagti-trigger ng error: _buil tin avr delay_ cycles expects ac ompile pare-pareho ang integer ng oras.

Bersyon 2.35

Magkadikit na alokasyon gamit ang _at (XCS-2653) Ang magkadikit na paglalaan ng maraming bagay na mga lugar sa isang seksyon na may parehong pangalan at paggamit sa () ay hindi gumana nang tama. Para kay example: constchararrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[ ] at tri butte ((section(“.my s eke”))) = {Oxen, Ox FE }; dapat naglagay agad ng arr2 after aril.
Pagtukoy ng mga address ng pagsisimula ng seksyon (XCS-2650) Ang -Wal, –section-start na opsyon ay tahimik na nabigo na ilagay ang mga seksyon sa hinirang na panimulang address. Naayos na ang isyung ito para sa anumang mga custom na pinangalanang seksyon; gayunpaman, hindi ito gagana para sa anumang karaniwang mga seksyon, tulad ng . text o . bss, na dapat ilagay gamit ang isang -Wl, -T na opsyon.
Nag-crash ang linker kapag nagrerelaks (XCS-2647) Kapag pinagana ang -relax optimization at may mga seksyon ng code o data na hindi kasya sa available na memory, nag-crash ang linker. Ngayon, sa ganoong sitwasyon, ang mga mensahe ng error ang ibinibigay sa halip.
Masamang EEPROM access (XCS-2629) Ang leproma _read_ block routine ay hindi gumana nang tama sa Mega device nang ang -monist-data-in-proem na opsyon ay pinagana (na ang default na estado), na nagreresulta sa EEPROM memory na hindi nabasa nang tama.
Di-wastong paglalaan ng memorya (XCS-2593, XCS-2651) Kapag ang -Text o -Tata linker na opsyon (para sa halample na dumaan gamit ang isang -Wl driver na opsyon) ay tinukoy, ang kaukulang text/data na pinagmulan ng rehiyon ay na-update; gayunpaman, ang end address ay hindi naayos nang naaayon, na maaaring humantong sa rehiyon na lumampas sa hanay ng memorya ng target na device.
Di-wastong ATtiny interrupt code (XCS-2465) Kapag ang pagbuo para sa mga Tatin device at ang mga pag-optimize ay hindi pinagana (-00), ang mga interrupt na function ay maaaring nag-trigger ng operand sa labas ng mga mensahe ng assembler.
Mga opsyon na hindi ipinapasa (XCS-2452) Kapag ginagamit ang opsyong -Wl na may maramihang, pinaghihiwalay ng kuwit na mga opsyon sa linker, hindi lahat ng opsyon sa linker ay ipinapasa sa linker.
Error sa hindi direktang pagbabasa ng memorya ng program (XCS-2450) Sa ilang mga pagkakataon, ang compiler ay gumawa ng panloob na error (hindi nakikilalang insn) kapag nagbabasa ng dalawang byte na halaga mula sa isang pointer patungo sa memorya ng programa

Bersyon 2.32

Nabigo ang pangalawang pag-access ng library (XCS-2381) Invoking ang Windows na bersyon ng xc8-ar. exe library archiver sa pangalawang pagkakataon upang ma-access ang isang umiiral na archive ng library ay maaaring nabigo nang hindi mapalitan ang pangalan ng mensahe ng error.

Bersyon 2.31

Hindi maipaliwanag na mga pagkabigo ng compiler (XCS-2367) Kapag tumatakbo sa mga platform ng Windows na may pansamantalang direktoryo ng system na nakatakda sa isang landas na may kasamang tuldok'.' character, maaaring nabigo ang compiler na maisagawa.

Bersyon 2.30

Nawala ang mga pandaigdigang label pagkatapos ng outline (XCS-2299) Ang sulat-kamay na assembly code na naglalagay ng mga pandaigdigang label sa loob ng mga pagkakasunud-sunod ng pagpupulong na na-factor out ng pamamaraang abstraction ay maaaring hindi na-reposition nang tama.
Isang nakakarelaks na pag-crash (XCS-2287) Ang paggamit ng opsyong -merlad ay maaaring naging sanhi ng pag-crash ng linker kapag sinubukan ng mga tail jump relaxation optimization na alisin ang ret instruction na wala sa dulo ng isang seksyon.
Nag-crash kapag nag-optimize ng mga label bilang mga value (XCS-2282) Ang code na gumagamit ng "Labels as values" na extension ng wika ng GNU C ay maaaring naging sanhi ng pag-crash ng procedural abstraction optimizations, na may Outlined VMA range span fixup error.
Hindi ganoon const (XCS-2271) Ang mga prototype para sa mga pagsisimula () at iba pang mga function mula sa hindi na tukuyin ang hindi karaniwang cost qualifier sa mga ibinalik na string pointer kapag ang -monist-data inprogmem feature ay hindi pinagana. Tandaan na sa mga avrxmega3 at avertin device, permanenteng pinagana ang feature na ito.
Mga nawawalang initializer (XCS-2269) Kapag mahigit sa isang variable sa isang unit ng pagsasalin ang inilagay sa isang seksyon (gamit ang seksyon o katangian ((seksyon))), at ang unang naturang variable ay zero na nasimulan o walang initializer, ang mga initializer para sa iba pang mga variable sa parehong unit ng pagsasalin na inilagay sa parehong seksyon ay nawala.

Bersyon 2.29 (Functional Safety Release)

wala.

Bersyon 2.20

Error sa mahabang utos (XCS-1983) Kapag gumagamit ng target ng AVR, maaaring huminto ang compiler gamit ang a file hindi nahanap na error, kung ang command line ay napakalaki at naglalaman ng mga espesyal na character tulad ng mga quote, backslashes, atbp.
Hindi nakatalagang seksyon ng rodata (XCS-1920) Nabigo ang linker ng AVR na magtalaga ng memory para sa mga custom na seksyon ng rodata kapag gumagawa para sa avrxmega3 at avrtiny na mga arkitektura, na posibleng magdulot ng mga error sa overlap ng memory

Bersyon 2.19 (Functional Safety Release)

wala.

Bersyon 2.10

Mga pagkabigo sa paglipat (XCS-1891) Ang pinakaangkop na allocator ay nag-iiwan ng 'mga butas' ng memorya sa pagitan ng mga seksyon pagkatapos ng pagpapahinga ng linker. Bukod sa fragmenting memory, pinataas nito ang posibilidad na magkaroon ng linker relocation failures na may kaugnayan sa pc-relative jumps o mga tawag na wala sa saklaw.
Mga tagubilin na hindi binago ng pagpapahinga (XCS-1889) Hindi naganap ang pagpapahinga ng linker para sa mga tagubilin sa pagtalon o tawag na ang mga target ay maaabot kung nakakarelaks.
Nawawala functionality (XCSE-388) Ilang mga kahulugan mula sa , tulad ng clock_ div_t at clock_prescale_set (), ay hindi tinukoy para sa mga device, kabilang ang ATmega324PB, ATmega328PB, ATtiny441, at ATtiny841.
Mga nawawalang macro Ang preprocessor macros_ xcs _MODE_, _xcs VERSION, _xc, at xcs ay hindi awtomatikong tinukoy ng compiler. Available na ang mga ito.

Bersyon 2.05

Error sa panloob na compiler (XCS-1822) Kapag nagtatayo sa ilalim ng Windows, maaaring magkaroon ng internal compiler error kapag nag-optimize ng code.
Hindi nakita ang overflow ng RAM (XCS-1800, XCS-1796) Ang mga program na lumampas sa available na RAM ay hindi natukoy ng compiler sa ilang sitwasyon, na nagreresulta sa isang runtime code failure.
Inalis ang flash memory (XCS-1792) Para sa mga avrxmega3 at avrtiny device, ang mga bahagi ng flash memory ay maaaring naiwang hindi na-program ng MPLAB X IDE.
Pagkabigong isagawa ang pangunahing (XCS-1788) Sa ilang mga sitwasyon kung saan ang programa ay walang mga global na variable na tinukoy, ang runtime startup code ay hindi lumabas at ang pangunahing () function ay hindi kailanman naabot.
Maling impormasyon sa memorya (XCS-1787) Para sa mga avrxmega3 at avrtiny device, ang avr-size na program ay nag-uulat na ang read-only na data ay gumagamit ng RAM sa halip na memorya ng programa.
Maling nabasa ng memory ng program (XCS-1783) Ang mga proyektong pinagsama-sama para sa mga device na may memory ng program na nakamapa sa espasyo ng address ng data at na tumutukoy sa mga bagay gamit ang PROGMEM macro/attribute ay maaaring nabasa ang mga bagay na ito mula sa maling address.
Panloob na error na may mga katangian (XCS-1773) May naganap na panloob na error kung tinukoy mo ang mga pointer object gamit ang
_at () o attribute() na mga token sa pagitan ng pangalan ng pointer at dereference na uri, halimbawaample, char *
_at ( 0x80015 0) cp; Ang isang babala ay ibinibigay na ngayon kung ang naturang code ay nakatagpo.
Pagkabigong isagawa ang pangunahing (XCS-1780, XCS-1767, XCS-1754) Ang paggamit ng mga variable ng EEPROM o pagtukoy ng mga piyus gamit ang config pragma ay maaaring nagdulot ng maling pagsisimula ng data at/o pag-lock ng pagpapatupad ng programa sa runtime startup code, bago maabot ang main () .
Error sa fuse sa maliliit na device (XCS-1778, XCS-1742) Ang attiny4/5/9/10/20/40 device ay may maling haba ng fuse na tinukoy sa kanilang header files na humahantong sa mga error sa linker kapag sinusubukang bumuo ng code na tumutukoy sa mga piyus.
Segmentation fault (XCS-1777) Ang isang paulit-ulit na pagkakamali sa segmentation ay naitama.
Assembler crash (XCS-1761) Maaaring nag-crash ang avr-as assembler noong ang compiler ay pinatakbo sa ilalim ng Ubuntu 18.
Hindi na-clear ang mga bagay (XCS-1752) Maaaring hindi na-clear ng runtime startup code ang mga bagay na hindi nasimulan na static na tagal ng imbakan.
Binalewala ang magkasalungat na detalye ng device (XCS-1749) Hindi gumagawa ng error ang compiler kapag ginamit ang maraming opsyon sa pagtutukoy ng device at nagpahiwatig ng iba't ibang device.
Pagkasira ng memorya ayon sa heap (XCS-1748) Ang simbolo ng pagsisimula ng heap_ ay hindi naitakda nang tama, na nagreresulta sa posibilidad na masira ng heap ang mga ordinaryong variable.
Error sa paglipat ng linker (XCS-1739) Maaaring may lumabas na error sa paglilipat ng linker kapag naglalaman ang code ng rjmp o rcall na may target na eksaktong 4k bytes ang layo.

Bersyon 2.00

wala.

Mga Kilalang Isyu

Ang mga sumusunod ay mga limitasyon sa pagpapatakbo ng compiler. Maaaring ito ay mga pangkalahatang paghihigpit sa coding, o
mga paglihis mula sa impormasyong nakapaloob sa manwal ng gumagamit. Ang (mga) naka-bracket na label sa pamagat ay ang pagkakakilanlan ng isyu na iyon sa database ng pagsubaybay. Ito ay maaaring maging kapaki-pakinabang kung kailangan mong makipag-ugnayan sa suporta. Ang mga item na walang mga label ay mga limitasyon na naglalarawan sa mode operandi at malamang na mananatiling may bisa nang permanente.

Pagsasama ng MPLAB X IDE

Pagsasama ng MPLAB IDE Kung ang Compiler ay gagamitin mula sa MPLAB IDE, dapat mong i-install ang MPLAB IDE bago i-install ang Compiler.

Pagbuo ng Code

Nabigo ang paglalaan ng memorya ng PA (XCS-2881) Kapag gumagamit ng mga procedural abstraction optimizer, maaaring mag-ulat ang linker ng mga error sa paglalaan ng memory kapag ang laki ng code ay malapit sa dami ng available na memory ng program sa device, kahit na ang program ay dapat na magkasya sa available na espasyo.
Hindi gaanong matalinong Smart-IO (XCS-2872) Ang tampok na smart-io ng compiler ay bubuo ng valid ngunit sub optimal na code para sa sprint function kung ang tampok na coast-data-in-proem ay hindi pinagana o kung ang lahat ng flash nito ay nakamapang sa memorya ng data.
Kahit na hindi gaanong matalinong Smart-IO (XCS-2869) Ang tampok na smart-io ng compiler ay bubuo ng wasto ngunit suboptimal na code kapag ang -floe at -fno-buil na mga opsyon sa lata ay parehong ginamit.
Suboptimal read-only na placement ng data (XCS-2849) Kasalukuyang hindi alam ng linker ang mga seksyon ng memorya ng APPCODE at APPDATA, o ang mga dibisyong [No-]Read-While-Write sa memory map. Bilang resulta, may maliit na pagkakataon na ang linker ay maaaring maglaan ng read-only na data sa isang hindi angkop na lugar ng memorya. Ang posibilidad ng maling lokasyon ng data ay tumataas kung ang tampok na coast-data-in-pragma ay pinagana, lalo na kung ang tampok na coast-data-in-config-mapped-proem ay pinagana rin. Maaaring i-disable ang mga feature na ito kung kinakailangan.
Bagay file processing order (XCS-2863) Ang pagkakasunud-sunod kung aling mga bagay files ay ipoproseso ng linker ay maaaring mag-iba batay sa paggamit ng mga pamamaraan ng abstraction optimizations (-mpa opsyon). Maaapektuhan lamang nito ang code na tumutukoy sa mga mahihinang function sa maraming module.
Error sa linker na may absolute (XCS-2777) Kapag ang isang bagay ay ginawang ganap sa isang address sa simula ng RAM at ang mga hindi nasimulang bagay ay natukoy din, maaaring ma-trigger ang isang linker error.
Mga maiikling wake-up ID (XCS-2775) Para sa mga ATA5700/2 device, ang mga rehistro ng PHID0/1 ay tinukoy lamang bilang 16 bits ang lapad, sa halip na 32 bits ang lapad.
Nag-crash ang linker kapag tumatawag sa simbolo (XCS-2758) Ang linker ay maaaring mag-crash kung ang -merlad driver na opsyon ay ginagamit kapag ang source code ay tumawag ng isang simbolo na tinukoy gamit ang -Wl, –defsym linker na opsyon.
Maling pagsisimula (XCS-2679) Mayroong pagkakaiba sa pagitan ng kung saan ang mga paunang halaga para sa ilang global/static na byte-sized na mga bagay ay inilalagay sa memorya ng data at kung saan maa-access ang mga variable sa runtime.
sinimulan nang hindi tama ang itinakda na walang laman (XCS-2652) Sa mga pagkakataon kung saan ang string ng paksa para sa conversion sa pamamagitan ng nakasaad () ay naglalaman ng kung ano ang lumilitaw na isang floating-point na numero sa exponential format at mayroong hindi inaasahang character pagkatapos ng isang e character, pagkatapos ay ang walang laman na address, kung ibinigay, ay ituturo sa character pagkatapos ang e at hindi ang e mismo. Para kay example: nakasaad("hooey", walang laman); ay magreresulta sa walang laman na pagturo sa x character.
Hindi tuwirang mga tawag sa pag-andar (XCS-2628) Sa ilang pagkakataon, maaaring mabigo ang mga function call na ginawa sa pamamagitan ng isang function pointer na nakaimbak bilang bahagi ng isang istraktura.
Ang strtof ay nagbabalik ng zero para sa mga hexadecimal float (XCS-2626) Ang library functions strtof () et al at scanf () et al, ay palaging magko-convert ng hexadecimal floating-point number na hindi tumutukoy ng exponent sa
sero. Para kay example: stator(“Owl”, &empty); ibabalik ang halaga na 0, hindi 1.
Hindi tumpak na stack advisor messaging (XCS-2542, XCS-2541) Sa ilang pagkakataon, ang babala ng stack advisor tungkol sa recursion o indeterminate stack na ginamit (maaaring sa pamamagitan ng paggamit ng alloca()) ay hindi inilalabas.
Pagkabigo sa duplicate na interrupt code (XCS-2421) Kung saan higit sa isang interrupt function ang may parehong katawan, ang compiler ay maaaring magkaroon ng output para sa isang interrupt function na tumawag sa isa. Magreresulta ito sa lahat ng call-clobbered na rehistro na mase-save nang hindi kinakailangan, at ang mga interrupt ay paganahin bago pa man tumakbo ang epilogue ng kasalukuyang interrupt handler, na maaaring humantong sa code failure.
Const object na wala sa memorya ng program (XCS-2408) Para sa mga proyekto ng avrxmega3 at avertins, ang mga hindi natukoy na const object ay inilalagay sa memorya ng data, kahit na ang isang babala ay nagmumungkahi na ang mga ito ay inilagay sa memorya ng programa. Hindi ito makakaapekto sa mga device na walang memorya ng program na nakamapa sa espasyo ng memorya ng data, at hindi rin ito makakaapekto sa anumang bagay na nasimulan.
Masamang output na may di-wastong DFP path (XCS-2376) Kung ang compiler ay na-invoke na may di-wastong DFP path at isang 'spec' file umiiral para sa napiling device, hindi iniuulat ng compiler ang nawawalang family pack ng device at sa halip ay pinipili ang 'spec' file, na maaaring humantong sa isang di-wastong output. Ang 'spec' files ay maaaring hindi napapanahon sa mga ipinamahagi na DFP at nilayon para sa paggamit sa panloob na pagsubok ng compiler lamang.
Hindi natukoy ang overlap ng memory (XCS-1966) Hindi nakikita ng compiler ang memory overlap ng mga bagay na ginawang ganap sa isang address (sa pamamagitan ng sa ()) at iba pang mga bagay gamit ang section () specifier at na naka-link sa parehong address.
Pagkabigo sa mga function ng library at _meme (XCS-1763) Ang tinatawag na limbic float function na may argumento sa _memo address space ay maaaring mabigo. Tandaan na ang mga gawain sa library ay tinatawag mula sa ilang C operator, kaya, para sa halample, ang sumusunod na code ay apektado: return regFloatVar > memxFloatVar;
Limbic na pagpapatupad ng limbic (AVRTC-731) Para sa mga produkto ng ATTiny4/5/9/10/20/40, ang karaniwang pagpapatupad ng C / Math library sa limbic ay napakalimitado o wala.
Mga limitasyon sa memorya ng programa (AVRTC-732) Ang mga imahe ng memorya ng programa na higit sa 128 kb ay sinusuportahan ng toolchain; gayunpaman, may mga kilalang pagkakataon ng pag-abort ng linker nang walang pagpapahinga at walang kapaki-pakinabang na mensahe ng error kaysa sa pagbuo ng mga kinakailangang function stub kapag ginamit ang opsyong -relax.
Mga limitasyon sa espasyo ng pangalan (AVRTC-733) Ang mga pinangalanang puwang ng address ay sinusuportahan ng toolchain, napapailalim sa mga limitasyon na binanggit sa seksyon ng gabay ng gumagamit Mga Espesyal na Uri ng Kwalipikasyon.
Mga time zone Ang ipinapalagay ng mga function ng library ang GMT at hindi sinusuportahan ang mga lokal na time zone, kaya ang lokal na oras () ay babalik sa parehong oras tulad ng gummite (), para sa example.

SUPORTA NG CUSTOMER

file:///Applications/microehip/xc8/v 2 .40/docs/Basahin mo ako_X C 8_ para sa A VR. htm

Mga Dokumento / Mga Mapagkukunan

MICROCHIP MPLAB XC8 C Compiler Software [pdf] Manwal ng May-ari
MPLAB XC8 C, MPLAB XC8 C Compiler Software, Compiler Software, Software

Mga sanggunian

Mag-iwan ng komento

Ang iyong email address ay hindi maipa-publish. Ang mga kinakailangang field ay minarkahan *