MICROCHIP MPLAB XC8 C Compiler Software 

MICROCHIP MPLAB XC8 C Compiler Software

Dokumén ieu ngandung inpormasi penting anu aya hubunganana sareng kompiler MPLAB XC8 C nalika nargétkeun alat AVR MICROCHIP.
Punten baca sateuacan ngajalankeun ieu software. Ningali catetan rilis MPLAB XC8 C kompiler pikeun DOKUMEN PIC upami anjeun nganggo kompiler pikeun alat pic 8-bit.

Leuwihview

Bubuka

Pelepasan kompiler Microchip MPLAB® XC8 C ieu ngandung sababaraha fitur anyar, perbaikan bug, sareng dukungan alat énggal.

Tanggal ngawangun

Tanggal ngawangun resmi versi kompiler ieu nyaéta 3 Juli 2022.

Vérsi saméméhna

Versi kompiler MPLAB XC8 C saméméhna nyaéta 2.39, kompiler kaamanan fungsional, diwangun dina 27 Januari 2022. Kompiler standar saméméhna nyaéta versi 2.36, diwangun dina 27 Januari 2022.

Manual Kasalametan Fungsional

Manual Kasalametan Fungsional pikeun kompiler MPLAB XC sayogi dina pakét dokuméntasi nalika anjeun mésér lisénsi kaamanan fungsional.

Lisensi komponén jeung Vérsi

Kompiler MPLAB® XC8 C pikeun alat AVR MCUs ditulis sareng disebarkeun dina GNU General Public License (GPL) anu hartosna kode sumberna disebarkeun sacara bébas sareng sayogi ka umum. Kodeu sumber pikeun alat dina GNU GPL tiasa diunduh sacara misah ti Microchip websitus. Anjeun tiasa maca GNU GPL dina file ngaranna ayana subdirectory tina diréktori install Anjeun. Diskusi umum ngeunaan prinsip anu aya dina GPL tiasa dipendakan di dieu. Kode rojongan disadiakeun pikeun lulugu files, skrip linker, sareng perpustakaan runtime mangrupikeun kode proprietary sareng henteu katutupan dina GPL.

Kompiler ieu mangrupikeun palaksanaan versi GCC 5.4.0, versi binutils 2.26, sareng nganggo versi avr-libc 2.0.0.

Sarat Sistim

The MPLAB XC8 C compiler jeung software lisénsi eta utilizes sadia pikeun rupa-rupa sistem operasi, kaasup versi 64-bit tina handap: édisi profésional tina Microsoft Windows 10; Ubuntu 18.04; sareng macOS 10.15.5. Binari pikeun Windows parantos ditandatanganan kode. Binari pikeun mac OShave geus ditandatanganan kode jeung notarized.

Upami anjeun ngajalankeun pangladén lisénsi jaringan, ngan komputer sareng sistem operasi anu dirojong ku panyusun anu tiasa dianggo pikeun nga-host pangladén lisénsi. Dina versi xclm 2.0, server lisénsi jaringan tiasa dipasang dina platform Microsoft Windows Server, tapi server lisénsi henteu kedah dijalankeun dina versi server tina sistem operasi.

Paranti didukung

Kompiler ieu ngadukung sadaya alat AVR MCU 8-bit anu dipikanyaho nalika dileupaskeun. Tingali (dina diréktori doc compiler) pikeun daptar sadaya alat anu dirojong. Ieu files ogé daptar setélan bit konfigurasi pikeun tiap alat.

Édisi sareng Ngaronjatkeun Lisensi

Kompiler MPLAB XC8 tiasa diaktipkeun salaku produk anu dilisensikeun (PRO) atanapi henteu dilisensikeun (Gratis). Anjeun kedah mésér konci aktivasina pikeun lisénsi kompiler anjeun. A lisénsi ngamungkinkeun pikeun tingkat luhur optimasi dibandingkeun produk Free. Compiler unlicensed bisa dioperasikeun salamina tanpa lisénsi a.

Kompiler Kasalametan Fungsional MPLAB XC8 kedah diaktipkeun ku lisénsi kaamanan fungsional anu dibeli ti Microchip. Compiler moal beroperasi tanpa lisénsi ieu. Saatos diaktipkeun, anjeun tiasa milih tingkat optimasi sareng nganggo sadaya fitur kompiler. Pelepasan Kompiler Kasalametan Fungsional MPLAB XC ieu ngadukung Lisensi Server Jaringan.
Tempo Masang jeung lisénsi MPLAB XC C Compilers (DS50002059) dokumén pikeun émbaran ngeunaan jenis lisénsi jeung pamasangan compiler kalawan lisénsi a.

Instalasi jeung aktivasina

Tingali ogé bagian Isu Migrasi sareng Watesan pikeun inpormasi penting ngeunaan manajer lisénsi panganyarna anu kalebet dina kompiler ieu.
Upami nganggo MPLAB IDE, pastikeun masang MPLAB X IDE versi 5.0 atanapi engké sateuacan masang alat ieu. Kaluar IDE sateuacan masang kompiler. Jalankeun aplikasi installer kompiler .exe (Windows), .run (Linux) atawa app (macOS), misalna XC8-1.00.11403-windows.exe tur turutan pitunjuk dina layar.
Diréktori instalasi standar disarankeun. Upami anjeun nganggo Linux, anjeun kedah masang kompiler nganggo terminal sareng tina akun root. Pasang nganggo akun macOS sareng hak istimewa administrator.

Aktivasina ayeuna dilumangsungkeun misah pikeun instalasi. Tempo dokumén Lisensi Manajer pikeun MPLAB® XC C Compiler (DS52059) pikeun inpo nu leuwih lengkep.

Upami anjeun milih ngajalankeun kompiler dina lisénsi évaluasi, anjeun ayeuna bakal nampi peringatan nalika kompilasi nalika anjeun aya dina 14 dinten saatos waktos évaluasi anjeun. Peringatan anu sami dikaluarkeun upami anjeun aya dina 14 dinten saatos langganan HPA anjeun.

Server Lisensi Jaringan XC mangrupikeun pamasangan anu misah sareng henteu kalebet dina pamasangan kompiler pangguna tunggal.

Manajer Lisensi XC ayeuna ngadukung roaming lisénsi jaringan ngambang. Ditujukeun pikeun pangguna sélulér, fitur ieu ngamungkinkeun lisénsi ngambang kaluar jaringan pikeun waktos anu pondok. Nganggo fitur ieu, anjeun tiasa megatkeun sambungan tina jaringan sareng masih nganggo kompiler MPLAB XC anjeun. Tempo folder doc tina XCLM install pikeun leuwih lengkep ngeunaan fitur ieu. MPLAB X IDE ngawengku jandela Lisensi (Alat> Lisensi) pikeun visually ngatur roaming.

Ngarengsekeun Masalah Instalasi

Upami Anjeun ngalaman kasusah masang kompiler dina salah sahiji sistem operasi Windows, coba saran di handap ieu.

  • Jalankeun pamasangan salaku administrator.
  • Setel idin aplikasi pamasang ka 'Kadali pinuh'. (Klik katuhu dina file, pilih Properties, tab Security, pilih user, edit.)
  • Setel idin folder temp ka "Kadali Pinuh!

Pikeun nangtukeun lokasi folder temp, ngetik% temp% kana paréntah Run (tombol logo Windows + R). Ieu bakal muka a file dialog explorer némbongkeun diréktori éta sarta bakal ngidinan Anjeun pikeun nangtukeun jalur folder éta.

Dokuméntasi kompiler

Pituduh pangguna kompiler tiasa dibuka tina halaman HTML anu dibuka dina panyungsi anjeun nalika ngaklik tombol pitulung biru dina dasbor MPLAB X IDE, sapertos anu dituduhkeun dina layar.

Dokuméntasi kompiler
Upami anjeun ngawangun pikeun targét AVR 8-bit, Pituduh Pamaké Compiler MPLAB® XC8 C pikeun AVR® MCU ngandung inpormasi ngeunaan pilihan kompiler sareng fitur anu lumaku pikeun arsitéktur ieu.

Rojongan Palanggan

Microchip ngabagéakeun laporan bug, saran atanapi koméntar ngeunaan versi kompiler ieu. Punten langsungkeun laporan bug atanapi pamundut fitur ngalangkungan Sistem Dukungan.

Dokuméntasi Apdet

Pikeun versi on-line sareng up-to-date tina dokuméntasi MPLAB XC8, mangga buka Dokumén Téknis Online Microchip. websitus.

Dokuméntasi AVR anyar atanapi diropéa dina sékrési ieu:

  • bewara hak cipta MUSL
  • Masang sareng Ngalisensikeun Compiler MPLAB XC C (révisi M)
  • Pituduh Pamaké MPLAB XC8 pikeun Insinyur Embedded - AVR MCUs (révisi A)
  • Pituduh Pamaké MPLAB XC8 C Compiler! pikeun AVR MCU (révisi F)
  • Microchip Unified Standard Library Reference Guide (révisi B)

Microchip Unified Standard Library Reference Guide ngajelaskeun paripolah sareng panganteur kana fungsi anu ditetepkeun ku Microchip Unified Standard Library, kitu ogé panggunaan anu dimaksudkeun tina jinis perpustakaan sareng makro. Sababaraha inpormasi ieu baheulana aya dina Pituduh Pamaké Compiler MPLAB® XC8 C pikeun AVR® MCU. Inpormasi perpustakaan khusus alat masih aya dina pituduh kompiler ieu.

Upami anjeun nembé ngamimitian nganggo alat 8-bit sareng Compiler MPLAB XC8 C, Pituduh Pamaké MPLAB® XC8! pikeun Insinyur Embedded - AVR® MCUs (DS50003108) gaduh inpormasi ngeunaan nyetél proyék dina MPLAB X IDE sareng kode tulisan. pikeun proyék MPLAB XC8 C munggaran anjeun. Pituduh ieu ayeuna disebarkeun sareng kompiler.

Pituduh Pamaké Hamate parantos diasupkeun kana diréktori dokumén dina sékrési ieu. Pituduh ieu ditujukeun pikeun anu ngajalankeun Hamate salaku aplikasi anu mandiri.

Aya naon anu énggal

Di handap ieu mangrupakeun fitur AVR-target anyar nu compiler ayeuna ngarojong. Nomer vérsi dina subjudul nunjukkeun vérsi panyusun pangheulana ngadukung fitur-fitur anu aya di handap.

Vérsi 2.40

Pangrojong alat anyar Rojongan ayeuna sayogi pikeun bagian AVR ieu: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32EA, AVR64EA48EA, AVRXNUMXEAXNUMXEA.
Ningkatkeun abstraksi prosedural Alat optimasi abstraksi prosedural (PA) geus ningkat ku kituna kode nu ngandung instruksi panggero fungsi (pangelingan panggero) ) bisa outlined. Ieu ngan bakal lumangsung lamun tumpukan teu dipaké pikeun ngalirkeun argumen atawa ménta nilai balik ti fungsi. Tumpukan dipaké nalika nelepon hiji fungsi kalawan daptar argumen variabel atawa lamun nelepon hiji fungsi nu nyokot leuwih argumen ti aya registers ditunjuk pikeun tujuan ieu. Fitur ieu tiasa ditumpurkeun nganggo pilihan monk-pa-outline-calls, atanapi abstraksi prosedural tiasa ditumpurkeun sapinuhna pikeun hiji obyék. file atawa fungsina ku ngagunakeun -monk-pa-on-file sareng -mo.-pa-on-function masing-masing, atanapi nganggo atribut nipa ( nipa specifier) ​​sacara selektif sareng fungsi.

Makro cakupan kode The compiler ayeuna nangtukeun makro __CODECOV lamun pilihan mcodecov valid dieusian.

Pilihan reservasi mémori Supir xc8-cc ayeuna bakal nampi pilihan -mreserve=space@start: tungtung nalika ngawangun pikeun target AVR. Pilihan ieu nyayogikeun kisaran mémori anu ditangtukeun dina rohangan mémori data atanapi program, nyegah panyambung tina ngeusian kode atanapi objék di daérah ieu.

Smarter pinter IO Sababaraha perbaikan geus dilakukeun pikeun fungsi Smart IO, kaasup tweaks umum pikeun kode inti printf, ngubaran %n specifier konvérsi salaku hiji varian bebas, linking dina rutin pop vararg on pamundut, ngagunakeun tipe data pondok mana mungkin pikeun nanganan argumen fungsi IO. , sarta factoring kode umum dina rubak widang jeung penanganan precision. Ieu tiasa nyababkeun penghematan kode sareng data anu signifikan, ogé ningkatkeun kagancangan palaksanaan IO.

Vérsi 2.39 (Rélis Kasalametan Fungsional)

Lisensi Network Server Pelepasan Kompiler Kasalametan Fungsional MPLAB XC8 ieu ngadukung Lisensi Server Jaringan.

Vérsi 2.36

Euweuh.

Vérsi 2.35

Pangrojong alat anyar Rojongan sayogi pikeun bagian AVR ieu: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28, sareng AVR64DD32.

Ningkatkeun switching konteks Pilihan -mcall-isr-prologues anyar ngarobih kumaha fungsi interupsi ngahemat pendaptaran dina éntri sareng kumaha pendaptaran éta disimpen nalika rutin interupsi réngsé. Gawéna dina cara nu sarupa jeung pilihan -mcall-prologues, tapi ngan mangaruhan fungsi interupsi (ISRs).

Malah leuwih ningkat konteks switching Pilihan -mgas-isr-prologues anyar ngadalikeun kode gatal konteks anu dibangkitkeun pikeun rutinitas jasa ngaganggu leutik. Lamun diaktipkeun, fitur ieu bakal boga assembler nyeken ISR pikeun pamakéan register sarta ngan nyimpen registers dipaké ieu lamun diperlukeun.

Pemetaan kilat anu tiasa dikonfigurasi Sababaraha alat dina kulawarga AVR DA jeung AVR DB boga SFR (misalna FLMAP) nu nangtukeun mana 32k bagian memori program bakal dipetakeun kana mémori data. Pilihan anyar - mconst-data-in-config-mapped-proem tiasa dianggo pikeun nempatkeun linker sadaya data mumpuni kontra dina hiji bagian 32k sareng otomatis ngamimitian ngadaptar SFR anu relevan pikeun mastikeun yén data ieu dipetakeun kana rohangan mémori data. , dimana eta bakal diakses leuwih éféktif.

Microchip Ngahijikeun Perpustakaan Standar Sadaya kompiler MPLAB XC bakal ngabagi Perpustakaan Standar Microchip Unified, anu ayeuna sayogi sareng sékrési MPLAB XC8 ieu. Pituduh Pamaké Compiler MPLAB® XC8 C/atanapi AVR® MCU henteu deui kalebet dokuméntasi pikeun fungsi standar ieu. Inpo ieu ayeuna bisa kapanggih dina Microchip Unified Standard Library Reference Guide. Catet yén sababaraha pungsionalitas anu didefinisikeun ku avr-libc henteu aya deui. (Tingali Librar): '. fungsionalitas…)

IO pinter Salaku bagian tina perpustakaan ngahiji anyar, fungsi IO dina kulawarga print na scan ayeuna custom dihasilkeun dina unggal wangunan, dumasar kana kumaha fungsi ieu dipaké dina program. Ieu sacara signifikan tiasa ngirangan sumber daya anu dianggo ku program.
Pilihan bantuan IO pinter Nalika nganalisis télépon ka fungsi IO pinter (sapertos printf () atanapi scanf () ), kompiler teu tiasa salawasna nangtukeun tina format string atanapi infer tina argumen anu spésifikasi konvérsi anu diperyogikeun ku sauran. Saméméhna, kompiler bakal salawasna nyieun euweuh asumsi sarta mastikeun yén fungsi IO pinuh numbu ka gambar program final. Pilihan anyar - msmart-io-format=fmt parantos ditambihan supados kompiler tiasa diinformasikeun ku pangguna ngeunaan spésifikasi konvérsi anu dianggo ku fungsi IO pinter anu pamakeanna ambigu, nyegah rutinitas IO anu panjang teuing tina kaitkeun. (Tingali Pilihan Smart-io-format pikeun langkung rinci.)

Nempatkeun bagian custom Saméméhna, pilihan -Wl, -section-start ngan nempatkeun bagian anu ditangtukeun dina alamat anu dipénta nalika skrip linker netepkeun bagian kaluaran kalayan nami anu sami. Nalika éta henteu masalahna, bagian éta disimpen dina alamat anu dipilih ku linker sareng pilihan éta dasarna teu dipaliré. Ayeuna pilihan bakal ngahormatan pikeun sakabéh bagian custom, sanajan naskah linker teu nangtukeun bagian. Catetan, kumaha oge, pikeun bagian baku, misalna. téks,. bss atawa. data, allocator fit pangalusna masih bakal boga kontrol lengkep leuwih panempatan maranéhna, sarta pilihan moal boga pangaruh. Anggo pilihan -Wl, -Tsection=add, sakumaha dijelaskeun dina pituduh pangguna.

Vérsi 2.32

Pituduh tumpukan Sadia sareng lisénsi kompiler PRO, fitur pituduh tumpukan kompiler tiasa dianggo pikeun ngira-ngira jerona maksimal tumpukan anu dianggo ku program. Éta ngawangun sareng nganalisa grafik panggero program, nangtukeun pamakean tumpukan unggal fungsi, sareng ngahasilkeun laporan, dimana jero tumpukan anu dianggo ku program éta tiasa disimpulkeun. Fitur ieu diaktipkeun ngaliwatan pilihan garis paréntah -mchp-stack-usage. Ringkesan pamakean tumpukan dicitak saatos palaksanaan. Laporan tumpukan lengkep sayogi dina peta file, anu tiasa dipénta ku cara biasa.

Rojongan rojongan alat anyar geus sadia pikeun bagian AVR handap: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX jeung

Rojongan rojongan alat ditarikna geus euweuh sadia pikeun bagian AVR handap: AVR16DA28, AVR16DA32 jeung, AVR16DA48.

Vérsi 2.31

Euweuh.

Vérsi 2.30

Pilihan anyar pikeun nyegah initialization data Pilihan supir -mno-data-ini t anyar nyegah initialization data jeung clearing tina bagian bss. Gawéna ku cara ngeureunkeun kaluaran do_ copy_ data sareng simbol d o_ clear_ bss dina assembly files, anu dina gilirannana bakal nyegah citakan maranéhanana rutin ku linker nu.

Optimasi ditingkatkeun Sajumlah perbaikan optimasi parantos dilakukeun, kalebet ngaleungitkeun pitunjuk mulang anu kaleuleuwihan, ngaleungitkeun sababaraha luncat saatos paréntah skip-if-bit-is, sareng abstraksi prosedural anu ningkat sareng kamampuan pikeun ngulang prosés ieu.

Pilihan tambahan ayeuna sadia pikeun ngadalikeun sababaraha optimizations ieu, husus -f jangkar bagian, nu ngidinan aksés objék statik bisa dipigawé relatif ka hiji simbol; -mpai derations=n, nu ngidinan jumlah iterations abstraksi prosedural bisa dirobah tina standar 2; jeung, -mpa- nelepon ongkos- shortcall, nu ngalakukeun abstraksi prosedural leuwih agrésif, dina harepan nu linker bisa bersantai nelepon panjang. Pilihan terakhir ieu tiasa ningkatkeun ukuran kode upami asumsi dasarna henteu direalisasikeun.

Pangrojong alat anyar Rojongan sadia pikeun bagian AVR handap: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48, sareng AVR128DB.

Rojongan alat ditarik deui Rojongan teu aya deui pikeun bagian AVR ieu: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, jeung 664251.

Vérsi 2.29 (Rélis Kasalametan Fungsional)

lulugu file pikeun kompiler diwangun-in Pikeun mastikeun yén kompiler tiasa saluyu sareng spésifikasi basa sapertos MISRA, lulugu file, nu otomatis kaasup ku , geus diropéa. lulugu ieu ngandung prototipe pikeun sakabéh fungsi in-built, kayaning _buil tin _avrnop () jeung _buil tin_ avr delay_ cycles (). Sababaraha diwangun-in bisa jadi teu patuh MISRA; ieu bisa disingkahkeun ku nambahkeun define _Xe_ STRICT_ MISRA kana garis paréntah compiler. Built-in sareng deklarasi na parantos diénggalan pikeun ngagunakeun jinis lebar tetep.

Vérsi 2.20

Pangrojong alat anyar Rojongan sayogi pikeun bagian AVR ieu: ATTINY1624, ATTINY1626, sareng ATTINY1627.

Hadé alokasi pas pangalusna The best fit allocator (BFA) dina compiler geus ningkat ku kituna bagian anu disadiakeun dina urutan permitting optimasi hadé. BFA ayeuna ngadukung rohangan alamat anu namina sareng nanganan inisialisasi data anu langkung saé.

Ningkatkeun abstraksi prosedural Optimasi abstraksi prosedural ayeuna dilaksanakeun dina langkung seueur urutan kode. Kaayaan samemehna dimana optimasi ieu bisa geus ngaronjat ukuran kode geus kajawab ku nyieun kode optimasi sadar prosés ngumpulkeun sampah linker urang.

Henteuna AVR Assembler AVR Assembler henteu deui kalebet distribusi ieu.

Vérsi 2.19 (Rélis Kasalametan Fungsional)

Euweuh.

Vérsi 2.10

Cakupan Kode Pelepasan ieu kalebet fitur sinyalna kode anu ngagampangkeun analisa dugi ka mana kode sumber proyék parantos dieksekusi. Anggo pilihan -mcodecov=ram pikeun ngaktifkeunana. Saatos palaksanaan program dina hardware anjeun, inpormasi sinyalna kode bakal dikumpulkeun dina alat, sareng ieu tiasa ditransfer sareng ditampilkeun ku MPLAB X IDE via plugin sinyalna kode. Tempo dokuméntasi IDE pikeun informasi ngeunaan plugin ieu tiasa didapet. The #pragma mcodecov bisa dipaké pikeun ngaluarkeun fungsi saterusna tina analisis sinyalna. Ideally pragma kudu ditambahkeun dina awal file pikeun ngaluarkeun éta sakabéh file tina analisis cakupan. Alternatipna, atribut ( (mcodecov) ) bisa dipaké pikeun ngaluarkeun fungsi husus tina analisis sinyalna.

Katerangan alat files Alat anyar file disebut avr chipinfo. html aya dina diréktori docs tina distribusi kompiler. Ieu file daptar sadaya alat anu dirojong ku kompiler. Pencét nami alat, sareng éta bakal muka halaman anu nunjukkeun sadaya setélan bit konfigurasi anu diidinan / pasang nilai pikeun alat éta, sareng examples.

abstraksi prosedural Optimasi abstraksi prosedural, anu ngagentos blok umum kode assembly sareng nelepon ka salinan sasari tina blok éta, parantos ditambahkeun kana kompiler. Ieu dipigawé ku aplikasi misah, nu otomatis invoked ku compiler lamun milih tingkat 2, 3 optimizations ors. Optimasi ieu ngirangan ukuran kode, tapi tiasa ngirangan kagancangan palaksanaan sareng debuggability kode.
abstraksi prosedural bisa ditumpurkeun dina tingkat optimasi luhur ngagunakeun pilihan -mno-pa, atawa bisa diaktipkeun dina tingkat optimasi handap (tunduk kana lisénsi anjeun) ku ngagunakeun -mpa. Bisa ditumpurkeun pikeun hiji obyék file ngagunakeun -mno-pa-on-file=filenami, atanapi ditumpurkeun pikeun fungsi ku ngagunakeun -mno-pa on fungsi = fungsi.
Di jero kode sumber anjeun, abstraksi prosedural tiasa ditumpurkeun pikeun hiji fungsi ku cara ngagunakeun _attribute_ ( (nopa)) kalayan definisi fungsi, atanapi nganggo _nopa, anu ngalegaan kana atribut ( (nopa, noinline)) sahingga nyegah fungsi inlining tina lumangsung. sareng aya abstraksi kodeu inlined.
Pangrojong bit konci dina pragma Konfigurasi #pragma ayeuna tiasa dianggo pikeun nangtukeun bit konci AVR sareng bit konfigurasi anu sanés. Pariksa inpo chip avr. html file (disebutkeun di luhur) pikeun setelan / pasangan nilai ngagunakeun kalawan pragma ieu.
Pangrojong alat anyar Rojongan sayogi pikeun bagian-bagian ieu: AVR28DA128, AVR64DA128, AVR32DA128, sareng AVR48DA128.

Vérsi 2.05

Langkung bit pikeun buck Anjeun Versi macOS tina kompiler sareng manajer lisénsi ieu ayeuna mangrupikeun aplikasi 64-bit. Ieu bakal mastikeun yén kompiler bakal masang sareng ngajalankeun tanpa peringatan dina versi macOS panganyarna.
Const objék dina mémori program The compiler ayeuna bisa nempatkeun objék const-mumpuni dina program memori Flash, tinimbang ngabogaan ieu lokasina di RAM. Kompiler parantos dirobih supados data global anu mumpuni const disimpen dina mémori lampu kilat program sareng data ieu tiasa langsung sareng henteu langsung diaksés nganggo paréntah mémori program anu luyu. Fitur anyar ieu diaktipkeun sacara standar tapi tiasa ditumpurkeun nganggo pilihan -mno-const-data-in-progmem. Pikeun avrxmega3 na avrtiny arsitéktur, fitur ieu teu diperlukeun tur salawasna ditumpurkeun, saprak memori program dipetakeun kana spasi alamat data pikeun alat ieu.
Standar haratis Vérsi Unlicensed (Gratis) tina compiler ieu kiwari ngamungkinkeun optimizations nepi ka na kaasup tingkat 2. Ieu bakal ngidinan kaluaran sarupa, sanajan teu idéntik, jeung naon saméméhna mungkin ngagunakeun lisénsi Standar.
Wilujeng sumping AVRASM2 Assembler AVRASM2 pikeun alat 8-bit ayeuna kalebet kana pamasang kompiler XC8. assembler ieu teu dipaké ku XC8 compiler, tapi geus sadia pikeun proyék-proyék dumasar kana sumber assembly tulisan leungeun.
Pangrojong alat anyar Rojongan sayogi pikeun bagian-bagian ieu: ATMEGA1608, ATMEGA1609, ATMEGA808, sareng ATMEGA809.

Vérsi 2.00

Supir tingkat luhur A supir anyar, disebutna xc8-cc, ayeuna sits luhureun supir avr-gcc saméméhna tur supir xc8, sarta eta bisa nelepon kompiler luyu dumasar kana pilihan alat target. Supir ieu nampi pilihan gaya GCC, anu ditarjamahkeun atanapi ditarjamahkeun ka kompiler anu dieksekusi. Supir ieu ngamungkinkeun sakumpulan pilihan anu sami sareng semantik anu sami pikeun dianggo sareng udagan AVR atanapi PIC sareng ku kituna cara anu disarankeun pikeun ngalamar kompiler. Upami diperyogikeun, supir avr-gcc anu lami tiasa ditelepon langsung nganggo pilihan gaya lami anu ditampi dina versi kompiler sateuacana.

Panganteur C umum Kompiler ieu ayeuna tiasa saluyu sareng Panganteur C Common MPLAB, ngamungkinkeun kode sumber langkung gampang dialihkeun ka sadaya kompiler MPLAB XC. Pilihan -mext=cci menta fitur ieu, sangkan sintaksis alternatif pikeun loba ekstensi basa.

supir pustakawan anyar Supir pustakawan anyar diposisikan di luhur pustakawan PIC saméméhna sareng pustakawan AVR avr-ar. Supir ieu nampi pilihan gaya GCC-archiver, anu ditarjamahkeun atanapi diteruskeun ka pustakawan anu dieksekusi. Supir anyar ngamungkinkeun sakumpulan pilihan anu sami sareng semantik anu sami pikeun dianggo pikeun nyiptakeun atanapi ngamanipulasi perpustakaan PIC atanapi AVR. file sareng janten cara anu disarankeun pikeun ngalamar pustakawan. Upami diperyogikeun pikeun proyék-proyék warisan, pustakawan sateuacana tiasa langsung ditelepon nganggo pilihan gaya lami anu ditampi dina vérsi kompiler sateuacana.

Isu Migrasi

Di handap ieu mangrupakeun fitur anu ayeuna diatur béda ku compiler nu. Parobihan ieu tiasa ngabutuhkeun modifikasi kana kode sumber anjeun upami kode porting kana versi kompiler ieu. Nomer vérsi dina subjudul nunjukkeun vérsi panyusun pangheulana pikeun ngadukung parobahan anu salajengna.

Vérsi 2.40

Euweuh.

Vérsi 2.39 (Rélis Kasalametan Fungsional)

Euweuh.

Vérsi 2.36

Euweuh.

Vérsi 2.35

Nanganan string-ka dasar (XCS-2420) Pikeun mastikeun konsistensi jeung compiler XC séjén, XC8 string-ka fungsi, kawas strtol () jeung sajabana, moal deui usaha pikeun ngarobah hiji string input lamun dasarna dieusian leuwih badag batan 36 jeung gantina bakal nyetél errno mun EINVAL. Standar C henteu netepkeun paripolah fungsi nalika nilai dasar ieu ngaleuwihan.

Optimasi laju anu teu pantes Optimasi abstraksi prosedural diaktipkeun nalika milih optimasi tingkat 3 (-03). optimizations ieu ngurangan ukuran kode di expense speed kode, jadi teu kudu dipigawé. Proyék anu ngagunakeun tingkat optimasi ieu tiasa ningali bédana dina ukuran kode sareng kagancangan palaksanaan nalika diwangun ku sékrési ieu.

fungsionalitas perpustakaan Kodeu pikeun seueur fungsi perpustakaan C standar ayeuna asalna tina Perpustakaan Standar Ngahijikeun Microchip, anu tiasa nunjukkeun paripolah anu béda dina sababaraha kaayaan dibandingkeun sareng anu disayogikeun ku perpustakaan avr-libc baheula. Pikeun example, geus euweuh perlu link di perpustakaan lprintf_flt (-print _flt pilihan) pikeun ngahurungkeun formatna rojongan IO pikeun specifiers ngambang-format. Fitur IO pinter tina Microchip Unified Standard Library ngajadikeun pilihan ieu kaleuleuwihan. Sajaba ti éta, pamakéan _p rutin suffixed pikeun string jeung fungsi memori (misalna strcpy_P () jsb .. ) nu beroperasi dina string const di flash teu perlu deui. Kabiasaan C standar (misalna strcpy ()) bakal dianggo leres sareng data sapertos nalika fitur const-data-in-program-memori diaktipkeun.

Vérsi 2.32

Euweuh.

Vérsi 2.31

Euweuh.

Vérsi 2.30

Euweuh.

Vérsi 2.29 (Rélis Kasalametan Fungsional)

Euweuh.

Vérsi 2.20

Ngarobah perenah DFP Kompiler ayeuna nganggap perenah anu béda anu dianggo ku DFPs (Device Family Packs). Ieu bakal hartosna yén DFP anu langkung lami moal tiasa dianggo sareng rilis ieu, sareng kompiler anu langkung lami moal tiasa nganggo DFP panganyarna.

Vérsi 2.19 (Rélis Kasalametan Fungsional)

Euweuh.

Vérsi 2.10

Euweuh

Vérsi 2.05

Const objék dina mémori program Catet yén sacara standar, objék const-qualfiied bakal ditempatkeun tur diaksés dina mémori program (sakumaha dijelaskeun di dieu). Ieu bakal mangaruhan ukuran jeung laju palaksanaan proyek Anjeun, tapi kudu ngurangan pamakean RAM. Fitur ieu tiasa ditumpurkeun, upami diperyogikeun, nganggo pilihan -mnoconst- da ta-in-progmem.

Vérsi 2.00

Konfigurasi sekering Fuse konfigurasi alat ayeuna tiasa diprogram nganggo pragma config dituturkeun ku pasangan set-nilai pikeun nangtukeun kaayaan sekering, contona.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
objék jeung fungsi mutlak Objék sareng pungsi ayeuna tiasa ditempatkeun di alamat khusus dina mémori nganggo panjelasan CCI _at (alamat), pikeun ex.ample: #kaasup int foobar at(Ox800100); char at(Ox250) get ID(int offset) {… } Argumen pikeun specifier ieu kudu konstanta nu ngagambarkeun alamat dimana bait munggaran atawa instruksi bakal disimpen. Alamat RAM dituduhkeun ku ngagunakeun offset 0x800000. Aktipkeun CCI ngagunakeun fitur ieu.
Sintaksis fungsi interupsi anyar Kompiler ayeuna nampi spekifier CCI interrupt (num) pikeun nunjukkeun yén fungsi C mangrupikeun pawang anu ngaganggu. Specifier nyokot angka interupsi, contonaample: #kaasup void interupsi(SPI STC_ vect _num) spi Isr(void) { … }

Masalah Maneuh

Di handap ieu koréksi anu parantos dilakukeun pikeun kompiler. Ieu tiasa ngalereskeun bug dina kode anu dibangkitkeun atanapi ngarobih operasi kompiler kana anu dimaksudkeun atanapi disaluyukeun ku pituduh pangguna. Nomer vérsi dina subjudul nunjukkeun versi kompiler munggaran anu ngandung perbaikan pikeun masalah anu salajengna. Label (s) kurung dina judulna nyaéta idéntifikasi masalah éta dina pangkalan data pelacak. Ieu tiasa mangpaat upami anjeun kedah ngahubungi dukungan.

Catet yén sababaraha masalah khusus alat dilereskeun dina Device Family Pack (DFP) pakait sareng alat. Tingali Pangatur Pek MPLAB kanggo inpormasi ngeunaan parobihan anu dilakukeun ka DFP sareng pikeun ngaunduh bungkusan panganyarna.

Vérsi 2.40

Teuing santai (XCS-2876) Nalika nganggo pilihan -mrelax, kompiler henteu ngabagi sababaraha bagian babarengan, nyababkeun ukuran kode anu kirang optimal. Ieu tiasa lumangsung dina kode anu nganggo perpustakaan MUSL énggal atanapi nganggo simbol anu lemah.
Fitur pemetaan henteu ditumpurkeun sakumaha anu dinyatakeun dina peringatan (XCS-2875) Fitur cost-data-in-config mappedprogmem gumantung kana fitur cost-data-in-proem anu diaktipkeun. Upami fitur cost-data-ipconfig- mapped-proem sacara eksplisit diaktipkeun nganggo pilihan sareng fitur cost-data-inprogmem ditumpurkeun, léngkah link gagal, sanaos pesen peringatan anu nyatakeun yén kontra data- in-config-map- fitur proem geus otomatis ditumpurkeun, nu teu sagemblengna bener. Fitur const-data-in-config-map-proem ayeuna ditumpurkeun pinuh dina kaayaan ieu.
Parobahan DFP pikeun ngaksés NVMCTRL anu leres (XCS-2848) Kodeu ngamimitian runtime anu dianggo ku alat AVR64EA henteu nganggap yén ngadaptar NVMCTRL aya dina Configuration Change Protection (CCP) sareng henteu tiasa nyetél IO SFR kana halaman anu dianggo ku const-data-in configmapped-proem compiler. fitur. Parobahan dina versi AVR-Ex_DFP 2.2.55 bakal ngidinan kodeu runtime ngamimitian bener nulis ka register ieu.
Parobahan DFP pikeun nyegah pemetaan lampu kilat (XCS-2847) A work-around pikeun masalah sareng fitur alat pemetaan flash dilaporkeun dina AVR128DA28/32/48/64 Silicon Errata (DS80000882) geus dilaksanakeun. Fitur kompiler const-data-in-config-map-proem moal diterapkeun sacara standar pikeun alat anu kapangaruhan, sareng parobihan ieu bakal muncul dina versi AVR-Ex_DFP 2.2.160.
Kasalahan ngawangun sareng sinhf atanapi coshf (XCS-2834) Usaha ngagunakeun sinhf () atanapi coshf () fungsi perpustakaan nyababkeun kasalahan link, ngajéntrékeun hiji rujukan undefined. Fungsi anu leungit anu dirujuk ayeuna parantos kalebet dina distribusi kompiler.
Ngawangun kasalahan sareng nopa (XCS-2833) Ngagunakeun atribut nopa kalawan fungsi nu geus miboga ngaran assembler na dieusian ngagunakeun salaku () dipicu pesen kasalahan ti assembler nu. Kombinasi ieu teu mungkin.
Gagalna fungsi variadic sareng argumen pointer (XCS-2755, XCS-2731) Fungsi kalawan jumlah variabel argumen nyangka 24-bit (tipe _memo) pointers diliwatan dina daptar argumen variabel nalika fitur ongkos-data-in-proem diaktipkeun. Argumen anu nunjuk kana mémori data disalurkeun salaku objék 16-bit, ngabalukarkeun gagalna kode nalika ahirna dibaca. Nalika fitur data-in-proem kontra diaktipkeun, sadaya argumen pointer 16-bit ayeuna dirobih janten pointer 24-bit. fungsi perpustakaan strtoxxx gagal (XCS-2620) Nalika fitur const-data-in-proem diaktipkeun, parameter lebetkeun dina fungsi perpustakaan strtoxxx teu diropéa leres pikeun alesan string sumber teu dina mémori program.
Tanda pikeun matak teu valid (XCS-2612) Kompiler ayeuna bakal ngaluarkeun kasalahan upami fitur cost-in-proem diaktipkeun sareng alamat string literal sacara eksplisit dialungkeun kana rohangan alamat data (muterkeun qualifier const), pikeun example, (uint8 t *) "Halo Dunya!". Peringatan mangrupikeun masalah upami alamatna tiasa henteu sah nalika panunjuk data const sacara eksplisit dialungkeun kana rohangan alamat data.
Nempatkeun objék const uninitialized (XCS-2408) Objék const jeung const v olatile uninitialized teu disimpen dina memori program dina alat nu peta sakabéh atawa bagian tina memori program maranéhanana kana spasi alamat data. Pikeun alat ieu, obyék sapertos ayeuna disimpen dina mémori program, sahingga operasina konsisten sareng alat anu sanés.

Vérsi 2.39 (Rélis Kasalametan Fungsional)

Euweuh.

Vérsi 2.36

Kasalahan nalika reureuh (XCS-2774) Parobahan minor dina standar Optimasi mode bébas nyegah tilepan konstan tina éksprési operan ka tunda fungsi diwangun-di, hasilna aranjeunna diperlakukeun salaku noncontacts sarta memicu kasalahan: _buil tin avr delay_ cycles expecting ac ompile waktos integer konstan.

Vérsi 2.35

Alokasi contiguous ngagunakeun _at (XCS-2653) alokasi contiguous sababaraha objék tempat dina bagian kalawan ngaran nu sami tur ngagunakeun di () teu jalan leres. Pikeun example: constchararrl [] na tri butte ((sect on (".misses"))) di (Ox50 0) = {Oxo, Ox CD}; biaya char arr2 [] dina tri butte ((bagian (". abdi s eke"))) = {Oxen, Ox FE}; kudu nempatkeun arr2 langsung saatos aril.
Nangtukeun alamat mimiti bagian (XCS-2650) Pilihan -Wal, -section-start ieu cicingeun gagal nempatkeun bagian dina alamat mimiti nominasi. Masalah ieu parantos dilereskeun pikeun bagian anu namina khusus; kumaha oge, eta moal dianggo pikeun sagala bagian baku, kayaning. téks atawa . bss, anu kedah ditempatkeun nganggo pilihan -Wl, -T.
Linker ngadat nalika sayah (XCS-2647) Nalika optimasi -relax diaktipkeun sareng aya kode atanapi bagian data anu henteu pas kana mémori anu sayogi, linker nabrak. Ayeuna, dina kaayaan sapertos kitu, pesen kasalahan dikaluarkeun.
Aksés EEPROM goréng (XCS-2629) Leproma _read_ block rutin teu jalan leres dina alat Mega nalika pilihan -monist-data-in-proem diaktipkeun (nu kaayaan standar), hasilna memori EEPROM teu dibaca leres.
Alokasi mémori teu valid (XCS-2593, XCS-2651) Nalika pilihan linker -Text atanapi -Tata (pikeun example diliwatan ngagunakeun pilihan supir -Wl) dieusian, téks pakait / asal wewengkon data ieu diropéa; kumaha oge, alamat tungtung teu disaluyukeun sasuai, nu bisa geus ngarah ka wewengkon ngaleuwihan rentang memori alat target urang.
Kode interupsi ATtiny teu valid (XCS-2465) Nalika ngawangun alat Tatin sareng optimasi ditumpurkeun (-00), fungsi interupsi tiasa nyababkeun operan kaluar tina pesen assembler jangkauan.
Pilihan anu henteu diliwat (XCS-2452) Lamun make pilihan -Wl kalawan sababaraha, pilihan linker dipisahkeun koma, teu sakabéh pilihan linker anu dibikeun ka linker nu.
Kasalahan teu langsung maca memori program (XCS-2450) Dina sababaraha kasus, kompiler ngahasilkeun kasalahan internal (unrecognizable insn) nalika maca nilai dua bait tina pointer ka memori program.

Vérsi 2.32

Aksés kadua perpustakaan gagal (XCS-2381) Invoking versi Windows tina xc8-ar. exe library archiver kadua kalina pikeun ngakses arsip perpustakaan aya mungkin geus gagal jeung pesen kasalahan teu bisa ngaganti ngaran.

Vérsi 2.31

Gagal kompiler anu teu dijelaskeun (XCS-2367) Lamun ngajalankeun dina platform Windows nu miboga sistem diréktori samentara disetel ka jalur nu kaasup titik '.' karakter, kompiler meureun geus gagal pikeun ngaéksekusi.

Vérsi 2.30

labél global salah tempat sanggeus outlining (XCS-2299) Kode assembly tulisan leungeun nu nempatkeun labél global dina runtuyan assembly nu factored kaluar ku abstraksi prosedural bisa jadi teu bener repositioned.
Kacilakaan santai (XCS-2287) Ngagunakeun pilihan -merlad bisa geus ngabalukarkeun linker nabrak nalika buntut luncat rélaxasi optimizations nyoba miceun instruksi Ret nu teu di tungtung bagian a.
Kacilakaan nalika ngaoptimalkeun labél salaku nilai (XCS-2282) Kodeu ngagunakeun ekstensi basa GNU C "Label salaku nilai" tiasa nyababkeun optimasi abstraksi prosedural nabrak, sareng rentang VMA Outlined ngawengku kasalahan fixup.
Teu jadi const (XCS-2271) Prototipe pikeun dimimitian () jeung fungsi séjén tina euweuh nangtukeun qualifier ongkos non-standar on pointers string balik nalika -monist-data fitur inprogmem ditumpurkeun. Catet yén sareng alat avrxmega3 sareng avertin, fitur ieu diaktipkeun permanén.
Inisialisasi leungit (XCS-2269) Lamun leuwih ti hiji variabel dina unit tarjamahan disimpen dina hiji bagian (ngagunakeun bagian atawa atribut ((bagian))), sarta variabel kahiji ieu enol initialized atawa teu boga initializer, initializers pikeun variabel séjén dina unit tarjamahan sarua. anu disimpen dina bagian anu sami leungit.

Vérsi 2.29 (Rélis Kasalametan Fungsional)

Euweuh.

Vérsi 2.20

Kasalahan sareng paréntah panjang (XCS-1983) Nalika nganggo target AVR, kompiler tiasa lirén nganggo a file teu kapanggih kasalahan, lamun baris paréntah éta pisan badag sarta ngandung karakter husus kayaning tanda petik, backslashes, jsb.
Bagian rodata anu henteu ditugaskeun (XCS-1920) Panyambung AVR gagal netepkeun mémori pikeun bagian rodata khusus nalika ngawangun pikeun arsitéktur avrxmega3 sareng avrtiny, anu berpotensi ngahasilkeun kasalahan tumpang tindih memori.

Vérsi 2.19 (Rélis Kasalametan Fungsional)

Euweuh.

Vérsi 2.10

Gagal relokasi (XCS-1891) The allocator fit pangalusna ieu ninggalkeun memori 'liang' di antara bagian sanggeus rélaxasi linker. Kumisan ti fragmenting memori, ieu ngaronjatkeun kamungkinan aya gagal relokasi linker patali jumps pc-relatif atawa nelepon jadi kaluar jangkauan.
Parentah henteu dirobih ku rélaxasi (XCS-1889) Relaxasi linker teu lumangsung pikeun luncat atawa nelepon parentah nu target jadi reachable lamun santai.
Leungit fungsionalitas (XCSE-388) Sababaraha definisi ti , sapertos clock_div_t sareng clock_prescale_set (), teu ditetepkeun pikeun alat, kalebet ATmega324PB, ATmega328PB, ATtiny441, sareng ATtiny841.
Macro leungit The preprocessor macros_ xcs _MODE_, _xcs VERSION, _xc, sarta xcs teu otomatis ditetepkeun ku compiler nu. Ieu ayeuna aya.

Vérsi 2.05

Kasalahan kompiler internal (XCS-1822) Nalika ngawangun di handapeun Windows, kasalahan kompiler internal tiasa dihasilkeun nalika ngaoptimalkeun kode.
RAM ngabahekeun teu kadeteksi (XCS-1800, XCS-1796) Program anu ngaleuwihan éta RAM sadia teu kauninga ku compiler dina sababaraha kaayaan, hasilna gagal kode runtime.
Mémori lampu kilat dileungitkeun (XCS-1792) Pikeun alat avrxmega3 sareng avrtiny, bagian tina mémori lampu kilat tiasa ditinggalkeun teu diprogram ku MPLAB X IDE.
Gagalna ngajalankeun utama (XCS-1788) Dina sababaraha kaayaan dimana program éta henteu aya variabel global anu ditetepkeun, kodeu runtime ngamimitian henteu kaluar sareng fungsi utama () henteu kantos ngahontal.
Inpormasi mémori anu salah (XCS-1787) Pikeun alat avrxmega3 sareng avrtiny, program ukuran avr ngalaporkeun yén data ngan ukur maca nganggo RAM tibatan mémori program.
Bacaan memori program salah (XCS-1783) Proyék anu disusun pikeun alat anu nganggo mémori program anu dipetakeun kana rohangan alamat data sareng anu ngahartikeun obyék anu nganggo makro/atribut PROGMEM panginten tiasa maca objék ieu tina alamat anu salah.
Kasalahan internal sareng atribut (XCS-1773) Kasalahan internal lumangsung upami anjeun netepkeun obyék pointer sareng
_at () atawa atribut () tokens di antara ngaran pointer jeung tipe dereferenced, pikeun example, char *
_di (0x80015 0) cp; Peringatan ayeuna dikaluarkeun upami kode sapertos kitu dipanggihan.
Gagalna ngajalankeun utama (XCS-1780, XCS-1767, XCS-1754) Nganggo variabel EEPROM atanapi netepkeun sekering nganggo pragma konfigurasi tiasa nyababkeun inisialisasi data anu salah sareng/atawa ngonci palaksanaan program dina kode ngamimitian runtime, sateuacan ngahontal main ().
Kasalahan sekering sareng alat leutik (XCS-1778, XCS-1742) Alat attiny4/5/9/10/20/40 ngagaduhan panjang sekering anu lepat ditunjuk dina headerna files nu ngakibatkeun kasalahan linker nalika nyobian ngawangun kode nu diartikeun fuses.
Segmentasi sesar (XCS-1777) Kasalahan segmentasi intermittent parantos dilereskeun.
Kacilakaan Assembler (XCS-1761) The avr-as assembler meureun nabrak nalika kompiler dijalankeun dina Ubuntu 18.
Objék teu diberesihan (XCS-1752) Objék durasi panyimpen statik anu teu diinisialisasi panginten henteu acan dibersihkeun ku kode ngamimitian runtime.
Spésifikasi alat anu bentrok teu dipaliré (XCS-1749) Kompiler henteu ngahasilkeun kasalahan nalika sababaraha pilihan spésifikasi alat dianggo sareng nunjukkeun alat anu béda.
Korupsi mémori ku tumpukan (XCS-1748) The heap_ start simbol ieu keur lepat disetel, hasilna kamungkinan variabel biasa keur ruksak ku numpuk.
Kasalahan relokasi linker (XCS-1739) Kasalahan relokasi linker tiasa dipancarkeun nalika kode ngandung rjmp atanapi rcall kalayan target jarakna 4k bait.

Vérsi 2.00

Euweuh.

Isu dipikawanoh

Ieu mangrupikeun watesan dina operasi kompiler. Ieu bisa jadi larangan coding umum, atawa
panyimpangan tina inpormasi anu aya dina manual pangguna. Label (s) kurung dina judulna nyaéta idéntifikasi masalah éta dina pangkalan data pelacak. Ieu tiasa janten mangpaat upami anjeun kedah ngahubungi dukungan. Barang-barang anu henteu gaduh labél mangrupikeun watesan anu ngajelaskeun mode operandi sareng anu kamungkinan tetep berlaku sacara permanén.

Pamaduan MPLAB X IDE

integrasi MPLAB IDE Upami Compiler kedah dianggo tina MPLAB IDE, maka anjeun kedah masang MPLAB IDE sateuacan masang Compiler.

Generasi Kode

gagalna alokasi memori PA (XCS-2881) Nalika nganggo pangoptimal abstraksi prosedural, linker tiasa ngalaporkeun kasalahan alokasi mémori nalika ukuran kode caket sareng jumlah mémori program anu sayogi dina alat, sanaos program éta kedah cocog sareng rohangan anu sayogi.
Henteu pinter Smart-IO (XCS-2872) Fitur smart-io kompiler bakal ngahasilkeun kode anu valid tapi sub optimal pikeun fungsi sprint upami fitur coast-data-in-proem parantos ditumpurkeun atanapi upami alat gaduh sadayana lampu kilat dipetakeun kana mémori data.
Malah kirang pinter Smart-IO (XCS-2869) Fitur smart-io kompiler bakal ngahasilkeun kode anu valid tapi suboptimal nalika pilihan timah -floe sareng -fno-buil duanana dianggo.
Penempatan data baca-hijina suboptimal (XCS-2849) Linker ayeuna henteu terang bagian mémori APPCODE sareng APPDATA, atanapi bagian [No-]Baca-Nalika-Tulis dina peta mémori. Hasilna, aya kasempetan leutik nu linker bisa allocate maca-hijina data dina wewengkon teu cocog memori. Kasempetan data misplaced naek lamun fitur basisir-data-di-pragma diaktipkeun, utamana lamun fitur basisir-data-di-config-dipetakeun-proem ogé diaktipkeun. Fitur ieu tiasa ditumpurkeun upami diperyogikeun.
Obyék file urutan ngolah (XCS-2863) Urutan nu objék files bakal diolah ku linker bisa béda dumasar kana pamakéan optimizations abstraksi prosedural (-pilihan mpa). Ieu ngan bakal mangaruhan kode nu nangtukeun fungsi lemah sakuliah sababaraha modul.
Kasalahan linker sareng mutlak (XCS-2777) Nalika hiji obyék geus dijieun mutlak dina alamat di mimiti RAM jeung objék uninitialized ogé geus ditetepkeun, kasalahan linker bisa jadi micu.
ID wake-up pondok (XCS-2775) Pikeun alat ATA5700/2, registers PHID0/1 ngan diartikeun 16 bit lega, tinimbang 32 bit lega.
Linker kacilakaan nalika nelepon simbol (XCS-2758) Linker tiasa ngadat upami pilihan supir -merlad dianggo nalika kode sumber nyauran simbol anu didefinisikeun nganggo pilihan linker -Wl, -defsym.
Inisialisasi salah (XCS-2679) Aya bédana antara dimana nilai awal pikeun sababaraha global / statik bait-ukuran objék disimpen dina mémori data jeung dimana variabel bakal diaksés dina runtime.
dimimitian salah set kosong (XCS-2652) Dina kasus dimana string subjék pikeun konvérsi ku nyatakeun () ngandung naon anu katingali janten angka floating-point dina format eksponensial sareng aya karakter anu teu kaduga saatos karakter e, teras alamat kosong, upami disayogikeun, bakal nunjuk ka karakter saatos. e teu e sorangan. Pikeun example: nyatakeun ("hooey", kosong); bakal ngakibatkeun kosong nunjuk ka karakter x.
Telepon fungsi teu langsung goréng (XCS-2628) Dina sababaraha kasus, sauran fungsi anu dilakukeun ku panunjuk fungsi anu disimpen salaku bagian tina struktur tiasa gagal.
strtof mulih enol pikeun floats héksadesimal (XCS-2626) Perpustakaan fungsi strtof () et al jeung scanf () et al, bakal salawasna ngarobah hiji angka floating-point hexadecimal nu teu nangtukeun hiji éksponén ka
nol. Pikeun example: stator ("Bueuk", & kosong); bakal mulangkeun nilai 0, sanes 1.
Olahtalatah panaséhat tumpukan teu akurat (XCS-2542, XCS-2541) Dina sababaraha instansi, peringatan panaséhat tumpukan ngeunaan recursion atanapi tumpukan indeterminate dipaké (jigana ngaliwatan pamakéan alloca ()) teu dipancarkeun.
Gagal sareng duplikat kode interupsi (XCS-2421) Dimana leuwih ti hiji fungsi interupsi boga awak nu sarua, compiler bisa boga kaluaran pikeun hiji interrupt fungsi nelepon séjén. Ieu bakal ngakibatkeun sakabeh registers panggero-clobbered disimpen unnecessarily, sarta interrupts bakal diaktipkeun malah saméméh epilog tina panangan interupsi ayeuna geus ngajalankeun, nu bisa ngakibatkeun gagalna kode.
Objék Const teu aya dina mémori program (XCS-2408) Pikeun avrxmega3 na avertins proyék objék const unidealized disimpen kana mémori data, sanajan peringatan nunjukkeun yen aranjeunna geus disimpen dina mémori program. Ieu moal mangaruhan alat-alat nu teu boga memori program dipetakeun kana spasi memori data, sarta moal mangaruhan sagala objék nu initialized.
Kaluaran goréng kalayan jalur DFP teu valid (XCS-2376) Upami kompiler dianggo nganggo jalur DFP anu teu valid sareng 'spésifikasi' file Aya pikeun alat anu dipilih, kompiler henteu ngalaporkeun paket kulawarga alat anu leungit sareng milih 'spésifikasi'. file, anu teras tiasa ngakibatkeun kaluaran anu teu sah. 'Spésifikasi' files bisa jadi teu up to date jeung DFPs disebarkeun sarta dimaksudkeun pikeun pamakéan ku tés compiler internal wungkul.
Tumpang tindih mémori teu kadeteksi (XCS-1966) Compiler teu ngadeteksi tumpang tindihna memori objék dijieun mutlak dina alamat (via di ()) jeung objék séjén ngagunakeun bagian () specifier jeung nu numbu ka alamat nu sami.
Gagal sareng fungsi perpustakaan sareng _meme (XCS-1763) Disebut fungsi ngambang limbic kalawan argumen dina spasi alamat _memo bisa gagal. Catet yén rutin perpustakaan disebut ti sababaraha operator C, jadi, pikeun example, kode di handap ieu kapangaruhan: balik regFloatVar> memxFloatVar;
Palaksanaan limbik kawates (AVRTC-731) Pikeun produk ATTiny4/5/9/10/20/40, standar C / palaksanaan perpustakaan math di limbic pohara kawates atanapi henteu hadir.
Watesan mémori program (AVRTC-732) Gambar memori program saluareun 128 kb dirojong ku toolchain; kumaha oge, aya instansi dipikawanoh tina linker aborts tanpa rélaxasi sarta tanpa pesen kasalahan mantuan tinimbang ngahasilkeun stubs fungsi diperlukeun nalika pilihan -relax dipaké.
Watesan rohangan ngaran (AVRTC-733) Spasi alamat anu dingaranan dirojong ku toolchain, tunduk kana watesan anu disebatkeun dina bagian pituduh pangguna Kualifikasi Tipe Khusus.
Zona waktu The fungsi perpustakaan nganggap GMT tur teu ngarojong zona waktu lokal, sahingga waktu lokal () bakal balik deui waktu nu sarua salaku gummite (), pikeun ex.ample.

Rojongan konsumén

file///Applications/microehip/xc8/v 2 .40/docs/Baca me_X C 8_ pikeun A VR. htm

Dokumén / Sumberdaya

MICROCHIP MPLAB XC8 C Compiler Software [pdf] Buku Panduan Pamilik
MPLAB XC8 C, MPLAB XC8 C Compiler Software, Compiler Software, Software

Rujukan

Ninggalkeun komentar

alamat surélék anjeun moal diterbitkeun. Widang diperlukeun ditandaan *