မိုက်ခရိုချီ-လိုဂို

MICROCHIP XC8 C Compiler ဗားရှင်း 2.45 AVR MCU အတွက် ထုတ်ဝေမှု မှတ်စုများ

MICROCHIP-XC8-C-Compiler-Version-2-45-Release-Notes-for-AVR-MCU-PRO

ထုတ်ကုန်အချက်အလက်

MPLAB XC8 C Compiler သည် Microchip AVR စက်ပစ္စည်းများကို ပစ်မှတ်ထားရန် အသုံးပြုသည့် ဆော့ဖ်ဝဲကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည် C ကုဒ်ကို စုစည်းပြီး executable ထုတ်ပေးရန် ဒီဇိုင်းထုတ်ထားသည်။ files ဤစက်ပစ္စည်းများအတွက်။ ဤအသုံးပြုသူလက်စွဲတွင် ကိုးကားထားသည့် ကွန်ပလော်ဗားရှင်းသည် 2.45 ဖြစ်ပြီး ဩဂုတ်လ 18 ရက်၊ 2023 တွင် တရားဝင်တည်ဆောက်သည့်ရက်စွဲဖြင့် 2.41၊ 8 ဖေဖော်ဝါရီ 2023၊ တွင်တည်ဆောက်ထားသည်။ ကွန်ပလီသည်တွင် အပိုအချက်အလက်များကိုပေးဆောင်သည့် Functional Safety Manual ပါရှိသည်။ လုပ်ဆောင်ချက်ဆိုင်ရာ ဘေးကင်းသော အက်ပ်လီကေးရှင်းများဖြင့် MPLAB XC compilers ကို အသုံးပြုသည့်အခါ လမ်းညွှန်ချက်။ လုပ်ငန်းခွင်ဘေးကင်းရေးလိုင်စင်ကို သင်ဝယ်ယူသောအခါ ဤလမ်းညွှန်ချက်သည် စာရွက်စာတမ်းအထုပ်တွင် ပါဝင်သည်။ MPLAB XC8 C Compiler သည် ထွက်ရှိချိန်တွင် ရရှိနိုင်သော 8-bit AVR MCU စက်ပစ္စည်းအားလုံးကို ပံ့ပိုးပေးပါသည်။ avr_chipinfo.html ကို သင် ကိုးကားနိုင်ပါသည်။ file ပံ့ပိုးပေးထားသော စက်များအားလုံး၏စာရင်းနှင့် ၎င်းတို့၏ဖွဲ့စည်းပုံဘစ်ဆက်တင်များအတွက် စုစည်းသူ၏ doc လမ်းညွှန်တွင်။ ရရှိနိုင်သော MPLAB XC8 compiler ၏ မတူညီသော ထုတ်ဝေမှုများ ရှိပါသည်။ လိုင်စင်ရ (PRO) ထုတ်ဝေမှုသည် အခမဲ့ထုတ်ဝေမှုထက် ပိုမိုကောင်းမွန်အောင်လုပ်ဆောင်မှုအဆင့်ကို ပေးပါသည်။ compiler ကို လိုင်စင်ရ ထုတ်ကုန်အဖြစ် အသက်သွင်းရန်၊ activation key တစ်ခုကို ဝယ်ယူရန် လိုအပ်ပါသည်။ သို့သော်လည်း လိုင်စင်မဲ့ဗားရှင်းကို လိုင်စင်မရှိဘဲ ရက်အကန့်အသတ်မရှိ အသုံးပြုနိုင်သည်။ လုပ်ဆောင်နိုင်သော ဘေးကင်းရေး အသုံးချပရိုဂရမ်များအတွက် MPLAB XC8 Functional Safety compiler ကို ရရှိနိုင်ပါသည်။ ၎င်းသည် အသက်သွင်းရန်အတွက် Microchip မှ ဝယ်ယူသည့် လုပ်ငန်းဆိုင်ရာ ဘေးကင်းလုံခြုံရေးလိုင်စင် လိုအပ်ပါသည်။ စဖွင့်ပြီးသည်နှင့်၊ ပိုမိုကောင်းမွန်အောင်လုပ်ဆောင်မှုအဆင့်များနှင့် compiler အင်္ဂါရပ်အားလုံးကို အကျိုးရှိရှိအသုံးပြုနိုင်ပါသည်။ MPLAB XC Functional Safety Compiler သည် Network Server License ကို ပံ့ပိုးပေးပါသည်။ တပ်ဆင်ခြင်း၊ အသက်သွင်းခြင်း၊ လိုင်စင်အမျိုးအစားများနှင့် ရွှေ့ပြောင်းခြင်းဆိုင်ရာ ပြဿနာများအကြောင်း အသေးစိတ်အချက်အလက်များကို ထည့်သွင်းခြင်းနှင့် လိုင်စင်ပေးခြင်း MPLAB XC C Compilers (DS50002059) စာရွက်စာတမ်းတွင် တွေ့ရှိနိုင်ပါသည်။

ထုတ်ကုန်အသုံးပြုမှု ညွှန်ကြားချက်များ

  1. MPLAB XC8 C Compiler ဆော့ဖ်ဝဲလ်ကို အသုံးမပြုမီ၊ Microchip AVR စက်ပစ္စည်းများကို ပစ်မှတ်ထားရန် အထူးအရေးကြီးသော အချက်အလက်နှင့် ညွှန်ကြားချက်များအတွက် အသုံးပြုသူလက်စွဲကို ဖတ်ပါ။
  2. 8-bit PIC စက်များအတွက် ကွန်ပလီတာကို သင်အသုံးပြုနေပါက၊ PIC စာရွက်စာတမ်းအတွက် MPLAB XC8 C Compiler Release Notes ကို ကိုးကားပါ။
  3. သင်၏လည်ပတ်မှုစနစ်သည် compiler ကိုလည်ပတ်ရန်အတွက်စနစ်လိုအပ်ချက်များနှင့်ကိုက်ညီကြောင်းသေချာပါစေ။ macOS အတွက် binaries များကို ကုဒ်လက်မှတ်ထိုးပြီး မှတ်တမ်းတင်ထားသည်။ MPLAB XC ကွန်ရက်လိုင်စင်ဆာဗာကို Microsoft Windows 10 နှင့်အထက်၊ Ubuntu 18.04 နှင့်အထက်၊ နှင့် macOS 10.15 နှင့်အထက်အတွက် ရနိုင်ပါသည်။ MPLAB XC Network License Server ကို ဤလည်ပတ်မှုစနစ်များတွင် မစမ်းသပ်ထားကြောင်း သတိပြုပါ။
  4. MPLAB XC ကွန်ရက်လိုင်စင်ဆာဗာသည် ကွန်ရက်လိုင်စင်များ (SW006021-VM) အတွက် virtual machine လိုင်စင်ကို အသုံးပြု၍ ပံ့ပိုးပေးထားသော OS ၏ Virtual Machines တွင် လုပ်ဆောင်နိုင်သည်။ MPLAB XC Network Server ၏ 32-bit ဗားရှင်းအားလုံးကို ဗားရှင်း 3.00 မှစတင်၍ ရပ်ဆိုင်းထားသည်။
  5. MPLAB XC8 C Compiler ကို လိုင်စင်ရ (PRO) ထုတ်ကုန်အဖြစ် အသက်သွင်းရန်၊ စဖွင့်သုံးသော့ကို ဝယ်ယူပါ။ ၎င်းသည် အခမဲ့ဗားရှင်းနှင့် နှိုင်းယှဉ်ပါက ပိုမိုကောင်းမွန်အောင်လုပ်ဆောင်မှုအဆင့်ကို ပေးစွမ်းမည်ဖြစ်သည်။ သို့သော်လည်း လိုင်စင်မဲ့ compiler သည် လိုင်စင်မရှိဘဲ ရက်အကန့်အသတ်မရှိ လုပ်ဆောင်နိုင်သည်။
  6. လုပ်ငန်းဆိုင်ရာ ဘေးကင်းလုံခြုံရေး အက်ပ်လီကေးရှင်းများအတွက် MPLAB XC8 Functional Safety Compiler ကို အသုံးပြုနေပါက၊ ၎င်းကို Microchip မှ ဝယ်ယူထားသော လုပ်ငန်းဆိုင်ရာ ဘေးကင်းရေးလိုင်စင်ဖြင့် အသက်သွင်းရပါမည်။ ဤလိုင်စင်မရှိဘဲ compiler သည် အလုပ်လုပ်မည်မဟုတ်ပါ။ စဖွင့်ပြီးသည်နှင့်၊ သင်သည် မည်သည့် optimization အဆင့်ကိုမဆို ရွေးချယ်နိုင်ပြီး compiler အင်္ဂါရပ်အားလုံးကို အသုံးပြုနိုင်သည်။ ကွန်ရက်ဆာဗာလိုင်စင်ကို MPLAB XC Functional Safety Compiler ၏ ဤထုတ်ဝေမှုမှ ထောက်ခံထားသည်။
  7. MPLAB XC8 C Compiler ၏ တပ်ဆင်ခြင်း၊ အသက်သွင်းခြင်းနှင့် လိုင်စင်ထုတ်ပေးခြင်းဆိုင်ရာ အသေးစိတ်ညွှန်ကြားချက်များအတွက်၊ တပ်ဆင်ခြင်းနှင့် လိုင်စင်ပေးခြင်း MPLAB XC C Compilers (DS50002059) စာရွက်စာတမ်းကို ကိုးကားပါ။
  8. အကယ်၍ သင်သည် အကဲဖြတ်ခွင့်လိုင်စင်အောက်တွင် စုစည်းမှုအား လုပ်ဆောင်နေပါက သင်၏အကဲဖြတ်မှုကာလပြီးဆုံးသည့် 14 ရက်အတွင်းတွင် စုစည်းမှုအတွင်း သတိပေးချက်ရရှိမည်ဖြစ်သည်။ သင်၏ HPA စာရင်းသွင်းမှု ပြီးဆုံးသည့်နေ့မှ 14 ရက်အတွင်း အကယ်၍ သင်သည် အလားတူသတိပေးချက်ကို ထုတ်ပြန်ပါသည်။

ကျော်view

နိဒါန်း
Microchip MPLAB® XC8 C compiler ၏ ယခုထွက်ရှိမှုတွင် အင်္ဂါရပ်အသစ်များ၊ ချွတ်ယွင်းချက်ပြင်ဆင်မှုများနှင့် စက်ပစ္စည်းအသစ်များအတွက် ပံ့ပိုးမှုများစွာပါရှိသည်။

တည်ဆောက်မည့်ရက်စွဲ
ဤ compiler ဗားရှင်း၏တရားဝင်တည်ဆောက်ရက်စွဲသည် 18 သြဂုတ် 2023 ဖြစ်သည်။

ယခင်ဗားရှင်း
ယခင် MPLAB XC8 C compiler ဗားရှင်းသည် 2.41 ဖြစ်ပြီး 8 ခုနှစ် ဖေဖော်ဝါရီလ 2023 ရက်နေ့တွင် တည်ဆောက်ခဲ့သည်။

Functional Safety Manual
လုပ်ငန်းဆိုင်ရာဘေးကင်းရေးလိုင်စင်ကို သင်ဝယ်ယူသောအခါ MPLAB XC စုစည်းမှုများအတွက် လုပ်ဆောင်ချက်ဆိုင်ရာ ဘေးကင်းရေးလက်စွဲစာအုပ်ကို စာရွက်စာတမ်းအထုပ်တွင် ရနိုင်ပါသည်။

အစိတ်အပိုင်းလိုင်စင်များနှင့် ဗားရှင်းများ
AVR MCUs ကိရိယာများအတွက် MPLAB XC8 C Compiler ကို GNU အထွေထွေအများပြည်သူလိုင်စင် (GPL) အောက်တွင် ရေးသားပြီး ဖြန့်ဝေထားသောကြောင့် ၎င်း၏အရင်းအမြစ်ကုဒ်ကို လွတ်လပ်စွာဖြန့်ဝေပြီး အများသူငှာရရှိနိုင်သည်ဟု ဆိုလိုသည်။ GNU GPL အောက်ရှိ ကိရိယာများအတွက် အရင်းအမြစ်ကုဒ်ကို Microchip မှ သီးခြားဒေါင်းလုဒ်လုပ်နိုင်ပါသည်။ website. GNU GPL ကိုသင်ဖတ်နိုင်သည်။ file သင်၏ install directory ၏ subdirectory တွင်တည်ရှိသည်ဟုအမည်ပေးသည်။ GPL ၏ အခြေခံမူများဆိုင်ရာ ယေဘုယျ ဆွေးနွေးချက်ကို ဤနေရာတွင် တွေ့နိုင်ပါသည်။ ခေါင်းစီးအတွက် ပံ့ပိုးကုဒ် files၊ linker scripts နှင့် runtime libraries များသည် ကိုယ်ပိုင်ကုဒ်များဖြစ်ပြီး GPL အောက်တွင် အကျုံးမဝင်ပါ။ ဤ compiler သည် GCC ဗားရှင်း 5.4.0၊ binutils ဗားရှင်း 2.26 နှင့် avr-libc ဗားရှင်း 2.0.0 ကို အသုံးပြုထားသည်။

စနစ်လိုအပ်ချက်များ
MPLAB XC8 C compiler နှင့် ၎င်းအသုံးပြုသော လိုင်စင်ဆော့ဖ်ဝဲကို အောက်ပါ 64-bit ဗားရှင်းများအပါအဝင် လည်ပတ်မှုစနစ်အမျိုးမျိုးအတွက် ရနိုင်သည်- Microsoft® Windows® 10၊ Ubuntu® 18.04၊ macOS® 13.2 (Ventura) ၏ ပရော်ဖက်ရှင်နယ် တည်းဖြတ်မှုများ နှင့် Fedora 34. Windows အတွက် Binaries များကို ကုဒ်လက်မှတ်ထိုးထားသည်။ macOS အတွက် binaries များကို ကုဒ်လက်မှတ်ထိုးပြီး မှတ်တမ်းတင်ထားသည်။ MPLAB XC Network License Server ကို Microsoft Windows 64 နှင့်အထက်အပါအဝင် 10-bit လည်ပတ်မှုစနစ်အမျိုးမျိုးအတွက် ရနိုင်ပါသည်။ Ubuntu 18.04 နှင့် အထက်၊ သို့မဟုတ် macOS 10.15 နှင့်အထက်။ ဆာဗာသည် Windows Server၊ Linux ဖြန့်ဖြူးမှုများ၊ Oracle® Enterprise Linux® နှင့် Red Hat® Enterprise Linux ကဲ့သို့သော အခြားသော လည်ပတ်မှုစနစ်များ၏ ဗားရှင်းအဟောင်းများတွင်လည်း လုပ်ဆောင်နိုင်သည်။ သို့သော် MPLAB XC Network License Server ကို ဤလည်ပတ်မှုစနစ်များတွင် စမ်းသပ်မထားပါ။ MPLAB XC ကွန်ရက်လိုင်စင်ဆာဗာသည် ကွန်ရက်လိုင်စင်များ (SW006021-VM) အတွက် virtual machine လိုင်စင်ကို အသုံးပြု၍ ပံ့ပိုးပေးထားသော OS ၏ Virtual Machines တွင် လုပ်ဆောင်နိုင်သည်။ MPLAB XC Network Server ၏ 32-bit ဗားရှင်းအားလုံးကို ဗားရှင်း 3.00 မှစတင်၍ ရပ်ဆိုင်းထားသည်။

ထောက်ပံ့ပစ္စည်းများ
ဤ compiler သည် ထွက်ရှိချိန်တွင် ရရှိနိုင်သော 8-bit AVR MCU စက်အားလုံးကို ပံ့ပိုးပေးပါသည်။ ပံ့ပိုးထားသော စက်ပစ္စည်းများအားလုံး၏စာရင်းအတွက် avr_chipinfo.html (compiler ၏ doc လမ်းညွှန်တွင်) ကြည့်ပါ။ ဤဖိုင်များသည် စက်တစ်ခုစီအတွက် ဖွဲ့စည်းမှုဘစ်ဆက်တင်များကို စာရင်းပြုစုထားသည်။

ထုတ်ဝေမှုများနှင့် လိုင်စင်အဆင့်မြှင့်တင်မှုများ
MPLAB XC8 compiler ကို လိုင်စင်ရ (PRO) သို့မဟုတ် လိုင်စင်မဲ့ (အခမဲ့) ထုတ်ကုန်အဖြစ် အသက်သွင်းနိုင်ပါသည်။ သင်၏ compiler ကိုလိုင်စင်ရယူရန် activation key တစ်ခုဝယ်ယူရန်လိုအပ်သည်။ လိုင်စင်တစ်ခုသည် အခမဲ့ ထုတ်ကုန်နှင့် နှိုင်းယှဉ်ပါက ပိုမို ကောင်းမွန်အောင် လုပ်ဆောင်နိုင်စေပါသည်။ လိုင်စင်မဲ့ compiler သည် လိုင်စင်မရှိဘဲ ရက်အကန့်အသတ်မရှိ လုပ်ဆောင်နိုင်သည်။ MPLAB XC8 Functional Safety compiler သည် Microchip မှဝယ်ယူသည့် functional safety လိုင်စင်ဖြင့် အသက်သွင်းရပါမည်။ ဤလိုင်စင်မရှိဘဲ compiler သည် အလုပ်လုပ်မည်မဟုတ်ပါ။ စဖွင့်ပြီးသည်နှင့်၊ သင်သည် မည်သည့် optimization အဆင့်ကိုမဆို ရွေးချယ်နိုင်ပြီး compiler အင်္ဂါရပ်အားလုံးကို အသုံးပြုနိုင်သည်။ MPLAB XC Functional Safety Compiler သည် Network Server License ကို ပံ့ပိုးပေးပါသည်။ လိုင်စင်အမျိုးအစားများနှင့် လိုင်စင်ဖြင့် ကွန်ပလီကို တပ်ဆင်ခြင်းဆိုင်ရာ အချက်အလက်အတွက် MPLAB XC C Compilers (DS50002059) တပ်ဆင်ခြင်းနှင့် လိုင်စင်ပေးခြင်း စာရွက်စာတမ်းကို ကြည့်ပါ။

တပ်ဆင်ခြင်းနှင့် အသက်သွင်းခြင်း။
ဤ compiler တွင်ပါရှိသော နောက်ဆုံးပေါ်လိုင်စင်မန်နေဂျာအကြောင်း အရေးကြီးအချက်အလက်များအတွက် ရွှေ့ပြောင်းနေထိုင်မှုပြဿနာများနှင့် ကန့်သတ်ချက်များကဏ္ဍများကို ကြည့်ပါ။ MPLAB IDE ကိုအသုံးပြုပါက၊ ဤကိရိယာကိုမထည့်သွင်းမီ နောက်ဆုံးပေါ် MPLAB X IDE ဗားရှင်း 5.0 သို့မဟုတ် နောက်ပိုင်းတွင် ထည့်သွင်းရန်သေချာပါစေ။ compiler ကိုမထည့်သွင်းမီ IDE မှထွက်ပါ။ .run (Linux) သို့မဟုတ် .app (macOS) compiler installer အပလီကေးရှင်း၊ ဥပမာ XC8-1.00.11403-windows.exe ကိုဖွင့်ပြီး မျက်နှာပြင်ပေါ်ရှိ လမ်းညွှန်ချက်များကို လိုက်နာပါ။ ပုံသေတပ်ဆင်မှုလမ်းညွှန်ကို အကြံပြုထားသည်။ သင်သည် Linux ကိုအသုံးပြုနေပါက၊ သင်သည် terminal နှင့် root အကောင့်ကိုအသုံးပြု၍ compiler ကိုထည့်သွင်းရပါမည်။ စီမံခန့်ခွဲသူအခွင့်အရေးများနှင့်အတူ macOS အကောင့်ကို အသုံးပြု၍ ထည့်သွင်းပါ။ တပ်ဆင်ခြင်းအတွက် အသက်သွင်းခြင်းကို သီးခြားလုပ်ဆောင်နေပြီဖြစ်သည်။ နောက်ထပ်အချက်အလက်များအတွက် MPLAB® XC C Compilers (DS52059) အတွက် စာရွက်စာတမ်းလိုင်စင်မန်နေဂျာကို ကြည့်ပါ။ အကယ်၍ သင်သည် အကဲဖြတ်ခွင့်လိုင်စင်အောက်တွင် စုစည်းမှုကို လုပ်ဆောင်ရန် ရွေးချယ်ပါက၊ သင်သည် သင်၏အကဲဖြတ်မှုကာလ ကုန်ဆုံးပြီး 14 ရက်အတွင်း စုစည်းမှုအတွင်း သတိပေးချက် ရရှိမည်ဖြစ်သည်။ သင်၏ HPA စာရင်းသွင်းမှု ပြီးဆုံးသည့်နေ့မှ 14 ရက်အတွင်း အကယ်၍ သင်သည် အလားတူသတိပေးချက်ကို ထုတ်ပြန်ပါသည်။ XC Network License Server သည် သီးခြားထည့်သွင်းသူဖြစ်ပြီး single-user compiler installer တွင် မပါဝင်ပါ။ XC လိုင်စင်မန်နေဂျာသည် ယခုအခါတွင် ပျံ့နှံ့နေသော ကွန်ရက်လိုင်စင်များကို roaming ပြုလုပ်ခြင်းကို ပံ့ပိုးပေးပါသည်။ မိုဘိုင်းလ်အသုံးပြုသူများအတွက် ရည်ရွယ်၍ ဤလုပ်ဆောင်ချက်သည် ကွန်ရက်ကို အချိန်တိုအတွင်း ဖြတ်တောက်ရန် လိုင်စင်တစ်ခုအား ခွင့်ပြုပေးပါသည်။ ဤအင်္ဂါရပ်ကိုအသုံးပြုခြင်းဖြင့် သင်သည် ကွန်ရက်မှချိတ်ဆက်မှုကိုဖြတ်တောက်နိုင်ပြီး သင်၏ MPLAB XC စုစည်းမှုကို ဆက်လက်အသုံးပြုနိုင်မည်ဖြစ်သည်။ ဤအင်္ဂါရပ်အပေါ် ပိုမိုသိရှိနိုင်စေရန် XCLM ထည့်သွင်းမှု၏ doc ဖိုင်တွဲကို ကြည့်ပါ။ MPLAB X IDE တွင် အမြင်အာရုံဖြင့် roaming ကို စီမံခန့်ခွဲရန် လိုင်စင်များ ဝင်းဒိုး (Tools > Licenses) ပါဝင်သည်။

တပ်ဆင်ခြင်းဆိုင်ရာ ပြဿနာများကို ဖြေရှင်းခြင်း။
Windows operating systems တစ်ခုခုအောက်တွင် compiler ကို install လုပ်ရာတွင် အခက်အခဲများကြုံတွေ့ရပါက အောက်ပါအကြံပြုချက်များကို စမ်းကြည့်ပါ။

  • အက်ဒမင်အဖြစ် install လုပ်ပါ။
  • ထည့်သွင်းသူအပလီကေးရှင်း၏ခွင့်ပြုချက်များကို 'အပြည့်အဝထိန်းချုပ်မှု' သို့သတ်မှတ်ပါ။ (ဖိုင်ကို ညာဖက်ကလစ်နှိပ်ပါ၊ Properties၊ Security tab ကိုရွေးပါ၊ အသုံးပြုသူကိုရွေးချယ်ပါ၊ တည်းဖြတ်ပါ။)
  • Temp folder ၏ ခွင့်ပြုချက်များကို 'Full Control' သို့ သတ်မှတ်ပါ။

temp folder ၏တည်နေရာကိုဆုံးဖြတ်ရန်၊ Run command (Windows logo key + R) တွင် %temp% ဟုရိုက်ထည့်ပါ။ ၎င်းသည် ထိုလမ်းညွှန်ကိုပြသသည့် ဖိုင်ရှာဖွေသူ ဒိုင်ယာလော့ခ်ကိုဖွင့်မည်ဖြစ်ပြီး ထိုဖိုင်တွဲ၏လမ်းကြောင်းကို သင်ဆုံးဖြတ်နိုင်မည်ဖြစ်သည်။

Compiler Documentation
စခရင်ရှော့တွင်ဖော်ပြထားသည့်အတိုင်း MPLAB X IDE ဒက်ရှ်ဘုတ်ရှိ အပြာရောင်အကူအညီခလုတ်ကိုနှိပ်သည့်အခါ compiler ၏အသုံးပြုသူ၏လမ်းညွှန်ချက်များကို သင့်ဘရောက်ဆာတွင်ဖွင့်ထားသည့် HTML စာမျက်နှာမှဖွင့်နိုင်သည်။MICROCHIP-XC8-C-Compiler-Version-2-45-Release-Notes-for-AVR-MCU-1

အကယ်၍ သင်သည် 8-bit AVR ပစ်မှတ်များအတွက် တည်ဆောက်နေပါက၊ MPLAB® XC8 C Compiler User's Guide for AVR® MCU တွင် အဆိုပါ compiler ရွေးချယ်မှုများနှင့် ဤဗိသုကာနှင့် သက်ဆိုင်သည့် အင်္ဂါရပ်များဆိုင်ရာ အချက်အလက်များ ပါရှိသည်။

ဖောက်သည်ပံ့ပိုးမှု
ဤထုတ်ကုန်၏အခြားအသုံးပြုသူများ၏မေးခွန်းများကို XC8 ဖိုရမ်တွင်သင်မေးနိုင်သည်။ Microchip သည် ဤ compiler ဗားရှင်းနှင့်ပတ်သက်သည့် bug အစီရင်ခံစာများ၊ အကြံပြုချက်များ သို့မဟုတ် မှတ်ချက်များကို ကြိုဆိုပါသည်။ ကျေးဇူးပြု၍ ပံ့ပိုးမှုစနစ်မှတစ်ဆင့် ချို့ယွင်းချက်အစီရင်ခံစာများ သို့မဟုတ် လုပ်ဆောင်ချက်တောင်းဆိုမှုများကို ညွှန်ကြားပါ။

စာရွက်စာတမ်းမွမ်းမံမှုများ

MPLAB XC8 စာရွက်စာတမ်းများ၏ အွန်လိုင်းနှင့် နောက်ဆုံးပေါ်ဗားရှင်းများအတွက်၊ ကျေးဇူးပြု၍ Microchip ၏ အွန်လိုင်းနည်းပညာဆိုင်ရာ စာရွက်စာတမ်းများကို ဝင်ရောက်ကြည့်ရှုပါ။ website.
ဤထုတ်ဝေမှုတွင် အသစ် သို့မဟုတ် မွမ်းမံထားသော AVR စာရွက်စာတမ်းများ-

တစ်ခုမှ

  • AVR® GNU Toolchain မှ MPLAB® XC8 ရွှေ့ပြောင်းခြင်းလမ်းညွှန်တွင် C-based ပရောဂျက်ကို AVR 8-bit GNU Toolchain မှ Microchip MPLAB XC8 C Compiler သို့ ပြောင်းရွှေ့ရန် ဆုံးဖြတ်ပါက လိုအပ်နိုင်သည့် အရင်းအမြစ်ကုဒ်နှင့် တည်ဆောက်မှုဆိုင်ရာ ရွေးချယ်မှုများကို ဖော်ပြထားပါသည်။
  • Microchip Unified Standard Library Reference Guide သည် Microchip Uniformed Standard Library မှ သတ်မှတ်ထားသော လုပ်ဆောင်ချက်များနှင့် အင်တာဖေ့စ်အမူအကျင့်များအပြင် စာကြည့်တိုက်အမျိုးအစားများနှင့် မက်ခရိုများကို ရည်ရွယ်အသုံးပြုခြင်းတို့ကို ဖော်ပြပါသည်။ ဤအချက်အလက်အချို့ကို AVR® MCU အတွက် MPLAB® XC8 C Compiler အသုံးပြုသူ၏လမ်းညွှန်တွင် ယခင်က ပါရှိသည်။ စက်ပစ္စည်းအလိုက် စာကြည့်တိုက်အချက်အလက်ကို ဤ compiler လမ်းညွှန်တွင် ပါရှိပါသည်။
  • အကယ်၍ သင်သည် 8-bit စက်ပစ္စည်းများနှင့် MPLAB XC8 C Compiler ဖြင့် စတင်နေပါက MPLAB® XC8 အသုံးပြုသူ၏
  • Embedded Engineers များအတွက် လမ်းညွှန် – AVR® MCUs (DS50003108) တွင် MPLAB X IDE တွင် ပရောဂျက်များထည့်သွင်းခြင်းနှင့် သင့်ပထမဆုံး MPLAB XC8 C ပရောဂျက်အတွက် ကုဒ်ရေးခြင်းဆိုင်ရာ အချက်အလက် ရှိပါသည်။ ဤလမ်းညွှန်ချက်ကို ယခု compiler ဖြင့် ဖြန့်ဝေထားပါသည်။
  • Hexmate အသုံးပြုသူ၏လမ်းညွှန်သည် Hexmate ကို သီးခြားအက်ပလီကေးရှင်းတစ်ခုအဖြစ် အသုံးပြုသူများအတွက် ရည်ရွယ်ပါသည်။

ဘာထူးသလဲ

အောက်ပါတို့သည် ယခု compiler ကို ပံ့ပိုးပေးသည့် AVR-ပစ်မှတ် အင်္ဂါရပ်များ ဖြစ်သည်။ ခေါင်းစဉ်ခွဲများရှိ ဗားရှင်းနံပါတ်သည် လိုက်နာရမည့်အင်္ဂါရပ်များကို ပံ့ပိုးရန် ပထမဆုံး compiler ဗားရှင်းကို ညွှန်ပြသည်။

ဗားရှင်း 2.45
Universal လိုင်စင်မန်နေဂျာ (XC8-3175၊ XCLM-224) compiler နှင့်အသုံးပြုသော လိုင်စင်မန်နေဂျာ၏ macOS ဗားရှင်းသည် ယခုအခါတွင် တစ်ကမ္ဘာလုံးရှိနေပြီဖြစ်ပြီး Intel- နှင့် M1-based စက်များအတွက် မူရင်းပံ့ပိုးမှုကို ပေးဆောင်ထားသည်။ လိုင်စင်မန်နေဂျာ၏ Linux ဗားရှင်းသည် glibc ဗားရှင်း 2.25 အနည်းဆုံး လိုအပ်သည်။ Mac universal binaries (XC8-3168, XC8-2951) macOS အတွက် compiler binary ဖိုင်များသည် ယခုအခါတွင် universal ဖြစ်ပြီး Intel- နှင့် M1-based machines နှစ်မျိုးလုံးအတွက် မူရင်းပံ့ပိုးမှုကို ပေးဆောင်ထားပါသည်။ floating-point စာကြည့်တိုက်အရွယ်အစားများကို လျှော့ချပေးသည် (XC8-3112၊ XC8-3071) sinf() pow(), sqrt(), expf(), log1fp(), နှင့် nextafterf() အပါအဝင် floating- point စာကြည့်တိုက်လုပ်ဆောင်ချက်များအတွက် တိုးတက်မှုများကို ပြုလုပ်ထားပါသည်။ ဤလုပ်ရိုးလုပ်စဉ်များအတွက် ကုဒ်အရွယ်အစားကို လျှော့ချထားသည်ကို တွေ့ရပါသည်။ စက်ပစ္စည်းပံ့ပိုးမှုအသစ်သည် အောက်ပါ AVR အစိတ်အပိုင်းများအတွက် ယခုရရှိနိုင်ပါပြီ- AVR16EA28, AVR16EA32, AVR16EA48, AVR32EA28, AVR32EA32, AVR32EA48, AVR16EB14, AVR16EB20, AVR16EB28, နှင့် AVR16EB32။

ဗားရှင်း 2.41

  • Bootrow ပံ့ပိုးမှု (XC8-3053) ကွန်ပြူတာသည် HEX ဖိုင်ရှိ လိပ်စာ 0x860000 တွင် .bootrow အကြိုစာလုံးဖြင့် မည်သည့်ကဏ္ဍများ၏ အကြောင်းအရာကို ထားရှိမည်နည်း။ ဤအပိုင်းများကို bootloader မှသာလျှင်ဝင်ရောက်အသုံးပြုနိုင်မည့်သော့များနှင့်အခြားလုံခြုံသောအချက်အလက်များသိုလှောင်ရန်အတွက်ဒီဇိုင်းပြုလုပ်ထားသည့် BOOTROW memory အတွက်အသုံးပြုပါသည်။
  • စိတ်ကြိုက်လင့်ခ်ကာစခရစ်များကိုအသုံးပြုသောအခါတွင် အမြီးခုန်ခြင်းနှင့်အတူ လုပ်ဆောင်ချက်များတွင် ထပ်နေသောပြန်အမ်းငွေကို ဖယ်ရှားခြင်း (XC8-3048) စုစည်းမှုသည် ယခုတွင် ထပ်နေသော ret ညွှန်ကြားချက်များကို စိတ်ကြိုက်လင့်ခ်ကာစခရစ်များကို အသုံးပြုသောအခါတွင် အမြီးခုန်ခြင်းနှင့်အတူ လုပ်ဆောင်ချက်များကို ဖယ်ရှားပါမည်။ ၎င်းသည် ယခင်က လုပ်ဆောင်ခဲ့သည့် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းဖြစ်ပြီး၊ စိတ်ကြိုက်ချိတ်ဆက်သူ script ကိုအသုံးပြုပြီး အကောင်းဆုံး သင့်လျော်သောခွဲဝေမှုအစီအစဉ်ကို ဖွင့်ထားခြင်းမရှိသော်လည်း ယခုအခါ ၎င်းကို မိဘမဲ့ကဏ္ဍများအားလုံးတွင် လုပ်ဆောင်နေပြီဖြစ်သည်။
  • အချိန်အမျိုးအစားပြောင်းလဲခြင်း (XC8-2982၊ 2932) C99 စံပြစာကြည့်တိုက်အမျိုးအစား၊ time_t သည် ရှည်လျားသောရှည်မှ လက်မှတ်မထိုးရသေးသော အမျိုးအစားတစ်ခုသို့ ပြောင်းလဲခဲ့ပြီး mktime() ကဲ့သို့သော အချိန်နှင့်သက်ဆိုင်သောလုပ်ဆောင်ချက်အချို့တွင် ကုဒ်အရွယ်အစားကို မြှင့်တင်ပေးပါသည်။
  • New nop (XC8-2946၊ 2945) macro NOP() ကို ပေါင်းထည့်လိုက်ပါပြီ . ဤ macro သည် အထွက်တွင် nop no-operation instruction ကို ထည့်သွင်းသည်။
  • XCLM (XC8-2944) သို့ အပ်ဒိတ်လုပ်ခြင်း) compiler နှင့် အသုံးပြုထားသော လိုင်စင်မန်နေဂျာကို အပ်ဒိတ်လုပ်ပြီး ယခု compiler ၏ လိုင်စင်အသေးစိတ်များကို စစ်ဆေးသောအခါတွင် ပိုမိုတုံ့ပြန်မှုရှိလာပါသည်။
  • Trampolined ခေါ်ဆိုမှုများ (XC8-2760) ကွန်ပြူတာသည် ယခုအခါ ညွှန်ကြားချက်များ၏ ဆွေမျိုးပုံစံများသည် ပုံမှန်အားဖြင့် ၎င်းတို့၏ ဦးတည်ရာနှင့် ဝေးကွာနေချိန်တွင် တိုတောင်းသော ဆွေမျိုးခေါ်ဆိုမှုများဖြင့် အစားထိုးခေါ်ဆိုမှုဆိုင်ရာ လမ်းညွှန်ချက်များကို ယခုလုပ်ဆောင်နိုင်ပြီဖြစ်သည်။ ဤအခြေအနေတွင်၊ compiler သည် jmp call instruction သို့ rcall ညွှန်ကြားချက်များဖြင့် အစားထိုးရန် ကြိုးပမ်းမည်ဖြစ်သည်။ampဥပမာ၊ လိုအပ်သောလိပ်စာသို့ oline' ကွပ်မျက်ခြင်း။ample-

ဗားရှင်း 2.40

  • စက်ပံ့ပိုးမှုအသစ်သည် အောက်ပါ AVR အစိတ်အပိုင်းများအတွက် ယခုရရှိနိုင်ပါပြီ- AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EAVR28, AVR64EAVR32, and AVR64.
  • ပိုမိုကောင်းမွန်သော လုပ်ထုံးလုပ်နည်း abstraction လုပ်ငန်းစဉ်ဆိုင်ရာ abstraction (PA) optimization tool ကို မြှင့်တင်ထားပြီး function call instruction (call/rcall) ပါရှိသော ကုဒ်ကို ဖော်ပြနိုင်စေရန်။ လုပ်ဆောင်ချက်မှ တန်ပြန်တန်ဖိုးကို မရယူဘဲ stack မှ arguments များကို pass သို့မဟုတ် ပြန်ရယူရန် အသုံးမပြုပါက ၎င်းသည် ဖြစ်ပေါ်လာမည်ဖြစ်သည်။ မပြောင်းလဲနိုင်သော အငြင်းအခုံစာရင်းတစ်ခုပါရှိသော လုပ်ဆောင်ချက်တစ်ခုကို ခေါ်ဆိုသည့်အခါ သို့မဟုတ် ဤရည်ရွယ်ချက်အတွက် သတ်မှတ်ထားသော မှတ်ပုံတင်များထက် ပိုမိုများပြားသော အကြောင်းပြချက်များယူသည့် လုပ်ဆောင်ချက်ကို ခေါ်ဆိုသည့်အခါ stack ကို အသုံးပြုသည်။ ဤအင်္ဂါရပ်ကို – mno-pa-outline-calls ရွေးစရာကို အသုံးပြု၍ ပိတ်နိုင်သည် သို့မဟုတ် -mno-pa-pa-on- ကို အသုံးပြု၍ အရာဝတ္ထုတစ်ခုအတွက် လုပ်ထုံးလုပ်နည်း abstraction ကို လုံးဝပိတ်ထားနိုင်သည်။file -mno-pa-on-function အသီးသီး သို့မဟုတ် nopa attribute (__nopa specifer) ကို လုပ်ဆောင်ချက်များဖြင့် ရွေးချယ်အသုံးပြုခြင်းဖြင့်။
  • ကုဒ်အကျုံးဝင်သောမက်ခရို ကွန်ပွိုင်လာသည် မှန်ကန်သော-mcodecov ရွေးချယ်မှုအား သတ်မှတ်သတ်မှတ်ပါက ယခု macro __CODECOV ကို သတ်မှတ်ပေးပါသည်။
  • Memory ကြိုတင်မှာယူမှု ရွေးချယ်မှု xc8-cc ဒရိုက်ဘာသည် AVR ပစ်မှတ်များကို တည်ဆောက်သည့်အခါ -mreserve=space@start:end option ကို ယခုလက်ခံပါမည်။ ဤရွေးချယ်မှုသည် ဒေတာ သို့မဟုတ် ပရိုဂရမ်မှတ်ဉာဏ်နေရာရှိ သတ်မှတ်ထားသော မှတ်ဉာဏ်အကွာအဝေးကို သိမ်းဆည်းထားပြီး၊ လင့်ခ်ကို ဤဧရိယာရှိ ကုဒ် သို့မဟုတ် အရာဝတ္ထုများ မဖြည့်သွင်းခြင်းမှ ကာကွယ်ပေးသည်။
  • ပိုမိုစမတ်ကျသော IO စမတ် IO လုပ်ဆောင်ချက်များတွင် ယေဘူယျ ပြုပြင်ပြောင်းလဲမှုများအပါအဝင်၊ %n ပြောင်းလဲခြင်းသတ်မှတ်သူအား သီးခြားမူကွဲအဖြစ် သဘောထားကာ၊ ဝယ်လိုအားရှိ vararg ပေါ့ပ်လုပ်ရိုးလုပ်စဉ်များတွင် လင့်ခ်ချိတ်ခြင်း၊ တိုတောင်းသောဒေတာအမျိုးအစားများကို အသုံးပြု၍ ကိုင်တွယ်ရန် ဖြစ်နိုင်သည် IO လုပ်ဆောင်ချက် အငြင်းအခုံများနှင့် နယ်ပယ်အကျယ်နှင့် တိကျစွာ ကိုင်တွယ်မှုတွင် ဘုံကုဒ်များကို ကိန်းဂဏာန်းထည့်သွင်းခြင်း။ ၎င်းသည် သိသာထင်ရှားသောကုဒ်နှင့် ဒေတာကို ချွေတာနိုင်သည့်အပြင် IO ၏ လုပ်ဆောင်မှုအမြန်နှုန်းကို တိုးစေသည်။

ဗားရှင်း 2.39 (Functional Safety Release)
Network Server License MPLAB XC8 Functional Safety Compiler ၏ ဤထုတ်ဝေမှုသည် Network Server License ကို ပံ့ပိုးပေးပါသည်။

ဗားရှင်း 2.36
တစ်ခုမှ

ဗားရှင်း 2.35

  • စက်ပစ္စည်းအသစ်ပံ့ပိုးမှု ပံ့ပိုးမှုသည် အောက်ပါ AVR အစိတ်အပိုင်းများအတွက် ရနိုင်သည်- ATTINY3224၊ ATTINY3226၊ ATTINY3227၊ AVR64DD14၊ AVR64DD20၊ AVR64DD28 နှင့် AVR64DD32။
  • ပိုမိုကောင်းမွန်သော အကြောင်းအရာပြောင်းခြင်း -mcall-isr-prologues ရွေးချယ်မှုအသစ်သည် ဝင်ရောက်မှုတွင် မှတ်ပုံတင်ချက်များကို အနှောင့်အယှက်ဖြစ်စေသည့် လုပ်ဆောင်ချက်များကို မည်ကဲ့သို့ သိမ်းဆည်းထားပုံနှင့် အနှောင့်အယှက်ဖြစ်ရိုးဖြစ်စဉ်ကို ရပ်တန့်သွားသောအခါတွင် အဆိုပါ မှတ်ပုံတင်မှုများကို ပြန်လည်ရယူပုံတို့ကို ပြောင်းလဲပေးသည်။ ၎င်းသည် -mcall-prologues ရွေးချယ်မှုတွင် အလားတူနည်းလမ်းဖြင့် အလုပ်လုပ်သော်လည်း ကြားဖြတ်လုပ်ဆောင်ချက်များ (ISRs) များကိုသာ အကျိုးသက်ရောက်သည်။
  • ပိုမိုတိုးတက်ကောင်းမွန်သော အကြောင်းအရာပြောင်းခြင်း -mgas-isr-prologues ရွေးချယ်မှုအသစ်သည် အနှောက်အယှက်ဖြစ်စေသော ဝန်ဆောင်မှုလုပ်ရိုးလုပ်စဉ်များအတွက် ထုတ်ပေးသည့် ဆက်စပ်ခလုတ်ကုဒ်ကို ထိန်းချုပ်ပါသည်။ ဖွင့်ထားသောအခါ၊ ဤအင်္ဂါရပ်သည် မှတ်ပုံတင်အသုံးပြုမှုအတွက် ISR ကို စကင်န်ဖတ်ပြီး လိုအပ်ပါက ဤအသုံးပြုထားသော မှတ်ပုံတင်မှုများကိုသာ သိမ်းဆည်းမည်ဖြစ်သည်။
  • ပြင်ဆင်နိုင်သော flash mapping AVR DA နှင့် AVR DB မိသားစုရှိ စက်အချို့တွင် မည်သည့် 32k အပိုင်းကို ပရိုဂရမ်မှတ်ဉာဏ်၏ ဒေတာမှတ်ဉာဏ်တွင် မြေပုံဆွဲမည်ကို သတ်မှတ်ပေးသည့် SFR (ဥပမာ FLMAP) ရှိသည်။ - mconst-data-in-config-mapped-progmem ရွေးချယ်မှုအသစ်သည် 32k အပိုင်းတစ်ခုတွင် အရည်အချင်းပြည့်မီသောဒေတာအားလုံးကို နေရာချထားရန်နှင့် ဤဒေတာကို data memory space တွင် ပုံဖော်ထားကြောင်း သေချာစေရန်အတွက် သက်ဆိုင်ရာ SFR မှတ်ပုံတင်ခြင်းကို အလိုအလျောက်စတင်လုပ်ဆောင်နိုင်သည် ပိုမိုထိရောက်စွာ ဝင်ရောက်နိုင်မည်ဖြစ်သည်။
  • Microchip Unified Standard Libraries MPLAB XC compilers အားလုံးသည် MPLAB XC8 ထုတ်ဝေမှုနှင့်အတူ ယခုရရှိနိုင်သည့် Microchip Unifiled Standard Library ကို မျှဝေမည်ဖြစ်ပါသည်။ AVR® MCU အတွက် MPLAB® XC8 C Compiler အသုံးပြုသူလမ်းညွှန်တွင် ဤစံလုပ်ဆောင်ချက်များအတွက် စာရွက်စာတမ်းမပါဝင်တော့ပါ။ ဤအချက်အလက်များကို Microchip Unifided Standard Library Reference Guide တွင် ယခုတွေ့ရှိနိုင်ပါသည်။ avr-libc မှ ယခင်က သတ်မှတ်ထားသော လုပ်ဆောင်ချက်အချို့ကို မရနိုင်တော့ကြောင်း သတိပြုပါ။ (စာကြည့်တိုက်လုပ်ဆောင်ချက်ကို ကြည့်ပါ။)
  • Smart IO ပေါင်းစည်းထားသည့် စာကြည့်တိုက်အသစ်များ၏ တစ်စိတ်တစ်ပိုင်းအနေဖြင့် printf နှင့် scanf မိသားစုများရှိ IO လုပ်ဆောင်ချက်များကို ပရိုဂရမ်တွင် ဤလုပ်ဆောင်ချက်များကိုအသုံးပြုပုံအပေါ်အခြေခံ၍ တည်ဆောက်မှုတစ်ခုစီတွင် ယခုအခါ စိတ်ကြိုက်ထုတ်လုပ်ထားပါသည်။ ၎င်းသည် ပရိုဂရမ်တစ်ခုမှ အသုံးပြုသည့် အရင်းအမြစ်များကို သိသိသာသာ လျှော့ချနိုင်သည်။
  • Smart IO အကူအညီရွေးချယ်စရာ စမတ် IO လုပ်ဆောင်ချက်များ (ဥပမာ printf() သို့မဟုတ် scanf() ကဲ့သို့သော ခေါ်ဆိုမှုများကို ပိုင်းခြားစိတ်ဖြာသည့်အခါ ကွန်ပြူတာသည် ဖော်မတ်စာတစ်ကြောင်းမှ အမြဲတမ်းမဆုံးဖြတ်နိုင် သို့မဟုတ် ခေါ်ဆိုမှုလိုအပ်သော ပြောင်းလဲခြင်းအသေးစိတ်ဖော်ပြချက်များကို အကြောင်းပြချက်များမှ ကောက်ချက်မချနိုင်ပါ။ ယခင်က၊ ကွန်ပလီဘာသည် အမြဲတမ်းပြုလုပ်လေ့ရှိသည်။ ယူဆချက်မရှိဘဲနှင့် အပြည့်အဝလုပ်ဆောင်နိုင်သော IO လုပ်ဆောင်ချက်များကို နောက်ဆုံးပရိုဂရမ်ရုပ်ပုံသို့ ချိတ်ဆက်ထားကြောင်း သေချာစေပါသည်။ သို့မှသာ smart IO မှအသုံးပြုသော ပြောင်းလဲခြင်းအသေးစိတ်အချက်အလက်များကို အသုံးပြုသူမှ စုစည်းမှုအသစ်ကို အသိပေးနိုင်စေရန် -msmart-io-format=fmt ရွေးချယ်မှုအသစ်ကို ထည့်သွင်းထားပါသည်။ အသုံးပြုမှုမှာ မရေရာသော လုပ်ဆောင်ချက်များဖြစ်ပြီး အလွန်ရှည်လျားသော IO လုပ်ရိုးလုပ်စဉ်များကို ချိတ်ဆက်ခြင်းမှ တားဆီးပေးပါသည်။ (အသေးစိတ်အချက်အလက်များအတွက် smart-io-format Option ကို ကြည့်ပါ။)
  • စိတ်ကြိုက်ကဏ္ဍများကို နေရာချထားခြင်း ယခင်က၊ -Wl၊–section-start option သည် linker script မှ အမည်တူ အထွက်အပိုင်းတစ်ခုကို သတ်မှတ်သောအခါတွင် သတ်မှတ်ထားသော အပိုင်းကို တောင်းဆိုထားသော လိပ်စာတွင်သာ ထားရှိခဲ့ပါသည်။ ထိုသို့မဟုတ်သောအခါ၊ ကဏ္ဍအား ချိတ်ဆက်သူမှ ရွေးချယ်ထားသော လိပ်စာတစ်ခု၌ ထားရှိခဲ့ပြီး ရွေးချယ်မှုကို အခြေခံအားဖြင့် လျစ်လျူရှုခဲ့သည်။ linker script သည် ကဏ္ဍကို မသတ်မှတ်ထားသော်လည်း ယခု ရွေးချယ်မှုအား စိတ်ကြိုက်ကဏ္ဍများအားလုံးအတွက် ဂုဏ်ပြုမည်ဖြစ်သည်။ သို့သော်၊ စံကဏ္ဍများဖြစ်သည့် .text၊ .bss သို့မဟုတ် .data များအတွက်၊ အကောင်းဆုံး fit allocator သည် ၎င်းတို့၏နေရာချထားမှုအပေါ် အပြည့်အဝထိန်းချုပ်နိုင်ဆဲဖြစ်ပြီး ရွေးချယ်ခွင့်သည် အကျိုးသက်ရောက်မှုရှိမည်မဟုတ်ကြောင်း သတိပြုပါ။ အသုံးပြုသူ၏လမ်းညွှန်တွင်ဖော်ပြထားသည့်အတိုင်း -Wl,-Tsection=addr ရွေးချယ်မှုကို အသုံးပြုပါ။

ဗားရှင်း 2.32

  • Stack Guidance ကို PRO compiler လိုင်စင်ဖြင့် ရရှိနိုင်ပြီး၊ ပရိုဂရမ်တစ်ခုမှ အသုံးပြုသည့် မည်သည့် stack ၏ အများဆုံးအနက်ကို ခန့်မှန်းရန် စုစည်းမှု၏ stack လမ်းညွှန်အင်္ဂါရပ်ကို အသုံးပြုနိုင်သည်။ ၎င်းသည် ပရိုဂရမ်တစ်ခု၏ ခေါ်ဆိုမှုဂရပ်ကို တည်ဆောက်ပြီး ပိုင်းခြားစိတ်ဖြာကာ၊ လုပ်ဆောင်ချက်တစ်ခုစီ၏ အစုအပုံအသုံးပြုမှုကို ဆုံးဖြတ်ကာ ပရိုဂရမ်အသုံးပြုသည့် အစုအပုံများ၏ အတိမ်အနက်ကို ကောက်ချက်ချနိုင်သည့် အစီရင်ခံစာကို ထုတ်ပေးပါသည်။ ဤအင်္ဂါရပ်ကို -mchp-stack-usage command-line ရွေးချယ်မှုမှတစ်ဆင့် ဖွင့်ထားသည်။ လုပ်ဆောင်ပြီးနောက် stack အသုံးပြုမှု၏ အကျဉ်းချုပ်ကို ပုံနှိပ်သည်။ မြေပုံဖိုင်တွင် အသေးစိတ်ဖော်ပြထားသော အစုအစည်းအစီရင်ခံစာကို ပုံမှန်နည်းလမ်းဖြင့် တောင်းဆိုနိုင်ပါသည်။
  • စက်ပစ္စည်းပံ့ပိုးမှုအသစ်သည် အောက်ပါ AVR အစိတ်အပိုင်းများအတွက် ရနိုင်သည်- ATTINY427၊ ATTINY424၊ ATTINY426၊ ATTINY827၊ ATTINY824၊ ATTINY826၊ AVR32DB32၊ AVR64DB48၊ AVR64DB64၊ AVR64DB28၊ AVR32DB28၊ AVR64DB32
  • ပြန်ရုတ်သိမ်းထားသော စက်ပံ့ပိုးမှု ပံ့ပိုးမှုသည် အောက်ပါ AVR အစိတ်အပိုင်းများအတွက် မရနိုင်တော့ပါ- AVR16DA28၊ AVR16DA32 နှင့် AVR16DA48။

ဗားရှင်း 2.31
တစ်ခုမှ

ဗားရှင်း 2.30

  • ဒေတာအစပျိုးခြင်းကို တားဆီးရန် ရွေးချယ်မှုအသစ် -mno-data-init driver ရွေးချယ်မှုအသစ်သည် ဒေတာ၏ ကနဦးအစပြုခြင်းနှင့် bss ကဏ္ဍများကို ရှင်းလင်းခြင်းတို့ကို တားဆီးပေးသည်။ ၎င်းသည် အစုအဝေးဖိုင်များတွင် do_clear_bss သင်္ကေတများ၏ အထွက်ကို ဖိနှိပ်ခြင်းဖြင့် ၎င်းသည် ၎င်းသည် ချိတ်ဆက်သူမှ အဆိုပါ လုပ်ရိုးလုပ်စဉ်များ ပါဝင်မှုကို တားဆီးပေးသည်။
  • ပိုမိုကောင်းမွန်အောင် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်း မလိုအပ်သော ပြန်ပေးလမ်းညွှန်ချက်များကို ဖယ်ရှားခြင်း၊ skip-if-bit-is ညွှန်ကြားချက်နောက်တွင် ခုန်ခြင်းအချို့ကို ဖယ်ရှားခြင်းနှင့် လုပ်ထုံးလုပ်နည်းပိုင်းကို မြှင့်တင်ခြင်းနှင့် ဤလုပ်ငန်းစဉ်ကို ထပ်လောင်းလုပ်ဆောင်နိုင်မှုတို့ အပါအဝင် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်း တိုးတက်မှုများစွာကို ပြုလုပ်ထားပါသည်။
    သင်္ကေတတစ်ခုနှင့် ဆက်စပ်၍ တည်ငြိမ်အရာဝတ္တုများကို ဝင်ရောက်ကြည့်ရှုခွင့်ပေးသည့် ဤပိုကောင်းအောင်လုပ်ဆောင်မှုအချို့ကို ထိန်းချုပ်ရန်အတွက် နောက်ထပ်ရွေးချယ်စရာများကို ယခုရရှိနိုင်ပါပြီ။ -mpa- iterations=n ၊ လုပ်ထုံးလုပ်နည်းဆိုင်ရာ abstraction ထပ်ကာထပ်ကာ အရေအတွက်ကို ပုံသေ 2 မှ ပြောင်းနိုင်စေသော၊ ချိတ်ဆက်သူသည် ရှည်လျားသောခေါ်ဆိုမှုများကို ဖြေလျှော့နိုင်မည်ဟုမျှော်လင့်ချက်ဖြင့် ပိုမိုပြင်းထန်သောလုပ်ထုံးလုပ်နည်း abstraction ကိုလုပ်ဆောင်သည့် -mpa-callcost-shortcall၊ အရင်းခံယူဆချက်များကို သဘောမပေါက်ပါက ဤနောက်ဆုံးရွေးချယ်မှုသည် ကုဒ်အရွယ်အစားကို တိုးမြှင့်နိုင်သည်။
  • စက်ပစ္စည်းအသစ်ပံ့ပိုးမှု ပံ့ပိုးမှုအား အောက်ပါ AVR အစိတ်အပိုင်းများအတွက် ရနိုင်သည်- AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DAVR64, AVR128DB28, AVR128DB32 VR128DB48
  • ပြန်ရုတ်သိမ်းထားသော စက်ပစ္စည်း၏ ပံ့ပိုးကူညီမှု ပံ့ပိုးမှုသည် အောက်ပါ AVR အစိတ်အပိုင်းများအတွက် မရနိုင်တော့ပါ- ATA5272၊ ATA5790၊ ATA5790N၊ ATA5791၊ ATA5795၊ ATA6285၊ ATA6286၊ ATA6612C၊ ATA6613C၊ ATA6614Q၊ 6616AC6617ATA664251C.

ဗားရှင်း 2.29 (Functional Safety Release)

  • compiler built-in အတွက် ခေါင်းစီးဖိုင်ကို compiler သည် MISRA ကဲ့သို့သော ဘာသာစကား သတ်မှတ်ချက်များနှင့်အညီ လိုက်လျောညီထွေဖြစ်စေရန် သေချာစေရန်၊ , အပ်ဒိတ်လုပ်ထားသည်။ ဤခေါင်းစီးတွင် __builtin_avr_nop() နှင့် __builtin_avr_delay_cycles() ကဲ့သို့ တည်ဆောက်ထားသော လုပ်ဆောင်ချက်အားလုံးအတွက် ရှေ့ပြေးပုံစံများ ပါရှိသည်။ အချို့သော built-in များသည် MISRA နှင့် ကိုက်ညီမှု မရှိနိုင်ပါ။ compiler command line တွင် define __XC_STRICT_MISRA ပေါင်းထည့်ခြင်းဖြင့် ၎င်းတို့ကို ချန်လှပ်နိုင်ပါသည်။ ပုံသေ-အကျယ်အမျိုးအစားများကိုအသုံးပြုရန်အတွက် built-in နှင့် ၎င်းတို့၏ကြေငြာချက်များကို မွမ်းမံထားပါသည်။

ဗားရှင်း 2.20

  • စက်ပစ္စည်းပံ့ပိုးမှုအသစ်သည် အောက်ပါ AVR အစိတ်အပိုင်းများအတွက် ရနိုင်သည်- ATTINY1624၊ ATTINY1626 နှင့် ATTINY1627။
  • ပိုမိုကောင်းမွန်သော အကောင်းဆုံး ကိုက်ညီမှု ခွဲဝေသတ်မှတ်ခြင်း compiler တွင် အကောင်းဆုံး ကိုက်ညီမှု ခွဲဝေပေးသူ (BFA) ကို ပိုမိုကောင်းမွန်အောင် ပြုလုပ်ထားပြီး အပိုင်းများကို ပိုမိုကောင်းမွန်သော ပိုမိုကောင်းမွန်အောင် ပြုလုပ်နိုင်စေရန် အမှာစာဖြင့် ခွဲဝေပေးပါသည်။ ယခုအခါ BFA သည် အမည်ပေးထားသော လိပ်စာနေရာများကို ပံ့ပိုးပေးပြီး ဒေတာအစပျိုးခြင်းကို ပိုမိုကောင်းမွန်စွာ ကိုင်တွယ်နိုင်ပါပြီ။
  • ပိုမိုကောင်းမွန်သော လုပ်ထုံးလုပ်နည်း abstraction လုပ်ငန်းစဉ်ဆိုင်ရာ abstraction ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းများကို ကုဒ် sequences များတွင် ယခုလုပ်ဆောင်နေပါသည်။ ချိတ်ဆက်သူ၏ အမှိုက်စုဆောင်းခြင်းလုပ်ငန်းစဉ်ကို ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းကုဒ်ကို သိရှိစေခြင်းဖြင့် ဤပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းမှ ကုဒ်အရွယ်အစား တိုးလာနိုင်သည့် ယခင်အခြေအနေများကို ကိုင်တွယ်ဖြေရှင်းခဲ့သည်။
  • AVR Assembler မရှိခြင်း AVR Assembler သည် ဤဖြန့်ဖြူးမှုတွင် မပါဝင်တော့ပါ။

ဗားရှင်း 2.19 (Functional Safety Release)
တစ်ခုမှ

ဗားရှင်း 2.10

  • ကုဒ်အကျုံးဝင်မှု ဤထုတ်ဝေမှုတွင် ပရောဂျက်တစ်ခု၏ အရင်းအမြစ်ကုဒ်ကို လုပ်ဆောင်သည့်အတိုင်းအတာအထိ ခွဲခြမ်းစိတ်ဖြာမှုကို လွယ်ကူချောမွေ့စေသည့် ကုဒ်လွှမ်းခြုံမှုအင်္ဂါရပ်တစ်ခု ပါဝင်သည်။ ၎င်းကိုဖွင့်ရန် option -mcodecov=ram ကိုသုံးပါ။ သင်၏ ဟာ့ဒ်ဝဲတွင် ပရိုဂရမ်ကို အကောင်အထည်ဖော်ပြီးနောက်၊ ကုဒ်လွှမ်းခြုံမှု အချက်အလက်ကို စက်အတွင်း စုစည်းထားမည်ဖြစ်ပြီး ၎င်းကို ကုဒ်အကျုံးဝင်သည့် ပလပ်အင်တစ်ခုမှတစ်ဆင့် MPLAB X IDE သို့ လွှဲပြောင်းပြီး ပြသနိုင်သည်။ ဤပလပ်အင်ဆိုင်ရာ အချက်အလက်များအတွက် IDE စာရွက်စာတမ်းကို ကြည့်ပါ။
    လွှမ်းခြုံမှုဆိုင်ရာ ခွဲခြမ်းစိတ်ဖြာမှုမှ နောက်ဆက်တွဲ လုပ်ဆောင်ချက်များကို ဖယ်ထုတ်ရန် #pragma nocodecov ကို အသုံးပြုနိုင်ပါသည်။ အကောင်းဆုံးကတော့ အဲဒီဖိုင်တစ်ခုလုံးကို coverage ခွဲခြမ်းစိတ်ဖြာမှုကနေ ဖယ်ထုတ်ဖို့ ဖိုင်ရဲ့အစမှာ ပရာမာကို ထည့်သင့်ပါတယ်။ တနည်းအားဖြင့်၊ __attribute__((nocodecov)) ကို လွှမ်းခြုံမှု ခွဲခြမ်းစိတ်ဖြာမှုမှ သီးခြားလုပ်ဆောင်ချက်ကို ဖယ်ထုတ်ရန် အသုံးပြုနိုင်သည်။
  • စက်ပစ္စည်းဖော်ပြချက် ဖိုင်များ avr_chipinfo.html ဟုခေါ်သော စက်ပစ္စည်းဖိုင်အသစ်တစ်ခုသည် စုစည်းမှုဖြန့်ဝေမှု၏ docs လမ်းညွှန်တွင် တည်ရှိသည်။ ဤဖိုင်သည် compiler မှပံ့ပိုးပေးသည့် စက်ပစ္စည်းအားလုံးကို စာရင်းပြုစုထားသည်။ စက်ပစ္စည်းအမည်ကို ကလစ်နှိပ်ပါ၊ နှင့် ၎င်းသည် စက်အတွက် ခွင့်ပြုနိုင်သော ဖွဲ့စည်းမှုပုံစံ ဘစ်ဆက်တင်/တန်ဖိုးအတွဲများအားလုံးကို ပြသသည့် စာမျက်နှာကို ဖွင့်ပါမည်၊amples
  • Procedural abstraction သည် ထိုဘလောက်၏ ထုတ်ယူထားသောမိတ္တူဆီသို့ ခေါ်ဆိုမှုများဖြင့် ဘုံအစုအဝေးများ၏ ကုဒ်များကို အစားထိုးသည့် လုပ်ထုံးလုပ်နည်း abstraction optimizations များကို compiler သို့ ပေါင်းထည့်ထားသည်။ အဆင့် 2၊ 3 သို့မဟုတ် s ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းကို ရွေးချယ်သည့်အခါ ၎င်းတို့ကို compiler မှ အလိုအလျောက် ခေါ်ဆိုသည့် သီးခြားအပလီကေးရှင်းတစ်ခုမှ လုပ်ဆောင်သည်။ အဆိုပါ ပိုမိုကောင်းမွန်အောင်ပြုလုပ်မှုများသည် ကုဒ်အရွယ်အစားကို လျှော့ချပေးသော်လည်း ၎င်းတို့သည် လုပ်ဆောင်မှုအမြန်နှုန်းနှင့် ကုဒ်အမှားရှာနိုင်စွမ်းကို လျှော့ချနိုင်သည်။ -mno-pa ရွေးချယ်မှုအား အသုံးပြု၍ ပိုမိုကောင်းမွန်အောင်လုပ်ဆောင်မှုအဆင့်များတွင် လုပ်ထုံးလုပ်နည်းဆိုင်ရာ abstraction ကို ပိတ်နိုင်သည် သို့မဟုတ် -mpa ကို အသုံးပြု၍ ပိုမိုကောင်းမွန်အောင်လုပ်ဆောင်မှုအဆင့်များ (သင့်လိုင်စင်နှင့် သက်ဆိုင်သော) အောက်ပိုင်းများတွင် ဖွင့်နိုင်သည်။ -mno-pa-on- ကို အသုံးပြု၍ အရာဝတ္ထုဖိုင်တစ်ခုအတွက် ၎င်းကို ပိတ်ထားနိုင်သည်။file=fileအမည် ၊ သို့မဟုတ် -mno-pa-on- function=function ကို အသုံးပြု၍ လုပ်ဆောင်ချက်တစ်ခုအတွက် ပိတ်ထားသည်။ သင့်အရင်းအမြစ်ကုဒ်အတွင်းတွင်၊ လုပ်ဆောင်ချက်၏အဓိပ္ပာယ်ဖွင့်ဆိုချက်ဖြင့် __attribute__((nopa)) ကိုအသုံးပြုခြင်းဖြင့်၊ သို့မဟုတ် __attribute__(((nopa၊ noinline))) သို့ ချဲ့ထွင်ထားသည့် __attribute__((nopa၊ noinline)) ကို အသုံးပြုခြင်းဖြင့် လုပ်ဆောင်ချက်တစ်ခုအတွက် လုပ်ဆောင်မှုကို ပိတ်နိုင်သည် inlined code ၏ abstraction ရှိပါသည်။
  • pragma ရှိ လော့ခ်ဘစ်ပံ့ပိုးမှု #pragma config ကို AVR သော့ခတ်ဘစ်များနှင့် အခြားဖွဲ့စည်းမှုဘစ်များကို သတ်မှတ်ရန် ယခုအသုံးပြုနိုင်ပါပြီ။ ဤ pragma တွင်အသုံးပြုရန် ဆက်တင်/တန်ဖိုးအတွဲများ အတွက် avr_chipinfo.html (အထက်တွင်ဖော်ပြထားသည်) ကိုစစ်ဆေးပါ။
  • စက်ပစ္စည်းအသစ်ပံ့ပိုးမှု ပံ့ပိုးမှုသည် အောက်ပါအစိတ်အပိုင်းများအတွက် ရနိုင်သည်- AVR28DA128၊ AVR64DA128၊ AVR32DA128 နှင့် AVR48DA128။

ဗားရှင်း 2.05

  • သင့်အတွက် နောက်ထပ် bits များ ဤ compiler နှင့် လိုင်စင်မန်နေဂျာ၏ macOS ဗားရှင်းသည် ယခုအခါ 64-bit application တစ်ခုဖြစ်သည်။ ၎င်းသည် compiler သည် macOS ၏ လတ်တလောဗားရှင်းများတွင် သတိပေးချက်မပါဘဲ ထည့်သွင်းပြီး အလုပ်လုပ်မည်ဖြစ်ကြောင်း သေချာစေမည်ဖြစ်သည်။
  • ပရိုဂရမ်မမ်မိုရီရှိ const အရာဝတ္ထုများကို စုစည်းမှု compiler သည် ယခု RAM တွင်ရှိသော အရာများကို ထားရှိခြင်းထက် ပရိုဂရမ် Flash memory တွင် const-qualified အရာဝတ္ထုများကို ထားရှိနိုင်ပါသည်။ ကွန်ပလီကေးရှင်းကို ပြုပြင်မွမ်းမံပြီး အရည်အသွေးပြည့်မီသော ကမ္ဘာလုံးဆိုင်ရာဒေတာကို ပရိုဂရမ် flash memory တွင် သိမ်းဆည်းထားကာ သင့်လျော်သော program-memory ညွှန်ကြားချက်များကို အသုံးပြု၍ ဤဒေတာကို တိုက်ရိုက်နှင့် သွယ်ဝိုက်သောနည်းဖြင့် ဝင်ရောက်ကြည့်ရှုနိုင်မည်ဖြစ်သည်။ ဤအင်္ဂါရပ်အသစ်ကို မူရင်းအတိုင်း ဖွင့်ထားသော်လည်း -mno-const-data-in-progmem ရွေးချယ်မှုကို အသုံးပြု၍ ပိတ်နိုင်သည်။ avrxmega3 နှင့် avrtiny ဗိသုကာများအတွက်၊ ဤအင်္ဂါရပ်ကို မလိုအပ်ဘဲ အမြဲတမ်းပိတ်ထားသည်၊၊ ပရိုဂရမ်မှတ်ဉာဏ်ကို ဤစက်ပစ္စည်းများအတွက် ဒေတာလိပ်စာနေရာကို မြေပုံဆွဲထားသောကြောင့်၊
  • ဤ compiler ၏ အခမဲ့ လိုင်စင်မဲ့ (အခမဲ့) ဗားရှင်းများအတွက် Standard သည် ယခုအခါ အဆင့် 2 အထိ ပိုမိုကောင်းမွန်အောင် လုပ်ဆောင်မှုများကို ခွင့်ပြုပေးပါသည်။ ၎င်းသည် တူညီခြင်းမရှိသော်လည်း Standard လိုင်စင်ကို အသုံးပြု၍ ယခင်ဖြစ်နိုင်ချေကို ထုတ်ပေးနိုင်မည်ဖြစ်ပါသည်။
  • AVRASM2 မှကြိုဆိုပါတယ် 2-bit စက်ပစ္စည်းများအတွက် AVRASM8 တပ်ဆင်သူသည် XC8 compiler installer တွင် ယခုထည့်သွင်းထားပါသည်။ ဤ assembler ကို XC8 compiler မှ အသုံးမပြုသော်လည်း လက်ဖြင့်ရေးထားသော စည်းဝေးပွဲအရင်းအမြစ်အပေါ် အခြေခံ၍ ပရောဂျက်များအတွက် ရနိုင်ပါသည်။
  • စက်ပစ္စည်းအသစ်ပံ့ပိုးမှု ပံ့ပိုးမှုသည် အောက်ပါအစိတ်အပိုင်းများအတွက် ရနိုင်သည်- ATMEGA1608၊ ATMEGA1609၊ ATMEGA808 နှင့် ATMEGA809။

ဗားရှင်း 2.00

  • ထိပ်တန်းအဆင့် Driver xc8-cc ဟုခေါ်သော ဒရိုင်ဘာအသစ်သည် ယခုယခင် avr-gcc ဒရိုက်ဘာနှင့် xc8 ဒရိုက်ဘာအထက်တွင်ရှိပြီး ပစ်မှတ်ကိရိယာ၏ရွေးချယ်မှုအပေါ်အခြေခံ၍ သင့်လျော်သော compiler ကိုခေါ်ဆိုနိုင်သည်။ ဤဒရိုင်ဘာသည် လုပ်ဆောင်နေသည့် စုစည်းမှုသို့ ဘာသာပြန် သို့မဟုတ် ဘာသာပြန်ထားသည့် သို့မဟုတ် လုပ်ဆောင်နေသည့် GCC စတိုင်ရွေးချယ်မှုများကို လက်ခံသည်။ ဤဒရိုင်ဘာသည် AVR သို့မဟုတ် PIC ပစ်မှတ်တစ်ခုနှင့် ဆင်တူသော ဝေါဟာရအသုံးအနှုန်းများပါရှိသော အလားတူရွေးချယ်မှုအစုအဝေးကို ခွင့်ပြုထားပြီး ထို့ကြောင့် compiler ကို ခေါ်ဆိုရန်အတွက် အကြံပြုထားသည့်နည်းလမ်းဖြစ်သည်။ လိုအပ်ပါက၊ အစောပိုင်း compiler ဗားရှင်းများတွင် လက်ခံထားသော ပုံစံဟောင်းရွေးချယ်မှုများကို အသုံးပြုကာ အဟောင်း avr-gcc ဒရိုက်ဘာကို တိုက်ရိုက်ခေါ်ဆိုနိုင်သည်။
  • Common C Interface ဤ compiler သည် ယခုအခါ MPLAB Common C Interface နှင့် ကိုက်ညီပြီး အရင်းအမြစ်ကုဒ်ကို MPLAB XC compilers များအားလုံးတွင် ပိုမိုလွယ်ကူစွာ ပေးပို့နိုင်စေပါသည်။ -mext=cci ရွေးချယ်မှုသည် ဤအင်္ဂါရပ်ကို တောင်းဆိုသည်၊ ဘာသာစကား တိုးချဲ့မှုများစွာအတွက် သမရိုးကျ အလှည့်အပြောင်းကို ဖွင့်ပေးသည်။
  • စာကြည့်တိုက်မှူးအသစ် ယာဉ်မောင်းအသစ် စာကြည့်တိုက်မှူးအသစ်သည် ယခင် PIC စာကြည့်တိုက်မှူးနှင့် AVR avr-ar စာကြည့်တိုက်မှူးတို့၏ အထက်တွင် နေရာယူထားသည်။ ဤဒရိုင်ဘာသည် GCC-archiver-စတိုင်ရွေးချယ်စရာများကို လက်ခံသည် ယာဉ်မောင်းအသစ်သည် မည်သည့် PIC သို့မဟုတ် AVR စာကြည့်တိုက်ဖိုင်ကို ဖန်တီးရန် သို့မဟုတ် ကိုင်တွယ်အသုံးပြုရန် တူညီသောအသုံးအနှုန်းများပါရှိသည့် အလားတူရွေးချယ်ခွင့်များကို ခွင့်ပြုထားပြီး ထို့ကြောင့် စာကြည့်တိုက်မှူးကို ခေါ်ယူရန် အကြံပြုထားသည့်နည်းလမ်းဖြစ်သည်။ အမွေအနှစ်ပရောဂျက်များအတွက် လိုအပ်ပါက၊ အစောပိုင်း compiler ဗားရှင်းများတွင် လက်ခံထားသော ပုံစံဟောင်းရွေးချယ်မှုများကို အသုံးပြုကာ ယခင်စာကြည့်တိုက်မှူးကို တိုက်ရိုက်ခေါ်ဆိုနိုင်ပါသည်။

ရွှေ့ပြောင်းနေထိုင်ခြင်းကိစ္စများ

အောက်ပါတို့သည် ယခု compiler မှ ကွဲပြားစွာ ကိုင်တွယ်လုပ်ဆောင်သော အင်္ဂါရပ်များဖြစ်သည်။ ကုဒ်ကို ဤ compiler ဗားရှင်းသို့ ပို့ပါက ဤပြောင်းလဲမှုများသည် သင့်အရင်းအမြစ်ကုဒ်ကို ပြုပြင်ပြောင်းလဲရန် လိုအပ်နိုင်သည်။ ခေါင်းစဉ်ခွဲများရှိ ဗားရှင်းနံပါတ်သည် နောက်ဆက်တွဲပြောင်းလဲမှုများကို ပံ့ပိုးရန် ပထမဆုံး compiler ဗားရှင်းကို ညွှန်ပြသည်။

ဗားရှင်း 2.45
တစ်ခုမှ

ဗားရှင်း 2.41
မမှန်ကန်သော fma လုပ်ဆောင်ချက်များကို ဖယ်ရှားလိုက်ပါ (XC8-2913) C99 စံပြစာကြည့်တိုက် ( ) အထပ်ထပ်-ပေါင်းထည့်ခြင်းကို တစ်ခုတည်းသောအဝိုင်းသို့ အဆုံးမရှိတိကျမှုဖြင့် ထည့်တွက်ခြင်းမပြုဘဲ လည်ပတ်မှုတစ်ခုစီတွင် စုဆောင်းမှုအမှားများကို စုဆောင်းခဲ့သည်။ ဤလုပ်ဆောင်ချက်များကို ပံ့ပိုးပေးထားသည့် ဒစ်ဂျစ်တိုက်မှ ဖယ်ရှားလိုက်ပါပြီ။

ဗားရှင်း 2.40
တစ်ခုမှ

ဗားရှင်း 2.39 (Functional Safety Release)
တစ်ခုမှ

ဗားရှင်း 2.36
တစ်ခုမှ

ဗားရှင်း 2.35

  • string-to bases များကို ကိုင်တွယ်ခြင်း (XC8-2420) သည် အခြားသော XC compilers များနှင့် လိုက်လျောညီထွေရှိစေရန်၊ Strtol() စသည်တို့ကဲ့သို့ XC8 string-to functions သည် 36 ထက် ပိုကြီးပါက input string ကို ပြောင်းရန် ကြိုးပမ်းတော့မည် မဟုတ်ပါ။ ၎င်းအစား သတ်မှတ်ပါမည်။ ဤအခြေခံတန်ဖိုးကို ကျော်လွန်သွားသောအခါတွင် C စံနှုန်းသည် လုပ်ဆောင်ချက်များ၏ အပြုအမူကို မသတ်မှတ်ထားပေ။
  • အဆင့် 3 ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်း (-O3) ကိုရွေးချယ်သောအခါ မသင့်လျော်သော မြန်နှုန်းပိုကောင်းအောင် လုပ်ထုံးလုပ်နည်းဆိုင်ရာ abstraction optimizations ကို ဖွင့်ထားသည်။ အဆိုပါ ပိုမိုကောင်းမွန်အောင်ပြုလုပ်မှုများသည် ကုဒ်အမြန်နှုန်းကို အသုံးပြု၍ ကုဒ်အရွယ်အစားကို လျှော့ချပေးသောကြောင့် လုပ်ဆောင်ခြင်းမပြုသင့်ပါ။ ဤအဆင့်မြှင့်တင်မှုအဆင့်ကို အသုံးပြုထားသော ပရောဂျက်များသည် ဤထုတ်ဝေမှုဖြင့် တည်ဆောက်သောအခါတွင် ကုဒ်အရွယ်အစားနှင့် လုပ်ဆောင်မှုအမြန်နှုန်းတို့တွင် ကွဲပြားမှုများကို မြင်တွေ့နိုင်သည်။
  • စာကြည့်တိုက် လုပ်ဆောင်နိုင်စွမ်း စံ C စာကြည့်တိုက် လုပ်ဆောင်ချက်များစွာအတွက် ကုဒ်သည် ယခုအခါ ယခင် avr-libc စာကြည့်တိုက်မှ ပံ့ပိုးပေးထားသည့် အခြေအနေများနှင့် နှိုင်းယှဉ်ပါက အချို့သော အခြေအနေများတွင် မတူညီသော အမူအကျင့်များကို ပြသနိုင်သည့် Microchip ၏ Unifiled Standard Library မှ လာပါသည်။ ဟောင်းအတွက်ampထို့ကြောင့်၊ float-format အတိအကျဖော်ပြသူများအတွက် ဖော်မတ်လုပ်ထားသော IO ပံ့ပိုးမှုကိုဖွင့်ရန် lprintf_flt စာကြည့်တိုက် (-lprintf_flt ရွေးချယ်မှု) တွင် လင့်ခ်ချိတ်ရန် မလိုအပ်တော့ပါ။ Microchip Uniformed Standard Library ၏ စမတ်ကျသော IO အင်္ဂါရပ်များသည် ဤရွေးချယ်မှုကို မလိုအပ်တော့ပါ။ ထို့အပြင်၊ flash ရှိ const strings များပေါ်တွင်လည်ပတ်နေသော string နှင့် memory functions (ဥပမာ strcpy_P() etc.) အတွက် _P ၏နောက်ဆက်တွဲလုပ်ရိုးလုပ်စဉ်များကိုအသုံးပြုရန်မလိုအပ်တော့ပါ။ const-data-in-program-memory အင်္ဂါရပ်ကို ဖွင့်ထားသောအခါ စံ C လုပ်ရိုးလုပ်စဉ်များ (ဥပမာ strcpy() သည် ထိုဒေတာနှင့် မှန်ကန်စွာ အလုပ်လုပ်ပါမည်။

ဗားရှင်း 2.32
တစ်ခုမှ

ဗားရှင်း 2.31
တစ်ခုမှ

ဗားရှင်း 2.30
တစ်ခုမှ

ဗားရှင်း 2.29 (Functional Safety Release)
တစ်ခုမှ

ဗားရှင်း 2.2
ပြောင်းလဲထားသော DFP အပြင်အဆင်ကို စုစည်းသူသည် DFPs (Device Family Packs) မှ အသုံးပြုသည့် မတူညီသော အပြင်အဆင်ကို ယခု ယူဆပါသည်။ ၎င်းသည် အဟောင်းဖြစ်သော DFP သည် ဤထုတ်ဝေမှုတွင် အလုပ်မလုပ်တော့ဘဲ၊ ကွန်ပြူတာအဟောင်းများသည် နောက်ဆုံးထွက် DFP များကို အသုံးမပြုနိုင်တော့ဟု ဆိုလိုပါသည်။

ဗားရှင်း 2.19 (Functional Safety Release)
တစ်ခုမှ

ဗားရှင်း 2.10
တစ်ခုမှ

ဗားရှင်း 2.05
ပရိုဂရမ်မမ်မိုရီရှိ Const objects များကို ပုံသေအားဖြင့်၊ const-qualified အရာဝတ္ထုများကို ပရိုဂရမ်မှတ်ဉာဏ်တွင် ထားရှိမည်ဖြစ်ပြီး ဝင်ရောက်အသုံးပြုနိုင်မည်ဖြစ်ကြောင်း သတိပြုပါ။ ၎င်းသည် သင့်ပရောဂျက်၏ အရွယ်အစားနှင့် လုပ်ဆောင်မှုအမြန်နှုန်းအပေါ် သက်ရောက်မှုရှိသော်လည်း RAM အသုံးပြုမှုကို လျှော့ချသင့်သည်။ လိုအပ်ပါက -mno-const-data-in-progmem ရွေးချယ်မှုကို အသုံးပြု၍ ဤအင်္ဂါရပ်ကို ပိတ်နိုင်သည်။

ဗားရှင်း 2.00

  • Configuration fuses စက်ပစ္စည်း configuration fuses များသည် fuse state ကိုသတ်မှတ်ရန် setting-value pairs များနောက်တွင် config pragma ကိုအသုံးပြု၍ ပရိုဂရမ်လုပ်နိုင်ပါပြီ၊ ဥပမာ #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
  • အကြွင်းမဲ့အရာဝတ္ထုများနှင့် လုပ်ဆောင်ချက်များကို CCI __at(address) အတိအကျဖော်ပြချက်ကို အသုံးပြု၍ အရာဝတ္ထုများနှင့် လုပ်ဆောင်ချက်များကို ယခုအခါ မှတ်ဉာဏ်အတွင်း တိကျသောလိပ်စာတွင် ထားရှိနိုင်ပြီဖြစ်သည်။ample-
    • #ပါဝင်ပါတယ်။
      int foobar __at(0x800100);
      char __at(0x250) getID(int offset) { … }
      ဤသတ်မှတ်သတ်မှတ်မှုအတွက် အကြောင်းပြချက်သည် ပထမ byte သို့မဟုတ် ညွှန်ကြားချက်ကို ထားရှိမည့်လိပ်စာကို ကိုယ်စားပြုသည့် ကိန်းသေတစ်ခု ဖြစ်ရပါမည်။ 0x800000 အော့ဖ်ဆက်ကို အသုံးပြု၍ RAM လိပ်စာများကို ညွှန်ပြသည်။ ဤအင်္ဂါရပ်ကိုအသုံးပြုရန် CCI ကိုဖွင့်ပါ။
  • အသစ်သော interrupt function syntax compiler သည် ယခု CCI __interrupt(num) specifer ကိုလက်ခံပြီး C functions များသည် interrupt handlers ဖြစ်ကြောင်းညွှန်ပြပါသည်။ ဥပမာအားဖြင့် သတ်မှတ်ပေးသူသည် ကြားဖြတ်နံပါတ်တစ်ခုကို ယူသည်။ample: #ပါဝင်ပါသည်။ void __interrupt(SPI_STC_vect_num) spi_Isr(void) { … }

ပုံသေကိစ္စများ

အောက်ပါတို့သည် compiler အတွက် ပြင်ဆင်မှုများ ပြုလုပ်ထားပါသည်။ ၎င်းတို့သည် ထုတ်လုပ်လိုက်သော ကုဒ်တွင် အမှားအယွင်းများကို ပြင်ဆင်နိုင်သည် သို့မဟုတ် အသုံးပြုသူ၏လမ်းညွှန်မှုဖြင့် ရည်ရွယ်ထားသည့် သို့မဟုတ် သတ်မှတ်ထားသော ကွန်ပလီလာ၏ လုပ်ဆောင်ချက်ကို ပြောင်းလဲနိုင်သည်။ ခေါင်းစဉ်ခွဲများရှိ ဗားရှင်းနံပါတ်သည် နောက်ဆက်တွဲပြဿနာများအတွက် ပြုပြင်မှုများပါရှိသော ပထမဆုံး compiler ဗားရှင်းကို ညွှန်ပြသည်။ ခေါင်းစဉ်ရှိ ကွင်းပိတ်တပ်ထားသော အညွှန်း(များ)သည် ခြေရာခံ ဒေတာဘေ့စ်ရှိ ပြဿနာ၏ အထောက်အထားဖြစ်သည်။ ပံ့ပိုးကူညီမှုထံ ဆက်သွယ်ရန် လိုအပ်ပါက ၎င်းတို့သည် အသုံးဝင်နိုင်ပါသည်။
စက်နှင့်ဆက်စပ်နေသော Device Family Pack (DFP) တွင် အချို့သော စက်ပစ္စည်းဆိုင်ရာ ပြဿနာများကို ပြုပြင်ထားကြောင်း သတိပြုပါ။ DFPs များတွင် ပြုလုပ်ထားသော အပြောင်းအလဲများနှင့် နောက်ဆုံးထွက်ပက်ကေ့ခ်ျများကို ဒေါင်းလုဒ်လုပ်ရန် အချက်အလက်များအတွက် MPLAB Pack Manager ကို ကြည့်ပါ။

ဗားရှင်း 2.45

  • Roaming လိုင်စင် ချို့ယွင်းချက် (XCLM-235) Roamed လိုင်စင်များသည် 2.28 ထက်နောက်ကျသော glibc ဗားရှင်းများကို အသုံးပြုထားသော Linux ပလပ်ဖောင်းများတွင် မှန်ကန်စွာ အလုပ်လုပ်၍မရပါ။
  • array များ၏ အတွင်းပိုင်း အမှားအယွင်းများ (XC8-3069) ဖွဲ့စည်းတည်ဆောက်ပုံတစ်ခု၏ ဘက်စုံအခင်းအကျင်း အဖွဲ့ဝင်များကို စီမံဆောင်ရွက်သောအခါ၊ လိပ်စာနေရာ အရည်အချင်းပြည့်မီသော အရာသည် array သို့ မှန်ကန်စွာ ပျံ့နှံ့ခြင်း မရှိပါ။ ၎င်းသည် address space qualifier information နှင့် internal compiler တွင် မကိုက်ညီမှုဖြစ်စေသည်။ ဒီအခြေအနေကို ပြုပြင်ပြီးပါပြီ။
  • မမှန်သော ထုတ်လွှင့်မှုများ (ML-353၊ XC8-3100) စံအထွက်/အမှားစီးကြောင်းများကို FDEV_SETUP_STREAM သို့မဟုတ် _init_stdout/_init_stderr ကို အသုံးပြု၍ တိကျစွာသတ်မှတ်ခြင်းမပြုပါက ၎င်းတို့ထံ စာရေးရန်ကြိုးစားခြင်းသည် သတ်မှတ်မထားသော အပြုအမူကို ဖြစ်ပေါ်စေပါသည်။ ၎င်းသည် perror() ကဲ့သို့သော stdlib လုပ်ဆောင်ချက်များမှ ရေးသားမှုများကိုလည်း ထိခိုက်စေပါသည်။ ၎င်းတို့ကို စတင်မလုပ်ဆောင်မီ ဤစီးကြောင်းများသို့ စာရေးမည်ဆိုပါက ယခုအခါ လျစ်လျူရှုပါမည်။
  • ပံ့ပိုးမထားသော ပြုပြင်မွမ်းမံမှု (XC8-2505) avr-libc စာကြည့်တိုက်သည် ဥပမာအားဖြင့် ပရင့်ဖ်ပုံစံပြောင်းလဲခြင်းဆိုင်ရာ သတ်မှတ်ဖော်ပြသူများရှိ *မွမ်းမံပြင်ဆင်မှုကို မပံ့ပိုးနိုင်ခဲ့ပါ။ample “%*f”။ ၎င်းကို Microchip Unifided Standard Library ၏နိဒါန်းဖြင့် ပံ့ပိုးပေးထားပါသည်။
  • အများအပြားက အစပြုမထားသည့် သတိပေးချက်များ (XC8-2409) စုစည်းမှုမှ အစပြုမထားသော const array ကိုကြုံတွေ့ရသောအခါတွင် တူညီသောသတိပေးစာအများအပြားကို ထုတ်ပေးနေပါသည်။ မက်ဆေ့ချ်ကို တစ်ကြိမ်သာ ထုတ်ပြန်ခဲ့သင့်ပြီး ယခုအခြေအနေ ပေါ်ပေါက်လာချိန်တွင် ဖြစ်သင့်သည်။

ဗားရှင်း 2.41

  • Ventura (XC8-3088) တွင် Dongle ပြဿနာများသည် compiler ကို လိုင်စင်ပေးရန်အတွက် အသုံးပြုသော Dongles များကို macOS Ventura hosts များတွင် ကောင်းစွာမဖတ်နိုင်သောကြောင့် လိုင်စင်မအောင်မြင်နိုင်ပါ။ XCLM လိုင်စင်မန်နေဂျာမှ အပြောင်းအလဲများသည် ဤပြဿနာကို မှန်ကန်စေသည်။
  • ရိုးရှင်းသော ရွေ့လျားမှတ်ဉာဏ်ခွဲဝေသုံးစွဲမှု အကောင်အထည်ဖော်မှုကို အသုံးပြုသည့်အခါ တောင်းဆိုထားသည့် စံစာကြည့်တိုက်မှတ်ဉာဏ် စီမံခန့်ခွဲမှုလုပ်ဆောင်ချက်များ (malloc() et al) ကို အသုံးပြု၍ မမ်မိုရီခွဲဝေမှု (XC8-2925) SIZE_MAX ဘိုက်များ (သို့မဟုတ် ၎င်းနှင့် နီးစပ်သည့်တန်ဖိုး) ခွဲဝေချထားရန် ကြိုးပမ်းနေသည်။ NULL ညွှန်ပြချက်ကို ယခု ပြန်ပေးမည်ဖြစ်ပြီး ထိုသို့သောအခြေအနေများတွင် ENOMEM သို့ မှားယွင်းသတ်မှတ်ထားသည်။
  • မမှန်ကန်သော fma လုပ်ဆောင်ချက်များကို ဖယ်ရှားခဲ့သည် (XC8-2913) C99 စံပြစာကြည့်တိုက် fma()-မိသားစုလုပ်ဆောင်ချက်များ ( ) အထပ်ထပ်-ပေါင်းထည့်ခြင်းကို တစ်ခုတည်းသောအဝိုင်းသို့ အဆုံးမရှိတိကျမှုဖြင့် ထည့်တွက်ခြင်းမပြုဘဲ လည်ပတ်မှုတစ်ခုစီတွင် စုဆောင်းမှုအမှားများကို စုဆောင်းခဲ့သည်။ ဤလုပ်ဆောင်ချက်များကို ပံ့ပိုးပေးထားသည့် ဒစ်ဂျစ်တိုက်မှ ဖယ်ရှားလိုက်ပါပြီ။
  • စာကြောင်းပြောင်းခြင်း၏ ကိုင်တွယ်မှု ညံ့ဖျင်းခြင်း (XC8-2921၊ XC8-2652) strtod() ဖြင့် ပြောင်းလဲခြင်းအတွက် 'ဘာသာရပ်ဆိုင်ရာ အတွဲလိုက်' တွင် ကိန်းဂဏန်းပုံစံဖြင့် ပေါ်နေသောအမှတ်ဟုထင်ရသော အရာများပါရှိပြီး e/E ပြီးနောက် မထင်မှတ်ထားသော အက္ခရာတစ်ခု ရှိနေသောအခါ၊ အက္ခရာ၊ ထို့နောက် endptr ပေးထားသည့်နေရာ၊ ၎င်းနောက်တွင် ဇာတ်ကောင်ကို ညွှန်ပြသည့် လိပ်စာတစ်ခု သတ်မှတ်ပေးခဲ့သည်၊ ၎င်းသည် e//E ဇာတ်ကောင်ကို မပြောင်းရသေးသောကြောင့် ၎င်းကို ညွှန်ပြနေသင့်သည်။ ဟောင်းအတွက်ample, strtod(“100exx”, &ep) သည် 100.00 ကို ပြန်ပေးသင့်ပြီး ep သည် string ၏ “exx” အပိုင်းသို့ ညွှန်ပြရန် သတ်မှတ်ပေးသင့်ပြီး function သည် မှန်ကန်သောတန်ဖိုးကို ပြန်ပေးသော်လည်း string ၏ “xx” အပိုင်းကို သတ်မှတ်ပေးပါသည်။

ဗားရှင်း 2.40

  • စိတ်လျှော့လွန်းသည် (XC8-2876) -mrelax ရွေးချယ်မှုကို အသုံးပြုသောအခါ၊ စုစည်းမှုသည် အချို့သောအပိုင်းများကို အတူတကွ ခွဲဝေပေးခြင်းမရှိသောကြောင့် အကောင်းဆုံးသောကုဒ်အရွယ်အစားများကို လျော့နည်းစေသည်။ MUSL စာကြည့်တိုက်အသစ် သို့မဟုတ် အားနည်းသော သင်္ကေတများဖြင့် အသုံးပြုသော ကုဒ်ဖြင့် ၎င်းသည် ဖြစ်ပေါ်နိုင်သည်။
  • သတိပေးချက် (XC8-2875) တွင်ဖော်ပြထားသည့်အတိုင်း မြေပုံဆွဲခြင်းအင်္ဂါရပ်ကို ပိတ်ထားမည်မဟုတ်ပါ) const-data-in-confg-mapped-progmem အင်္ဂါရပ်သည် const-data-in-progmem အင်္ဂါရပ်ကိုဖွင့်ထားသောကြောင့် အားကိုးပါသည်။ const-data-in-confg-mapped-progmem အင်္ဂါရပ်ကို ရွေးချယ်ခွင့်ကို အသုံးပြု၍ အတိအလင်းဖွင့်ထားကာ const-data-in-progmem အင်္ဂါရပ်ကို ပိတ်ပါက၊ const-data-in ဟုသတိပေးစာတစ်စောင်ပေးပို့ထားသော်လည်း လင့်ခ်အဆင့် မအောင်မြင်ပါ။ -config-mapped-progmem အင်္ဂါရပ်ကို အလိုအလျောက်ပိတ်ထားခဲ့ပြီး၊ ၎င်းမှာ လုံးဝမှန်ကန်ခြင်းမရှိပါ။ const-data-in-confg-mapped-progmem အင်္ဂါရပ်ကို ယခုအခြေအနေတွင် အပြည့်အဝ ပိတ်ထားသည်။
  • NVMCTRL (XC8-2848) AVR64EA စက်များမှ အသုံးပြုသော runtime startup code သည် NVMCTRL မှတ်ပုံတင်ခြင်းကို Configuration Change Protection (CCP) အောက်တွင် ရှိနေကြောင်း ထည့်သွင်းစဉ်းစားခြင်းမရှိသော DFP မှ ပြောင်းလဲမှုများနှင့် IO SFR ကို အသုံးပြုထားသော စာမျက်နှာသို့ သတ်မှတ်၍မရပါ။ const-data-in-confg-mapped-progmem compiler အင်္ဂါရပ်အားဖြင့်။ AVR-Ex_DFP ဗားရှင်း 2.2.55 တွင် ပြုလုပ်ထားသော အပြောင်းအလဲများသည် runtime startup ကုဒ်ကို ဤမှတ်ပုံတင်တွင် မှန်ကန်စွာရေးနိုင်စေမည်ဖြစ်သည်။
  • flash mapping (XC8-2847) AVR128DA28/32/48/64 Silicon Errata (DS80000882) တွင် အစီရင်ခံတင်ပြထားသော flash-mapping device အင်္ဂါရပ်နှင့် ပြဿနာတစ်ခုအတွက် ရှောင်ရန် DFP အပြောင်းအလဲများကို လုပ်ဆောင်ပြီးပါပြီ။ const-data-in-confg-mapped-progmem စုစည်းမှုအင်္ဂါရပ်ကို ထိခိုက်သည့်စက်ပစ္စည်းများအတွက် မူရင်းအတိုင်းအသုံးပြုမည်မဟုတ်ပါ၊ ဤပြောင်းလဲမှုသည် AVR-Dx_DFP ဗားရှင်း 2.2.160 တွင် ပေါ်လာမည်ဖြစ်သည်။
  • sinhf သို့မဟုတ် coshf (XC8-2834) ဖြင့် sinhf() သို့မဟုတ် coshf() စာကြည့်တိုက်လုပ်ဆောင်ချက်များကို အသုံးပြုရန် ကြိုးပမ်းမှုများသည် လင့်ခ်အမှားအယွင်းကို ဖြစ်ပေါ်စေပြီး သတ်မှတ်မထားသော ကိုးကားချက်ကို ဖော်ပြပါသည်။ ရည်ညွှန်းထားသော ပျောက်ဆုံးနေသော လုပ်ဆောင်ချက်ကို ယခုအခါ စုစည်းမှုဖြန့်ဝေမှုတွင် ထည့်သွင်းလိုက်ပါပြီ။
  • nopa (XC8-2833) ဖြင့် အမှားအယွင်းများ ဆောက်သည် __asm__() ကို အသုံးပြု၍ တပ်ဆင်သူထံမှ အမှားအယွင်း မက်ဆေ့ချ်များကို အစပျိုးပေးသည့် ၎င်း၏ တပ်ဆင်သူအမည်ပါသည့် လုပ်ဆောင်ချက်ဖြင့် nopa ရည်ညွှန်းချက်ကို အသုံးပြုခြင်း။ ဤပေါင်းစပ်မှု မဖြစ်နိုင်ပါ။
  • const-data-in-progmem အင်္ဂါရပ်ရှိသောအခါတွင် ပြောင်းလဲနိုင်သော အငြင်းအခုံများ (XC8-2755၊ XC8-2731) ကွဲပြားသော ကိန်းဂဏာန်းများနှင့်အတူ ကွဲပြားသော လုပ်ဆောင်ချက်များ ပျက်ကွက်သည် ဖွင့်ထားသည်။ ဒေတာမှတ်ဉာဏ်သို့ ညွှန်ပြသည့် အငြင်းအခုံများကို 24-ဘစ်အရာဝတ္ထုများအဖြစ် ဖြတ်သန်းနေပြီး နောက်ဆုံးတွင် ၎င်းတို့ကိုဖတ်သည့်အခါ ကုဒ်ပျက်ကွက်မှုကို ဖြစ်စေသည်။ const-data-in-progmem အင်္ဂါရပ်ကို ဖွင့်ထားသောအခါ၊ 16-bit pointers အကြောင်းပြချက်များအားလုံးသည် 16-bit pointers အဖြစ်သို့ ပြောင်းလဲသွားပါပြီ။
  • strtoxxx စာကြည့်တိုက် လုပ်ဆောင်ချက်များ ပျက်ကွက်ခြင်း (XC8-2620) const-data-in-progmem အင်္ဂါရပ်ကို ဖွင့်ထားသောအခါ၊ strtoxxx စာကြည့်တိုက် လုပ်ဆောင်ချက်များရှိ endptr ဘောင်ကို ပရိုဂရမ်မှတ်ဉာဏ်တွင် မရှိသည့် ရင်းမြစ်စာကြောင်းဆိုင်ရာ အကြောင်းပြချက်များအတွက် မှန်ကန်စွာ မွမ်းမံမွမ်းမံခဲ့သည်။
  • မမှန်ကန်သောကာစ်များအတွက် သတိပေးချက်များ (XC8-2612) const-in-progmem အင်္ဂါရပ်ကို ဖွင့်ထားလျှင် အမှားအယွင်းတစ်ခု ထုတ်ပေးမည်ဖြစ်ပြီး string literal ၏လိပ်စာကို data address space (ဥပမာ const အရည်အသွေးကို ကျဆင်းစေသည်)၊ ဥပမာ၊ample၊ (uint8_t *) “Hello World!” . const data pointer ကို data address space သို့ ပြတ်သားစွာ ကာစ်လုပ်သောအခါ လိပ်စာသည် မမှန်ကန်ပါက သတိပေးချက်သည် ပြဿနာဖြစ်သည်။
  • မစဥ်းစားနိုင်သော const အရာဝတ္ထုများ နေရာချထားခြင်း (XC8-2408) Unitialized and const volatile objects const
    ၎င်းတို့၏ ပရိုဂရမ်မှတ်ဉာဏ်၏ အစိတ်အပိုင်းအားလုံးကို ဒေတာလိပ်စာနေရာသို့ မြေပုံဆွဲထားသည့် စက်ပစ္စည်းများတွင် ပရိုဂရမ်မှတ်ဉာဏ်တွင် ထည့်သွင်းထားခြင်းမရှိပါ။ ဤစက်ပစ္စည်းများအတွက်၊ ဤအရာဝတ္ထုများကို ပရိုဂရမ်မှတ်ဉာဏ်တွင် ထားရှိထားပြီး ၎င်းတို့၏လုပ်ဆောင်ချက်ကို အခြားစက်ပစ္စည်းများနှင့် ကိုက်ညီစေသည်။

ဗားရှင်း 2.39 (Functional Safety Release)
တစ်ခုမှ

ဗားရှင်း 2.36
နှောင့်နှေးနေချိန်တွင် အမှားအယွင်း (XC8-2774) ပုံသေ အခမဲ့မုဒ် ပိုမိုကောင်းမွန်အောင်လုပ်ဆောင်မှုများရှိ အသေးစားပြောင်းလဲမှုများသည် နှောင့်နှေးနေသော built-in လုပ်ဆောင်ချက်များသို့ operand စကားရပ်များကို အဆက်မပြတ်ခေါက်ခြင်းမှ တားဆီးခဲ့ပြီး ၎င်းတို့အား ကိန်းသေမဟုတ်သည့်အဖြစ် သတ်မှတ်ခံရပြီး အမှားအယွင်းဖြစ်စေသည်- __builtin_avr_delay_cycles သည် compile time integer ကို မျှော်လင့်ထားသည် စဉ်ဆက်မပြတ်။

ဗားရှင်း 2.35

  • __at (XC8-2653) ကို အသုံးပြု၍ ဆက်တိုက်ခွဲဝေခြင်းသည် အမည်တူနှင့် __at() ကိုအသုံးပြု၍ ကဏ္ဍတစ်ခုရှိ အရာဝတ္တုများစွာကို ဆက်တိုက်ခွဲဝေပေးခြင်းသည် မှန်ကန်စွာအလုပ်မလုပ်ပါ။ ဟောင်းအတွက်ample-
    const char arr1[] __attribute__((အပိုင်း(“.mysec”))) __at (0x500) = {0xAB, 0xCD}; const char arr2[] __attribute__((အပိုင်း(“.mysec”))) = {0xEF, 0xFE}; Arr2 ပြီးတာနဲ့ ချက်ချင်း Arr1 ကို ထားသင့်ပါတယ်။
  • အပိုင်းအစလိပ်စာများကို သတ်မှတ်ခြင်း (XC8-2650) -Wl,–section-start option သည် အမည်စာရင်းတင်ထားသော စတင်သည့်လိပ်စာတွင် အပိုင်းများကို တိတ်တဆိတ်ထားရန် ပျက်ကွက်ခဲ့သည်။ ဤပြဿနာကို စိတ်ကြိုက်အမည်ပေးထားသော ကဏ္ဍများအတွက် ပြေလည်သွားသည် ။ သို့သော်၊ .text သို့မဟုတ် .bss ကဲ့သို့သော စံကဏ္ဍများအတွက် ၎င်းသည် -Wl,-T ရွေးချယ်မှုကို အသုံးပြု၍ ထားရှိရမည်မဟုတ်ပါ။ (XC8-2647) -mrelax optimization ကိုဖွင့်ပြီး ရရှိနိုင်သော memory တွင် မကိုက်ညီသော ကုဒ် သို့မဟုတ် ဒေတာအပိုင်းများ ရှိသောအခါ လင့်ခ်ဂါသည် ပျက်သွားသည်။ ယခု ဤကဲ့သို့သော အခြေအနေမျိုးတွင် အမှားအယွင်း မက်ဆေ့ချ်များကို ထုတ်ပေးပါသည်။
  • နောက်ပြန်မဆုတ်စေရ (XC8-2646) –nofallback ရွေးချယ်မှုကို မှန်ကန်စွာ အကောင်အထည်မဖော်နိုင်သလို မှတ်တမ်းမတင်ထားပါဘူး။ compiler သည် လိုင်စင်မဲ့ဖြစ်နေပါက compiler သည် နိမ့်သော optimization ဆက်တင်သို့ ပြန်ကျသွားမည်မဟုတ်ကြောင်း သေချာစေရန် ယခု ၎င်းကို ရွေးချယ်နိုင်ပြီး error ထုတ်ပေးမည်ဖြစ်သည်။
  • အဆင့် 8 ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်း (-O2637) ကို ရွေးချယ်သောအခါ မသင့်လျော်သော အမြန်နှုန်း ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်း (XC3-3) လုပ်ထုံးလုပ်နည်းဆိုင်ရာ abstraction optimizations ကို ဖွင့်ထားသည်။ အဆိုပါ ပိုမိုကောင်းမွန်အောင်ပြုလုပ်မှုများသည် ကုဒ်အမြန်နှုန်းကို အသုံးပြု၍ ကုဒ်အရွယ်အစားကို လျှော့ချပေးသောကြောင့် လုပ်ဆောင်ခြင်းမပြုသင့်ပါ။
  • ဆိုးရွားသော EEPROM အသုံးပြုခွင့် (XC8-2629) – mconst-data-in-progmem ရွေးချယ်မှုကို ဖွင့်ထားသောအခါ (မူရင်းအခြေအနေဖြစ်သည့်) EEPROM မမ်မိုရီကို မှန်ကန်စွာဖတ်မရသောအခါတွင် eeprom_read_block ပုံမှန်အလုပ်မလုပ်ပါ။
  • မမှန်ကန်သော မမ်မိုရီခွဲဝေမှု (XC8-2593၊ XC8-2651) -Ttext သို့မဟုတ် -Tdata linker ရွေးချယ်မှု (ဥပမာ၊ample -Wl driver option ကိုအသုံးပြု၍ ဖြတ်သန်းသွားသည်) ကို သတ်မှတ်ထားသည်၊ သက်ဆိုင်ရာ စာသား/ဒေတာ ဒေသမူလကို မွမ်းမံခဲ့သည်။ သို့သော်၊ အဆုံးလိပ်စာကို လိုက်လျောညီထွေမဖြစ်အောင် ချိန်ညှိထားခြင်းမရှိသောကြောင့် ပစ်မှတ်ကိရိယာ၏ မှတ်ဉာဏ်အကွာအဝေးထက် ကျော်လွန်သည့်နေရာကို ဖြစ်ပေါ်စေနိုင်သည်။
  • over-attributed function (XC8-2580) ပျက်ကျခြင်း ၊ __attribute__(( __signal__ ၊ __interrupt__ ) ))) မှ တစ်ခုထက်ပိုသော function ကိုအသုံးပြုကြောင်းကြေငြာပါက compiler ပျက်သွားသည်။
  • မမှန်ကန်သော ATtiny ကြားဖြတ်ကုဒ် (XC8-2465) ATtiny စက်များအတွက် တည်ဆောက်ခြင်းနှင့် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းများကို ပိတ်လိုက်သောအခါ (-O0)၊ ကြားဖြတ်လုပ်ဆောင်မှုများသည် အပိုင်းအခြားပြင်ပတွင် လည်ပတ်လုပ်ဆောင်မှုကို အစပျိုးနိုင်သည်
  • ရွေးချယ်စရာများ (XC8-2452) အများအပြားရှိသော၊ ကော်မာ-ခြားထားသော လင့်ခ်ကို ရွေးစရာများနှင့်အတူ -Wl ရွေးချယ်မှုကို အသုံးပြုသောအခါ၊ လင့်ခ်ပေးရွေးချယ်စရာများအားလုံးကို လင့်ခ်ဂါထံ လွှဲပြောင်းမခံရပါ။
  • ပရိုဂရမ်မှတ်ဉာဏ်ကို သွယ်ဝိုက်သောနည်းဖြင့်ဖတ်ခြင်းအမှား (XC8-2450) အချို့သောဖြစ်ရပ်များတွင်၊ ကွန်ပြူတာသည် pointer မှ ပရိုဂရမ်မှတ်ဉာဏ်ဆီသို့ နှစ်ဘိုက်တန်ဖိုးကိုဖတ်သည့်အခါ အတွင်းပိုင်းအမှား (မသိနိုင်သော insn) ကိုထုတ်ပေးသည်။

ဗားရှင်း 2.32
စာကြည့်တိုက်၏ ဒုတိယဝင်ရောက်ခွင့် မအောင်မြင်ပါ (XC8-2381) xc8-ar.exe စာကြည့်တိုက် archiver ၏ Windows ဗားရှင်းအား လက်ရှိစာကြည့်တိုက် archive ကိုဝင်ရောက်ကြည့်ရှုရန် ဒုတိယအကြိမ်အဖြစ် အမှားအယွင်း မက်ဆေ့ချ်ကို အမည်ပြောင်း၍မရပါ။

ဗားရှင်း 2.31
မရှင်းပြနိုင်သော စုစည်းမှု ချို့ယွင်းချက်များ (XC8-2367) 'စက်' ပါ၀င်သည့် လမ်းကြောင်းတစ်ခုသို့ စနစ် ယာယီလမ်းညွှန်သတ်မှတ်ထားသော Windows ပလပ်ဖောင်းများပေါ်တွင် အလုပ်လုပ်သောအခါ၊ ဇာတ်ကောင်၊ compiler သည် execute ပျက်ကွက်သွားနိုင်သည်။

ဗားရှင်း 2.30

  • (XC8-2299) ကို အကြမ်းဖျင်းဖော်ပြပြီးနောက် ကမ္ဘာလုံးဆိုင်ရာ အညွှန်းများ နေရာလွဲမှားသွားခြင်း (XCXNUMX-XNUMX) လက်ရေးဖြင့်ရေးထားသော စည်းဝေးပွဲကုဒ်များကို လုပ်ထုံးလုပ်နည်းအရ ခွဲခြမ်းစိတ်ဖြာခြင်းဖြင့် မှန်ကန်စွာ ပြန်လည်နေရာချထားခြင်း ဖြစ်နိုင်သော ကမ္ဘာလုံးဆိုင်ရာ အညွှန်းများကို စည်းဝေးပွဲအစီစဉ်များအတွင်း နေရာချထားသော လက်ဖြင့်ရေးထားသော စည်းဝေးပွဲကုဒ်များ။
  • လျှော့ပေါ့ပျက်ကျခြင်း (XC8-2287) -mrelax ရွေးချယ်မှုကို အသုံးပြုခြင်းသည် အပိုင်းတစ်ခု၏အဆုံးတွင်မဟုတ်သော ret instruction ကို ဖယ်ရှားရန် ကြိုးပမ်းသောအခါ အမြီးခုန်ခြင်း ပြေလျော့စေခြင်း အကောင်းဆုံးပြင်ဆင်မှုများသည် လင့်ခ်ကို ပျက်သွားစေနိုင်သည်။
  • အညွှန်းများကို တန်ဖိုးများအဖြစ် (XC8-2282) ကုဒ်များကို “တန်ဖိုးများအဖြစ်” GNU C ဘာသာစကား တိုးချဲ့မှုကို အသုံးပြု၍ အညွှန်းများကို တန်ဖိုးများအဖြစ် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်သောအခါ ပျက်ကျသွားနိုင်ပြီး အပိုင်းအခြား အပိုင်းများကို ပြုပြင်မှုအမှားအယွင်းတစ်ခုကြောင့် ပျက်စီးသွားနိုင်သည်။
  • Not so const (XC8-2271) strstr() အတွက် ရှေ့ပြေးပုံစံများနှင့် အခြားလုပ်ဆောင်ချက်များမှ const -mconst-data-in- progmem အင်္ဂါရပ်ကို ပိတ်လိုက်သောအခါတွင် ပြန်ပေးထားသော စာကြောင်းညွှန်ပြချက်များတွင် စံမဟုတ်သော အရည်အသွေးပြည့်မီမှုကို သတ်မှတ်တော့မည်မဟုတ်ပါ။ avrxmega3 နှင့် avrtiny စက်များဖြင့် ဤအင်္ဂါရပ်ကို အပြီးအပိုင် ဖွင့်ထားကြောင်း သတိပြုပါ။
  • ပျောက်ဆုံးသွားသော ကနဦးအသုံးပြုမှုများ (XC8-2269) ဘာသာပြန်ယူနစ်တစ်ခုတွင် ကိန်းရှင်တစ်ခုထက်ပိုသော အပိုင်းတစ်ခု (__အပိုင်း သို့မဟုတ် __attribute__((ကဏ္ဍ))) ကို အသုံးပြု၍ ကဏ္ဍတစ်ခုတွင် ထားရှိသည့်အခါ၊ နှင့် ပထမဦးဆုံး အဆိုပါကိန်းရှင်သည် သုညအစပြုခဲ့သည် သို့မဟုတ် ကနဦးအစပြုမှုတစ်ခု မရှိပါက၊ တူညီသောကဏ္ဍတွင် ထားရှိထားသော တူညီသောဘာသာပြန်ယူနစ်ရှိ အခြားကိန်းရှင်များ ပျောက်ဆုံးသွားခဲ့သည်။

ဗားရှင်း 2.29 (Functional Safety Release)
တစ်ခုမှ

ဗားရှင်း 2.20

  • ရှည်လျားသော command များဖြင့် အမှားအယွင်းများ (XC8-1983) AVR ပစ်မှတ်ကို အသုံးပြုသည့်အခါ၊ ကွန်ပြူတာလိုင်းသည် အလွန်ကြီးမားပြီး အထူးဇာတ်ကောင်များဖြစ်သည့် ကိုးကားချက်များ၊ backslashes စသည်တို့ပါရှိသော ဖိုင်ကို တွေ့ရှိပါက ကွန်ပြူတာသည် ရပ်တန့်သွားနိုင်သည်။
  • သတ်မှတ်မထားသော rodata အပိုင်း (XC8-1920) AVR လင့်ခ်သည် avrxmega3 နှင့် avrtiny ဗိသုကာများအတွက် တည်ဆောက်သောအခါတွင် စိတ်ကြိုက် rodata ကဏ္ဍများအတွက် မန်မိုရီကို သတ်မှတ်၍ မရပါ၊

ဗားရှင်း 2.19 (Functional Safety Release)
တစ်ခုမှ

ဗားရှင်း 2.10

  • နေရာရွှေ့ပြောင်းမှု အဆင်မပြေမှုများ (XC8-1891) အကောင်းဆုံး ခွဲဝေပေးသူသည် လင့်ခ်ကို ပြေလျော့ပြီးနောက် အပိုင်းများကြားရှိ မှတ်ဉာဏ် 'အပေါက်များ' ကို ချန်ထားသည်။ မမ်မိုရီကို အပိုင်းပိုင်းခွဲခြင်းအပြင်၊ ၎င်းသည် pc-relative jumps သို့မဟုတ် ဖုန်းခေါ်ဆိုမှုများနှင့်ပတ်သက်သော linker များနေရာပြောင်းခြင်းဆိုင်ရာ ချို့ယွင်းချက်များရှိနိုင်ခြေကို တိုးစေသည်။
  • ဖြေလျှော့ခြင်းဖြင့် မပြောင်းလဲသော ညွှန်ကြားချက်များ (XC8-1889) Linker လျှော့ပေါ့ခြင်းများသည် ခုန်ခြင်း သို့မဟုတ် လျှော့ပေါ့ထားလျှင် ပစ်မှတ်များဆီသို့ ရောက်ရှိနိုင်သည့် ညွှန်ကြားချက်များကို ခုန်ချခြင်း သို့မဟုတ် ဖုန်းခေါ်ဆိုခြင်းအတွက် မဖြစ်ပေါ်ခဲ့ပါ။
  • ပျောက်နေသည်။ လုပ်ဆောင်နိုင်စွမ်း (XC8E-388) ထံမှ များစွာသော အဓိပ္ပါယ်ဖွင့်ဆိုချက်များ clock_div_t နှင့် clock_prescale_set() ကဲ့သို့သော ATmega324PB၊ ATmega328PB၊ ATtiny441 နှင့် ATtiny841 အပါအဝင် စက်ပစ္စည်းများအတွက် သတ်မှတ်မထားပါ။
  • လွဲမှားနေသော မက်ခရိုများ ကြိုတင်ပရိုဆက်ဆာ မက်ခရို _XC8_MODE_၊ __XC8_VERSION၊ __XC နှင့် __XC8 တို့ကို စုစည်းမှုမှ အလိုအလျောက် သတ်မှတ်ပေးပါသည်။ ဒါတွေကို အခုရရှိနိုင်ပါပြီ။

ဗားရှင်း 2.05

  • Internal compiler error (XC8-1822) Windows အောက်တွင် တည်ဆောက်သည့်အခါ၊ အတွင်းပိုင်း compiler error သည် code ကို optimizing လုပ်သောအခါတွင် ဖြစ်ပေါ်နိုင်သည်။
  • RAM ပိုလျှံမှုကို မတွေ့ပါ (XC8-1800၊ XC8-1796) ရရှိနိုင်သော RAM ထက်ကျော်လွန်သော ပရိုဂရမ်များကို အချို့အခြေအနေများတွင် compiler မှ ရှာမတွေ့သဖြင့် runtime code ချို့ယွင်းမှုကို ဖြစ်ပေါ်စေပါသည်။
  • ချန်လှပ်ထားသည့် flash memory (XC8-1792) avrxmega3 နှင့် avrtiny စက်များအတွက်၊ flash memory ၏ အစိတ်အပိုင်းများကို MPLAB X IDE မှ ပရိုဂရမ်မတင်ဘဲ ထားသွားနိုင်သည်။
  • ပင်မ (XC8-1788) ကို လုပ်ဆောင်ရန် ပျက်ကွက်မှု အချို့သော အခြေအနေများတွင် ပရိုဂရမ်တွင် ကမ္ဘာလုံးဆိုင်ရာ ကိန်းရှင်များ မသတ်မှတ်ထားဘဲ၊ runtime startup code သည် ထွက်မသွားဘဲ main() လုပ်ဆောင်ချက်ကို မည်သည့်အခါမျှ မရောက်ပါ။
  • မှားယွင်းနေသော မမ်မိုရီအချက်အလက် (XC8-1787) avrxmega3 နှင့် avrtiny စက်များအတွက်၊ avr-size ပရိုဂရမ်သည် ပရိုဂရမ်မမ်မိုရီအစား ဖတ်သာဒေတာသည် RAM သုံးစွဲနေကြောင်း သတင်းပို့နေသည်။
  • မမှန်ကန်သော ပရိုဂရမ်မမ်မိုရီဖတ်ခြင်း (XC8-1783) ပရိုဂရမ်မမ်မိုရီကို ဒေတာလိပ်စာနေရာသို့ မြေပုံဆွဲထားသော စက်ပစ္စည်းများအတွက် စုစည်းထားသော ပရောဂျက်များနှင့် PROGMEM macro/attribute ကို အသုံးပြု၍ အရာဝတ္ထုများကို လိပ်စာမှားဖတ်မိခြင်း ဖြစ်နိုင်သည်။
  • ရည်ညွှန်းချက်အမည်များနှင့် ရည်ညွှန်းထားသော အမျိုးအစားအကြားရှိ __at() သို့မဟုတ် attribute() တိုကင်များဖြင့် သတ်မှတ်ထားပါက အတွင်းပိုင်း အမှားအယွင်း (XC8-1773)၊ ဥပမာ၊ample၊ char * __at(0x800150) cp; ထိုသို့သောကုဒ်များတွေ့ရှိပါက ယခုသတိပေးချက်ထုတ်ပြန်ထားသည်။
  • ပင်မ (XC8-1780၊ XC8-1767၊ XC8-1754) EEPROM variable များကိုအသုံးပြုခြင်း သို့မဟုတ် config pragma ကိုအသုံးပြု၍ fuses များသတ်မှတ်ခြင်းများသည် ဒေတာအစပျိုးခြင်းမှားယွင်းခြင်းနှင့်/သို့မဟုတ် ပရိုဂရမ်လုပ်ဆောင်ခြင်းကို လော့ခ်ချခြင်းဖြစ်နိုင်သည်( runtime startup ပင်မကုဒ်သို့မရောက်ရှိမီ၊ )
  • သေးငယ်သောကိရိယာများဖြင့် ပေါင်းစည်းမှု အမှားအယွင်း (XC8-1778, XC8-1742) attiny4/5/9/10/20/40 စက်များတွင် ၎င်းတို့၏ ခေါင်းစီးဖိုင်များတွင် သတ်မှတ်ထားသော ကုဒ်ကိုတည်ဆောက်ရန် ကြိုးပမ်းသည့်အခါ ချိတ်ဆက်မှုဆိုင်ရာ အမှားအယွင်းများဆီသို့ ဦးတည်သွားသော ဖျစ်အရှည်ကို သတ်မှတ်ဖော်ပြထားသည် .
  • ခွဲခြမ်းခြင်းပြတ်တောက် (XC8-1777) အဆက်မပြတ် ခွဲခြမ်းခြင်းပြတ်တောက်မှုအား ပြုပြင်ပြီးပါပြီ။
  • Assembler crash (XC8-1761) avr-as assembler သည် Ubuntu 18 အောက်တွင် compiler ကို run သောအခါ ပျက်စီးသွားနိုင်သည်။
  • မရှင်းလင်းသော အရာများ (XC8-1752) Unitialized static storage ကြာချိန် အရာဝတ္တုများကို runtime startup code ဖြင့် မရှင်းလင်းနိုင်ပါ။
  • ကွဲလွဲနေသော စက်ပစ္စည်း သတ်မှတ်ချက်ကို လျစ်လျူရှုထားသည် (XC8-1749) ကွန်ပြူတာသည် စက်ပစ္စည်းသတ်မှတ်မှုရွေးချယ်စရာများစွာကို အသုံးပြုပြီး မတူညီသောစက်ပစ္စည်းများကို ညွှန်ပြသောအခါတွင် အမှားအယွင်းတစ်ခုဖြစ်ပေါ်နေပါသည်။
  • အမှိုက်ပုံမှ Memory ဖောက်ပြန်ခြင်း (XC8-1748) __heap_start သင်္ကေတသည် မှားယွင်းစွာ သတ်မှတ်နေသောကြောင့် ရလဒ်အနေဖြင့် သာမန်ကိန်းရှင်များ ပျက်စီးသွားနိုင်ခြေရှိသည်။
  • Linker နေရာပြောင်းခြင်း အမှား (XC8-1739) 4k bytes အကွာအဝေးတွင် ပစ်မှတ်တစ်ခုနှင့် rjmp သို့မဟုတ် rcall ပါရှိသော ကုဒ်တွင် လင့်ခ်ကိရိယာ ပြောင်းရွှေ့မှု အမှားတစ်ခု ထုတ်လွှတ်နိုင်ဖွယ်ရှိသည်။

ဗားရှင်း 2.00
တစ်ခုမှ

သိပြီးသားကိစ္စများ

အောက်ပါတို့သည် compiler ၏လုပ်ဆောင်မှုတွင် ကန့်သတ်ချက်များဖြစ်သည်။ ၎င်းတို့သည် ယေဘူယျအားဖြင့် ကုဒ်ကန့်သတ်ချက်များ သို့မဟုတ် အသုံးပြုသူ၏လက်စွဲတွင်ပါရှိသော အချက်အလက်များမှ သွေဖည်မှုများ ဖြစ်နိုင်သည်။ ခေါင်းစဉ်ရှိ ကွင်းပိတ်တပ်ထားသော အညွှန်း(များ)သည် ခြေရာခံ ဒေတာဘေ့စ်ရှိ ပြဿနာ၏ အထောက်အထားဖြစ်သည်။ အကူအညီလိုအပ်ပါက ၎င်းသည် အကျိုးရှိနိုင်ပါသည်။ အညွှန်းမပါသော အရာများသည် ကန့်သတ်ချက်များဖြစ်ပြီး modi operandi နှင့် အပြီးအပိုင် ဆက်လက်တည်ရှိနိုင်ဖွယ်ရှိကြောင်း ဖော်ပြသည့် ကန့်သတ်ချက်များဖြစ်သည်။

MPLAB X IDE ပေါင်းစပ်မှု

  • MPLAB IDE ပေါင်းစည်းခြင်း Compiler ကို MPLAB IDE မှအသုံးပြုမည်ဆိုပါက၊ Compiler မထည့်သွင်းမီ MPLAB IDE ကို ထည့်သွင်းရပါမည်။
  • Array debug အချက်အလက် (XC8-3157) compiler မှထုတ်လုပ်သော အမှားရှာအချက်အလက်သည် __memx address space ရှိ array အတွက် object အမျိုးအစားကို တိကျစွာ မဖော်ပြပါ။ ၎င်းသည် IDE တစ်ခုရှိ အရာဝတ္တုအား ကြည့်ရှုခြင်းကို တားဆီးနိုင်မည်ဖြစ်သည်။

ကုဒ်မျိုးဆက်

  • ကွဲပြားနိုင်သော အငြင်းအခုံစာရင်းများဖြင့် လုပ်ဆောင်ချက်များကို သတ်မှတ်ပေးသည့် အပိုင်း-ကျောက်ဆူးရွေးချယ်မှု (XC8-3045) ပရိုဂရမ်နှင့် ကွဲလွဲချက်-fsection-anchors ရွေးချယ်မှုတို့ကို အသုံးပြုသော ပရိုဂရမ်သည် အတွင်းပိုင်းစုစည်းမှုဆိုင်ရာ အမှားအယွင်းတစ်ခု ဖြစ်လာနိုင်သည်- ခွဲထွက်ခြင်း အမှား
  • စင့်ခ်လုပ်ခြင်းမှ အမှားအယွင်းမရှိသော အချက်အလက် (XC8-2948) လင့်ခ်ကို ပြေလျော့စေသော ပိုမိုကောင်းမွန်အောင်ပြုလုပ်မှုများသည် ညွှန်ကြားချက်များကို ကျုံ့သွားသည့်အခါ (ဥပမာ၊ample call to rcall ညွှန်ကြားချက်များ)) ကဏ္ဍတစ်ခုတွင် တစ်ခုထက်ပိုသော ကျုံ့သွားသည့် လုပ်ဆောင်မှုတစ်ခု ဖြစ်ပေါ်လာသည့်အခါ လိပ်စာမြေပုံဆွဲခြင်းအတွက် အရင်းအမြစ်လိုင်းသည် ထပ်တူကျနေမည်မဟုတ်ပေ။ အောက်ဖော်ပြပါ example၊ ဆွေမျိုးဖုန်းခေါ်ဆိုမှုများအတွက် စိတ်အေးလက်အေးအဆုံးသတ်သည့် foo သို့ ဖုန်းခေါ်ဆိုမှုနှစ်ခုရှိသည်။
  • PA မမ်မိုရီခွဲဝေမှု ပျက်ကွက်ခြင်း (XC8-2881) ပရိုဂရမ်သည် ရရှိနိုင်သော်လည်း ပရိုဂရမ်သည် ရရှိနိုင်သော်လည်း ပရိုဂရမ်သည် ရရှိနိုင်သော်လည်း ကုဒ်အရွယ်အစားသည် စက်ရှိရရှိနိုင်သည့် ပရိုဂရမ်မှတ်ဉာဏ်ပမာဏနှင့် နီးစပ်သောအခါတွင် ချိတ်ဆက်သူသည် မှတ်ဉာဏ်ခွဲဝေမှုဆိုင်ရာ အမှားအယွင်းများကို သတင်းပို့နိုင်သည်။ အာကာသ။
  • စမတ်ကျသော Smart-IO (XC8-2872) ကွန်စတီကျူးရှင်း၏ စမတ်-io အင်္ဂါရပ်သည် const-data-in-progmem အင်္ဂါရပ်ကို ပိတ်ထားပါက သို့မဟုတ် စက်တွင် ၎င်း၏ snprintf လုပ်ဆောင်ချက်အတွက် မှန်ကန်သော်လည်း သင့်လျော်သော ကုဒ်ခွဲများကို ထုတ်ပေးမည်ဖြစ်သည်။ flash ကို data memory တွင် ပုံဖော်ထားသည်။
  • စမတ်နည်းသော Smart-IO (XC8-2869) ကိုပင် compiler ၏ smart-io အင်္ဂါရပ်သည် -flto နှင့် -fno-builtin ရွေးစရာများကို နှစ်ခုလုံးအသုံးပြုသောအခါတွင် တရားဝင်သော်လည်းကောင်း sub- optimal code ကိုထုတ်ပေးလိမ့်မည်။
  • အကောင်းဆုံးဖတ်ရန်-သီးသန့် ဒေတာနေရာချထားမှု (XC8-2849) ချိတ်ဆက်သူသည် လောလောဆယ်တွင် APPCODE နှင့် APPDATA မှတ်ဉာဏ်အပိုင်းများ၊ သို့မဟုတ် မန်မိုရီမြေပုံရှိ [No-]Read-While-Write အပိုင်းများကို လောလောဆယ် သတိမပြုမိပါ။ ရလဒ်အနေဖြင့်၊ ချိတ်ဆက်အသုံးပြုသူသည် မသင့်လျော်သော မမ်မိုရီဧရိယာတွင် ဖတ်ရှုရန်-သီးသန့်ဒေတာကို ခွဲဝေပေးနိုင်မည့် အခွင့်အလမ်း အနည်းငယ်ရှိသည်။ const-data-in-progmem အင်္ဂါရပ်ကို ဖွင့်ထားလျှင် အထူးသဖြင့် const-data-in-confg-mapped-progmem အင်္ဂါရပ်ကို ဖွင့်ထားလျှင် မှားယွင်းသောဒေတာ ဖြစ်နိုင်ခြေ တိုးလာပါသည်။ လိုအပ်ပါက ဤအင်္ဂါရပ်များကို ပိတ်ထားနိုင်ပါသည်။
  • Object file processing order (XC8-2863) linker မှ objects ဖိုင်များကို processing ပြုလုပ်မည့် order သည် procedural abstraction optimizations (-mpa option) ကိုအသုံးပြုမှုအပေါ် အခြေခံ၍ ကွဲပြားနိုင်ပါသည်။ ၎င်းသည် module အများအပြားတွင် အားနည်းသော လုပ်ဆောင်ချက်များကို သတ်မှတ်ပေးသည့် code ကိုသာ အကျိုးသက်ရောက်မည်ဖြစ်သည်။
  • အကြွင်းမဲ့ (XC8-2777) ဖြင့် အရာဝတ္တုတစ်ခုကို RAM ၏အစတွင် လိပ်စာတစ်ခု၌ အကြွင်းမဲ့ပြုလုပ်ပြီး မစတင်ရသေးသော အရာဝတ္ထုများကိုလည်း သတ်မှတ်သတ်မှတ်လိုက်သောအခါ၊ ချိတ်ဆက်ကိရိယာ အမှားတစ်ခု ဖြစ်ပေါ်နိုင်သည်။
  • Short wake-up IDs (XC8-2775) ATA5700/2 စက်များအတွက်၊ PHID0/1 မှတ်ပုံတင်မှုများကို 16 bits ကျယ်သည်ထက် 32 bits ကျယ်သည်ဟုသာ သတ်မှတ်သည်။
  • (XC8-2758) သင်္ကေတကို ခေါ်ဆိုသည့်အခါ လင့်ခ်ဂါ ပျက်ကျခြင်း (XCXNUMX-XNUMX) အရင်းအမြစ်ကုဒ်ကို – Wl,–defsym လင့်ခ်ကိရိယာ ရွေးချယ်မှုကို အသုံးပြု၍ သတ်မှတ်ထားသည့် သင်္ကေတကို ခေါ်သည့်အခါ -mrelax ဒရိုက်ဘာ ရွေးချယ်မှုကို အသုံးပြုပါက လင့်ခ်ဂါသည် ပျက်သွားနိုင်သည်။
  • မှားယွင်းသော ကနဦးသတ်မှတ်ခြင်း (XC8-2679) အချို့သော global/static byte-အရွယ်အစားရှိ အရာဝတ္ထုများအတွက် ကနဦးတန်ဖိုးများကို ဒေတာမှတ်ဉာဏ်တွင် ထားရှိခြင်းနှင့် runtime တွင် ကိန်းရှင်များဝင်ရောက်မည့်နေရာအကြား ကွဲလွဲမှုရှိပါသည်။
  • မကောင်းသော သွယ်ဝိုက်လုပ်ဆောင်ချက်ခေါ်ဆိုမှုများ (XC8-2628) အချို့သောအခြေအနေများတွင်၊ တည်ဆောက်မှုတစ်ခု၏အစိတ်အပိုင်းအဖြစ် သိမ်းဆည်းထားသည့် လုပ်ဆောင်ချက်ညွှန်ပြမှတစ်ဆင့် ပြုလုပ်သော လုပ်ဆောင်ချက်ခေါ်ဆိုမှုများသည် ပျက်နိုင်သည်။
  • Strtof သည် hexadecimal loats အတွက် သုညကို ပြန်ပေးသည် (XC8-2626) စာကြည့်တိုက်သည် strtof() et al နှင့် scanf() et al၊ သည် ထပ်ကိန်းတစ်ခုအား သုညသို့ မသတ်မှတ်ပေးသော ဆဋ္ဌမကိန်းဂဏန်းကို အမြဲတမ်းပြောင်းပေးမည်ဖြစ်သည်။ ဟောင်းအတွက်ample- strtof(“0x1”၊ &endptr); 0 မဟုတ်ဘဲ 1 တန်ဖိုးကို ပြန်ပေးပါလိမ့်မယ်။
  • မမှန်ကန်သော stack advisor မက်ဆေ့ဂျ်ပို့ခြင်း (XC8-2542, XC8-2541) အချို့သောအခြေအနေများတွင်၊ အသုံးပြုထားသော recursion သို့မဟုတ် indeterminate stack နှင့် ပတ်သက်သော သတိပေးချက် (alloca() ကိုအသုံးပြုခြင်းအားဖြင့် ဖြစ်နိုင်သည်) ကို ထုတ်လွှတ်မည်မဟုတ်ပါ။
  • ထပ်တူဖြစ်နေသော ကြားဖြတ်ကုဒ် (XC8-2421) ပျက်ကွက်မှုတစ်ခုထက်ပိုသော နှောင့်ယှက်သည့်လုပ်ဆောင်ချက်တစ်ခုသည် တူညီသည့်ကိုယ်ထည်ရှိသည့်အခါ၊ ကွန်ပလီလာတွင် အနှောင့်အယှက်ပေးသည့်လုပ်ဆောင်ချက်တစ်ခုအတွက် အခြားတစ်ခုသို့ ခေါ်ဆိုမှုအထွက်ကို ရရှိနိုင်သည်။ ၎င်းသည် မလိုအပ်ဘဲ ခေါ်ဆိုထားသော မှတ်ပုံတင်များအားလုံးကို သိမ်းဆည်းခြင်းကို ဖြစ်ပေါ်စေမည်ဖြစ်ပြီး၊ လက်ရှိ ကြားဖြတ်ကိုင်တွယ်သူ၏ epilogue မလည်ပတ်မီတွင်ပင် ကြားဖြတ်အနှောက်အယှက်များကို ဖွင့်ထားမည်ဖြစ်ပြီး၊ ၎င်းသည် ကုဒ်ချို့ယွင်းမှုကို ဖြစ်စေနိုင်သည်။
  • မမှန်ကန်သော DFP လမ်းကြောင်း (XC8-2376) ဖြင့် အထွက်မကောင်းပါက ကွန်ပြူတာအား မမှန်ကန်သော DFP လမ်းကြောင်းဖြင့် ခေါ်ဝေါ်ပြီး ရွေးချယ်ထားသော စက်ပစ္စည်းအတွက် 'spec' ဖိုင် ရှိနေပါက၊ ကွန်ပြူတာသည် ပျောက်ဆုံးနေသော စက်မိသားစုထုပ်ကို အစီရင်ခံမည်မဟုတ်ဘဲ 'spec' ကို ရွေးချယ်ခြင်းအစား၊ ထို့နောက် မမှန်ကန်သော အထွက်ကို ဖြစ်ပေါ်စေမည့် ဖိုင်။ 'spec' ဖိုင်များသည် ဖြန့်ဝေထားသော DFPs များနှင့် ခေတ်မမီနိုင်သလို အတွင်းပိုင်း compiler စမ်းသပ်ခြင်းအတွက်သာ အသုံးပြုရန် ရည်ရွယ်ထားသည်။
  • မမ်မိုရီထပ်နေမှုကို ထောက်လှမ်း၍မရပါ (XC8-1966) ကွန်ပြူတာသည် လိပ်စာတစ်ခု (__at()) နှင့် __section() အတိအကျဖော်ပြချက်နှင့် တူညီသောလိပ်စာကို ချိတ်ဆက်ထားသည့် အရာဝတ္ထုများ၏ မမ်မိုရီထပ်နေမှုကို မတွေ့ပါ။
  • စာကြည့်တိုက်လုပ်ဆောင်ချက်များနှင့် __memx (XC8-1763) နှင့် libgccloat ဟုခေါ်သော လုပ်ဆောင်ချက်များသည် __memx လိပ်စာနေရာလွတ်ရှိ အကြောင်းပြချက်တစ်ခုဖြင့် ပျက်ကွက်နိုင်သည်။ ဒစ်ဂျစ်တိုက်လုပ်ရိုးလုပ်စဉ်များကို အချို့ C အော်ပရေတာများမှ ခေါ်ဝေါ်ကြသည်၊ ဥပမာ၊ ဥပမာampအောက်ဖော်ပြပါ ကုဒ်ကို ထိခိုက်သည်- regFloatVar > memxFloatVar သို့ ပြန်သွားရန်။
  • ကန့်သတ် libgcc အကောင်အထည်ဖော်မှု (AVRTC-731) ATTiny4/5/9/10/20/40 ထုတ်ကုန်များအတွက်၊ libgcc တွင် စံ C/Math စာကြည့်တိုက် အကောင်အထည်ဖော်မှုသည် အလွန်အကန့်အသတ် သို့မဟုတ် မရှိပေ။
  • ပရိုဂရမ်မှတ်ဉာဏ်ကန့်သတ်ချက်များ (AVRTC-732) 128 kb ထက်ကျော်လွန်သော ပရိုဂရမ်မှတ်ဉာဏ်ပုံများကို toolchain မှပံ့ပိုးပေးပါသည်။ သို့သော်၊ -mrelax ရွေးချယ်မှုကို အသုံးပြုသောအခါ လိုအပ်သည့်လုပ်ဆောင်ချက် stubs များကိုထုတ်ပေးမည့်အစား ချိတ်ဆက်မှုအား ပြေလျော့ခြင်းမရှိစေဘဲ အထောက်အကူဖြစ်စေသော error message မပါဘဲ linker များ ပျက်သွားခြင်းများကို သိရှိထားသောဥပမာများရှိပါသည်။
  • အမည်နေရာလွတ်ကန့်သတ်ချက်များ (AVRTC-733) အမည်ပေးထားသောလိပ်စာနေရာများကို toolchain မှပံ့ပိုးပေးသည်၊၊ အသုံးပြုသူ၏လမ်းညွှန်ကဏ္ဍတွင်ဖော်ပြထားသောကန့်သတ်ချက်များအရ Special Type Qualifiers။
  • အချိန်ဇုန်များ စာကြည့်တိုက်လုပ်ဆောင်ချက်များသည် GMT ဟုယူဆပြီး ဒေသစံတော်ချိန်ဇုန်များကို မပံ့ပိုးပါ၊ ထို့ကြောင့် localtime() သည် gmtime() ကဲ့သို့တူညီသောအချိန်ကို ပြန်ပေးမည်၊ ဥပမာ၊ampလဲ့

စာရွက်စာတမ်းများ / အရင်းအမြစ်များ

MICROCHIP XC8 C Compiler ဗားရှင်း 2.45 AVR MCU အတွက် ထုတ်ဝေမှု မှတ်စုများ [pdf] ညွှန်ကြားချက်များ
AVR MCU၊ XC8 C၊ XC8 C Compiler ဗားရှင်း 2.45 AVR MCU အတွက် ထုတ်ဝေမှု မှတ်စုများ၊ AVR MCU အတွက် ထုတ်ဝေမှု မှတ်စု 2.45၊ AVR MCU ဗားရှင်း 2.45 ထုတ်ဝေရေး မှတ်စုများ၊ AVR MCU အတွက် ထုတ်ဝေမှု မှတ်စုများ၊ AVR MCU အတွက် မှတ်စုများ

ကိုးကား

မှတ်ချက်တစ်ခုချန်ထားပါ။

သင့်အီးမေးလ်လိပ်စာကို ထုတ်ပြန်မည်မဟုတ်ပါ။ လိုအပ်သောအကွက်များကို အမှတ်အသားပြုထားသည်။ *