MICROCHIP логоMPLAB® XC8 C эмхэтгэгч хувилбар 2.41 AVR® MCU-д зориулсан хувилбарын тэмдэглэл
Эзэмшигчийн гарын авлага

MPLAB XC8 C эмхэтгэгч хөгжүүлэх програм хангамж

ЭНЭ БАРИМТ БИЧИГ нь микрочип AVR төхөөрөмжүүдийг онилоход MPLAB XC8 C эмхэтгэгчтэй холбоотой чухал мэдээллийг агуулна.
ЭНЭ ПРОГРАММЫГ АЖИЛЛУУЛАХЫН ӨМНӨ УНШИНА УУ. ХЭРЭВ ТА 8 битийн PIC төхөөрөмжид эмхэтгэгчийг ашиглаж байгаа бол MPLAB XC8 C эмхэтгэгчийн PIC БАРИМТ БИЧИГИЙН ХУВААЛТЫН ТАЙЛБАРуудыг харна уу.

Дууслааview

1.1. Танилцуулга
Microchip MPLAB® XC8 C хөрвүүлэгчийн энэ хувилбар нь хэд хэдэн шинэ боломжууд болон алдааны засваруудыг агуулсан.
1.2. Барилгын огноо
Энэхүү хөрвүүлэгчийн хувилбарын албан ёсны бүтээгдсэн огноо нь 8 оны 2023-р сарын XNUMX юм.
1.3. Өмнөх хувилбар
Өмнөх MPLAB XC8 C хөрвүүлэгч хувилбар нь 2.40 оны 3-р сарын 2022-нд бүтээгдсэн XNUMX хувилбар юм.
1.4. Аюулгүй ажиллагааны гарын авлага
MPLAB XC хөрвүүлэгчид зориулсан функциональ аюулгүй байдлын гарын авлагыг функциональ аюулгүй байдлын лиценз худалдаж авахдаа баримт бичгийн багцад авах боломжтой.
1.5. Бүрэлдэхүүн хэсгүүдийн лицензүүд ба хувилбарууд
AVR MCU хэрэгсэлд зориулсан MPLAB XC8 C хөрвүүлэгч нь GNU General Public License (GPL)-ийн дагуу бичигдэж, түгээгддэг бөгөөд энэ нь түүний эх кодыг чөлөөтэй тарааж, олон нийтэд нээлттэй гэсэн үг юм.
GNU GPL-ийн дагуух хэрэгслүүдийн эх кодыг Microchip-ээс тусад нь татаж авч болно webсайт. Та GNU GPL-г суулгах лиценз.txt avr/doc лавлахын дэд директорт байрлах нэртэй файлаас уншиж болно. GPL-ийн үндсэн зарчмуудын ерөнхий хэлэлцүүлгийг эндээс олж болно.
Толгой файлууд, холбогч скриптүүд болон ажиллах үеийн номын санд зориулсан дэмжлэгийн код нь өмчлөлийн код бөгөөд GPL-д хамаарахгүй.
Энэхүү хөрвүүлэгч нь GCC 5.4.0 хувилбар, binutils 2.26 хувилбарын хэрэгжилт бөгөөд avr-libc 2.0.0 хувилбарыг ашигладаг.
1.6. Системийн шаардлага
MPLAB XC8 C хөрвүүлэгч болон түүний ашигладаг лицензийн программ хангамж нь дараах үйлдлийн 64 битийн хувилбаруудыг багтаасан төрөл бүрийн үйлдлийн системд зориулагдсан: Microsoft® Windows® 10-ийн мэргэжлийн хувилбарууд; Ubuntu® 18.04; болон macOS® 10.15.5. Windows-д зориулсан хоёртын хувилбарт код гарын үсэг зурсан. MacOS-д зориулсан хоёртын файлыг кодоор баталгаажуулж, нотариатаар баталгаажуулсан. MPLAB XC Сүлжээний Лицензийн Сервер нь Microsoft Windows 64 ба түүнээс дээш хувилбар зэрэг 10 битийн төрөл бүрийн үйлдлийн системд зориулагдсан; Ubuntu 18.04 ба түүнээс дээш; эсвэл macOS 10.15 ба түүнээс дээш. Энэ сервер нь Windows Server, Oracle® Enterprise Linux®, Red Hate Enterprise Linux зэрэг бусад үйлдлийн системүүд, түүнчлэн дэмжигдсэн үйлдлийн системийн хуучин хувилбарууд дээр ажиллаж болно. Гэсэн хэдий ч MPLAB XC сүлжээний лицензийн серверийг эдгээр үйлдлийн системүүд дээр туршиж үзээгүй байна. MPLAB XC сүлжээний лицензийн серверийг сүлжээний лицензийн виртуал машины лицензийг (SW006021-VM) ашиглан дэмжигдсэн үйлдлийн системийн Виртуал машинууд дээр ажиллуулж болно. MPLAB XC сүлжээний серверийн бүх 32 бит хувилбарууд 3.00 хувилбараас эхлэн зогссон.
Дэмжигдсэн төхөөрөмжүүд
Энэхүү хөрвүүлэгч нь гарах үед боломжтой бүх 8 битийн AVR MCU төхөөрөмжүүдийг дэмждэг. Дэмжигдсэн бүх төхөөрөмжүүдийн жагсаалтыг (хөрвүүлэгчийн лавлахаас) үзнэ үү. Эдгээр файлууд нь мөн жагсаалтад ордог
төхөөрөмж бүрийн avr_chipinfo.html баримт бичгийн тохиргооны битийн тохиргоо.

1.7. Хувилбарууд болон лицензийн шинэчлэлтүүд
MPLAB XC8 хөрвүүлэгчийг лицензтэй (PRO) эсвэл зөвшөөрөлгүй (үнэгүй) бүтээгдэхүүн болгон идэвхжүүлж болно. Та хөрвүүлэгчийн лицензийг авахын тулд идэвхжүүлэх түлхүүр худалдаж авах хэрэгтэй. Лиценз нь Үнэгүй бүтээгдэхүүнтэй харьцуулахад илүү өндөр түвшний оновчтой болгох боломжийг олгодог. Лицензгүй хөрвүүлэгчийг тусгай зөвшөөрөлгүйгээр тодорхойгүй хугацаагаар ажиллуулж болно. MPLAB XC8 Functional Safety хөрвүүлэгчийг Microchip-ээс худалдаж авсан функциональ аюулгүй байдлын лицензээр идэвхжүүлсэн байх ёстой. Энэ лицензгүйгээр хөрвүүлэгч ажиллахгүй. Идэвхжүүлсний дараа та ямар ч оновчлолын түвшинг сонгож, хөрвүүлэгчийн бүх функцийг ашиглах боломжтой. MPLAB XC Functional Safety Compiler-ийн энэхүү хувилбар нь Сүлжээний серверийн лицензийг дэмждэг.
Лицензийн төрлүүд болон лицензтэй хөрвүүлэгчийг суулгах талаар мэдээлэл авахыг хүсвэл MPLAB XC C Compilers (DS50002059) -ийг суулгах, лицензжүүлэх баримт бичгийг үзнэ үү.

1.8. Суулгах, идэвхжүүлэх
Энэ хөрвүүлэгчид багтсан хамгийн сүүлийн лицензийн менежерийн талаарх чухал мэдээллийг "Шилжилт хөдөлгөөний асуудал ба хязгаарлалт" хэсгээс үзнэ үү.
Хэрэв MPLAB IDE ашиглаж байгаа бол энэ хэрэгслийг суулгахаасаа өмнө хамгийн сүүлийн үеийн MPLAB X IDE 5.0 буюу түүнээс хойшхи хувилбарыг суулгахаа мартуузай. Хөрвүүлэгчийг суулгахаасаа өмнө IDE-ээс гарна уу. (Windows), (Linux) эсвэл (macOS) .exe .run .app хөрвүүлэгч суулгагч програмыг ажиллуулж, дэлгэцэн дээрх зааврыг дагана уу. XC8-1.00.11403-windows.exe Анхдагч суулгацын лавлахыг санал болгож байна. Хэрэв та Линукс ашиглаж байгаа бол хөрвүүлэгчийг терминал болон root бүртгэлээс суулгах ёстой. Администраторын эрхтэй macOS бүртгэл ашиглан суулгана уу.
Идэвхжүүлэлтийг одоо суулгахын тулд тусад нь хийж байна. Дэлгэрэнгүй мэдээллийг MPLAB® XC C Compilers (DS52059)-ийн лицензийн менежерээс үзнэ үү.
Хэрэв та үнэлгээний лицензийн дагуу хөрвүүлэгчийг ажиллуулахаар сонгосон бол үнэлгээний хугацаа дууссанаас хойш 14 хоногийн дотор эмхэтгэлийн үеэр анхааруулга авах болно. Хэрэв та HPA бүртгэлээ дуусгаснаас хойш 14 хоногийн дотор байгаа бол ижил анхааруулга өгнө.
XC сүлжээний лицензийн сервер нь тусдаа суулгагч бөгөөд нэг хэрэглэгчийн хөрвүүлэгч суулгагчид ороогүй болно.
XC License Manager нь одоо хөвөгч сүлжээний лицензүүдийн роумингыг дэмждэг. Гар утасны хэрэглэгчдэд зориулагдсан энэ функц нь хөвөгч лицензийг богино хугацаанд сүлжээнээс салгах боломжийг олгодог. Энэ функцийг ашигласнаар та сүлжээг салгаж, MPLAB XC хөрвүүлэгчийг ашиглах боломжтой. Энэ функцийн талаар илүү ихийг мэдэхийг хүсвэл XCLM суулгацын doc хавтаснаас үзнэ үү.
MPLAB X IDE нь роумингыг нүдээр удирдахын тулд Лицензийн цонхыг (Хэрэгслүүд > Лицензүүд) агуулдаг.

1.8.1. Суурилуулалтын асуудлыг шийдвэрлэх
Хэрэв та Windows үйлдлийн системүүдийн аль нэг дор хөрвүүлэгчийг суулгахад бэрхшээлтэй тулгарвал дараах зөвлөмжийг хэрэгжүүлээрэй.
Суулгалтыг администратороор ажиллуулна уу.
Суулгах програмын зөвшөөрлийг "Бүрэн хяналт" болгож тохируулна уу. (Файл дээр хулганы баруун товчийг дараад Properties, Аюулгүй байдлын таб, хэрэглэгчийг сонго, засварлана.)
Түр хавтасны зөвшөөрлийг "Бүрэн хяналт" болгож тохируулна уу.
Түр хавтасны байршлыг тодорхойлохын тулд Run команд руу %temp% гэж бичнэ үү (Windows лого товчлуур + R).
Энэ нь тухайн лавлахыг харуулсан файл судлаач харилцах цонхыг нээж, тухайн хавтасны замыг тодорхойлох боломжийг танд олгоно.
1.9. Хөрвүүлэгчийн баримт бичиг
Дэлгэцийн агшинд заасны дагуу MPLAB X IDE хяналтын самбар дээрх цэнхэр тусламжийн товчийг дарахад хөрвүүлэгчийн хэрэглэгчийн гарын авлагыг хөтөч дээр нээгдэх HTML хуудаснаас нээж болно.

Хэрэв та 8 битийн AVR зорилтот системд зориулж бүтээж байгаа бол AVR® MCU-д зориулсан MPLAB® XC8 C эмхэтгэгч хэрэглэгчийн гарын авлага нь уг архитектурт хамаарах хөрвүүлэгчийн сонголтууд болон функцүүдийн талаарх мэдээллийг агуулдаг.

MICROCHIP MPLAB XC8 C хөрвүүлэгч хөгжүүлэх програм хангамж -

1.10.Хэрэглэгчийн дэмжлэг
Microchip нь энэхүү хөрвүүлэгчийн хувилбартай холбоотой алдааны мэдээ, санал, сэтгэгдлийг хүлээн авна. Аливаа алдааны тайлан эсвэл функцийн хүсэлтийг дэмжлэгийн системээр дамжуулна уу.

Баримт бичгийн шинэчлэлтүүд

MPLAB XC8 баримт бичгийн онлайн болон хамгийн сүүлийн үеийн хувилбарыг Microchip-ийн онлайн техникийн баримт бичигт зочилно уу. webсайт. Энэ хувилбарт шинээр эсвэл шинэчлэгдсэн AVR баримт бичиг:

  • AVR® MCU-д зориулсан MPLAB® XC8 C эмхэтгэгч хэрэглэгчийн гарын авлага (засвар G)
  • AVR® GNU Toolchain-ийг MPLAB® XC8 руу шилжүүлэх гарын авлага (А хувилбар)
  • Hexmate хэрэглэгчийн гарын авлага (Б хувилбар)

AVR® GNU Toolchain to MPLAB® XC8 шилжих гарын авлага нь C-д суурилсан төслийг AVR 8 битийн GNU Toolchain-ээс Microchip MPLAB XC8 C хөрвүүлэгч рүү шилжүүлэхээр шийдсэн тохиолдолд шаардлагатай байж болох эх кодын өөрчлөлт болон бүтээх сонголтуудыг тайлбарладаг. Микрочипийн нэгдсэн стандарт номын сангийн лавлах гарын авлага нь Микрочипийн нэгдсэн стандарт номын сангаар тодорхойлсон функцүүдийн үйл ажиллагаа, интерфэйс, мөн номын сангийн төрөл, макроны зориулалтыг тодорхойлдог. Эдгээр мэдээллийн зарим нь өмнө нь AVR® MCU-д зориулсан MPLAB® XC8 C эмхэтгэгч хэрэглэгчийн гарын авлагад агуулагдаж байсан. Энэ хөрвүүлэгч гарын авлагад төхөөрөмжид зориулсан номын сангийн мэдээлэл агуулагдсан хэвээр байна.
Хэрэв та дөнгөж 8 битийн төхөөрөмж болон MPLAB XC8 C хөрвүүлэгчийг ашиглаж эхэлж байгаа бол суулгагдсан инженерүүдэд зориулсан MPLAB® XC8 хэрэглэгчийн гарын авлага – AVR® MCUs (DS50003108) нь MPLAB X IDE-д төсөл тохируулах, таны компьютерт зориулсан код бичих тухай мэдээлэлтэй. анхны MPLAB XC8 C төсөл. Энэхүү гарын авлагыг хөрвүүлэгчийн хамт тарааж байна.
Hexmate хэрэглэгчийн гарын авлага нь Hexmate-г бие даасан програм болгон ажиллуулдаг хүмүүст зориулагдсан болно.

Шинэ юу байна

Дараах нь хөрвүүлэгчийн одоо дэмждэг шинэ AVR зорилтот функцууд юм. Дэд гарчиг дахь хувилбарын дугаар нь дараагийн функцуудыг дэмжих анхны хөрвүүлэгчийн хувилбарыг заана.
3.1. Хувилбар 2.41
Ачаалагчийн дэмжлэг (XC8-3053) Хөрвүүлэгч нь HEX файлд 0x860000 гэсэн угтвар хаяг бүхий аливаа хэсгийн агуулгыг хөрвүүлэгч байрлуулна. Эдгээр хэсгүүдийг зөвхөн ачаалагч ашиглах боломжтой түлхүүрүүд болон бусад аюулгүй мэдээллийг хадгалах зориулалттай BOOTROW санах ойд ашигладаг.

Илүүдэл буцаалтыг арилгах (XC8-3048) Одоо хөрвүүлэгч нь захиалгат холбогч скриптүүдийг ашиглах үед ret функцууд дахь нэмэлт зааврыг сүүл үсрэх замаар арилгах болно. Энэ нь өмнө нь хийж байсантай төстэй оновчлол боловч одоо тохируулсан холбогч скрипт ашиглаж, хамгийн тохиромжтой хуваарилалтын схемийг ашиглаагүй байсан ч гэсэн одоо бүх өнчин хэсгүүдэд хийгдэж байна. Цагийн төрлийн өөрчлөлт (XC8-2982, 2932) C99 стандарт номын сангийн төрлийг time_t-ээс төрөл болгон өөрчилсөн бөгөөд энэ нь зарим цаг хугацаатай холбоотой урт урт функцүүдэд кодын хэмжээг сайжруулах боломжийг олгодог. гарын үсэг зураагүй урт mktime()
Шинэ дугаар (XC8-2946, 2945) -д макро нэмсэн. Энэ макро нь no- NOP() оруулдаг. гаралт руу nop үйлдлийн заавар.
XCLM (XC8-2944)-ийн шинэчлэлт хөрвүүлэгчтэй ашигласан лицензийн менежер шинэчлэгдсэн бөгөөд хөрвүүлэгчийн лицензийн дэлгэрэнгүй мэдээллийг шалгахад илүү хариу үйлдэл үзүүлэх болсон.
Trampхолбосон дуудлага (XC8-2760) Одоо хөрвүүлэгч урт хэлбэрийн дуудлагын зааварчилгааг харьцангуй богино дуудлагаар сольж, зааврын харьцангуй хэлбэрүүд нь хүрэх хүрээнээс гадуур байх үед гүйцэтгэх боломжтой болсон. Энэ тохиолдолд хөрвүүлэгч нь rcal-ыг дуудах зааварчилгаагаар солихыг оролдох бөгөөд энэ нь 'trampoline' гүйцэтгэлийг шаардлагатай хаягаар, жишээ ньample: jmp
rcal tramp_foo ;хөө гэж дууддаг байсан

rcal tramp_foo

tramp_foo:
jmp foo

Энэхүү оновчлол нь ижил төстэй програмын урсгалын оновчлолын хамт -mrelax сонголтоор хянагддаг.

3.2. Хувилбар 2.40
Шинэ төхөөрөмжийн дэмжлэгийг дараах AVR хэсгүүдэд ашиглах боломжтой боллоо: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32EA64, AVR28D64EA32, AVR64, AVR48, AVRXNUMX.
Процедурын хийсвэрлэлийг сайжруулсан Процедурын хийсвэрлэл (PA) оновчлолын хэрэгслийг сайжруулснаар функц дуудлагын заавар (/ ) агуулсан кодыг дүрслэх боломжтой болсон. Энэ нь стек нь аргумент дамжуулах эсвэл функцээс буцах утгыг авахад ашиглагдаагүй тохиолдолд л дуудлагын дуудлага хийх болно. Хувьсагчийн аргументын жагсаалт бүхий функцийг дуудах эсвэл энэ зорилгоор зориулагдсан регистрээс илүү олон аргумент авдаг функцийг дуудах үед стекийг ашигладаг. Сонголтыг ашиглан энэ функцийг идэвхгүй болгож болно, эсвэл процедурын хийсвэрлэлийг объектын файл эсвэл функцийг - болон тус тусад нь ашиглах эсвэл функцтэй хамт атрибут (тодорхойлогч) ашиглан бүхэлд нь идэвхгүй болгож болно.
mno-pa-outline-cals -mno-pa-on-file -mno-pa-on-function nopa Кодын хамрах макро Хэрэв хүчинтэй сонголт __nopa __CODECOV -mcodecov-г зааж өгсөн бол хөрвүүлэгч одоо макрог тодорхойлно.
Санах ойн захиалгын сонголт Одоо драйвер нь AVR зорилтот объектуудыг бүтээхдээ xc8-cc -mreserve=space@start:end гэсэн сонголтыг хүлээн авах болно. Энэ сонголт нь өгөгдөл эсвэл програмын санах ойд заасан санах ойн хүрээг хадгалж, холбогчийг энэ хэсэгт код эсвэл объект оруулахаас сэргийлдэг. Ухаалаг ухаалаг IO Ухаалаг IO функцүүдэд хэд хэдэн сайжруулалт хийгдсэн бөгөөд үүнд printf үндсэн кодыг ерөнхийд нь өөрчлөх, %n хөрвүүлэлтийн тодорхойлогчийг бие даасан хувилбар болгон авч үзэх, эрэлтийн дагуу vararg поп горимуудыг холбох, ажиллахад боломжтой бол богино өгөгдлийн төрлийг ашиглах зэрэг олон сайжруулалт хийгдсэн. IO функцийн аргументууд, талбарын өргөн, нарийвчлалтай ажиллахад нийтлэг кодыг хүчин зүйлээр ялгах. Энэ нь код болон өгөгдөлд ихээхэн хэмнэлт гаргахаас гадна IO-ийн гүйцэтгэлийн хурдыг нэмэгдүүлэхэд хүргэдэг.

3.3. Хувилбар 2.39 (Функциональ аюулгүй байдлын хувилбар)
Сүлжээний серверийн лиценз MPLAB XC8 функциональ аюулгүй байдлын хөрвүүлэгчийн энэ хувилбар нь Сүлжээний серверийн лицензийг дэмждэг.
3.4. Хувилбар 2.36
Байхгүй.

3.5. Хувилбар 2.35
Шинэ төхөөрөмжийн дэмжлэгийг дараах AVR хэсгүүдэд ашиглах боломжтой: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28, AVR64DD32.
Сайжруулсан контекст сэлгэх Шинэ -mcall-isr-prologues сонголт нь тасалдлын функцууд оролтод регистрүүдийг хэрхэн хадгалах, тасалдал дуусах үед тэдгээр бүртгэлийг хэрхэн сэргээхийг өөрчилдөг. Энэ нь -mcall-prologues сонголттой төстэй байдлаар ажилладаг боловч зөвхөн тасалдлын функцэд (ISRs) нөлөөлдөг.
Бүр илүү сайжруулсан контекст сэлгэх Шинэ -mgas-isr-prologues сонголт нь жижиг тасалдал үйлчилгээний горимд үүсгэсэн контекст шилжүүлэгч кодыг хянадаг. Идэвхжүүлсэн үед уг функцийг ассемблер регистрийн ашиглалтын үүднээс ISR-г сканнердах ба шаардлагатай тохиолдолд зөвхөн эдгээр ашигласан регистрүүдийг хадгалах болно.
Тохируулах боломжтой флаш зураглал AVR DA болон AVR DB гэр бүлийн зарим төхөөрөмжүүд нь SFR (жишээ нь FLMAP)-тай байдаг бөгөөд энэ нь програмын санах ойн аль 32к хэсгийг өгөгдлийн санах ойд буулгахыг зааж өгдөг. Шинэ - mconst-data-in-config-mapped-progmem сонголтыг холбогч нь бүх const-хэрэглэсэн өгөгдлийг нэг 32к хэсэгт байрлуулж, холбогдох SFR бүртгэлийг автоматаар эхлүүлж, энэ өгөгдлийг өгөгдлийн санах ойд буулгах боломжтой. орон зай, тэнд илүү үр дүнтэй хандах болно.
Microchip нэгдсэн стандарт номын сан Бүх MPLAB XC хөрвүүлэгчид MPLAB XC8-ийн энэ хувилбарт ашиглах боломжтой Microchip нэгдсэн стандарт номын санг хуваалцах болно. AVO MCU-д зориулсан MPLA# XC8 C хөрвүүлэгчийн хэрэглэгчийн гарын авлагад эдгээр стандарт функцүүдийн баримт бичиг байхгүй болсон. Энэ мэдээллийг одоо Microchip нэгдсэн стандарт номын сангийн лавлах гарын авлагаас олж болно. Өмнө нь avr-libc-ээр тодорхойлсон зарим функцийг ашиглах боломжгүй гэдгийг анхаарна уу. (Лила функцийг үзнэ үү.)
Smart I0 Шинэ нэгдсэн сангуудын нэг хэсэг болгон printf болон scanf бүлгүүдийн I0 функцийг программд эдгээр функцийг хэрхэн ашиглаж байгаа дээр үндэслэн бүтээц бүр дээр тусгайлан үүсгэсэн. Энэ нь програмын ашигладаг нөөцийг эрс багасгаж чадна.
Ухаалаг ICI тусламжийн сонголт Ухаалаг I0 функцүүдийн (хэвлэх f () эсвэл scanf () гэх мэт) дуудлагыг шинжлэх үед хөрвүүлэгч нь форматын мөрнөөс үргэлж тодорхойлж чадахгүй эсвэл дуудлагад шаардагдах хөрвүүлэлтийн тодорхойлогчдыг аргументаас гаргаж чаддаггүй. Өмнө нь хөрвүүлэгч үргэлж ямар ч таамаглал гаргадаггүй бөгөөд бүрэн ажиллагаатай 10 функцийг програмын эцсийн дүрстэй холбосон эсэхийг баталгаажуулдаг. Шинэ – msmart-io-format=fmt сонголтыг нэмсэн бөгөөд ингэснээр хөрвүүлэгч нь хоёрдмол утгатай ухаалаг I0 функцэд ашигладаг хөрвүүлэлтийн тодорхойлогчдын талаар хэрэглэгчдэд мэдээлэх боломжтой бөгөөд ингэснээр хэт урт 10 горимыг холбохоос сэргийлнэ. (Дэлгэрэнгүй мэдээллийг smart-io форматын сонголтоос үзнэ үү.)
Захиалгат хэсгүүдийг байрлуулах Өмнө нь холбогч скрипт ижил нэртэй гаралтын хэсгийг тодорхойлсон үед -W1, –section-start сонголт нь зөвхөн заасан хэсгийг хүссэн хаяг дээр байрлуулдаг байсан. Хэрэв тийм биш байсан бол уг хэсгийг холбогчийн сонгосон хаяг дээр байрлуулсан бөгөөд сонголтыг үндсэндээ хэрэгсэхгүй болгосон. Одоо холбоосын скрипт нь тухайн хэсгийг тодорхойлоогүй байсан ч гэсэн бүх захиалгат хэсгүүдэд энэ сонголтыг хүндэтгэх болно. Гэхдээ стандарт хэсгүүдийн хувьд ийм . текст, . bss эсвэл . өгөгдлийн хувьд хамгийн сайн тохирох хуваарилагч нь тэдгээрийн байршлыг бүрэн хянах боломжтой бөгөөд сонголт нь ямар ч нөлөө үзүүлэхгүй. Хэрэглэгчийн гарын авлагад заасны дагуу -ton, -Tsection=addr сонголтыг ашиглана уу.
3.6. Хувилбар 2.32
Стекийн удирдамж PRO хөрвүүлэгчийн лицензээр ашиглах боломжтой бөгөөд хөрвүүлэгчийн стекийн удирдамжийн функцийг програмын ашигладаг аливаа стекийн хамгийн их гүнийг тооцоолоход ашиглаж болно. Энэ нь програмын дуудлагын графикийг бүтээж, дүн шинжилгээ хийж, функц бүрийн стекийн хэрэглээг тодорхойлж, тайланг гаргадаг бөгөөд үүнээс програмын ашигласан стекийн гүнийг дүгнэж болно. Энэ функцийг -mchp-stack-usage командын мөрийн сонголтоор идэвхжүүлсэн. Стек ашиглалтын хураангуйг гүйцэтгэсний дараа хэвлэнэ. Стекийн нарийвчилсан тайланг газрын зураг дээр үзэх боломжтой file, үүнийг ердийн аргаар хүсэлт гаргаж болно.
Шинэ төхөөрөмжийн дэмжлэгийг дараах AVR хэсгүүдэд ашиглах боломжтой: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64 болон AVR32. Дараах AVR хэсгүүдийн хувьд татан авсан төхөөрөмжийн дэмжлэгийг цаашид ашиглах боломжгүй: AVR32DA48, AVR16DA28 болон AVR16DA32.
3.7. Хувилбар 2.31
Байхгүй.
3.8. Хувилбар 2.30
Өгөгдөл эхлүүлэхээс сэргийлэх шинэ сонголт -mno-data-init драйверын шинэ сонголт нь өгөгдлийг эхлүүлэх, bss хэсгүүдийг цэвэрлэхээс сэргийлдэг. Энэ нь угсралт дахь do copy өгөгдлийн гаралтыг дарж, тодорхой bss тэмдэгтүүдийг хийх замаар ажилладаг files, энэ нь эргээд тэдгээр горимуудыг холбогчоор оруулахаас сэргийлнэ.
Сайжруулсан оновчлолууд Хэд хэдэн оновчлолын сайжруулалт хийгдсэн бөгөөд үүнд илүүдэл буцаах зааврыг арилгах, хэрэв бит байвал алгасах зааварчилгааг дагах зарим үсрэлтүүдийг арилгах, процедурын хийсвэрлэл болон энэ үйл явцыг давтах чадварыг сайжруулсан. Эдгээр оновчлолын заримыг хянах нэмэлт сонголтууд, тухайлбал -f хэсэг-anchors нь нэг тэмдэгттэй харьцуулахад статик объектуудад хандах боломжийг олгодог; -mpa-iterations=n, энэ нь процедурын хийсвэрлэлийн давталтын тоог анхдагч 2-оос өөрчлөх боломжийг олгодог; мөн, -mpa-callcost-shortcall нь илүү түрэмгий процедурын хийсвэрлэлийг гүйцэтгэдэг бөгөөд холбогч нь урт дуудлагыг тайвшруулж чадна гэж найдаж байна. Энэ сүүлчийн сонголт нь үндсэн таамаглалыг хэрэгжүүлэхгүй бол кодын хэмжээг нэмэгдүүлэх боломжтой.
Дараах AVR хэсгүүдэд шинэ төхөөрөмжийн дэмжлэг үзүүлэх боломжтой: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128, AVR28, AVR128, AVR32 128DB48. Дараах AVR хэсгүүдэд буцааж татсан төхөөрөмжийн дэмжлэг үзүүлэх боломжгүй болсон: ATA128, ATA64, ATA5272N, ATA5790, ATA5790, ATA5791, ATA5795, ATA6285C, ATA6286C, ATA6612Q, ATA6613C, ATA6614, ATA6616.
3.9. Хувилбар 2.29 (Функциональ аюулгүй байдлын хувилбар)
Толгой хэсэг file хөрвүүлэгчийн суулгацын хувьд хөрвүүлэгч нь MISRA гэх мэт хэлний техникийн үзүүлэлтүүдтэй нийцэж байгаа эсэхийг шалгахын тулд толгой file, үүнийг автоматаар оруулдаг , шинэчлэгдсэн. Энэ гарчиг нь builtin_avr_nop ( ) болон builtin avr delay_cycles () зэрэг бүх суулгасан функцүүдийн загваруудыг агуулдаг. Зарим суулгац нь MISRA-д нийцэхгүй байж болно; Эдгээрийг хөрвүүлэгчийн командын мөрөнд defineXCSTRICT_MISRA нэмэх замаар орхиж болно. Суулгацууд болон тэдгээрийн мэдэгдлүүд нь тогтмол өргөнтэй төрлийг ашиглахаар шинэчлэгдсэн.
3.10. Хувилбар 2.20
Шинэ төхөөрөмжийн дэмжлэгийг дараах AVR хэсгүүдэд ашиглах боломжтой: ATTINY1624, ATTINY1626, болон ATTINY1627.
Илүү сайн хамгийн тохиромжтой хуваарилалт Хөрвүүлэгч дэх хамгийн сайн тохируулагчийг (BFA) сайжруулснаар хэсгүүдийг илүү оновчтой болгохын тулд дарааллаар нь хуваарилсан. BFA нь одоо хаягийн зайг дэмжиж, өгөгдлийг эхлүүлэх ажлыг илүү сайн гүйцэтгэдэг.
Процедурын хийсвэрлэлийг сайжруулсан Процедурын хийсвэрлэлийн оновчлолыг одоо илүү олон кодын дараалал дээр хийж байна. Энэ оновчлол нь кодын хэмжээг ихэсгэсэн байж болзошгүй өмнөх нөхцөл байдлыг оновчлолын кодыг холбогчийн хог цуглуулах үйл явцтай танилцах замаар шийдвэрлэсэн.
AVR Ассемблер байхгүй байна AVR Ассемблер энэ түгээлтэд багтахаа больсон.
3.11. Хувилбар 2.19 (Функциональ аюулгүй байдлын хувилбар)
Байхгүй.
3.12. Хувилбар 2.10
Кодын хамрах хүрээ Энэхүү хувилбар нь төслийн эх кодыг хэр зэрэг гүйцэтгэсэн талаар дүн шинжилгээ хийхэд туслах кодын хамрах функцийг агуулдаг. Үүнийг идэвхжүүлэхийн тулд -mcodecov=ram сонголтыг ашиглана уу. Таны техник хангамж дээр програмыг ажиллуулсны дараа кодын хамрах хүрээний мэдээллийг төхөөрөмжид нэгтгэх бөгөөд үүнийг MPLAB X IDE-д кодын хамрах хүрээний залгаасаар дамжуулж, харуулах боломжтой. Энэ залгаасын талаарх мэдээллийг IDE баримтаас харна уу. #pragma nocodecov нь дараагийн функцуудыг хамрах хүрээний шинжилгээнээс хасахад ашиглагдаж болно. Прагма-г эхэнд нэмэх нь хамгийн тохиромжтой file бүхэлд нь хасах file хамрах хүрээний шинжилгээнээс. Эсвэл _attribute_ ( (nocodecov) ) нь хамрах хүрээний шинжилгээнээс тодорхой функцийг хасахад ашиглагдаж болно.
Төхөөрөмжийн тодорхойлолт files Шинэ төхөөрөмж file avr_chipinfo гэж нэрлэдэг. html нь хөрвүүлэгчийн түгээлтийн docs санд байрладаг. Энэ file хөрвүүлэгчийн дэмждэг бүх төхөөрөмжийг жагсаав. Төхөөрөмжийн нэр дээр дарахад тухайн төхөөрөмжийн зөвшөөрөгдөх бүх тохиргооны битийн тохиргоо/утгын өвдөлтийг харуулсан хуудас нээгдэнэ.amples. Процедурын хийсвэрлэл
Угсрах кодын нийтлэг блокуудыг тухайн блокийн задалсан хуулбар руу залгах замаар орлуулах процедурын хийсвэрлэлийн оновчлолыг хөрвүүлэгчид нэмсэн. Эдгээрийг 2, 3 эсвэл s түвшний оновчлолыг сонгохдоо хөрвүүлэгч автоматаар дууддаг тусдаа програмаар гүйцэтгэдэг. Эдгээр оновчлолууд нь кодын хэмжээг багасгах боловч гүйцэтгэлийн хурд болон кодын дибаг хийх чадварыг бууруулдаг. Процедурын хийсвэрлэлийг -mno-pa сонголтыг ашиглан илүү өндөр оновчлолын түвшинд идэвхгүй болгож болно, эсвэл -mpa ашиглан доод оновчтой түвшинд (таны лицензийн дагуу) идэвхжүүлж болно. Үүнийг объектын хувьд идэвхгүй болгож болно file ашиглах -mno-pa-on-file=fileнэр, эсвэл -mno-pa-on-function=function ашиглан функцийг идэвхгүй болгосон. Таны эх кодын дотор функцийн тодорхойлолттой attribute ( (nopa) ) эсвэл атрибут ( (nopa, noinline) ) болж өргөждөг nopa-г ашиглан функцийн хувьд процедурын хийсвэрлэлийг идэвхгүй болгож болно. мөн доторлогдсон кодын хийсвэрлэл байна.
Прагма дахь түгжих битийн дэмжлэг #pragma тохиргоог одоо AVR түгжих бит болон бусад тохиргооны битүүдийг тодорхойлоход ашиглаж болно. avr_chipinfo-г шалгана уу. html file (дээр дурдсан) энэ прагматай ашиглах тохиргоо/утга хосын хувьд. Шинэ төхөөрөмжийн дэмжлэгийг дараах хэсгүүдэд ашиглах боломжтой: AVR28DAl28, AVR64DAl28, AVR32DA 128, AVR48DA 128.
3.13. Хувилбар 2.05
Энэ хөрвүүлэгч болон лицензийн менежерийн macOS хувилбар нь одоо 64 битийн програм юм. Энэ нь хөрвүүлэгчийг macOS-ийн сүүлийн хувилбарууд дээр анхааруулгагүйгээр суулгаж, ажиллуулах болно.
Програмын санах ой дахь Const объектууд Хөрвүүлэгч нь RAM-д байрлуулахаас илүүтэйгээр програмын Flash санах ойд const шаардлага хангасан объектуудыг байрлуулж болно. Хөрвүүлэгчийг өөрчилсөн бөгөөд ингэснээр cons t шаардлага хангасан глобал өгөгдлийг програмын флаш санах ойд хадгалах ба эдгээр өгөгдөлд тохирох програмын санах ойн зааварчилгааг ашиглан шууд болон шууд бусаар хандах боломжтой болсон. Энэ шинэ функцийг анхдагчаар идэвхжүүлсэн боловч -mno-const-data-in-progmem сонголтыг ашиглан идэвхгүй болгож болно. avrxmega3 болон avrtiny архитектурын хувьд програмын санах ойг эдгээр төхөөрөмжүүдийн өгөгдлийн хаягийн зайд буулгасан тул энэ функц шаардлагагүй бөгөөд үргэлж идэвхгүй байдаг.
Энэхүү хөрвүүлэгчийн үнэ төлбөргүй Лицензгүй (Үнэгүй) хувилбарууд нь одоо 2-р түвшнийг багтаасан оновчлолыг хийх боломжтой болсон. Энэ нь Стандарт лицензийг ашиглан өмнө нь боломжтой байсантай ижил биш боловч ижил төстэй гаралтыг хийх боломжийг олгоно.
Тавтай морилно уу AVRASM2 2 битийн төхөөрөмжүүдэд зориулсан AVRASM8 ассемблер одоо XC8 хөрвүүлэгч суулгагчид багтсан болно. Энэхүү ассемблерийг XC8 хөрвүүлэгч ашигладаггүй боловч гараар бичсэн угсралтын эх сурвалж дээр суурилсан төслүүдэд ашиглах боломжтой.
Шинэ төхөөрөмжийн дэмжлэгийг дараах хэсгүүдэд ашиглах боломжтой: ATMEGA1608, ATMEGA1609, ATMEGA808, болон ATMEGA809.

3.14. Хувилбар 2.00
Дээд түвшний драйвер Xc8-cc гэж нэрлэгддэг шинэ драйвер нь өмнөх avr-gcc драйвер болон xc8 драйверуудын дээр байрлах бөгөөд зорилтот төхөөрөмжийн сонголт дээр үндэслэн тохирох хөрвүүлэгчийг дуудаж болно. Энэ драйвер нь GCC маягийн тохируулгуудыг хүлээн авдаг бөгөөд эдгээрийг орчуулж эсвэл гүйцэтгэж буй хөрвүүлэгч рүү дамжуулдаг. Энэ драйвер нь ижил төстэй семантиктай ижил төстэй багц сонголтуудыг дурын AVR эсвэл PIC зорилтод ашиглах боломжийг олгодог тул хөрвүүлэгчийг дуудах санал болгож буй арга юм. Шаардлагатай бол хуучин avr-gcc драйверийг хөрвүүлэгчийн өмнөх хувилбаруудад хүлээн зөвшөөрсөн хуучин загварын сонголтуудыг ашиглан шууд дуудаж болно.
Нийтлэг C интерфэйс Энэхүү хөрвүүлэгч нь MPLAB Common C интерфэйстэй тохирч, эх кодыг бүх MPLAB XC хөрвүүлэгчид илүү хялбар зөөвөрлөх боломжийг олгож байна. -mext=cci сонголт нь олон хэлний өргөтгөлүүдийн өөр синтаксийг идэвхжүүлэхийн тулд энэ функцийг шаарддаг.
Шинэ номын сангийн жолооч Шинэ номын сангийн жолооч өмнөх PIC номын санч болон AVR avr-ar номын санчаас дээгүүр байрласан байна. Энэ драйвер нь GCC-архивлагчийн хэв маягийн сонголтуудыг хүлээн авдаг бөгөөд эдгээрийг орчуулж буй номын санч руу дамжуулдаг. Шинэ драйвер нь PIC эсвэл AVR номын сан үүсгэх, удирдахад ижил төстэй семантиктай ижил төстэй сонголтуудыг ашиглах боломжийг олгодог. file Энэ нь номын санчийг дуудахыг зөвлөдөг арга юм. Хэрэв хуучин төслүүдэд шаардлагатай бол өмнөх номын санчийг хөрвүүлэгчийн өмнөх хувилбаруудад хүлээн зөвшөөрсөн хуучин хэв маягийн сонголтуудыг ашиглан шууд дуудаж болно.

Шилжилт хөдөлгөөний асуудал

Дараах нь хөрвүүлэгч өөр өөрөөр зохицуулагддаг функцууд юм. Хэрэв кодыг хөрвүүлэгчийн энэ хувилбарт шилжүүлбэл эдгээр өөрчлөлтүүд нь таны эх кодыг өөрчлөхийг шаардаж болно. Дэд гарчиг дахь хувилбарын дугаар нь дараагийн өөрчлөлтүүдийг дэмжих анхны хөрвүүлэгчийн хувилбарыг заана.

4.1. Хувилбар 2.41
Буруу fma функцуудыг устгасан (XC8-2913) C99 стандарт номын сан fma 0 -гэр бүлийн функцууд ( ) нь нэг бөөрөнхийлөлтөд хязгааргүй нарийвчлалтайгаар үржүүлэх-нэмэх тооцоог гаргаагүй, харин үйлдэл бүрээр бөөрөнхийлөх алдааг хуримтлуулсан. Эдгээр функцийг нийлүүлсэн номын сангаас хассан.
4.2. Хувилбар 2.40
Байхгүй.
4.3. Хувилбар 2.39 (Функциональ аюулгүй байдлын хувилбар)
Байхгүй.
4.4. Хувилбар 2.36 Байхгүй.
4.5. Хувилбар 2.35
string-to base-тэй ажиллах (XC8-2420) Бусад XC хөрвүүлэгчтэй нийцтэй байдлыг хангахын тулд strtol () гэх мэт XC8 string-to функцууд заасан бааз нь 36-аас том бол оролтын мөрийг хөрвүүлэх оролдлого хийхээ болино. ба оронд нь errno-г EINVAL болгож тохируулна. С стандарт нь энэ үндсэн утгаас хэтэрсэн үед функцүүдийн үйлдлийг заагаагүй болно.
Тохиромжгүй хурдыг оновчтой болгох 3-р түвшний оновчлолыг сонгохдоо процедурын хийсвэрлэлийн оновчлолыг идэвхжүүлж байсан (-03). Эдгээр оновчлол нь кодын хурдаас болж кодын хэмжээг бууруулдаг тул үүнийг хийх ёсгүй. Энэ оновчлолын түвшинг ашиглаж буй төслүүд нь энэ хувилбараар бүтээгдсэн үед кодын хэмжээ болон гүйцэтгэлийн хурдны ялгааг харж болно.
Номын сангийн функциональ байдал Стандарт C номын сангийн олон функцуудын кодыг одоо Microchip-ийн нэгдсэн стандарт номын сангаас гаргаж авсан бөгөөд энэ нь хуучин avr-libc номын сантай харьцуулахад зарим тохиолдолд өөр үйлдэл үзүүлж болзошгүй юм. Жишээ ньample, форматлагдсаныг асаахын тулд 1printf flt номын санд (-1printf_flt сонголт) холбох шаардлагагүй болсон. I0 float форматын тодорхойлогчдын дэмжлэг. Ухаалаг нь I0 Microchip нэгдсэн стандарт номын сангийн онцлогууд нь энэ сонголтыг шаардлагагүй болгодог. Нэмж дурдахад флэш дэх const мөрүүд дээр ажилладаг мөр ба санах ойн функцүүдэд (жишээ нь strcpy_P ( ) гэх мэт) _P дагавартай горимуудыг ашиглах шаардлагагүй болсон. Const-data-in-program-memory функц идэвхжсэн үед стандарт C горимууд (жишээ нь strcpy) ийм өгөгдөлтэй зөв ажиллах болно.

4.6. Хувилбар 2.32
Байхгүй.
4.7. Хувилбар 2.31
Байхгүй.
4.8. Хувилбар 2.30
Байхгүй.
4.1. Хувилбар 2.29 (Функциональ аюулгүй байдлын хувилбар)
Байхгүй.
4.2. Хувилбар 2.20
DFP-ийн байршлыг өөрчилсөн Хөрвүүлэгч одоо DFP-д (Төхөөрөмжийн гэр бүлийн багц) ашигладаг өөр байршлыг тооцож байна. Энэ нь хуучин DFP нь энэ хувилбартай ажиллахгүй байж магадгүй бөгөөд хуучин хөрвүүлэгчид хамгийн сүүлийн үеийн DFP-г ашиглах боломжгүй болно.
4.3. Хувилбар 2.19 (Функциональ аюулгүй байдлын хувилбар)
Байхгүй.
4.4. Хувилбар 2.10
Байхгүй
4.5. Хувилбар 2.05
Програмын санах ой дахь Const объектууд Анхдагч байдлаар, const шаардлага хангасан объектуудыг програмын санах ойд байрлуулж, хандах болно гэдгийг анхаарна уу (тодорхойлсон өнгө). Энэ нь таны төслийн хэмжээ, гүйцэтгэлийн хурдад нөлөөлөх боловч RAM-ийн хэрэглээг багасгах хэрэгтэй. Энэ функцийг шаардлагатай бол -mnoconst-data-in-progmem сонголтыг ашиглан идэвхгүй болгож болно.
4.6. Хувилбар 2.00
Тохиргооны гал хамгаалагч Одоо төхөөрөмжийн тохиргооны гал хамгаалагчийг тохиргооны прагма ашиглан програмчлах боломжтой ба дараа нь гал хамгаалагчийн төлөвийг зааж өгөх утгын хосыг тохируулж болно.
#pragma тохиргоо WDTON = SET
#pragma config BODLEVEL = BODLEVEL_4V3
Үнэмлэхүй объект ба функцууд Одоо CCI (хаяг) тодорхойлогч ашиглан объект, функцийг санах ойн тодорхой хаяг дээр байрлуулж болно.ampле:
#оруулна
int foobar_at(0x800100);
char __at(0x250) getID(int offset) {…}
Энэ тодорхойлогчийн аргумент нь байх ёстой Эхний байт эсвэл зааврыг байрлуулах хаягийг илэрхийлэх тогтмол. RAM хаягуудыг 0x800000 офсет ашиглан зааж өгсөн. Энэ функцийг ашиглахын тулд CCI-г идэвхжүүлнэ үү.
Шинэ тасалдлын функцийн синтакс Хөрвүүлэгч нь C функцууд нь тасалдал зохицуулагч гэдгийг харуулахын тулд CCI _interrupt (num) тодорхойлогчийг хүлээн авч байна. Тодорхойлогч тасалдлын дугаар авдаг, жишээ ньampле:
#оруулна
хүчингүй __ тасалдал(SPI_STC_vect_num) spi_Isr(void) { … }

Тогтмол асуудлууд

Дараах нь хөрвүүлэгч дээр хийгдсэн засварууд юм. Эдгээр нь үүсгэсэн кодын алдааг засах эсвэл хөрвүүлэгчийн ажиллагааг хэрэглэгчийн гарын авлагад заасан эсвэл зааж өгсөн байдлаар өөрчлөх боломжтой. Дэд гарчиг дахь хувилбарын дугаар нь дараагийн асуудлуудын засваруудыг агуулсан анхны хөрвүүлэгчийн хувилбарыг заана. Гарчиг дахь хаалтанд орсон шошго(ууд) нь хяналтын мэдээллийн санд байгаа асуудлын тодорхойлолт юм. Хэрэв та тусламж үйлчилгээтэй холбоо барих шаардлагатай бол эдгээр нь хэрэг болно.
Төхөөрөмжтэй холбоотой зарим нэг төхөөрөмжтэй холбоотой асуудлуудыг Төхөөрөмжийн Гэр бүлийн багцад (DFP) зассан болохыг анхаарна уу. DFP-д хийсэн өөрчлөлтийн талаарх мэдээлэл болон хамгийн сүүлийн үеийн багцуудыг татаж авах бол MPLAB багц менежерээс харна уу.

5.1. Хувилбар 2.41
Ventura (XC8-3088) Dongles дээр Dongle асуудлууд Хөрвүүлэгчийг лицензжүүлэхэд ашигласан нь macOS Ventura хостууд дээр зөв уншигдаагүй байж магадгүй бөгөөд лицензийн алдаа гарсан. XCLM лицензийн менежерт хийсэн өөрчлөлтүүд энэ асуудлыг засч залруулна.
Санах ойн хуваарилалтын буруу заалт (XC8-2925) Номын сангийн санах ойн удирдлагын стандарт функцуудыг (malloc () болон бусад) ашиглан санах ойн SIZE_MAX байт (эсвэл үүнтэй ойролцоо утгыг) хуваарилах оролдлого буруу амжилттай болсон. Энгийн динамик санах ойн хуваарилалтын хэрэгжилтийг ашиглах үед хүссэн блокоос гадна нэмэлт байт шаардлагатай гэдгийг тооцоогүй. Ийм нөхцөлд NULL заагчийг буцаах бөгөөд ENOMEM-д алдаа гаргана.
Буруу fma функцуудыг устгасан (XC8-2913) C99 стандарт номын сан fma ( ) - гэр бүлийн функцууд ( ) нь нэг бөөрөнхийлөлтөд хязгааргүй нарийвчлалтайгаар үржүүлэх-нэмэх тооцоог гаргаагүй, харин үйлдэл бүрээр бөөрөнхийлөх алдааг хуримтлуулсан. Эдгээр функцийг нийлүүлсэн номын сангаас хассан.
Мөр хувиргалтыг буруу зохицуулсан (XC8-2921, XC8-2652) strtod Cr-ээр хөрвүүлэх "сэдвийн дараалал" нь экспоненциал форматын хөвөгч цэгийн тоо мэт харагдахыг агуулж, e/E тэмдэгтийн дараа гэнэтийн тэмдэгт байх үед endptr-г өгсөн тохиолдолд түүнд дараах хаягийг өгсөн. Энэ нь e/E тэмдэгтийн дараах тэмдэгтийг зааж байсан бол энэ нь хувиргаагүй тул e/E тэмдэгтийг өөрөө зааж өгөх ёстой байсан. Жишээ ньample, strtod ("100exx", &ep) нь 100.00-ыг буцааж, ep-г мөрийн "exx" хэсэг рүү чиглүүлэхээр тохируулах ёстой, харин функц нь зөв утгыг буцааж байсан боловч мөрийн "xx" хэсэг рүү чиглүүлэхээр ep-г тохируулсан. .

5.2. Хувилбар 2.40
Хэт тайван (XCS-2876) -mrelax сонголтыг ашиглах үед хөрвүүлэгч зарим хэсгийг хамтад нь хуваарилдаггүй байсан тул кодын оновчтой хэмжээ багассан. Энэ нь шинэ MUSL номын санг ашигласан код эсвэл сул тэмдэгттэй холбоотой байж магадгүй юм.
Анхааруулга (XC8-2875)-д заасны дагуу газрын зургийн функцийг идэвхгүй болгоогүй. const-data-in-config-mappedprogmem функц нь идэвхжүүлсэн const-data-in-progmem функцээс хамаарна. Хэрэв const-data-inconfig-mapped-progmem функцийг энэ сонголтыг ашиглан тодорхой идэвхжүүлж, const-data-inprogmem функцийг идэвхгүй болгосон бол const-data-in-con fig- гэж анхааруулсан мессежийг үл харгалзан холбоосын алхам амжилтгүй болсон. mapped-progmem функц автоматаар идэвхгүй болсон бөгөөд энэ нь бүрэн зөв биш юм. Const-data-in-config-mapped-progmem функц одоо энэ нөхцөлд бүрэн идэвхгүй болсон.
DFP нь NVMCTRL (XC8-2848) руу зөв хандахын тулд өөрчилдөг. AVR64EA төхөөрөмжүүдийн ашигладаг ажиллуулах цагийн код нь NVMCTRL бүртгэл нь Тохиргооны өөрчлөлтийн хамгаалалт (CCP) доор байгаа бөгөөд const-data-in-configmapped-progmem-д ашигладаг хуудсанд I0 SFR-г тохируулах боломжгүй байсныг харгалзан үзсэнгүй. хөрвүүлэгчийн онцлог. AVR-Ex_DFP хувилбар 2.2.55-д хийсэн өөрчлөлтүүд нь ажиллах үеийн эхлүүлэх кодыг энэ бүртгэлд зөв бичих боломжийг олгоно.
DFP өөрчлөлтөөс зайлсхийх хэрэгтэй флаш зураглал (XC8-2847) AVR128DA28/32/48/64 Цахиурын алдаа (D580000882)-д мэдээлэгдсэн флэш зураглалын төхөөрөмжийн онцлогтой холбоотой асуудлыг шийдвэрлэх аргачлалыг хэрэгжүүлсэн. Const-data-in-config-mapped-progmem хөрвүүлэгч функц нь нөлөөлөлд өртсөн төхөөрөмжүүдэд анхдагчаар хэрэглэгдэхгүй бөгөөд энэ өөрчлөлт AVR-Dx_DFP хувилбар 2.2.160 дээр гарч ирнэ.
sinhf эсвэл coshf ашиглан бүтээх алдаа (XC8-2834) sinhf () эсвэл coshf () номын сангийн функцуудыг ашиглах оролдлого нь тодорхойгүй лавлагааг тайлбарласан холбоосын алдаа гарсан. Заасан дутуу функцийг хөрвүүлэгчийн тархалтад оруулсан болно.
Nopa ашиглан алдаа гаргах (XC,8-2833) asm ( ) ашиглан ассемблерийн нэрийг зааж өгсөн функцтэй nopa атрибутыг ашиглах нь ассемблерээс алдааны мэдэгдлийг өдөөсөн. Энэ хослол нь боломжгүй юм.
Заагч аргументуудтай вариак функцийн алдаа (XC8-2755, XC8-2731) Хувьсах тооны аргументтай функцууд нь const-data-in-progmem функцийг идэвхжүүлсэн үед 24 бит (memx төрлийн) заагчийг хувьсагчийн аргументуудын жагсаалтад шилжүүлэхийг хүлээдэг. Өгөгдлийн санах ойд заагч байсан аргументуудыг 16 битийн объект болгон дамжуулж, эцэст нь унших үед кодын бүтэлгүйтэлд хүргэсэн. Constdata-in-progmem функцийг идэвхжүүлсэн үед бүх 16 бит заагч аргументууд 24 битийн заагч руу хөрвүүлэгдэх болно.
strtoxxx номын сангийн функцууд амжилтгүй болсон (XC8-2620) const-data-in-progmem функцийг идэвхжүүлсэн үед strtoxxx номын сангийн функцууд дахь endptr параметр нь програмын санах ойд байхгүй эх мөрийн аргументуудын хувьд зөв шинэчлэгдээгүй байна.
Хүчингүй дамжуулалтын анхааруулга (XC8-2612) Хэрэв const-in-progmem функцийг идэвхжүүлж, стриптерийн хаягийг өгөгдлийн хаягийн орон зайд шууд дамжуулсан бол хөрвүүлэгч одоо алдаа гаргах болно (const шалгуур үзүүлэлтийг орхих), жишээ нь.ample, (uint 8_t *) "Сайн уу Дэлхий!". Const өгөгдлийн заагчийг өгөгдлийн хаягийн зайд шууд дамжуулах үед хаяг хүчингүй байж болзошгүй тохиолдолд анхааруулга гарч ирнэ.
Эхлээгүй const объектуудыг байрлуулах (XC8-2408) Програмын санах ойг бүхэлд нь эсвэл хэсэгчлэн өгөгдлийн хаягийн орон зайд буулгадаг төхөөрөмжүүдийн програмын санах ойд эхлээгүй const болон const тогтворгүй объектуудыг байршуулаагүй. Эдгээр төхөөрөмжүүдийн хувьд ийм объектуудыг одоо програмын санах ойд байрлуулж, бусад төхөөрөмжтэй нийцүүлэн ажиллах боломжтой болгодог.

5.3. Хувилбар 2.39 (Функциональ аюулгүй байдлын хувилбар)
Байхгүй.
5.4. Хувилбар 2.36
Хугацаа хойшлуулах үед гарсан алдаа (XC8-2774) Үнэгүй горимын өгөгдмөл оновчлолд хийсэн бага зэргийн өөрчлөлтүүд нь операнд илэрхийллүүдийг саатуулсан суулгагдсан функцууд руу тогтмол эвхэхээс сэргийлж, тэдгээрийг тогтмол биш гэж үзэж, алдааг өдөөхөд хүргэсэн: avr delay_cycles-ийн бүтэц нь эмхэтгэх хугацааны бүхэл тооны тогтмолыг хүлээж байна.
5.5. Хувилбар 2.35
_at ашиглан залгаа хуваарилалт (XC8-2653) Ижил нэртэй хэсэг дэх олон объектын байршлыг зэрэгцүүлэн хуваарилах, _at ( )-г ашиглах нь зөв ажиллаагүй. Жишээ ньampле:
const char arr1[] __attribute__((хэсэг(".mysec"))) __at (0x500) = {0xAB, 0xCD};
const char arr2[] __attribute__((хэсэг(".mysec"))) = {0xEF, 0xFE};
arr2-г arr1-ийн дараа шууд байрлуулах ёстой байсан.
Хэсгийн эхлэх хаягуудыг зааж өгөх (XC8-2650) The -W1, –section-start сонголт нь нэрлэсэн эхлэх хаяг дээр хэсгүүдийг чимээгүйхэн байрлуулж чадаагүй. Тусгай нэрлэсэн хэсгүүдэд энэ асуудлыг зассан; Гэсэн хэдий ч энэ нь ямар ч стандарт хэсгүүдэд ажиллахгүй, тухайлбал . текст эсвэл . bss, үүнийг -W1, -T сонголтыг ашиглан байрлуулах ёстой.
Амрах үед холбогч гацаж байна (XC8-2647) -mrelax оновчлолыг идэвхжүүлж, боломжтой санах ойд тохирохгүй код эсвэл өгөгдлийн хэсгүүд байх үед холбогч гацсан. Одоо ийм нөхцөлд оронд нь алдааны мессежийг гаргадаг.

Ямар ч унасан-буцах (XC8-2646) The – nofallback сонголтыг зөв хэрэгжүүлээгүй, баримтжуулаагүй. Хэрэв хөрвүүлэгч лицензгүй бол хөрвүүлэгч нь дахин бага оновчлолын тохиргоо руу орохгүй, оронд нь алдаа гаргахгүйн тулд үүнийг сонгож болно.

Тохиромжгүй хурдны оновчлол (X03-2637) 3-р түвшний оновчлолыг сонгохдоо процедурын хийсвэрлэлийн оновчлолыг идэвхжүүлж байсан (-03). Эдгээр оновчлол нь кодын хурдаас болж кодын хэмжээг бууруулдаг тул үүнийг хийх ёсгүй.
Муу EEPROM хандалт (XC8-2629) The -mconst-data-in-progmem сонголтыг идэвхжүүлсэн үед (энэ нь анхдагч төлөв) Xmega төхөөрөмж дээр eeprom_read_block горим зөв ажиллаагүй бөгөөд үүний үр дүнд EEPROM санах ой буруу уншигдав.
Санах ойн хуваарилалт буруу байна (XC8-2593, XC8-2651) -Text эсвэл -Tdata холбогчийн сонголт (жишээ ньample -vl драйверийн сонголтыг ашиглан дамжуулсан) заасан бол харгалзах текст/өгөгдлийн бүсийн гарал үүслийг шинэчилсэн; Гэсэн хэдий ч эцсийн хаягийг зохих ёсоор тохируулаагүй бөгөөд энэ нь зорилтот төхөөрөмжийн санах ойн хүрээг хэтрүүлэхэд хүргэж болзошгүй юм.
Хэт хамааралтай функцтэй осол (XC8-2580) Хэрэв функц нь тасалдал, дохио эсвэл nmi шинж чанаруудын нэгээс илүүг ашиглан зарласан бол хөрвүүлэгч эвдэрсэн болно, тухайлбал атрибут ( ( дохио , тасалдал ) ).
ATtiny тасалдлын код буруу (XC8-2465) ATtiny төхөөрөмжүүдэд зориулж бүтээж, оновчлолыг идэвхгүй болгосон (-00) үед тасалдлын функцууд нь хүрээнээс гадуур ассемблер мессежийг өдөөсөн байж болзошгүй.
Сонголтуудыг дамжуулаагүй байна (XC8-2452) Сонголтыг таслалаар тусгаарласан олон холбогч сонголттой ашиглах үед холбоосын бүх сонголтуудыг холбогч руу дамжуулаагүй.
Програмын санах ойг шууд бусаар унших алдаа (X03-2450) Зарим тохиолдолд хөрвүүлэгч нь заагчаас програмын санах ой руу хоёр байт утгыг унших үед дотоод алдаа (танигдахгүй insn) гаргасан.
5.6. Хувилбар 2.32
Хоёр дахь хандалт номын сан амжилтгүй боллоо (XC8-2381) xc8-ar-ийн Windows хувилбарыг дуудаж байна. .exe номын сангийн архивлагч одоо байгаа номын сангийн архивт хоёр дахь удаагаа нэвтрэхийн тулд алдааны мэдэгдлийн нэрийг өөрчлөх боломжгүй болсон байж магадгүй.
5.7. Хувилбар 2.31
Тайлбаргүй хөрвүүлэгч алдаа (XC8-2367) Системийн түр лавлахыг '.' цэг агуулсан замд тохируулсан Windows платформ дээр ажиллаж байх үед. тэмдэгт байвал хөрвүүлэгч ажиллаж чадаагүй байж магадгүй.
5.8. Хувилбар 2.30
Глобал шошгуудыг тоймлосны дараа буруу байрлуулсан байна (XC8-2299) Процедурын хийсвэрлэлээр хасагдсан угсралтын дараалалд глобал шошго байршуулдаг гараар бичсэн угсралтын кодыг зөв байршуулаагүй байж болзошгүй.
Тайвшруулах осол (XC8-2287) -mrelax сонголтыг ашигласнаар сүүлний үсрэлт сулрах оновчлол нь хэсгийн төгсгөлд байгаагүй ret зааврыг арилгахыг оролдох үед холбогч эвдэрсэн байж болзошгүй.
Шошгоуудыг утга болгон оновчтой болгох үед гацах (XC8-2282) "Шошгог утгыг утгаар" GNU C хэлний өргөтгөлийг ашигласан код нь процедурын хийсвэрлэлийн оновчлолыг гацахад хүргэсэн бөгөөд тоймтой VMA хүрээг засах алдаатай байж болзошгүй.
Тийм ч тогтвортой биш (XC8-2271) st rstr ( ) болон бусад функцуудын прототипүүд -mconst-data-inprogmem функц идэвхгүй болсон үед буцаж ирсэн стринг заагч дээр стандарт бус const шалгуур үзүүлэлтийг зааж өгөхөө больсон. avrxmega3 болон avrtiny төхөөрөмжүүдийн хувьд энэ функц бүрмөсөн идэвхждэг гэдгийг анхаарна уу.
Алдагдсан эхлүүлэгчид (XC8-2269) Хэзээ илүү Орчуулгын нэгжийн нэг хувьсагчийг хэсэгт байрлуулсан (_хэсэг эсвэл _attribute_ ( (хэсэг) ) ашиглан) бөгөөд эхний ийм хувьсагчийг тэг эхлүүлсэн эсвэл эхлүүлэгчгүй, байршуулсан ижил орчуулгын нэгж дэх бусад хувьсагчдад зориулсан эхлүүлэгч байсан. ижил хэсэгт алдагдсан.
5.1. Хувилбар 2.29 (Функциональ аюулгүй байдлын хувилбар)
Байхгүй.
5.2. Хувилбар 2.20
Урт командын алдаа (XC8-1983) AVR зорилтот төхөөрөмжийг ашиглах үед хөрвүүлэгч нь a-аар зогссон байж магадгүй file Хэрэв командын мөр нь маш том бөгөөд хашилт, урвуу зураас гэх мэт тусгай тэмдэгтүүдийг агуулсан бол алдаа олдсонгүй.
Оноогоогүй өгөгдлийн хэсэг (XC8-1920) AVR холбогч нь avrxmega3 болон avrtiny архитектурыг бүтээхдээ тусгай зориулалтын өгөгдлийн хэсгүүдэд санах ойг хуваарилж чадаагүй бөгөөд энэ нь санах ойн давхцлын алдааг үүсгэж болзошгүй юм.
5.3. Хувилбар 2.19 (Функциональ аюулгүй байдлын хувилбар)
Байхгүй.
5.4. Хувилбар 2.10
Нүүлгэн шилжүүлэх алдаа (XC8-1891) Хамгийн сайн тохирох хуваарилагч нь холбогч суларсаны дараа хэсгүүдийн хооронд санах ойн "нүх" үлдээх явдал байв. Энэ нь санах ойг хуваахаас гадна компьютерийн харьцангуй үсрэлт эсвэл дуудлагын хүрээнээс гарахтай холбоотой холбогчийг нүүлгэн шилжүүлэхэд алдаа гарах магадлалыг нэмэгдүүлсэн.
Тайвшруулах замаар өөрчлөгдөөгүй заавар (XC8-1889) Тайвшруулсан тохиолдолд зорилтууд нь хүрэх боломжтой үсрэлт эсвэл дуудлагын зааварчилгааны хувьд холбогч суларсангүй.
Алга болсон функциональ байдал (XC8E-388) Хэд хэдэн тодорхойлолт clock_div_t болон clock_prescale set () зэрэг нь ATmega324PB, ATmega328PB, ATtiny441, ATtiny841 зэрэг төхөөрөмжүүдэд тодорхойлогдоогүй.
Макро байхгүй байна _XC8_MODE_, _XC8_VERS ION, _XC, _XC8 гэсэн урьдчилсан процессорын макрог хөрвүүлэгч автоматаар тодорхойлоогүй. Эдгээрийг одоо ашиглах боломжтой.
5.5. Хувилбар 2.05
Хөрвүүлэгчийн дотоод алдаа (XC8-1822) Windows дээр бүтээх үед кодыг оновчтой болгох үед хөрвүүлэгчийн дотоод алдаа гарсан байж магадгүй.
RAM-ийн хэт ачааллыг илрүүлээгүй (XC8-1800, XC8-1796) Боломжтой RAM-аас хэтэрсэн программуудыг зарим тохиолдолд хөрвүүлэгч илрүүлээгүй тул ажиллах үеийн кодын алдаа гарсан.
Орхигдсон флаш санах ой (XC8-1792) avrxmega3 болон avrtiny төхөөрөмжүүдийн хувьд флаш санах ойн зарим хэсгийг MPLAB X программчлаагүй орхисон байж болзошгүй. IDE.
Үндсэн функцийг гүйцэтгэж чадаагүй (XC8-1788) Хөтөлбөрт ямар ч глобал хувьсагч тодорхойлогдоогүй зарим тохиолдолд ажиллах үеийн эхлүүлэх код гараагүй бөгөөд үндсэн ( ) функцэд хэзээ ч хүрч чадаагүй.
Санах ойн мэдээлэл буруу (XC8-1787) avrxmega3 болон avrtiny төхөөрөмжүүдийн хувьд avr хэмжээтэй программ нь зөвхөн уншигдах өгөгдөл нь програмын санах ойн оронд RAM зарцуулж байна гэж мэдээлж байсан.
Програмын санах ойн уншилт буруу (XC8-1783) Өгөгдлийн хаягийн орон зайд буулгасан, PROGMEM макро/атрибут ашиглан объектуудыг тодорхойлсон програмын санах ойтой төхөөрөмжүүдэд зориулж эмхэтгэсэн төслүүд эдгээр объектыг буруу хаягаас уншсан байж болзошгүй.
Шинж чанаруудтай дотоод алдаа (XC8-1773) Хэрэв та заагч объектуудыг тодорхойлсон бол дотоод алдаа гарлаа
_at () эсвэл attribute() тэмдэгтүүдийг заагч нэр болон хасагдсан төрлийн хооронд, жишээ нь.ample, char *
_at (0x800150) cp; Ийм кодтой тулгарвал анхааруулга өгөх болно.
Үндсэн функцийг гүйцэтгэж чадаагүй (XC8-1780, XC8-1767, XC8-1754) EEPROM хувьсагчийг ашиглах эсвэл тохируулгын прагма ашиглан гал хамгаалагчийг тодорхойлох нь үндсэн ( ) -д хүрэхээс өмнө өгөгдлийн буруу эхлэл болон/эсвэл ажиллах үеийн эхлүүлэх кодонд програмын гүйцэтгэлийг түгжсэн байж болзошгүй.
Жижиг төхөөрөмжүүдийн гал хамгаалагчийн алдаа (XC8-1778, XC8-1742) Attiny4/5/9/10/20/40 төхөөрөмжүүдийн толгой хэсэгт гал хамгаалагчийн уртыг буруу зааж өгсөн байна. files нь гал хамгаалагчийг тодорхойлсон кодыг бүтээх оролдлого хийх үед холбоосын алдаа гарахад хүргэдэг.
Сегментчлэл алдаа (XC8-1777) Завсрын сегментчиллийн алдааг зассан.
Ассемблерийн эвдрэл (XC8-1761) Хөрвүүлэгчийг Ubuntu 18 дээр ажиллуулах үед avr-as ассемблер эвдэрсэн байж магадгүй.
Объектуудыг арилгаагүй (XC8-1752) Эхлээгүй статик хадгалах хугацааны объектуудыг ажиллуулах үеийн эхлүүлэх кодоор цэвэрлээгүй байж магадгүй.
Зөрчилтэй төхөөрөмжийн тодорхойлолтыг үл тоомсорлосон (XC8-1749) Хэд хэдэн төхөөрөмжийн тодорхойлолтыг ашиглаж, өөр төхөөрөмжүүдийг зааж өгөх үед хөрвүүлэгч алдаа гаргаагүй.
Санах ойн эвдрэл нь нуруулдан (XC8-1748) The _heap_start тэмдэгтийг буруу тохируулсан тул энгийн хувьсагчдыг овоо гэмтээж болзошгүй.
Холбогчийг шилжүүлэх алдаа (XC8-1739) Код нь яг 4к байт зайтай rjmp эсвэл rcall-г агуулж байвал холбогчийг шилжүүлэх алдаа гарсан байж магадгүй.
5.6. Хувилбар 2.00
Байхгүй.

Мэдэгдэж буй асуудлууд

Дараах нь хөрвүүлэгчийн үйл ажиллагааны хязгаарлалт юм. Эдгээр нь ерөнхий кодлох хязгаарлалт эсвэл хэрэглэгчийн гарын авлагад байгаа мэдээллээс хазайсан байж болно. Гарчиг дахь хаалтанд орсон шошго(ууд) нь хяналтын мэдээллийн сан дахь тухайн асуудлын таних тэмдэг юм. Хэрэв та дэмжлэгтэй холбоо барих шаардлагатай бол энэ нь ашигтай байж магадгүй юм. Шошгогүй эдгээр зүйлүүд нь өөрчлөлтийг тодорхойлсон хязгаарлалтууд бөгөөд тэдгээр нь байнгын хүчинтэй байх магадлалтай.
6.1. MPLAB X IDE Интеграци
MPLAB IDE нэгтгэх Хэрэв хөрвүүлэгчийг MPLAB IDE-ээс ашиглах гэж байгаа бол хөрвүүлэгчийг суулгахаасаа өмнө MPLAB IDE-г суулгах ёстой.
6.2. Код үүсгэх
Segfault with section-anchors option (XC8-3045) Хувьсах аргументуудын жагсаалт бүхий функцуудыг тодорхойлсон, -fsection-anchors сонголтыг ашигладаг програм нь хөрвүүлэгчийн дотоод алдааг өдөөсөн байж болзошгүй: Сегментийн алдаа.
Дибаг хийх мэдээлэл синк хийгээгүй (XC8-2948) Холбогчийг тайвшруулах оновчлол нь зааврыг багасгах үед (жишээ ньample дуудлагыг дуудах зааварчилгаа), нэг хэсэгт нэгээс олон агшилтын үйлдлүүд хийгдэж байгаа үед хаягийн зураглалуудын эх шугам синхрончлолд үлдэхгүй байж магадгүй.
Доорх экс дээрample, харьцангуй дуудлагууд руу тайвширдаг foo хоёр дуудлага байдаг.
ТХГН-ийн санах ойн хуваарилалтын алдаа (XC8-2881) Процедурын хийсвэрлэлийг оновчтой болгох үед тухайн программ нь боломжтой зайд багтах боломжтой байсан ч кодын хэмжээ нь төхөөрөмж дээрх боломжтой програмын санах ойн хэмжээтэй ойролцоо байвал холбогч санах ойн хуваарилалтын алдааг мэдээлж болно.
Тийм ч ухаалаг биш Smart-I0 (XC8-2872) Хөрвүүлэгчийн smart-io функц нь const-data-in-progmem функцийг идэвхгүй болгосон эсвэл төхөөрөмж нь бүх флашыг өгөгдлийн санах ойд буулгасан тохиолдолд snprint f функцэд хүчинтэй боловч оновчтой бус кодыг үүсгэнэ.
Бүр бага ухаалаг Smart-I0 (XC8-2869) Хөрвүүлэгчийн smart-io функц нь -flto болон -fno-builtin сонголтуудыг хоёуланг нь ашиглах үед хүчинтэй боловч оновчтой бус код үүсгэх болно.
Зөвхөн уншихад тохиромжтой өгөгдөл байршуулалт (XC8-2849) Холбогч нь одоогоор санах ойн зураг дээрх APPCODE болон APPDATA санах ойн хэсгүүд болон [Уншихгүй-Бичиж болохгүй гэсэн хэсгүүдийг мэдэхгүй байна. Үүний үр дүнд холбогч нь санах ойн тохиромжгүй хэсэгт зөвхөн унших боломжтой өгөгдлийг хуваарилах магадлал багатай байдаг. Хэрэв const-data-in-progmem функцийг идэвхжүүлсэн бол, ялангуяа const-data-in-config-mapped-progmem функцийг идэвхжүүлсэн тохиолдолд алдаатай өгөгдөл гарах магадлал нэмэгддэг. Шаардлагатай бол эдгээр функцийг идэвхгүй болгож болно.
Объект file боловсруулах захиалга (XC8-2863) Объектуудын дараалал files нь холбогчоор боловсруулагдах болно. Процедурын хийсвэрлэлийн оновчлол (-mpa сонголт) ашиглахаас хамаарч өөр өөр байж болно. Энэ нь зөвхөн олон модулийн сул функцийг тодорхойлсон кодонд л нөлөөлнө.
Үнэмлэхүйтэй холбогчийн алдаа (XC8-2777) RAM-ийн эхэнд байгаа хаяг дээр объектыг үнэмлэхүй болгож, эхлээгүй объектуудыг мөн тодорхойлсон үед холбогчийн алдаа гарч болзошгүй.
Богино сэрээх ID (XC8-2775) ATA5700/2 төхөөрөмжүүдийн хувьд PHIDO/1 регистрүүд нь 16 бит биш харин зөвхөн 32 битийн өргөнтэй гэж тодорхойлогддог.
Тэмдэгтийг дуудах үед холбогч эвдэрсэн (XC8-2758) Эх код нь -cc., –de f sym холбогч тохируулгыг ашиглан тодорхойлсон тэмдэгтийг дуудах үед -mrelax драйверийн сонголтыг ашиглавал холбогч эвдэрч болзошгүй.
Буруу эхлүүлсэн (XC8-2679) Тэнд Зарим глобал/статик байт хэмжээтэй объектын анхны утгуудыг өгөгдлийн санах ойд хаана байрлуулах болон ажиллах үед хувьсагчид хандах хоорондын зөрүү юм.
Шууд бус функцийн дуудлага (XC8-2628) Зарим тохиолдолд бүтцийн нэг хэсэг болгон хадгалагдсан функцийн заагчаар хийсэн функцын дуудлага бүтэлгүйтэж болзошгүй.
strtof нь арван зургаатын тоот хөвөгчдөд тэгийг буцаана (XC8-2626) strtof et al, scanf ( ) болон бусад номын сангийн функцүүд нь илтгэгчийг тэг рүү заагаагүй арван арвантын хөвөгч цэгийн тоог үргэлж хөрвүүлдэг. Жишээ ньampле:
strtof (“Oxl”, & endptr);
Би биш харин 0 утгыг буцаана.
Стекийн зөвлөхийн буруу мессеж (XC8-2542, XC8-2541) Зарим тохиолдолд ашигласан рекурс эсвэл тодорхойгүй стекийн талаарх стекийн зөвлөхийн анхааруулга (alloca()-г ашиглах боломжтой) гардаггүй.
Давхардсан тасалдлын кодын алдаа (XC8-2421) Нэгээс олон тасалдлын функц ижил биетэй бол хөрвүүлэгч нь нэг тасалдлын функцийг нөгөөг нь дууддаг гаралттай байж болно. Энэ нь дуудлагын тасалдсан бүх регистрүүдийг шаардлагагүйгээр хадгалахад хүргэж, одоогийн тасалдал зохицуулагчийн эпилог ажиллахаас өмнө тасалдлыг идэвхжүүлэх бөгөөд энэ нь кодын бүтэлгүйтэлд хүргэж болзошгүй юм.
DFP зам буруу гарсан (XC8-2376) Хэрэв хөрвүүлэгч хүчингүй DFP зам болон "spec"-ээр дуудагдсан бол file Сонгосон төхөөрөмжид байгаа бол хөрвүүлэгч нь алга болсон төхөөрөмжийн гэр бүлийн багцыг мэдээлээгүй бөгөөд үүний оронд "spec"-ийг сонгож байна. file, энэ нь буруу гаралтад хүргэж болзошгүй. "Онцлох зүйл" files нь тархсан DFP-тэй шинэчлэгдээгүй байж болох бөгөөд зөвхөн дотоод хөрвүүлэгчийн туршилтад ашиглах зориулалттай байсан.
Санах ойн давхцал илрээгүй (XC8-1966) Хөрвүүлэгч нь тухайн хаяг дээр (_at ( )-аар) үнэмлэхүй болсон объектууд болон ( ) хэсгийн тодорхойлогчийг ашиглан ижил хаягтай холбогдсон бусад объектуудын санах ойн давхцлыг илрүүлэхгүй байна.
Номын сангийн функцууд болон _memx (XC8-1763) алдаа Memx хаягийн зайд аргумент бүхий libgcc float гэж нэрлэгддэг функцууд амжилтгүй болж магадгүй. Номын сангийн горимуудыг зарим C оператороос дууддаг тул жишээ ньample, дараах код нөлөөлсөн:
буцаах regFloatVar > memxFloatVar;
Хязгаарлагдмал libgcc хэрэгжилт (AVRTC-731) ATTiny4/5/9/10/20/40 бүтээгдэхүүний хувьд libgcc дэх стандарт C / Math номын сангийн хэрэгжилт маш хязгаарлагдмал эсвэл байхгүй байна.
Програмын санах ойн хязгаарлалт (AVRTC-732) 128 кб-аас дээш хэмжээтэй програмын санах ойн зургуудыг багажийн сүлжээгээр дэмждэг; Гэсэн хэдий ч, -mre lax сонголтыг ашиглах үед шаардлагатай функцийн бүдүүвчийг үүсгэхээс илүүтэйгээр тайвшралгүйгээр, алдааны мэдэгдэлгүйгээр холбогчийг цуцлах тохиолдол байдаг.
Нэрийн зайны хязгаарлалт (AVRTC-733) Нэрлэсэн хаягийн зайг хэрэглэгчийн гарын авлагын Тусгай төрлийн шалгуур үзүүлэлт хэсэгт дурдсан хязгаарлалтын дагуу багажийн сүлжээгээр дэмжинэ.
Цагийн бүсүүд The номын сангийн функцууд нь GMT-ийг тооцдог бөгөөд орон нутгийн цагийн бүсийг дэмждэггүй тул орон нутгийн цаг ( ) нь gmtime ( ) -тай ижил цагийг буцаана.ample.

file:///Applications/microchip/xc8/v2.41/docs/Readme_XC8_for_AVR.htm

Баримт бичиг / нөөц

MICROCHIP MPLAB XC8 C эмхэтгэгч хөгжүүлэх програм хангамж [pdf] Эзэмшигчийн гарын авлага
MPLAB XC8 C, MPLAB XC8 C эмхэтгэгч хөгжүүлэх програм хангамж, хөрвүүлэгч хөгжүүлэх програм хангамж, хөгжүүлэлтийн програм хангамж, програм хангамж

Лавлагаа

Сэтгэгдэл үлдээгээрэй

Таны имэйл хаягийг нийтлэхгүй. Шаардлагатай талбаруудыг тэмдэглэсэн *