Perisian Pengkompil MPLAB XC8 C MICROCHIP 

Perisian Pengkompil MPLAB XC8 C MICROCHIP

DOKUMEN INI MENGANDUNGI MAKLUMAT PENTING BERHUBUNGAN DENGAN PENYUSUN MPLAB XC8 C APABILA MENSASSARKAN PERANTI AVR MICROCHIP.
SILA BACA SEBELUM MENJALANKAN PERISIAN INI. LIHAT NOTA PELEPASAN PENGKOMPILE MPLAB XC8 C UNTUK DOKUMEN PIC JIKA ANDA MENGGUNAKAN PENGKOMPILE UNTUK PERANTI PIC 8-BIT.

Berakhirview

pengenalan

Keluaran pengkompil Microchip MPLAB® XC8 C ini mengandungi beberapa ciri baharu, pembetulan pepijat dan sokongan peranti baharu.

Tarikh Bina

Tarikh binaan rasmi versi pengkompil ini ialah 3 Julai 2022.

Versi terdahulu

Versi pengkompil MPLAB XC8 C sebelum ini ialah 2.39, pengkompil keselamatan berfungsi, dibina pada 27 Januari 2022. Pengkompil standard sebelumnya ialah versi 2.36, dibina pada 27 Januari 2022.

Manual Keselamatan Berfungsi

Manual Keselamatan Berfungsi untuk penyusun MPLAB XC tersedia dalam pakej dokumentasi apabila anda membeli lesen keselamatan berfungsi.

Lesen dan Versi Komponen

Pengkompil MPLAB® XC8 C untuk alatan MCU AVR ditulis dan diedarkan di bawah Lesen Awam Am (GPL) GNU yang bermaksud kod sumbernya diedarkan secara bebas dan tersedia kepada orang ramai. Kod sumber untuk alatan di bawah GNU GPL boleh dimuat turun secara berasingan daripada Microchip webtapak. Anda boleh membaca GNU GPL dalam file dinamakan terletak subdirektori direktori pemasangan anda. Perbincangan umum tentang prinsip yang mendasari GPL boleh didapati di sini. Kod sokongan disediakan untuk pengepala files, skrip pemaut dan perpustakaan masa jalan ialah kod proprietari dan tidak dilindungi di bawah GPL.

Pengkompil ini ialah pelaksanaan GCC versi 5.4.0, binutils versi 2.26 dan menggunakan avr-libc versi 2.0.0.

Keperluan Sistem

Pengkompil MPLAB XC8 C dan perisian pelesenan yang digunakannya tersedia untuk pelbagai sistem pengendalian, termasuk versi 64-bit yang berikut: Edisi profesional Microsoft Windows 10; Ubuntu 18.04; dan macOS 10.15.5. Binari untuk Windows telah ditandatangani kod. Binari untuk mac OS telah ditandatangani kod dan disahkan notari.

Jika anda menjalankan pelayan lesen rangkaian, hanya komputer dengan sistem pengendalian yang disokong oleh penyusun boleh digunakan untuk mengehoskan pelayan lesen. Setakat xclm versi 2.0, pelayan lesen rangkaian boleh dipasang pada platform Microsoft Windows Server, tetapi pelayan lesen tidak perlu dijalankan pada versi pelayan sistem pengendalian.

Peranti Disokong

Pengkompil ini menyokong semua peranti AVR MCU 8-bit yang diketahui pada masa dikeluarkan. Lihat (dalam direktori dokumen pengkompil) untuk senarai semua peranti yang disokong. Ini files juga menyenaraikan tetapan bit konfigurasi untuk setiap peranti.

Edisi dan Peningkatan Lesen

Pengkompil MPLAB XC8 boleh diaktifkan sebagai produk berlesen (PRO) atau tidak berlesen (Percuma). Anda perlu membeli kunci pengaktifan untuk melesenkan pengkompil anda. Lesen membolehkan tahap pengoptimuman yang lebih tinggi berbanding dengan produk Percuma. Pengkompil tanpa lesen boleh dikendalikan selama-lamanya tanpa lesen.

Penyusun Keselamatan Fungsian MPLAB XC8 mesti diaktifkan dengan lesen keselamatan berfungsi yang dibeli daripada Microchip. Pengkompil tidak akan beroperasi tanpa lesen ini. Setelah diaktifkan, anda boleh memilih mana-mana tahap pengoptimuman dan menggunakan semua ciri pengkompil. Keluaran Penyusun Keselamatan Fungsian MPLAB XC ini menyokong Lesen Pelayan Rangkaian.
Lihat dokumen Memasang dan Melesenkan MPLAB XC C Compiler (DS50002059) untuk maklumat tentang jenis lesen dan pemasangan pengkompil dengan lesen.

Pemasangan dan Pengaktifan

Lihat juga bahagian Isu dan Had Migrasi untuk mendapatkan maklumat penting tentang pengurus lesen terkini yang disertakan dengan pengkompil ini.
Jika menggunakan MPLAB IDE, pastikan anda memasang MPLAB X IDE versi 5.0 atau lebih baru sebelum memasang alat ini. Keluar dari IDE sebelum memasang pengkompil. Jalankan aplikasi pemasang pengkompil .exe (Windows), .run (Linux) atau app (macOS), cth XC8-1.00.11403-windows.exe dan ikut arahan pada skrin.
Direktori pemasangan lalai disyorkan. Jika anda menggunakan Linux, anda mesti memasang pengkompil menggunakan terminal dan daripada akaun root. Pasang menggunakan akaun macOS dengan keistimewaan pentadbir.

Pengaktifan kini dijalankan secara berasingan untuk pemasangan. Lihat dokumen Pengurus Lesen untuk Penyusun MPLAB® XC C (DS52059) untuk mendapatkan maklumat lanjut.

Jika anda memilih untuk menjalankan pengkompil di bawah lesen penilaian, anda kini akan mendapat amaran semasa penyusunan apabila anda berada dalam tempoh 14 hari selepas tamat tempoh penilaian anda. Amaran yang sama dikeluarkan jika anda berada dalam tempoh 14 hari selepas tamat langganan HPA anda.

Pelayan Lesen Rangkaian XC ialah pemasang berasingan dan tidak termasuk dalam pemasang pengkompil pengguna tunggal.

Pengurus Lesen XC kini menyokong perayauan lesen rangkaian terapung. Ditujukan kepada pengguna mudah alih, ciri ini membenarkan lesen terapung keluar dari rangkaian untuk tempoh masa yang singkat. Menggunakan ciri ini, anda boleh memutuskan sambungan daripada rangkaian dan masih menggunakan pengkompil MPLAB XC anda. Lihat folder dokumen pemasangan XCLM untuk maklumat lanjut tentang ciri ini. MPLAB X IDE termasuk tetingkap Lesen (Tools > Licenses) untuk mengurus perayauan secara visual.

Menyelesaikan Isu Pemasangan

Jika anda mengalami kesukaran memasang pengkompil di bawah mana-mana sistem pengendalian Windows, cuba cadangan berikut.

  • Jalankan pemasangan sebagai pentadbir.
  • Tetapkan kebenaran aplikasi pemasang kepada 'Kawalan penuh'. (Klik kanan pada file, pilih Properties, tab Security, pilih pengguna, edit.)
  • Tetapkan kebenaran folder temp kepada “Kawalan Penuh!

Untuk menentukan lokasi folder temp, taip %temp% ke dalam arahan Run (kunci logo Windows + R). Ini akan membuka a file dialog explorer menunjukkan direktori itu dan akan membolehkan anda menentukan laluan folder itu.

Dokumentasi Penyusun

Panduan pengguna pengkompil boleh dibuka dari halaman HTML yang dibuka dalam penyemak imbas anda apabila mengklik butang bantuan biru dalam papan pemuka MPLAB X IDE, seperti yang ditunjukkan dalam tangkapan skrin.

Dokumentasi Penyusun
Jika anda membina untuk sasaran AVR 8-bit, Panduan Pengguna Pengkompil MPLAB® XC8 C untuk AVR® MCU mengandungi maklumat tentang pilihan dan ciri pengkompil tersebut yang boleh digunakan pada seni bina ini.

Sokongan Pelanggan

Microchip mengalu-alukan laporan pepijat, cadangan atau komen mengenai versi pengkompil ini. Sila arahkan sebarang laporan pepijat atau permintaan ciri melalui Sistem Sokongan.

Kemas kini Dokumentasi

Untuk versi dalam talian dan versi terkini dokumentasi MPLAB XC8, sila lawati Dokumentasi Teknikal Dalam Talian Microchip webtapak.

Dokumentasi AVR baharu atau dikemas kini dalam keluaran ini:

  • notis hak cipta MUSL
  • Memasang dan Melesenkan Penyusun MPLAB XC C (semakan M)
  • Panduan Pengguna MPLAB XC8 untuk Jurutera Terbenam – MCU AVR (semakan A)
  • Panduan Pengguna Pengkompil MPLAB XC8 C untuk AVR MCU (semakan F)
  • Panduan Rujukan Perpustakaan Standard Disatukan Microchip (semakan B)

Panduan Rujukan Perpustakaan Piawaian Microchip Unified menerangkan kelakuan dan antara muka kepada fungsi yang ditakrifkan oleh Perpustakaan Piawai Disatukan Microchip, serta tujuan penggunaan jenis perpustakaan dan makro. Beberapa maklumat ini dahulunya terkandung dalam Panduan Pengguna Pengkompil MPLAB® XC8 C untuk AVR® MCU. Maklumat perpustakaan khusus peranti masih terkandung dalam panduan pengkompil ini.

Jika anda baru bermula dengan peranti 8-bit dan Pengkompil MPLAB XC8 C, Panduan Pengguna MPLAB® XC8! untuk Jurutera Terbenam – AVR® MCUs (DS50003108) mempunyai maklumat tentang menyediakan projek dalam MPLAB X IDE dan kod penulisan untuk projek MPLAB XC8 C pertama anda. Panduan ini kini diedarkan dengan pengkompil.

Panduan Pengguna Hamate telah disertakan dalam direktori dokumen dalam keluaran ini. Panduan ini bertujuan untuk mereka yang menjalankan Hamate sebagai aplikasi yang berdiri sendiri.

Apa yang Baru

Berikut ialah ciri sasaran AVR baharu yang kini disokong oleh pengkompil. Nombor versi dalam subtajuk menunjukkan versi pengkompil pertama yang menyokong ciri-ciri berikut.

Versi 2.40

Sokongan peranti baharu Sokongan kini tersedia untuk bahagian AVR berikut: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32EA, dan.
Abstraksi prosedur yang lebih baik Alat pengoptimuman abstraksi prosedur (PA) telah dipertingkatkan supaya kod yang mengandungi arahan panggilan fungsi ( panggil balik ) ) boleh digariskan. Ini hanya akan berlaku jika timbunan tidak digunakan untuk menghantar argumen kepada atau mendapatkan nilai pulangan daripada fungsi. Tindanan digunakan apabila memanggil fungsi dengan senarai argumen boleh ubah atau apabila memanggil fungsi yang mengambil lebih banyak argumen daripada daftar yang ditetapkan untuk tujuan ini. Ciri ini boleh dilumpuhkan menggunakan pilihan monk-pa-outline-calls, atau abstraksi prosedur boleh dilumpuhkan sepenuhnya untuk objek file atau berfungsi dengan menggunakan -monk-pa-on-file dan -mo.-pa-on-function masing-masing, atau dengan menggunakan atribut nipa ( penentu nipa) secara selektif dengan fungsi

Makro liputan kod Pengkompil kini mentakrifkan makro __CODECOV jika pilihan mcodecov yang sah ditentukan.

Pilihan tempahan memori Pemacu xc8-cc kini akan menerima pilihan -mreserve=space@start: end apabila membina untuk sasaran AVR. Pilihan ini menyimpan julat memori yang ditentukan dalam sama ada ruang memori data atau program, menghalang pemaut daripada mengisi kod atau objek di kawasan ini.

IO pintar yang lebih bijak Beberapa penambahbaikan telah dibuat pada fungsi IO Pintar, termasuk tweak umum pada kod teras printf, menganggap penentu penukaran %n sebagai varian bebas, memaut dalam rutin pop vararg atas permintaan, menggunakan jenis data yang lebih pendek jika boleh untuk mengendalikan hujah fungsi IO , dan pemfaktoran kod biasa dalam lebar medan dan pengendalian ketepatan. Ini boleh menyebabkan penjimatan kod dan data yang ketara, serta meningkatkan kelajuan pelaksanaan IO.

Versi 2.39 (Keluaran Keselamatan Fungsian)

Lesen Pelayan Rangkaian Keluaran Penyusun Keselamatan Fungsian MPLAB XC8 ini menyokong Lesen Pelayan Rangkaian.

Versi 2.36

tiada.

Versi 2.35

Sokongan peranti baharu Sokongan tersedia untuk bahagian AVR berikut: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 dan AVR64DD32.

Penukaran konteks yang lebih baik Pilihan -mcall-isr-prologues baharu mengubah cara fungsi gangguan menyimpan daftar pada kemasukan dan cara daftar tersebut dipulihkan apabila rutin gangguan ditamatkan. Ia berfungsi dengan cara yang serupa dengan pilihan -mcall-prologues, tetapi hanya mempengaruhi fungsi gangguan (ISR).

Penukaran konteks yang lebih baik Pilihan -mgas-isr-prologues baharu mengawal kod gatal konteks yang dijana untuk rutin perkhidmatan gangguan kecil. Apabila didayakan, ciri ini akan membolehkan pemasang mengimbas ISR untuk penggunaan daftar dan hanya menyimpan daftar terpakai ini jika diperlukan.

Pemetaan kilat boleh dikonfigurasikan Sesetengah peranti dalam keluarga AVR DA dan AVR DB mempunyai SFR (cth FLMAP) yang menentukan bahagian 32k memori program yang akan dipetakan ke dalam memori data. Pilihan baru – mconst-data-in-config-mapped-proem boleh digunakan untuk membolehkan penyambung meletakkan semua data yang layak kontra dalam satu bahagian 32k dan secara automatik memulakan daftar SFR yang berkaitan untuk memastikan data ini dipetakan ke dalam ruang memori data , di mana ia akan diakses dengan lebih berkesan.

Perpustakaan Standard Disatukan Microchip Semua penyusun MPLAB XC akan berkongsi Perpustakaan Standard Disatukan Microchip, yang kini tersedia dengan keluaran MPLAB XC8 ini. Panduan Pengguna Pengkompil MPLAB® XC8 C/atau AVR® MCU tidak lagi menyertakan dokumentasi untuk fungsi standard ini. Maklumat ini kini boleh didapati dalam Panduan Rujukan Perpustakaan Standard Disatukan Microchip. Ambil perhatian bahawa beberapa fungsi yang ditakrifkan oleh avr-libc sebelum ini tidak lagi tersedia. (Lihat Librar):'. fungsiY…)

IO pintar Sebagai sebahagian daripada perpustakaan bersatu baharu, fungsi IO dalam keluarga cetak dan imbasan kini dijana tersuai pada setiap binaan, berdasarkan cara fungsi ini digunakan dalam program. Ini boleh mengurangkan dengan ketara sumber yang digunakan oleh program.
Pilihan bantuan IO pintar Apabila menganalisis panggilan ke fungsi IO pintar (seperti printf () atau scanf () ), pengkompil tidak boleh sentiasa menentukan daripada rentetan format atau membuat kesimpulan daripada argumen penentu penukaran yang diperlukan oleh panggilan. Sebelum ini, pengkompil akan sentiasa tidak membuat andaian dan memastikan bahawa fungsi IO berfungsi sepenuhnya dikaitkan dengan imej program akhir. Pilihan baharu – msmart-io-format=fmt telah ditambahkan supaya pengkompil sebaliknya boleh dimaklumkan oleh pengguna tentang penentu penukaran yang digunakan oleh fungsi IO pintar yang penggunaannya tidak jelas, menghalang rutin IO yang terlalu panjang daripada dipautkan. (Lihat Pilihan smart-io-format untuk butiran lanjut.)

Meletakkan bahagian tersuai Sebelum ini, pilihan -Wl, –section-start hanya meletakkan bahagian yang ditentukan pada alamat yang diminta apabila skrip pemaut menentukan bahagian output dengan nama yang sama. Apabila itu tidak berlaku, bahagian itu diletakkan di alamat yang dipilih oleh pemaut dan pilihan itu pada dasarnya diabaikan. Kini pilihan akan diberi penghormatan untuk semua bahagian tersuai, walaupun skrip pemaut tidak menentukan bahagian tersebut. Walau bagaimanapun, ambil perhatian bahawa untuk bahagian standard, seperti . teks, . bss atau . data, pengagih yang paling sesuai masih mempunyai kawalan penuh ke atas peletakan mereka, dan pilihan itu tidak akan memberi kesan. Gunakan pilihan -Wl, -Tsection=add, seperti yang diterangkan dalam panduan pengguna.

Versi 2.32

Panduan Timbunan Tersedia dengan lesen pengkompil PRO, ciri panduan tindanan pengkompil boleh digunakan untuk menganggarkan kedalaman maksimum sebarang tindanan yang digunakan oleh program. Ia membina dan menganalisis graf panggilan program, menentukan penggunaan tindanan bagi setiap fungsi, dan menghasilkan laporan, yang daripadanya kedalaman tindanan yang digunakan oleh atur cara boleh disimpulkan. Ciri ini didayakan melalui pilihan baris arahan -mchp-stack-usage. Ringkasan penggunaan tindanan dicetak selepas pelaksanaan. Laporan tindanan terperinci tersedia dalam peta file, yang boleh diminta dengan cara biasa.

Sokongan sokongan peranti baharu tersedia untuk bahagian AVR berikut: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48DB dan

Sokongan sokongan peranti ditarik balik tidak lagi tersedia untuk bahagian AVR berikut: AVR16DA28, AVR16DA32 dan, AVR16DA48.

Versi 2.31

tiada.

Versi 2.30

Pilihan baharu untuk menghalang pemulaan data Pilihan pemacu -mno-data-ini t baharu menghalang pemulaan data dan mengosongkan bahagian bss. Ia berfungsi dengan menyekat output data do_ copy_ dan simbol d o_ clear_ bss dalam pemasangan files, yang seterusnya akan menghalang kemasukan rutin tersebut oleh pemaut.

Pengoptimuman yang dipertingkatkan Beberapa penambahbaikan pengoptimuman telah dibuat, termasuk penyingkiran arahan pemulangan berlebihan, penyingkiran beberapa lompatan berikutan arahan langkau-jika-bit-is, dan abstraksi prosedur yang dipertingkatkan serta keupayaan untuk mengulangi proses ini.

Pilihan tambahan kini tersedia untuk mengawal beberapa pengoptimuman ini, khususnya -f penambat bahagian, yang membolehkan akses objek statik dilakukan secara relatif kepada satu simbol; -mpai derations=n, yang membenarkan bilangan lelaran abstraksi prosedur ditukar daripada lalai 2; dan, -mpa- kos panggilan- shortcall, yang melakukan abstraksi prosedur yang lebih agresif, dengan harapan bahawa pemaut boleh melonggarkan panggilan panjang. Pilihan terakhir ini boleh meningkatkan saiz kod jika andaian asas tidak direalisasikan.

Sokongan peranti baharu Sokongan tersedia untuk bahagian AVR berikut: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 dan AVR128DB.

Sokongan peranti ditarik balik Sokongan tidak lagi tersedia untuk bahagian AVR berikut: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C dan 664251.

Versi 2.29 (Keluaran Keselamatan Fungsian)

Pengepala file untuk pengkompil terbina dalam Untuk memastikan bahawa pengkompil boleh mematuhi spesifikasi bahasa seperti MISRA, kepala file, yang disertakan secara automatik oleh , telah dikemaskini. Pengepala ini mengandungi prototaip untuk semua fungsi terbina dalam, seperti _buil tin _avrnop () dan _buil tin_ avr delay_ cycles () . Sesetengah terbina dalam mungkin tidak mematuhi MISRA; ini boleh diketepikan dengan menambahkan define _Xe_ STRICT_ MISRA pada baris arahan pengkompil. Terbina dalam dan pengisytiharannya telah dikemas kini untuk menggunakan jenis lebar tetap.

Versi 2.20

Sokongan peranti baharu Sokongan tersedia untuk bahagian AVR berikut: ATTINY1624, ATTINY1626 dan ATTINY1627.

Peruntukan paling sesuai yang lebih baik Peruntukan muat terbaik (BFA) dalam pengkompil telah dipertingkatkan supaya bahagian diperuntukkan dalam susunan yang membenarkan pengoptimuman yang lebih baik. BFA kini menyokong ruang alamat yang dinamakan dan mengendalikan pemulaan data dengan lebih baik.

Abstraksi prosedur yang lebih baik Pengoptimuman abstraksi prosedur kini dilakukan pada lebih banyak jujukan kod. Situasi sebelumnya di mana pengoptimuman ini mungkin telah meningkatkan saiz kod telah ditangani dengan membuat kod pengoptimuman menyedari proses pengumpulan sampah pemaut.

Ketiadaan AVR Assembler AVR Assembler tidak lagi disertakan dengan pengedaran ini.

Versi 2.19 (Keluaran Keselamatan Fungsian)

tiada.

Versi 2.10

Liputan Kod Keluaran ini termasuk ciri liputan kod yang memudahkan analisis sejauh mana kod sumber projek telah dilaksanakan. Gunakan pilihan -mcodecov=ram untuk mendayakannya. Selepas pelaksanaan program pada perkakasan anda, maklumat liputan kod akan dikumpulkan dalam peranti, dan ini boleh dipindahkan ke dan dipaparkan oleh MPLAB X IDE melalui pemalam liputan kod. Lihat dokumentasi IDE untuk mendapatkan maklumat tentang pemalam ini. #pragma mcodecov boleh digunakan untuk mengecualikan fungsi berikutnya daripada analisis liputan. Sebaik-baiknya pragma perlu ditambah pada permulaan file untuk mengecualikan keseluruhan itu file daripada analisis liputan. Sebagai alternatif, atribut ( (mcodecov) ) boleh digunakan untuk mengecualikan fungsi tertentu daripada analisis liputan.

Perihalan peranti files Peranti baharu file dipanggil avr chipinfo. html terletak dalam direktori dokumen pengedaran pengkompil. ini file menyenaraikan semua peranti yang disokong oleh pengkompil. Klik pada nama peranti, dan ia akan membuka halaman yang menunjukkan semua tetapan bit konfigurasi yang dibenarkan/pasangan nilai untuk peranti itu, dengan examples.

Abstraksi prosedur Pengoptimuman abstraksi prosedur, yang menggantikan blok biasa kod pemasangan dengan panggilan ke salinan yang diekstrak blok itu, telah ditambahkan pada pengkompil. Ini dilakukan oleh aplikasi berasingan, yang digunakan secara automatik oleh pengkompil apabila memilih pengoptimuman tahap 2, 3 atau. Pengoptimuman ini mengurangkan saiz kod, tetapi ia boleh mengurangkan kelajuan pelaksanaan dan kebolehnyahpenyahpepijatan kod.
Abstraksi prosedur boleh dilumpuhkan pada tahap pengoptimuman yang lebih tinggi menggunakan pilihan -mno-pa, atau boleh didayakan pada tahap pengoptimuman yang lebih rendah (tertakluk kepada lesen anda) dengan menggunakan -mpa. Ia boleh dilumpuhkan untuk objek file menggunakan -mno-pa-on-file=filenama, atau dilumpuhkan untuk fungsi dengan menggunakan -mno-pa on function= function.
Di dalam kod sumber anda, abstraksi prosedur boleh dilumpuhkan untuk fungsi dengan menggunakan _attribute_ ( (nopa)) dengan definisi fungsi, atau dengan menggunakan _nopa, yang berkembang kepada atribut ( (nopa, noinline)) dan dengan itu menghalang fungsi inlining daripada berlaku dan terdapat abstraksi kod sebaris.
Kunci sokongan bit dalam pragma Konfigurasi #pragma kini boleh digunakan untuk menentukan bit kunci AVR serta bit konfigurasi yang lain. Semak maklumat cip avr. html file (disebutkan di atas) untuk pasangan tetapan/nilai untuk digunakan dengan pragma ini.
Sokongan peranti baharu Sokongan tersedia untuk bahagian berikut: AVR28DA128, AVR64DA128, AVR32DA128 dan AVR48DA128.

Versi 2.05

Lebih banyak sedikit untuk wang anda Versi macOS pengkompil dan pengurus lesen ini kini merupakan aplikasi 64-bit. Ini akan memastikan bahawa pengkompil akan memasang dan berjalan tanpa amaran pada versi macOS terkini.
Objek const dalam memori program Pengkompil kini boleh meletakkan objek yang layak const dalam memori Flash program, dan bukannya meletakkan objek ini dalam RAM. Pengkompil telah diubah suai supaya data global yang memenuhi syarat const disimpan dalam memori kilat program dan data ini boleh diakses secara langsung dan tidak langsung menggunakan arahan memori program yang sesuai. Ciri baharu ini didayakan secara lalai tetapi boleh dilumpuhkan menggunakan pilihan -mno-const-data-in-progmem. Untuk seni bina avrxmega3 dan avrtiny, ciri ini tidak diperlukan dan sentiasa dilumpuhkan, kerana memori program dipetakan ke dalam ruang alamat data untuk peranti ini.
Standard secara percuma Versi tidak berlesen (Percuma) pengkompil ini kini membenarkan pengoptimuman sehingga dan termasuk tahap 2. Ini akan membenarkan output yang serupa, walaupun tidak serupa, kepada apa yang mungkin sebelum ini menggunakan lesen Standard.
Selamat datang AVRASM2 Penghimpun AVRASM2 untuk peranti 8-bit kini disertakan dalam pemasang pengkompil XC8. Penghimpun ini tidak digunakan oleh pengkompil XC8, tetapi tersedia untuk projek berdasarkan sumber pemasangan tulisan tangan.
Sokongan peranti baharu Sokongan tersedia untuk bahagian berikut: ATMEGA1608, ATMEGA1609, ATMEGA808 dan ATMEGA809.

Versi 2.00

Pemandu peringkat atasan Pemacu baharu, dipanggil xc8-cc, kini terletak di atas pemacu avr-gcc sebelumnya dan pemacu xc8, dan ia boleh memanggil pengkompil yang sesuai berdasarkan pemilihan peranti sasaran. Pemacu ini menerima pilihan gaya GCC, yang sama ada diterjemahkan untuk atau dihantar kepada pengkompil yang sedang dilaksanakan. Pemacu ini membenarkan set pilihan yang serupa dengan semantik yang serupa untuk digunakan dengan mana-mana sasaran AVR atau PIC dan dengan itu merupakan cara yang disyorkan untuk menggunakan pengkompil. Jika perlu, pemacu avr-gcc lama boleh dipanggil terus menggunakan pilihan gaya lama yang diterima dalam versi pengkompil terdahulu.

Antara Muka C Biasa Pengkompil ini kini boleh mematuhi Antara Muka Biasa C MPLAB, membolehkan kod sumber dialihkan dengan lebih mudah merentasi semua pengkompil MPLAB XC. Pilihan -mext=cci meminta ciri ini, mendayakan sintaks alternatif untuk banyak sambungan bahasa.

Pemandu perpustakaan baru Pemandu pustakawan baharu diletakkan di atas pustakawan PIC sebelumnya dan pustakawan avr-ar AVR. Pemacu ini menerima pilihan gaya pengarkib GCC, yang sama ada diterjemahkan untuk atau dihantar kepada pustakawan yang sedang dilaksanakan. Pemacu baharu membenarkan set pilihan serupa dengan semantik serupa digunakan untuk mencipta atau memanipulasi mana-mana perpustakaan PIC atau AVR file dan dengan itu cara yang disyorkan untuk memanggil pustakawan. Jika diperlukan untuk projek warisan, pustakawan terdahulu boleh dipanggil terus menggunakan pilihan gaya lama yang diterima dalam versi pengkompil terdahulu.

Isu Migrasi

Berikut ialah ciri yang kini dikendalikan secara berbeza oleh pengkompil. Perubahan ini mungkin memerlukan pengubahsuaian pada kod sumber anda jika mengalihkan kod ke versi pengkompil ini. Nombor versi dalam subtajuk menunjukkan versi pengkompil pertama yang menyokong perubahan berikut.

Versi 2.40

tiada.

Versi 2.39 (Keluaran Keselamatan Fungsian)

tiada.

Versi 2.36

tiada.

Versi 2.35

Pengendalian rentetan ke pangkalan (XCS-2420) Untuk memastikan konsistensi dengan penyusun XC lain, fungsi rentetan ke XC8, seperti strtol () dsb., tidak lagi akan cuba menukar rentetan input jika pangkalan yang ditentukan adalah lebih besar daripada 36 dan sebaliknya akan menetapkan errno kepada EINVAL. Piawaian C tidak menyatakan kelakuan fungsi apabila nilai asas ini melebihi.

Pengoptimuman kelajuan yang tidak sesuai Pengoptimuman abstraksi prosedur sedang didayakan apabila memilih pengoptimuman tahap 3 (-03). Pengoptimuman ini mengurangkan saiz kod dengan mengorbankan kelajuan kod, jadi tidak sepatutnya dilakukan. Projek yang menggunakan tahap pengoptimuman ini mungkin melihat perbezaan dalam saiz kod dan kelajuan pelaksanaan apabila dibina dengan keluaran ini.

Fungsi perpustakaan Kod untuk kebanyakan fungsi perpustakaan C standard kini datang daripada Perpustakaan Standard Bersepadu Microchip, yang mungkin menunjukkan tingkah laku yang berbeza dalam beberapa keadaan berbanding dengan yang disediakan oleh perpustakaan avr-libc dahulu. Untuk exampOleh itu, ia tidak lagi perlu untuk memautkan dalam perpustakaan lprintf_flt (-print _flt pilihan) untuk menghidupkan sokongan IO berformat untuk penentu format apungan. Ciri IO pintar Perpustakaan Standard Bersatu Microchip menjadikan pilihan ini berlebihan. Selain itu, penggunaan rutin akhiran _p untuk rentetan dan fungsi ingatan (cth strcpy_P () dsb.. ) yang beroperasi pada rentetan const dalam denyar tidak lagi diperlukan. Rutin C standard (cth strcpy ()) akan berfungsi dengan betul dengan data sedemikian apabila ciri const-data-in-program-memory didayakan.

Versi 2.32

tiada.

Versi 2.31

tiada.

Versi 2.30

tiada.

Versi 2.29 (Keluaran Keselamatan Fungsian)

tiada.

Versi 2.20

Reka letak DFP diubah Pengkompil kini menganggap reka letak berbeza yang digunakan oleh DFP (Pek Keluarga Peranti). Ini bermakna DFP yang lebih lama mungkin tidak berfungsi dengan keluaran ini dan pengkompil yang lebih lama tidak akan dapat menggunakan DFP yang terkini.

Versi 2.19 (Keluaran Keselamatan Fungsian)

tiada.

Versi 2.10

tiada

Versi 2.05

Objek Const dalam memori program Ambil perhatian bahawa secara lalai, objek const-qualfiied akan diletakkan dan diakses dalam memori program (seperti yang diterangkan di sini) . Ini akan menjejaskan saiz dan kelajuan pelaksanaan projek anda, tetapi harus mengurangkan penggunaan RAM. Ciri ini boleh dilumpuhkan, jika perlu, menggunakan pilihan -mnoconst- da ta-in-progmem.

Versi 2.00

Fius konfigurasi Fius konfigurasi peranti kini boleh diprogramkan menggunakan pragma konfigurasi diikuti dengan pasangan nilai tetapan untuk menentukan keadaan fius, cth.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Objek dan fungsi mutlak Objek dan fungsi kini boleh diletakkan pada alamat tertentu dalam ingatan menggunakan penentu CCI _at (alamat), contohnyaample: #include int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Hujah kepada penentu ini mestilah pemalar yang mewakili alamat di mana bait atau arahan pertama akan diletakkan. Alamat RAM ditunjukkan dengan menggunakan offset 0x800000. Dayakan CCI untuk menggunakan ciri ini.
Sintaks fungsi gangguan baharu Pengkompil kini menerima penentu sampukan (num) CCI untuk menunjukkan bahawa fungsi C ialah pengendali sampukan. Penentu mengambil nombor gangguan, contohnyaample: #include gangguan kekosongan(SPI STC_ vect _num) spi Isr(kosong) { … }

Isu Tetap

Berikut adalah pembetulan yang telah dibuat kepada pengkompil. Ini mungkin membetulkan pepijat dalam kod yang dijana atau mengubah operasi pengkompil kepada yang dimaksudkan atau ditentukan oleh panduan pengguna. Nombor versi dalam subtajuk menunjukkan versi pengkompil pertama yang mengandungi pembetulan untuk isu yang berikutnya. Label dalam kurungan dalam tajuk ialah pengenalan isu tersebut dalam pangkalan data penjejakan. Ini mungkin berguna jika anda perlu menghubungi sokongan.

Ambil perhatian bahawa beberapa isu khusus peranti dibetulkan dalam Pek Keluarga Peranti (DFP) yang dikaitkan dengan peranti. Lihat Pengurus Pek MPLAB untuk mendapatkan maklumat tentang perubahan yang dibuat pada DFP dan untuk memuat turun pek terkini.

Versi 2.40

Terlalu santai (XCS-2876) Apabila menggunakan pilihan -mrelax, pengkompil tidak memperuntukkan beberapa bahagian bersama-sama, menyebabkan saiz kod yang kurang optimum. Ini mungkin berlaku dengan kod yang menggunakan perpustakaan MUSL baharu atau dengan simbol yang lemah.
Ciri pemetaan tidak dilumpuhkan seperti yang dinyatakan dalam amaran (XCS-2875) Ciri kos-data-dalam-config mappedprogmem bergantung pada ciri kos-data-dalam-proem yang didayakan. Jika ciri kos-data-ipconfig-mapped-proem telah didayakan secara eksplisit menggunakan pilihan dan ciri kos-data-inprogmem telah dilumpuhkan, langkah pautan gagal, walaupun mesej amaran menyatakan bahawa cons data- in-config-mapped- ciri proem telah dilumpuhkan secara automatik, yang tidak betul sepenuhnya. Ciri const-data-in-config-mapped-proem kini dilumpuhkan sepenuhnya dalam situasi ini.
Perubahan DFP untuk mengakses NVMCTRL dengan betul (XCS-2848) Kod permulaan masa jalan yang digunakan oleh peranti AVR64EA tidak mengambil kira bahawa daftar NVMCTRL berada di bawah Configuration Change Protection (CCP) dan tidak dapat menetapkan IO SFR ke halaman yang digunakan oleh const-data-in configmapped-proem compiler ciri. Perubahan yang dibuat dalam AVR-Ex_DFP versi 2.2.55 akan membenarkan kod permulaan masa jalan untuk menulis dengan betul pada daftar ini.
Perubahan DFP untuk mengelakkan pemetaan kilat (XCS-2847) Penyelesaian untuk masalah dengan ciri peranti pemetaan denyar yang dilaporkan dalam AVR128DA28/32/48/64 Silicon Errata (DS80000882) telah dilaksanakan. Ciri pengkompil const-data-in-config-mapped-proem tidak akan digunakan secara lalai untuk peranti yang terjejas dan perubahan ini akan muncul dalam AVR-Ex_DFP versi 2.2.160.
Ralat binaan dengan sinhf atau coshf (XCS-2834) Percubaan untuk menggunakan fungsi pustaka sinhf () atau coshf () mengakibatkan ralat pautan, menerangkan rujukan yang tidak ditentukan. Fungsi yang hilang yang dirujuk kini telah dimasukkan dalam pengedaran pengkompil.
Ralat binaan dengan nopa (XCS-2833) Menggunakan atribut nopa dengan fungsi yang mempunyai nama pemasangnya ditentukan menggunakan sebagai () mencetuskan mesej ralat daripada pemasang. Gabungan ini tidak mungkin.
Kegagalan fungsi variadic dengan hujah penunjuk (XCS-2755, XCS-2731) Fungsi dengan bilangan argumen yang berubah-ubah menjangkakan penunjuk 24-bit (jenis _memo) dihantar dalam senarai argumen berubah apabila ciri kos-data-dalam-proem didayakan. Argumen yang menjadi penunjuk kepada memori data telah dihantar sebagai objek 16-bit, menyebabkan kegagalan kod apabila ia akhirnya dibaca. Apabila ciri data dalam proem keburukan didayakan, semua hujah penunjuk 16-bit kini ditukar kepada penunjuk 24-bit. fungsi perpustakaan strtoxxx gagal (XCS-2620) Apabila ciri const-data-in-proem didayakan, parameter enter dalam fungsi perpustakaan strtoxxx tidak dikemas kini dengan betul untuk argumen rentetan sumber yang tiada dalam memori program.
Makluman untuk hantaran tidak sah (XCS-2612) Pengkompil kini akan mengeluarkan ralat jika ciri kos dalam proem didayakan dan alamat literal rentetan dibuang secara eksplisit ke ruang alamat data (menggugurkan kelayakan const), contohnyaample, (uint8 t *) “Hello World!”. Amaran adalah isu jika alamat mungkin tidak sah apabila penunjuk data const dihantar secara eksplisit ke ruang alamat data.
Peletakan objek const yang tidak dimulakan (XCS-2408) Objek const dan const v olatile yang tidak dimulakan tidak diletakkan dalam memori program pada peranti yang memetakan semua atau sebahagian daripada memori program mereka ke dalam ruang alamat data. Untuk peranti ini, objek sedemikian kini diletakkan dalam memori program, menjadikan operasinya konsisten dengan peranti lain .

Versi 2.39 (Keluaran Keselamatan Fungsian)

tiada.

Versi 2.36

Ralat semasa melambatkan (XCS-2774) Perubahan kecil dalam lalai Pengoptimuman mod percuma menghalang pelipatan berterusan ungkapan operan kepada kelewatan fungsi terbina dalam, menyebabkan mereka dianggap sebagai bukan kenalan dan mencetuskan ralat: _buil tin avr delay_ cycles expect ac ompile pemalar integer masa.

Versi 2.35

Peruntukan bersebelahan menggunakan _at (XCS-2653) Peruntukan bersebelahan tempat berbilang objek dalam bahagian dengan nama yang sama dan penggunaan di () tidak berfungsi dengan betul. Untuk example: constchararrl [ ] pada tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; kos char arr2[ ] pada tri butte ((bahagian(“.my s eke”))) = {Lembu, Lembu FE }; sepatutnya letak arr2 sejurus selepas aril.
Menentukan alamat mula bahagian (XCS-2650) Pilihan -Wal, –section-start secara senyap-senyap gagal meletakkan bahagian pada alamat mula yang dicalonkan. Isu ini telah dibetulkan untuk mana-mana bahagian yang dinamakan tersuai; walau bagaimanapun, ia tidak akan berfungsi untuk mana-mana bahagian standard, seperti . teks atau . bss, yang mesti diletakkan menggunakan pilihan -Wl, -T.
Penyambung ranap apabila berehat (XCS-2647) Apabila pengoptimuman -relax didayakan dan terdapat kod atau bahagian data yang tidak sesuai dengan memori yang tersedia, pemaut ranap. Kini, dalam keadaan sedemikian, mesej ralat dikeluarkan sebaliknya.
Akses EEPROM buruk (XCS-2629) Rutin blok leproma _read_ tidak berfungsi dengan betul pada peranti Mega apabila pilihan -monist-data-in-proem didayakan (iaitu keadaan lalai), mengakibatkan memori EEPROM tidak dibaca dengan betul.
Peruntukan memori tidak sah (XCS-2593, XCS-2651) Apabila pilihan pemaut -Teks atau -Tata (contohnyaample melalui menggunakan pilihan pemacu -Wl) ditentukan, asal wilayah teks/data yang sepadan telah dikemas kini; walau bagaimanapun, alamat penamat tidak dilaraskan dengan sewajarnya, yang boleh menyebabkan rantau ini melebihi julat memori peranti sasaran.
Kod gangguan ATtiny tidak sah (XCS-2465) Apabila membina untuk peranti Tatin dan pengoptimuman telah dilumpuhkan (-00), fungsi gangguan mungkin telah mencetuskan mesej pemasang operan di luar julat.
Pilihan tidak dilalui (XCS-2452) Apabila menggunakan pilihan -Wl dengan berbilang pilihan pemaut yang dipisahkan koma, tidak semua pilihan pemaut dihantar kepada pemaut.
Ralat membaca memori program secara tidak langsung (XCS-2450) Dalam sesetengah keadaan, pengkompil menghasilkan ralat dalaman (insn tidak dikenali) apabila membaca nilai dua bait dari penuding ke memori program

Versi 2.32

Akses kedua perpustakaan gagal (XCS-2381) Menggunakan versi Windows xc8-ar. exe pengarkib perpustakaan untuk kali kedua untuk mengakses arkib perpustakaan sedia ada mungkin gagal dengan tidak dapat menamakan semula mesej ralat.

Versi 2.31

Kegagalan pengkompil yang tidak dapat dijelaskan (XCS-2367) Apabila berjalan pada platform Windows yang mempunyai direktori sementara sistem ditetapkan ke laluan yang mengandungi titik'.' watak, pengkompil mungkin gagal untuk melaksanakan.

Versi 2.30

Label global tersalah letak selepas menggariskan (XCS-2299) Kod pemasangan tulisan tangan yang meletakkan label global dalam urutan pemasangan yang difaktorkan oleh abstraksi prosedur mungkin tidak diletakkan semula dengan betul.
Kemalangan yang menenangkan (XCS-2287) Menggunakan pilihan -merlad mungkin telah menyebabkan pemaut ranap apabila pengoptimuman kelonggaran lompat ekor cuba mengalih keluar arahan ret yang tidak berada di penghujung bahagian.
Ranap apabila mengoptimumkan label sebagai nilai (XCS-2282) Kod menggunakan sambungan bahasa GNU C "Label sebagai nilai" mungkin telah menyebabkan pengoptimuman abstraksi prosedur ranap, dengan ralat pembetulan rentang VMA Digariskan.
Tidak begitu const (XCS-2271) Prototaip untuk mula () dan fungsi lain daripada tidak lagi menentukan kelayakan kos bukan standard pada penunjuk rentetan yang dikembalikan apabila ciri inprogmem -monist-data dilumpuhkan. Ambil perhatian bahawa dengan peranti avrxmega3 dan avertin, ciri ini didayakan secara kekal.
Pemula yang hilang (XCS-2269) Apabila lebih daripada satu pembolehubah dalam unit terjemahan diletakkan dalam bahagian (menggunakan bahagian atau atribut ((bahagian))), dan pembolehubah yang pertama adalah sifar dimulakan atau tidak mempunyai pemula, pemula untuk pembolehubah lain dalam unit terjemahan yang sama yang diletakkan di bahagian yang sama telah hilang.

Versi 2.29 (Keluaran Keselamatan Fungsian)

tiada.

Versi 2.20

Ralat dengan arahan panjang (XCS-1983) Apabila menggunakan sasaran AVR, pengkompil mungkin telah berhenti dengan a file tidak ditemui ralat, jika baris arahan sangat besar dan mengandungi aksara khas seperti petikan, garis miring ke belakang, dsb.
Bahagian rodata tidak diperuntukkan (XCS-1920) Penyambung AVR gagal menetapkan memori untuk bahagian rodata tersuai apabila membina untuk seni bina avrxmega3 dan avrtiny, yang berpotensi menghasilkan ralat pertindihan memori

Versi 2.19 (Keluaran Keselamatan Fungsian)

tiada.

Versi 2.10

Kegagalan penempatan semula (XCS-1891) Pengalokasi yang paling sesuai ialah meninggalkan 'lubang' memori di antara bahagian selepas kelonggaran penghubung. Selain daripada pemecahan memori, ini meningkatkan kemungkinan terdapat kegagalan penempatan semula pemaut yang berkaitan dengan lompatan relatif pc atau panggilan menjadi keluar dari julat.
Arahan tidak diubah oleh kelonggaran (XCS-1889) Kelonggaran pemaut tidak berlaku untuk arahan lompat atau panggilan yang sasarannya boleh dicapai jika dilonggarkan.
hilang kefungsian (XCSE-388) Beberapa definisi daripada , seperti clock_ div_ t dan clock_prescale_set (), tidak ditakrifkan untuk peranti, termasuk ATmega324PB, ATmega328PB, ATtiny441 dan ATtiny841.
Tiada makro Makro prapemproses_ xcs _MODE_, _xcs VERSION, _xc dan xcs tidak ditakrifkan secara automatik oleh pengkompil. Ini kini tersedia.

Versi 2.05

Ralat pengkompil dalaman (XCS-1822) Apabila membina di bawah Windows, ralat pengkompil dalaman mungkin telah dihasilkan semasa mengoptimumkan kod.
Limpahan RAM tidak dikesan (XCS-1800, XCS-1796) Program yang melebihi RAM yang tersedia tidak dikesan oleh pengkompil dalam beberapa situasi, mengakibatkan kegagalan kod masa jalan.
Memori denyar ditinggalkan (XCS-1792) Untuk peranti avrxmega3 dan avrtiny, bahagian memori denyar mungkin dibiarkan tidak diprogramkan oleh MPLAB X IDE.
Kegagalan untuk melaksanakan utama (XCS-1788) Dalam sesetengah situasi di mana program tidak mempunyai pembolehubah global yang ditentukan, kod permulaan masa jalan tidak keluar dan fungsi utama () tidak pernah dicapai.
Maklumat memori yang salah (XCS-1787) Untuk peranti avrxmega3 dan avrtiny, program bersaiz avr melaporkan bahawa data baca sahaja menggunakan RAM dan bukannya memori program.
Bacaan memori program salah (XCS-1783) Projek yang disusun untuk peranti dengan memori program dipetakan ke dalam ruang alamat data dan yang mentakrifkan objek menggunakan makro/atribut PROGMEM mungkin telah membaca objek ini dari alamat yang salah.
Ralat dalaman dengan atribut (XCS-1773) Ralat dalaman berlaku jika anda menentukan objek penunjuk dengan
Token _at () atau atribut() di antara nama penunjuk dan jenis yang dinyahrujuk, contohnyaample, char *
_at ( 0x80015 0) cp; Amaran kini dikeluarkan jika kod tersebut ditemui.
Kegagalan untuk melaksanakan utama (XCS-1780, XCS-1767, XCS-1754) Menggunakan pembolehubah EEPROM atau mentakrifkan fius menggunakan pragma konfigurasi mungkin telah menyebabkan pengamulaan data yang salah dan/atau mengunci pelaksanaan program dalam kod permulaan masa jalan, sebelum mencapai main () .
Ralat fius dengan peranti kecil (XCS-1778, XCS-1742) Peranti attiny4/5/9/10/20/40 mempunyai panjang fius yang salah yang dinyatakan dalam pengepalanya files yang membawa kepada ralat pemaut apabila cuba membina kod yang menentukan fius.
Kesalahan pembahagian (XCS-1777) Ralat pembahagian terputus-putus telah diperbetulkan.
Kemalangan pemasang (XCS-1761) Penghimpun avr-as mungkin telah ranap apabila pengkompil dijalankan di bawah Ubuntu 18.
Objek tidak dibersihkan (XCS-1752) Objek tempoh storan statik yang tidak dimulakan mungkin tidak dikosongkan oleh kod permulaan masa jalan.
Spesifikasi peranti yang bercanggah diabaikan (XCS-1749) Pengkompil tidak menghasilkan ralat apabila berbilang pilihan spesifikasi peranti digunakan dan menunjukkan peranti berbeza.
Kerosakan memori secara timbunan (XCS-1748) Simbol mula heap_ telah salah ditetapkan, mengakibatkan kemungkinan pembolehubah biasa dirosakkan oleh timbunan.
Ralat penempatan semula pemaut (XCS-1739) Ralat penempatan semula pemaut mungkin telah dipancarkan apabila kod mengandungi rjmp atau rcall dengan sasaran tepat 4k bait jauhnya.

Versi 2.00

tiada.

Isu Diketahui

Berikut adalah had dalam operasi pengkompil. Ini mungkin sekatan pengekodan umum, atau
penyelewengan daripada maklumat yang terkandung dalam manual pengguna. Label dalam kurungan dalam tajuk ialah pengenalan isu tersebut dalam pangkalan data penjejakan. Ini mungkin memberi manfaat jika anda perlu menghubungi sokongan. Item yang tidak mempunyai label adalah had yang menerangkan mod operandi dan yang berkemungkinan kekal berkuat kuasa secara kekal.

Penyepaduan IDE MPLAB X

Penyepaduan IDE MPLAB Jika Pengkompil hendak digunakan daripada MPLAB IDE, maka anda mesti memasang MPLAB IDE sebelum memasang Pengkompil.

Penjanaan Kod

Kegagalan peruntukan memori PA (XCS-2881) Apabila menggunakan pengoptimum abstraksi prosedur, pemaut mungkin melaporkan ralat peruntukan memori apabila saiz kod hampir dengan jumlah memori program yang tersedia pada peranti, walaupun program itu sepatutnya dapat memuatkan ruang yang tersedia.
Tidak begitu pintar Smart-IO (XCS-2872) Ciri smart-io pengkompil akan menjana kod yang sah tetapi tidak optimum untuk fungsi sprint jika ciri coast-data-in-proem telah dilumpuhkan atau jika peranti mempunyai semua denyarnya dipetakan ke dalam memori data.
Malah kurang pintar Smart-IO (XCS-2869) Ciri smart-io pengkompil akan menghasilkan kod yang sah tetapi suboptimum apabila pilihan tin -floe dan -fno-buil digunakan.
Peletakan data baca sahaja suboptimum (XCS-2849) Pemaut pada masa ini tidak mengetahui bahagian memori APPCODE dan APPDATA, mahupun bahagian [Tidak-]Baca-Semasa-Tulis dalam peta ingatan. Akibatnya, terdapat kemungkinan kecil bahawa pemaut mungkin memperuntukkan data baca sahaja dalam kawasan memori yang tidak sesuai. Peluang data salah letak meningkat jika ciri coast-data-in-pragma didayakan, terutamanya jika ciri coast-data-in-config-mapped-proem turut didayakan. Ciri-ciri ini boleh dilumpuhkan jika diperlukan.
Objek file pesanan pemprosesan (XCS-2863) Urutan di mana objek files akan diproses oleh pemaut mungkin berbeza berdasarkan penggunaan pengoptimuman abstraksi prosedur (pilihan -mpa). Ini hanya akan menjejaskan kod yang mentakrifkan fungsi lemah merentas berbilang modul.
Ralat pemaut dengan mutlak (XCS-2777) Apabila objek telah dibuat mutlak pada alamat pada permulaan RAM dan objek yang tidak dimulakan juga telah ditakrifkan, ralat pemaut mungkin dicetuskan.
ID bangun tidur pendek (XCS-2775) Untuk peranti ATA5700/2, daftar PHID0/1 hanya ditakrifkan sebagai lebar 16 bit, bukannya lebar 32 bit.
Ranap pemaut apabila memanggil simbol (XCS-2758) Pemaut mungkin ranap jika pilihan pemacu -merlad digunakan apabila kod sumber memanggil simbol yang telah ditakrifkan menggunakan pilihan pemaut -Wl, –defsym.
Permulaan salah (XCS-2679) Terdapat percanggahan antara nilai awal untuk beberapa objek bersaiz bait global/statik diletakkan dalam memori data dan tempat pembolehubah akan diakses semasa masa jalan.
bermula salah set kosong (XCS-2652) Dalam keadaan di mana rentetan subjek untuk penukaran dengan dinyatakan () mengandungi apa yang kelihatan sebagai nombor titik terapung dalam format eksponen dan terdapat aksara yang tidak dijangka selepas aksara e, maka alamat kosong, jika disediakan, akan menunjuk kepada aksara selepas e dan bukan e itu sendiri. Untuk example: stated("hooey", kosong); akan mengakibatkan titik kosong kepada aksara x.
Panggilan fungsi tidak langsung yang buruk (XCS-2628) Dalam sesetengah keadaan, panggilan fungsi yang dibuat melalui penuding fungsi yang disimpan sebagai sebahagian daripada struktur mungkin gagal.
strtof mengembalikan sifar untuk terapung heksadesimal (XCS-2626) Perpustakaan berfungsi strtof () et al dan scanf () et al, akan sentiasa menukar nombor titik terapung heksadesimal yang tidak menentukan eksponen kepada
sifar. Untuk example: stator("Owl", &kosong); akan mengembalikan nilai 0, bukan 1.
Pemesejan penasihat tindanan tidak tepat (XCS-2542, XCS-2541) Dalam sesetengah keadaan, amaran penasihat tindanan mengenai rekursi atau tindanan tak tentu yang digunakan (mungkin melalui penggunaan alloca()) tidak dikeluarkan.
Kegagalan dengan kod gangguan pendua (XCS-2421) Jika lebih daripada satu fungsi gangguan mempunyai badan yang sama, pengkompil mungkin mempunyai output untuk satu fungsi gangguan memanggil yang lain. Ini akan menyebabkan semua daftar panggilan terkumpul disimpan tanpa perlu, dan gangguan akan didayakan walaupun sebelum epilog pengendali gangguan semasa dijalankan, yang boleh menyebabkan kegagalan kod.
Objek const tiada dalam memori program (XCS-2408) Untuk projek avrxmega3 dan avertins, objek const yang tidak sesuai diletakkan ke dalam memori data, walaupun amaran menunjukkan bahawa ia telah diletakkan dalam memori program. Ini tidak akan menjejaskan peranti yang tidak mempunyai memori program yang dipetakan ke dalam ruang memori data, dan ia tidak akan menjejaskan mana-mana objek yang dimulakan.
Output buruk dengan laluan DFP tidak sah (XCS-2376) Jika pengkompil dipanggil dengan laluan DFP yang tidak sah dan 'spesifikasi' file wujud untuk peranti yang dipilih, pengkompil tidak melaporkan pek keluarga peranti yang hilang dan sebaliknya memilih 'spesifikasi' file, yang kemudiannya mungkin membawa kepada output yang tidak sah. 'Spesifikasi' files mungkin tidak terkini dengan DFP yang diedarkan dan bertujuan untuk digunakan dengan ujian pengkompil dalaman sahaja.
Pertindihan memori tidak dapat dikesan (XCS-1966) Pengkompil tidak mengesan pertindihan memori objek yang dibuat mutlak pada alamat (melalui di ()) dan objek lain menggunakan penentu bahagian () dan yang dipautkan ke alamat yang sama.
Kegagalan dengan fungsi perpustakaan dan _meme (XCS-1763) Fungsi apungan limbik yang dipanggil dengan hujah dalam ruang alamat _memo mungkin gagal. Ambil perhatian bahawa rutin perpustakaan dipanggil daripada beberapa operator C, jadi, contohnyaample, kod berikut terjejas: return regFloatVar > memxFloatVar;
Pelaksanaan limbik terhad (AVRTC-731) Untuk produk ATTiny4/5/9/10/20/40, pelaksanaan perpustakaan C / Matematik standard dalam limbik adalah sangat terhad atau tidak ada.
Had memori program (AVRTC-732) Imej memori program melebihi 128 kb disokong oleh rantai alat; walau bagaimanapun, terdapat contoh yang diketahui bahawa pemaut dihentikan tanpa kelonggaran dan tanpa mesej ralat yang berguna dan bukannya menjana stub fungsi yang diperlukan apabila pilihan -relax digunakan.
Had ruang nama (AVRTC-733) Ruang alamat yang dinamakan disokong oleh rantai alat, tertakluk kepada pengehadan yang dinyatakan dalam bahagian panduan pengguna Kelayakan Jenis Khas.
Zon masa The fungsi perpustakaan menganggap GMT dan tidak menyokong zon waktu tempatan, oleh itu waktu tempatan () akan kembali pada masa yang sama seperti gummite (), contohnyaample.

SOKONGAN PELANGGAN

file:///Applications/microehip/xc8/v 2 .40/docs/Baca saya_X C 8_ untuk A VR. htm

Dokumen / Sumber

Perisian Pengkompil MPLAB XC8 C MICROCHIP [pdf] Manual Pemilik
MPLAB XC8 C, Perisian Pengkompil MPLAB XC8 C, Perisian Pengkompil, Perisian

Rujukan

Tinggalkan komen

Alamat e-mel anda tidak akan diterbitkan. Medan yang diperlukan ditanda *