MICROCHIP MPLAB XC8 C хөрвүүлэгч програм хангамж
ЭНЭ БАРИМТ БИЧИГ нь микрочип AVR төхөөрөмжүүдийг онилоход MPLAB XC8 C эмхэтгэгчтэй холбоотой чухал мэдээллийг агуулна.
ЭНЭ ПРОГРАММЫГ АЖИЛЛУУЛАХЫН ӨМНӨ УНШИНА УУ. ХЭРЭВ ТА 8 битийн PIC төхөөрөмжид эмхэтгэгчийг ашиглаж байгаа бол MPLAB XC8 C эмхэтгэгчийн PIC БАРИМТ БИЧИГИЙН ХУВААЛТЫН ТАЙЛБАРуудыг харна уу.
Дууслааview
Танилцуулга
Microchip MPLAB® XC8 C хөрвүүлэгчийн энэхүү хувилбар нь хэд хэдэн шинэ боломжууд, алдаа засварууд болон төхөөрөмжийн шинэ дэмжлэгийг агуулсан.
Барилгын огноо
Энэхүү хөрвүүлэгчийн хувилбарыг албан ёсоор бүтээх огноо нь 3 оны 2022-р сарын XNUMX юм.
Өмнөх хувилбар
Өмнөх MPLAB XC8 C хөрвүүлэгчийн хувилбар нь 2.39 оны 27-р сарын 2022-нд бүтээгдсэн функциональ аюулгүй байдлын хөрвүүлэгч 2.36 байсан. Өмнөх стандарт хөрвүүлэгч нь 27 оны 2022-р сарын XNUMX-нд бүтээгдсэн XNUMX хувилбар байсан.
Аюулгүй ажиллагааны гарын авлага
MPLAB XC хөрвүүлэгчид зориулсан функциональ аюулгүй байдлын гарын авлагыг функциональ аюулгүй байдлын лиценз худалдаж авахдаа баримт бичгийн багцад авах боломжтой.
Бүрэлдэхүүн хэсгүүдийн лицензүүд ба хувилбарууд
AVR MCU-д зориулсан MPLAB® XC8 C эмхэтгэгч нь GNU General Public License (GPL)-ийн дагуу бичигдэж, түгээгдсэн бөгөөд энэ нь түүний эх кодыг чөлөөтэй тарааж, олон нийтэд нээлттэй гэсэн үг юм. GNU GPL-ийн дагуух хэрэгслүүдийн эх кодыг Microchip-ээс тусад нь татаж авч болно webсайт. Та GNU GPL-г уншиж болно file нэртэй нь таны суулгах лавлахын дэд директорт байрладаг. GPL-ийн үндсэн зарчмуудын ерөнхий хэлэлцүүлгийг эндээс олж болно. Толгой хэсэгт өгсөн дэмжлэгийн код files, холбогч скриптүүд болон ажиллах үеийн номын сангууд нь өмчлөлийн код бөгөөд GPL-д хамаарахгүй.
Энэхүү хөрвүүлэгч нь GCC 5.4.0 хувилбар, binutils 2.26 хувилбарын хэрэгжилт бөгөөд avr-libc 2.0.0 хувилбарыг ашигладаг.
Системийн шаардлага
MPLAB XC8 C хөрвүүлэгч болон түүний ашигладаг лицензийн программ хангамж нь дараах үйлдлийн системүүдийн 64 битийн хувилбаруудыг багтаасан төрөл бүрийн үйлдлийн системд зориулагдсан: Microsoft Windows 10-ын мэргэжлийн хувилбарууд; Ubuntu 18.04; болон macOS 10.15.5. Windows-д зориулсан хоёртын хувилбарт код гарын үсэг зурсан. Mac OS-д зориулсан хоёртын файлуудыг кодоор баталгаажуулж, нотариатаар баталгаажуулсан.
Хэрэв та сүлжээний лицензийн сервер ажиллуулж байгаа бол лицензийн серверийг байршуулахад зөвхөн хөрвүүлэгчийн дэмждэг үйлдлийн системтэй компьютерийг ашиглаж болно. Xclm 2.0 хувилбарын хувьд сүлжээний лицензийн серверийг Microsoft Windows Server платформ дээр суулгаж болох боловч лицензийн сервер нь үйлдлийн системийн сервер хувилбар дээр ажиллах шаардлагагүй.
Дэмжигдсэн төхөөрөмжүүд
Энэхүү хөрвүүлэгч нь гарах үед мэдэгдэж байсан бүх 8 битийн AVR MCU төхөөрөмжүүдийг дэмждэг. Дэмжигдсэн бүх төхөөрөмжүүдийн жагсаалтыг (хөрвүүлэгчийн doc лавлахаас) харна уу. Эдгээр files мөн төхөөрөмж бүрийн тохиргооны битийн тохиргоог жагсаана.
Хувилбарууд болон лицензийн шинэчлэлтүүд
MPLAB XC8 хөрвүүлэгчийг лицензтэй (PRO) эсвэл зөвшөөрөлгүй (Үнэгүй) бүтээгдэхүүн болгон идэвхжүүлж болно. Та хөрвүүлэгчийн лицензийг авахын тулд идэвхжүүлэх түлхүүр худалдаж авах хэрэгтэй. Лиценз нь Үнэгүй бүтээгдэхүүнтэй харьцуулахад илүү өндөр түвшний оновчтой болгох боломжийг олгодог. Лицензгүй хөрвүүлэгчийг тусгай зөвшөөрөлгүйгээр тодорхойгүй хугацаагаар ажиллуулж болно.
MPLAB XC8 Functional Safety хөрвүүлэгчийг Microchip-ээс худалдаж авсан функциональ аюулгүй байдлын лицензээр идэвхжүүлсэн байх ёстой. Энэ лицензгүйгээр хөрвүүлэгч ажиллахгүй. Идэвхжүүлсний дараа та ямар ч оновчлолын түвшинг сонгож, хөрвүүлэгчийн бүх функцийг ашиглах боломжтой. MPLAB XC Functional Safety Compiler-ийн энэхүү хувилбар нь Сүлжээний серверийн лицензийг дэмждэг.
Лицензийн төрлүүд болон лицензтэй хөрвүүлэгчийг суулгах талаар мэдээлэл авахыг хүсвэл MPLAB XC C Compilers (DS50002059) -ийг суулгах, лицензжүүлэх баримт бичгийг үзнэ үү.
Суурилуулах, идэвхжүүлэх
Энэ хөрвүүлэгчид багтсан хамгийн сүүлийн лицензийн менежерийн талаарх чухал мэдээллийг "Шилжилт хөдөлгөөний асуудал ба хязгаарлалт" хэсгээс үзнэ үү.
Хэрэв MPLAB IDE ашиглаж байгаа бол энэ хэрэгслийг суулгахаасаа өмнө хамгийн сүүлийн үеийн MPLAB X IDE 5.0 буюу түүнээс хойшхи хувилбарыг суулгахаа мартуузай. Хөрвүүлэгчийг суулгахаасаа өмнө IDE-ээс гарна уу. XC8-1.00.11403-windows.exe гэх мэт .exe (Windows), .run (Linux) эсвэл програм (macOS) хөрвүүлэгч суулгагч програмыг ажиллуулаад дэлгэцэн дээрх зааврыг дагана уу.
Суулгацын анхдагч санг ашиглахыг зөвлөж байна. Хэрэв та Линукс ашиглаж байгаа бол хөрвүүлэгчийг терминал болон root бүртгэлээс суулгах ёстой. Администраторын эрхтэй macOS бүртгэл ашиглан суулгана уу.
Идэвхжүүлэлтийг одоо суулгахын тулд тусад нь хийж байна. Дэлгэрэнгүй мэдээллийг MPLAB® XC C Compilers (DS52059)-ийн лицензийн менежерээс үзнэ үү.
Хэрэв та үнэлгээний лицензийн дагуу хөрвүүлэгчийг ажиллуулахаар сонгосон бол үнэлгээний хугацаа дууссанаас хойш 14 хоногийн дотор эмхэтгэлийн үеэр анхааруулга авах болно. Хэрэв та HPA бүртгэлээ дуусгаснаас хойш 14 хоногийн дотор байгаа бол ижил анхааруулга өгнө.
XC сүлжээний лицензийн сервер нь тусдаа суулгагч бөгөөд нэг хэрэглэгчийн хөрвүүлэгч суулгагчид ороогүй болно.
XC лицензийн менежер одоо хөвөгч сүлжээний лицензүүдийн роумингыг дэмждэг. Гар утасны хэрэглэгчдэд зориулагдсан энэ функц нь хөвөгч лицензийг богино хугацаанд сүлжээнээс салгах боломжийг олгодог. Энэ функцийг ашигласнаар та сүлжээг салгаж, MPLAB XC хөрвүүлэгчийг ашиглах боломжтой. Энэ функцийн талаар илүү ихийг мэдэхийг хүсвэл XCLM суулгацын doc хавтаснаас үзнэ үү. MPLAB X IDE нь роумингыг нүдээр удирдахын тулд Лицензийн цонхыг (Хэрэгслүүд > Лицензүүд) агуулдаг.
Суурилуулалтын асуудлыг шийдвэрлэх
Хэрэв та Windows үйлдлийн системүүдийн аль нэг дор хөрвүүлэгчийг суулгахад бэрхшээлтэй тулгарвал дараах зөвлөмжийг ашиглана уу.
- Суулгалтыг администратороор ажиллуулна уу.
- Суулгах програмын зөвшөөрлийг "Бүрэн хяналт" болгож тохируулна уу. (Хулганы баруун товчийг дарна уу file, Properties, Аюулгүй байдлын таб, хэрэглэгчийг сонгох, засах.)
- Түр хавтасны зөвшөөрлийг "Бүрэн хяналт!
Түр хавтасны байршлыг тодорхойлохын тулд Run команд руу %temp% гэж бичнэ үү (Windows лого товчлуур + R). Энэ нь нээгдэнэ file Explorer-ийн харилцах цонх нь тухайн лавлахыг харуулах бөгөөд энэ хавтасны замыг тодорхойлох боломжийг танд олгоно.
Хөрвүүлэгчийн баримт бичиг
Дэлгэцийн агшинд заасны дагуу MPLAB X IDE хяналтын самбар дээрх цэнхэр тусламжийн товчийг дарахад хөрвүүлэгчийн хэрэглэгчийн гарын авлагыг хөтөч дээр нээгдэх HTML хуудаснаас нээж болно.
Хэрэв та 8 битийн AVR зорилтот системд зориулж бүтээж байгаа бол AVR® MCU-д зориулсан MPLAB® XC8 C эмхэтгэгч хэрэглэгчийн гарын авлага нь уг архитектурт хамаарах хөрвүүлэгчийн сонголтууд болон функцүүдийн талаарх мэдээллийг агуулдаг.
Хэрэглэгчийн дэмжлэг
Microchip нь энэхүү хөрвүүлэгчийн хувилбартай холбоотой алдааны мэдээ, санал, сэтгэгдлийг хүлээн авна. Аливаа алдааны тайлан эсвэл функцийн хүсэлтийг дэмжлэгийн системээр дамжуулна уу.
Баримт бичгийн шинэчлэлт
MPLAB XC8 баримт бичгийн онлайн болон хамгийн сүүлийн үеийн хувилбарыг Microchip-ийн онлайн техникийн баримт бичигт зочилно уу. webсайт.
Энэ хувилбарт шинээр эсвэл шинэчлэгдсэн AVR баримт бичиг:
- MUSL зохиогчийн эрхийн мэдэгдэл
- MPLAB XC C хөрвүүлэгчийг суулгах, лицензжүүлэх (M хувилбар)
- Embedded инженерүүдэд зориулсан MPLAB XC8 хэрэглэгчийн гарын авлага – AVR MCU (хувилбар А)
- AVR MCU-д зориулсан MPLAB XC8 C хөрвүүлэгч хэрэглэгчийн гарын авлага (засвар F)
- Микрочипийн нэгдсэн стандарт номын сангийн лавлах гарын авлага (Б хувилбар)
Микрочипийн нэгдсэн стандарт номын сангийн лавлах гарын авлага нь Микрочипийн нэгдсэн стандарт номын сангаар тодорхойлсон функцүүдийн үйл ажиллагаа, интерфэйс, мөн номын сангийн төрөл болон макроны зориулалтыг тодорхойлдог. Эдгээр мэдээллийн зарим нь өмнө нь AVR® MCU-д зориулсан MPLAB® XC8 C хөрвүүлэгч хэрэглэгчийн гарын авлагад агуулагдаж байсан. Энэ хөрвүүлэгч гарын авлагад төхөөрөмжид зориулсан номын сангийн мэдээлэл агуулагдсан хэвээр байна.
Хэрэв та дөнгөж 8 битийн төхөөрөмж болон MPLAB XC8 C хөрвүүлэгчийг ашиглаж эхэлж байгаа бол суулгагдсан инженерүүдэд зориулсан MPLAB® XC8 хэрэглэгчийн гарын авлага – AVR® MCUs (DS50003108) нь MPLAB X IDE дээр төсөл зохиох, код бичих тухай мэдээлэлтэй. таны анхны MPLAB XC8 C төслийн хувьд. Энэхүү гарын авлагыг хөрвүүлэгчийн хамт тарааж байна.
Hamate хэрэглэгчийн гарын авлагыг энэ хувилбарын docs лавлах хэсэгт оруулсан болно. Энэхүү гарын авлага нь Hamate-г бие даасан програм болгон ажиллуулдаг хүмүүст зориулагдсан болно.
Шинэ юу байна
Дараах нь хөрвүүлэгчийн одоо дэмждэг шинэ AVR зорилтот функцууд юм. Дэд гарчиг дахь хувилбарын дугаар нь дараагийн функцуудыг дэмжих анхны хөрвүүлэгчийн хувилбарыг заана.
2.40 хувилбар
Шинэ төхөөрөмжийн дэмжлэг Дараах AVR хэсгүүдэд дэмжлэг үзүүлэх боломжтой: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA, AVR28EA64.
Процедурын хийсвэрлэлийг сайжруулсан Процедурын хийсвэрлэл (PA) оновчлолын хэрэгслийг сайжруулснаар функц дуудлагын заавар (дуудлагыг эргүүлэн татах)) агуулсан кодыг тоймлон харуулах боломжтой болсон. Энэ нь зөвхөн стекийг аргумент дамжуулах эсвэл функцээс буцах утгыг авахад ашиглагдаагүй тохиолдолд л явагдана. Хувьсагчийн аргументын жагсаалт бүхий функцийг дуудах эсвэл энэ зорилгоор зориулагдсан регистрээс илүү олон аргумент авдаг функцийг дуудах үед стекийг ашигладаг. Энэ функцийг monk-pa-outline-cals сонголтыг ашиглан идэвхгүй болгох эсвэл объектын хувьд процедурын хийсвэрлэлийг бүхэлд нь идэвхгүй болгож болно. file эсвэл -monk-pa-on-file болон -mo.-pa-on-функцийг тус тусад нь эсвэл nipa шинж чанарыг ( nipa тодорхойлогч) функцтэй сонгон ашиглана.
Кодын хамрах хүрээний макро Хөрвүүлэгч одоо хүчинтэй mcodecov сонголтыг зааж өгсөн бол __CODECOV макро тодорхойлно.
Санах ойн захиалгын сонголт Одоо xc8-cc драйвер нь AVR зорилтуудыг бүтээхдээ -mreserve=space@start: end сонголтыг хүлээн авах болно. Энэ сонголт нь заасан санах ойн хүрээг өгөгдөл эсвэл програмын санах ойд хадгалж, холбогчийг энэ хэсэгт код эсвэл объект оруулахаас сэргийлнэ.
Илүү ухаалаг ухаалаг IO Ухаалаг IO функцүүдэд хэд хэдэн сайжруулалт хийгдсэн бөгөөд үүнд printf үндсэн кодын ерөнхий өөрчлөлтүүд, %n хувиргах тодорхойлогчийг бие даасан хувилбар гэж үзэх, эрэлтийн дагуу vararg поп горимуудыг холбох, IO функцын аргументуудыг боловсруулахад боломжтой бол богино өгөгдлийн төрлүүдийг ашиглах зэрэг олон сайжруулалт хийгдсэн. , мөн талбарын өргөн, нарийвчлалтай ажиллахад нийтлэг кодыг хүчинтэй болгох. Энэ нь код болон өгөгдөлд ихээхэн хэмнэлт гаргахаас гадна IO-ийн гүйцэтгэлийн хурдыг нэмэгдүүлэх болно.
Хувилбар 2.39 (Функциональ аюулгүй байдлын хувилбар)
Сүлжээний серверийн лиценз MPLAB XC8 Functional Safety Compiler-ийн энэхүү хувилбар нь Сүлжээний серверийн лицензийг дэмждэг.
2.36 хувилбар
Байхгүй.
2.35 хувилбар
Шинэ төхөөрөмжийн дэмжлэг Дараах AVR хэсгүүдэд дэмжлэг үзүүлэх боломжтой: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28, AVR64DD32.
Сайжруулсан контекст шилжих Шинэ -mcall-isr-prologues сонголт нь тасалдлын функцууд оролтод бүртгэлийг хэрхэн хадгалах, тасалдал дуусах үед тэдгээр бүртгэлийг хэрхэн сэргээхийг өөрчилдөг. Энэ нь -mcall-prologues сонголттой төстэй байдлаар ажилладаг боловч зөвхөн тасалдлын функцэд (ISRs) нөлөөлдөг.
Бүр илүү сайжруулсан контекст шилжих Шинэ -mgas-isr-prologues сонголт нь жижиг тасалдал үйлчилгээний горимд үүсгэгдсэн контекст загатнах кодыг хянадаг. Идэвхжүүлсэн үед уг функцийг ассемблер регистрийн ашиглалтын үүднээс ISR-г сканнердах ба шаардлагатай тохиолдолд зөвхөн эдгээр ашигласан регистрүүдийг хадгалах болно.
Тохируулах боломжтой флаш зураглал AVR DA болон AVR DB гэр бүлийн зарим төхөөрөмжүүд нь програмын санах ойн аль 32к хэсгийг өгөгдлийн санах ойд буулгахыг зааж өгөх SFR (жишээ нь FLMAP)-тай байдаг. Шинэ - mconst-data-in-config-mapped-proem сонголтыг холбогч нь бүх сөрөг хүчинтэй өгөгдлийг нэг 32к хэсэгт байрлуулж, холбогдох SFR бүртгэлийг автоматаар эхлүүлж, энэ өгөгдлийг өгөгдлийн санах ойд буулгах боломжтой. , хаана илүү үр дүнтэй хандах болно.
Микрочипийн нэгдсэн стандарт номын сангууд Бүх MPLAB XC хөрвүүлэгчид одоо MPLAB XC8-ийн энэ хувилбарт ашиглах боломжтой Microchip нэгдсэн стандарт номын санг хуваалцах болно. MPLAB® XC8 C хөрвүүлэгч хэрэглэгчийн гарын авлага/эсвэл AVR® MCU нь эдгээр стандарт функцүүдийн баримт бичгийг агуулаагүй болсон. Энэ мэдээллийг одоо Microchip нэгдсэн стандарт номын сангийн лавлах гарын авлагаас олж болно. Өмнө нь avr-libc-ээр тодорхойлсон зарим функцийг ашиглах боломжгүй гэдгийг анхаарна уу. (Номын сангаас үзнэ үү):'. үйл ажиллагааY...)
Ухаалаг IO Шинэ нэгдсэн номын сангийн нэг хэсэг болгон хэвлэх, сканнердах бүлгүүдийн IO функцуудыг программд эдгээр функцийг хэрхэн ашиглаж байгаагаас хамааран угсралт бүр дээр тусгайлан үүсгэж байна. Энэ нь програмын ашигладаг нөөцийг эрс багасгаж чадна.
Ухаалаг IO тусламжийн сонголт Ухаалаг IO функцүүдийн (printf () эсвэл scanf () гэх мэт) дуудлагыг шинжлэх үед хөрвүүлэгч нь форматын мөрнөөс үргэлж тодорхойлж чадахгүй, эсвэл дуудлагад шаардагдах хөрвүүлэлтийн тодорхойлогчийг аргументуудаас гаргаж чаддаггүй. Өмнө нь хөрвүүлэгч үргэлж ямар ч таамаглал гаргадаггүй бөгөөд бүрэн ажиллагаатай IO функцуудыг програмын эцсийн дүрстэй холбосон эсэхийг баталгаажуулдаг. Шинэ – msmart-io-format=fmt сонголтыг нэмсэн бөгөөд ингэснээр хөрвүүлэгчид оронд нь хэрэглээ нь хоёрдмол утгатай ухаалаг IO функцүүдийн ашигладаг хөрвүүлэлтийн тодорхойлогчдын талаар мэдээлэх боломжтой бөгөөд ингэснээр хэт урт IO горимуудыг холбохоос сэргийлнэ. (Дэлгэрэнгүй мэдээллийг smart-io форматын сонголтоос үзнэ үү.)
Захиалгат хэсгүүдийг байрлуулах Өмнө нь холбогч скрипт ижил нэртэй гаралтын хэсгийг тодорхойлсон үед -Wl, –section-start сонголт нь зөвхөн заасан хэсгийг хүссэн хаяг дээр байрлуулдаг байсан. Хэрэв тийм биш байсан бол уг хэсгийг холбогчийн сонгосон хаяг дээр байрлуулсан бөгөөд сонголтыг үндсэндээ хэрэгсэхгүй болгосон. Одоо холбоосын скрипт нь тухайн хэсгийг тодорхойлоогүй байсан ч гэсэн бүх захиалгат хэсгүүдэд энэ сонголтыг хүндэтгэх болно. Гэхдээ стандарт хэсгүүдийн хувьд ийм . текст, . bss эсвэл . өгөгдлийн хувьд хамгийн сайн тохирох хуваарилагч нь тэдгээрийн байршлыг бүрэн хянах боломжтой бөгөөд сонголт нь ямар ч нөлөө үзүүлэхгүй. Хэрэглэгчийн гарын авлагад заасны дагуу -Wl, -Tsection=add сонголтыг ашиглана уу.
2.32 хувилбар
Стекийн удирдамж PRO хөрвүүлэгчийн лицензээр ашиглах боломжтой бөгөөд хөрвүүлэгчийн стекийн удирдамжийн функцийг програмын ашигладаг аливаа стекийн хамгийн их гүнийг тооцоолоход ашиглаж болно. Энэ нь програмын дуудлагын графикийг бүтээж, дүн шинжилгээ хийж, функц бүрийн стекийн хэрэглээг тодорхойлж, тайланг гаргадаг бөгөөд үүнээс програмын ашигласан стекийн гүнийг дүгнэж болно. Энэ функцийг -mchp-stack-usage командын мөрийн сонголтоор идэвхжүүлсэн. Стек ашиглалтын хураангуйг гүйцэтгэсний дараа хэвлэнэ. Стекийн нарийвчилсан тайланг газрын зураг дээр үзэх боломжтой file, үүнийг ердийн аргаар хүсэлт гаргаж болно.
Шинэ төхөөрөмжийн дэмжлэг Дараах AVR хэсгүүдэд ашиглах боломжтой: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32, AVR28DB64, AVR32DB32.
Буцагдсан төхөөрөмжийн дэмжлэг Дараах AVR хэсгүүдэд ашиглах боломжгүй болсон: AVR16DA28, AVR16DA32 болон, AVR16DA48.
2.31 хувилбар
Байхгүй.
2.30 хувилбар
Өгөгдөл эхлүүлэхээс сэргийлэх шинэ сонголт -mno-data-ini t драйверын шинэ сонголт нь өгөгдлийг эхлүүлэх, bss хэсгүүдийг цэвэрлэхээс сэргийлдэг. Энэ нь угсралт дахь do_ copy_ өгөгдөл болон d o_ clear_ bss тэмдэгтүүдийн гаралтыг дарах замаар ажилладаг. files, энэ нь эргээд тэдгээр горимуудыг холбогчоор оруулахаас сэргийлнэ.
Сайжруулсан оновчлолууд Хэд хэдэн оновчлолын сайжруулалт хийгдсэн бөгөөд үүнд илүүдэл буцаах зааврыг арилгах, хэрэв бит байвал алгасах зааварчилгааг дагах зарим үсрэлтүүдийг арилгах, процедурын хийсвэрлэл болон энэ үйл явцыг давтах чадварыг сайжруулсан.
Эдгээр оновчлолын заримыг, тухайлбал -f хэсгийн зангууг удирдах нэмэлт сонголтууд одоо байгаа бөгөөд энэ нь нэг тэмдэгттэй харьцуулахад статик объектуудад хандах боломжийг олгодог; -mpai derations=n, энэ нь процедурын хийсвэрлэлийн давталтын тоог анхдагч 2-оос өөрчлөх боломжийг олгодог; болон, -mpa- дуудлагын зардал- shortcall нь илүү түрэмгий процедурын хийсвэрлэлийг гүйцэтгэдэг, холбогч нь урт дуудлагыг тайвшруулж чадна гэж найдаж байна. Энэ сүүлчийн сонголт нь үндсэн таамаглалыг хэрэгжүүлэхгүй бол кодын хэмжээг нэмэгдүүлэх боломжтой.
Шинэ төхөөрөмжийн дэмжлэг Дараах AVR хэсгүүдэд дэмжлэг үзүүлэх боломжтой: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48, AVR128DB.
Буцагдсан төхөөрөмжийн дэмжлэг Дараах AVR хэсгүүдэд дэмжлэг үзүүлэх боломжгүй: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617, болон ATA664251.
Хувилбар 2.29 (Функциональ аюулгүй байдлын хувилбар)
Толгой хэсэг file хөрвүүлэгчийн суулгацын хувьд хөрвүүлэгч нь MISRA гэх мэт хэлний техникийн үзүүлэлтүүдтэй нийцэж байгаа эсэхийг шалгахын тулд толгой file, үүнийг автоматаар оруулдаг , шинэчлэгдсэн. Энэ толгой хэсэгт _buil tin _avrnop () болон _buil tin_ avr delay_ cycles () гэх мэт бүх суулгасан функцуудын загваруудыг агуулна. Зарим суулгац нь MISRA-д нийцэхгүй байж болно; Эдгээрийг хөрвүүлэгчийн командын мөрөнд define _Xe_ STRICT_ MISRA нэмэх замаар орхиж болно. Суулгацууд болон тэдгээрийн мэдэгдлүүд нь тогтмол өргөнтэй төрлүүдийг ашиглахаар шинэчлэгдсэн.
2.20 хувилбар
Шинэ төхөөрөмжийн дэмжлэг Дараах AVR хэсгүүдэд дэмжлэг үзүүлэх боломжтой: ATTINY1624, ATTINY1626, ATTINY1627.
Хамгийн сайн тохирох хуваарилалт Хөрвүүлэгчийн хамгийн сайн тохирох хуваарилагчийг (BFA) сайжруулснаар хэсгүүдийг илүү оновчтой болгох боломжийг олгодог дарааллаар хуваарилсан. BFA нь одоо хаягийн зайг дэмжиж, өгөгдлийг эхлүүлэх ажлыг илүү сайн гүйцэтгэдэг.
Процедурын хийсвэрлэлийг сайжруулсан Процедурын хийсвэрлэлийн оновчлолыг одоо илүү олон кодын дараалал дээр хийж байна. Энэ оновчлол нь кодын хэмжээг ихэсгэсэн байж болзошгүй өмнөх нөхцөл байдлыг оновчлолын кодыг холбогчийн хог цуглуулах үйл явцтай танилцах замаар шийдвэрлэсэн.
AVR Ассемблер байхгүй байна AVR Assembler нь энэ түгээлтэд орохоо больсон.
Хувилбар 2.19 (Функциональ аюулгүй байдлын хувилбар)
Байхгүй.
2.10 хувилбар
Кодын хамрах хүрээ Энэхүү хувилбар нь төслийн эх кодыг хэр зэрэг гүйцэтгэсэн талаар дүн шинжилгээ хийхэд хялбар болгох кодын хамрах функцийг агуулдаг. Үүнийг идэвхжүүлэхийн тулд -mcodecov=ram сонголтыг ашиглана уу. Таны техник хангамж дээр програмыг ажиллуулсны дараа кодын хамрах хүрээний мэдээллийг төхөөрөмжид нэгтгэх бөгөөд үүнийг MPLAB X IDE-д кодын хамрах хүрээний залгаасаар дамжуулж, харуулах боломжтой. Энэ залгаасын талаарх мэдээллийг IDE баримтаас харна уу. #pragma mcodecov нь дараагийн функцуудыг хамрах хүрээний шинжилгээнээс хасахад ашиглагдаж болно. Прагма-г эхэнд нэмэх нь хамгийн тохиромжтой file бүхэлд нь хасах file хамрах хүрээний шинжилгээнээс. Өөрөөр, ( (mcodecov) ) шинж чанарыг хамрах хүрээний шинжилгээнээс тодорхой функцийг хасахад ашиглаж болно.
Төхөөрөмжийн тодорхойлолт files Шинэ төхөөрөмж file avr chipinfo гэж нэрлэдэг. html нь хөрвүүлэгчийн түгээлтийн docs санд байрладаг. Энэ file хөрвүүлэгчийн дэмждэг бүх төхөөрөмжийг жагсаав. Төхөөрөмжийн нэр дээр дарвал тухайн төхөөрөмжийн зөвшөөрөгдөх бүх тохиргооны битийн тохиргоо/утга хосыг харуулсан хуудас нээгдэнэ.amples.
Процедурын хийсвэрлэл Угсрах кодын нийтлэг блокуудыг тухайн блокийн задалсан хуулбар руу залгах замаар орлуулах процедурын хийсвэрлэлийн оновчлолыг хөрвүүлэгчид нэмсэн. Эдгээрийг тусдаа программ гүйцэтгэдэг бөгөөд 2, 3-р түвшний оновчлолыг сонгох үед хөрвүүлэгч автоматаар дуудагддаг. Эдгээр оновчлолууд нь кодын хэмжээг багасгах боловч гүйцэтгэлийн хурд болон кодын дибаг хийх чадварыг бууруулдаг.
Процедурын хийсвэрлэлийг -mno-pa сонголтыг ашиглан илүү өндөр оновчлолын түвшинд идэвхгүй болгож болно, эсвэл -mpa ашиглан доод оновчтой түвшинд (таны лицензийн дагуу) идэвхжүүлж болно. Үүнийг объектын хувьд идэвхгүй болгож болно file ашиглах -mno-pa-on-file=fileнэр, эсвэл функцийн функцийг -mno-pa-г ашиглан идэвхгүй болгосон.
Таны эх кодын дотор _attribute_ ((nopa)) функцийг функцийн тодорхойлолттой хамт эсвэл _nopa-г ашиглан атрибут ((nopa, noinline)) болгон өргөтгөх ба ингэснээр функц доторлогоо хийхээс сэргийлж процедурын хийсвэрлэлийг идэвхгүй болгож болно. мөн доторлогдсон кодын хийсвэрлэл байна.
Прагма дахь битийн дэмжлэгийг түгжих #pragma тохиргоог одоо AVR түгжих битүүд болон бусад тохиргооны битүүдийг тодорхойлоход ашиглаж болно. Avr чипийн мэдээллийг шалгана уу. html file (дээр дурдсан) энэ прагматай ашиглах тохиргоо/утга хосын хувьд.
Шинэ төхөөрөмжийн дэмжлэг Дараах хэсгүүдэд дэмжлэг үзүүлэх боломжтой: AVR28DA128, AVR64DA128, AVR32DA128, AVR48DA128.
2.05 хувилбар
Таны мөнгөний төлөө илүү олон бит Энэхүү хөрвүүлэгч болон лицензийн менежерийн macOS хувилбар нь одоо 64 битийн програм юм. Энэ нь хөрвүүлэгчийг macOS-ийн сүүлийн хувилбарууд дээр анхааруулгагүйгээр суулгаж, ажиллуулах болно.
Програмын санах ой дахь Const объектууд Хөрвүүлэгч нь RAM-д байрлуулахаас илүүтэйгээр програмын Flash санах ойд const шаардлага хангасан объектуудыг байрлуулж болно. Хөрвүүлэгчийг өөрчилсөн бөгөөд ингэснээр const шаардлага хангасан глобал өгөгдөл нь програмын флаш санах ойд хадгалагдах бөгөөд энэ өгөгдөлд тохирох програмын санах ойн зааврыг ашиглан шууд болон шууд бусаар хандах боломжтой болсон. Энэ шинэ функцийг анхдагчаар идэвхжүүлсэн боловч -mno-const-data-in-progmem сонголтыг ашиглан идэвхгүй болгож болно. avrxmega3 болон avrtiny архитектурын хувьд програмын санах ойг эдгээр төхөөрөмжүүдийн өгөгдлийн хаягийн зайд буулгасан тул энэ функц шаардлагагүй бөгөөд үргэлж идэвхгүй байдаг.
Стандарт үнэ төлбөргүй Энэхүү хөрвүүлэгчийн лицензгүй (үнэгүй) хувилбарууд нь одоо 2-р түвшнийг багтаасан оновчлолыг хийх боломжтой болсон. Энэ нь стандарт лицензийг ашиглан өмнө нь боломжтой байсантай ижил биш боловч ижил төстэй гаралтыг зөвшөөрөх болно.
AVRASM2 тавтай морил 2 битийн төхөөрөмжүүдэд зориулсан AVRASM8 ассемблер одоо XC8 хөрвүүлэгч суулгагчид багтсан болно. Энэ ассемблерийг XC8 хөрвүүлэгч ашигладаггүй боловч гараар бичсэн угсралтын эх сурвалж дээр суурилсан төслүүдэд ашиглах боломжтой.
Шинэ төхөөрөмжийн дэмжлэг Дараах хэсгүүдэд дэмжлэг үзүүлэх боломжтой: ATMEGA1608, ATMEGA1609, ATMEGA808, ATMEGA809.
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 Энэ нь номын санчийг дуудахыг зөвлөдөг арга юм. Хэрэв хуучин төслүүдэд шаардлагатай бол өмнөх номын санчийг хөрвүүлэгчийн өмнөх хувилбаруудад хүлээн зөвшөөрсөн хуучин хэв маягийн сонголтуудыг ашиглан шууд дуудаж болно.
Шилжилт хөдөлгөөний асуудал
Дараах нь хөрвүүлэгч өөр өөрөөр зохицуулагддаг функцууд юм. Хэрэв кодыг хөрвүүлэгчийн энэ хувилбарт шилжүүлбэл эдгээр өөрчлөлтүүд таны эх кодыг өөрчлөх шаардлагатай байж магадгүй. Дэд гарчиг дахь хувилбарын дугаар нь дараагийн өөрчлөлтүүдийг дэмжих анхны хөрвүүлэгчийн хувилбарыг заана.
2.40 хувилбар
Байхгүй.
Хувилбар 2.39 (Функциональ аюулгүй байдлын хувилбар)
Байхгүй.
2.36 хувилбар
Байхгүй.
2.35 хувилбар
Мөр хоорондын суурьтай ажиллах (XCS-2420) Бусад XC хөрвүүлэгчтэй нийцтэй байдлыг хангахын тулд strtol () гэх мэт XC8 string-to функцууд нь заасан суурь нь 36-аас том бол оролтын мөрийг хөрвүүлэх оролдлого хийхээ больж, оронд нь errno-г EINVAL болгож тохируулна. С стандарт нь энэ үндсэн утгаас хэтэрсэн үед функцүүдийн үйлдлийг заагаагүй болно.
Тохиромжгүй хурдыг оновчтой болгох 3-р түвшний оновчлолыг сонгохдоо процедурын хийсвэрлэлийн оновчлолыг идэвхжүүлж байсан (-03). Эдгээр оновчлол нь кодын хурдаас болж кодын хэмжээг бууруулдаг тул үүнийг хийх ёсгүй. Энэ оновчлолын түвшинг ашиглаж буй төслүүд нь энэ хувилбараар бүтээгдсэн үед кодын хэмжээ болон гүйцэтгэлийн хурдны ялгааг харж болно.
Номын сангийн функциональ байдал Стандарт C номын сангийн олон функцуудын кодыг одоо Microchip-ийн нэгдсэн стандарт номын сангаас гаргаж авсан бөгөөд энэ нь хуучин avr-libc номын сантай харьцуулахад зарим тохиолдолд өөр үйлдэл үзүүлж болзошгүй юм. Жишээ ньample, float форматын тодорхойлогчдын форматлагдсан IO дэмжлэгийг асаахын тулд lprintf_flt номын санд (-print _flt сонголт) холбох шаардлагагүй болсон. Microchip нэгдсэн стандарт номын сангийн ухаалаг IO функцууд нь энэ сонголтыг шаардлагагүй болгодог. Нэмж дурдахад флэш дэх const стрингүүд дээр ажилладаг мөр ба санах ойн функцүүдэд (жишээ нь strcpy_P () гэх мэт ..) _p дагавартай горимуудыг ашиглах шаардлагагүй болсон. Стандарт C горимууд (жишээ нь strcpy ()) програмын санах ой дахь const-өгөгдөл функц идэвхжсэн үед ийм өгөгдөлтэй зөв ажиллах болно.
2.32 хувилбар
Байхгүй.
2.31 хувилбар
Байхгүй.
2.30 хувилбар
Байхгүй.
Хувилбар 2.29 (Функциональ аюулгүй байдлын хувилбар)
Байхгүй.
2.20 хувилбар
DFP-ийн байршлыг өөрчилсөн Хөрвүүлэгч одоо DFP-д (Төхөөрөмжийн гэр бүлийн багц) ашигладаг өөр байршлыг тооцож байна. Энэ нь хуучин DFP нь энэ хувилбартай ажиллахгүй байж магадгүй бөгөөд хуучин хөрвүүлэгчид хамгийн сүүлийн үеийн DFP-г ашиглах боломжгүй болно.
Хувилбар 2.19 (Функциональ аюулгүй байдлын хувилбар)
Байхгүй.
2.10 хувилбар
Байхгүй
2.05 хувилбар
Програмын санах ой дахь Const объектууд Анхдагч байдлаар, const шаардлага хангасан объектуудыг програмын санах ойд байрлуулж, хандах болно гэдгийг анхаарна уу (энд тайлбарласны дагуу). Энэ нь таны төслийн хэмжээ, гүйцэтгэлийн хурдад нөлөөлөх боловч RAM-ийн хэрэглээг багасгах хэрэгтэй. Энэ функцийг шаардлагатай бол -mnoconst-da ta-in-progmem сонголтыг ашиглан идэвхгүй болгож болно.
2.00 хувилбар
Тохируулгын гал хамгаалагч Төхөөрөмжийн тохируулгын гал хамгаалагчийг одоо тохируулгын прагма ашиглан програмчлах боломжтой ба дараа нь гал хамгаалагчийн төлөвийг зааж өгөх утгын хосыг тохируулж болно.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Үнэмлэхүй объект ба функцууд Одоо CCI _at (хаяг) тодорхойлогч ашиглан объект, функцийг санах ойн тодорхой хаяг дээр байрлуулж болно.ample: #include int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } Энэ тодорхойлогчийн аргумент нь эхний байт эсвэл зааврыг байрлуулах хаягийг илэрхийлэх тогтмол байх ёстой. RAM хаягуудыг 0x800000 офсет ашиглан зааж өгсөн. Энэ функцийг ашиглахын тулд CCI-г идэвхжүүлнэ үү.
Шинэ тасалдлын функцийн синтакс Хөрвүүлэгч нь C функцууд нь тасалдлыг зохицуулагч гэдгийг харуулахын тулд CCI тасалдал (num) тодорхойлогчийг хүлээн авч байна. Тодорхойлогч тасалдлын дугаар авдаг, жишээ ньample: #include хүчингүй тасалдал(SPI STC_ vect _num) spi Isr(void) { … }
Тогтмол асуудлууд
Дараах нь хөрвүүлэгч дээр хийгдсэн засварууд юм. Эдгээр нь үүсгэсэн кодын алдааг засах эсвэл хөрвүүлэгчийн ажиллагааг хэрэглэгчийн гарын авлагад заасан эсвэл зааж өгсөн байдлаар өөрчлөх боломжтой. Дэд гарчиг дахь хувилбарын дугаар нь дараагийн асуудлуудын засваруудыг агуулсан анхны хөрвүүлэгчийн хувилбарыг заана. Гарчиг дахь хаалтанд орсон шошго(ууд) нь хяналтын мэдээллийн сан дахь тухайн асуудлын таних тэмдэг юм. Хэрэв та тусламж үйлчилгээтэй холбоо барих шаардлагатай бол эдгээр нь хэрэг болно.
Төхөөрөмжтэй холбоотой зарим нэг төхөөрөмжтэй холбоотой асуудлуудыг Төхөөрөмжийн Гэр бүлийн багцад (DFP) зассан болохыг анхаарна уу. DFP-д хийсэн өөрчлөлтийн талаарх мэдээлэл болон хамгийн сүүлийн үеийн багцуудыг татаж авах бол MPLAB багц менежерээс харна уу.
2.40 хувилбар
Хэт тайван (XCS-2876) -mrelax сонголтыг ашиглах үед хөрвүүлэгч зарим хэсгийг хамтад нь хуваарилдаггүй байсан тул кодын оновчтой хэмжээ багассан. Энэ нь шинэ MUSL номын санг ашигласан код эсвэл сул тэмдэгттэй холбоотой байж магадгүй юм.
Анхааруулга (XCS-2875)-д заасны дагуу газрын зургийн функцийг идэвхгүй болгоогүй. Тохируулга дахь зардал-өгөгдлийн mappedprogmem функц нь идэвхжсэн proem-н өртөг-өгөгдлийн онцлогоос хамаарна. Хэрэв энэ сонголтыг ашиглан cost-data-ipconfig-mapped-proem функцийг идэвхжүүлж, зардал-өгөгдлийн-inprogmem функцийг идэвхгүй болгосон бол сөрөг тал нь тохиргооны зураглалд орсон гэсэн анхааруулгатай байсан ч холбоосын алхам амжилтгүй болсон. proem функц автоматаар идэвхгүй болсон бөгөөд энэ нь бүрэн зөв биш юм. Const-data-in-config-mapped-proem функц одоо энэ нөхцөлд бүрэн идэвхгүй болсон.
DFP нь NVMCTRL (XCS-2848)-д зөв хандахын тулд өөрчилдөг. AVR64EA төхөөрөмжүүдийн ашигладаг ажиллуулах цагийн код нь NVMCTRL бүртгэл нь Тохиргооны Өөрчлөлтийн Хамгаалалт (CCP) доор байгаа бөгөөд const-data-in configmapped-proem хөрвүүлэгчийн ашигладаг хуудсанд IO SFR-ийг тохируулах боломжгүй байгааг харгалзан үзээгүй болно. онцлог. AVR-Ex_DFP хувилбар 2.2.55-д хийсэн өөрчлөлтүүд нь ажиллах үеийн эхлүүлэх кодыг энэ бүртгэлд зөв бичих боломжийг олгоно.
Флэш зураглалаас зайлсхийхийн тулд DFP өөрчлөлтүүд (XCS-2847) AVR128DA28/32/48/64 Цахиурын алдаа (DS80000882)-д мэдээлэгдсэн флэш зураглалын төхөөрөмжийн онцлогтой холбоотой асуудлыг шийдвэрлэх арга замыг хэрэгжүүлсэн. Const-data-in-config-mapped-proem хөрвүүлэгч функцийг нөлөөлөлд өртсөн төхөөрөмжүүдэд анхдагчаар ашиглахгүй бөгөөд энэ өөрчлөлт AVR-Ex_DFP хувилбар 2.2.160 дээр гарч ирнэ.
sinhf эсвэл coshf ашиглан бүтээх алдаа (XCS-2834) sinhf () эсвэл coshf () номын сангийн функцуудыг ашиглах оролдлого нь тодорхойгүй лавлагааг тайлбарласан холбоосын алдаа гарсан. Заасан дутуу функцийг хөрвүүлэгчийн тархалтад оруулсан болно.
Nopa ашиглан алдаа гаргах (XCS-2833) Ассемблерийн нэрийг () гэж заасан функцээр nopa шинж чанарыг ашиглах нь ассемблерээс алдааны мэдэгдлийг өдөөсөн. Энэ хослол нь боломжгүй юм.
Заагч аргументуудтай вариак функцийн алдаа (XCS-2755, XCS-2731) Хувьсах тооны аргументтай функцууд нь зардал-өгөгдлийн-proem функц идэвхжсэн үед хувьсагчийн аргументуудын жагсаалтад 24 битийн (_memo төрлийн) заагч дамжуулагдахыг хүлээдэг. Өгөгдлийн санах ойд заагч байсан аргументуудыг 16 битийн объект болгон дамжуулж, эцэст нь унших үед кодын бүтэлгүйтэлд хүргэсэн. Cons data- in-proem функц идэвхжсэн үед бүх 16 бит заагч аргументууд 24 битийн заагч руу хөрвүүлэгдэх болно. strtoxxx номын сангийн функцууд амжилтгүй боллоо (XCS-2620) const-data-in-proem функц идэвхжсэн үед strtoxxx номын сангийн функцууд дахь enter параметр нь програмын санах ойд байхгүй эх мөрийн аргументуудын хувьд зөв шинэчлэгдээгүй байна.
Буруу дамжуулалтын анхааруулга (XCS-2612) Хөрвүүлэгч одоо "Үндсэн зардал" функцийг идэвхжүүлж, стрингийн хаягийг өгөгдлийн хаягийн орон зайд шууд дамжуулсан бол (const шалгуур үзүүлэлтийг хасах) алдаа гаргах болно.ample, (uint8 t *) "Сайн уу Дэлхий!". Const өгөгдлийн заагчийг өгөгдлийн хаягийн зайд шууд дамжуулах үед хаяг хүчингүй байж болзошгүй тохиолдолд анхааруулга гарч ирнэ.
Эхлээгүй const объектуудыг байрлуулах (XCS-2408) Програмын санах ойг бүхэлд нь эсвэл хэсэгчлэн өгөгдлийн хаягийн орон зайд буулгадаг төхөөрөмжүүдийн програмын санах ойд анхлаагүй const болон const v olatile объектуудыг байршуулаагүй байна. Эдгээр төхөөрөмжүүдийн хувьд ийм объектуудыг одоо програмын санах ойд байрлуулж, бусад төхөөрөмжүүдтэй нийцүүлэн ажиллах боломжтой болгодог.
Хувилбар 2.39 (Функциональ аюулгүй байдлын хувилбар)
Байхгүй.
2.36 хувилбар
Саатуулах үед гарсан алдаа (XCS-2774) Үнэгүй горимын өгөгдмөл оновчлолд хийсэн бага зэргийн өөрчлөлтүүд нь операндын илэрхийлэлүүдийг саатлын суулгасан функцууд руу тогтмол эвхэхээс сэргийлж, тэдгээрийг контактгүй гэж үзэж, алдааг үүсгэсэн: _buil tin avr delay_ cycles expects ac ompile цаг хугацааны бүхэл тоон тогтмол.
2.35 хувилбар
_at ашиглан залгаа хуваарилалт (XCS-2653) Ижил нэртэй хэсэг дэх олон объектын байршлыг зэрэгцүүлэн байршуулах, at () ашиглах нь зөв ажиллаагүй. Жишээ ньample: constchararrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[ ] at tri butte ((section(“.my s eke”))) = {Oxen, Ox FE }; aril-ын дараа шууд arr2-г тавих ёстой байсан.
Хэсгийн эхлэх хаягийг зааж өгч байна (XCS-2650) -Wal, –section-start сонголт нь нэрлэсэн эхлэх хаяг дээр хэсгүүдийг чимээгүйхэн байрлуулж чадаагүй. Тусгай нэрлэсэн хэсгүүдэд энэ асуудлыг зассан; Гэсэн хэдий ч энэ нь ямар ч стандарт хэсгүүдэд ажиллахгүй, тухайлбал . текст эсвэл . bss, үүнийг -Wl, -T сонголтыг ашиглан байрлуулах ёстой.
Тайвшрах үед холбогч эвдэрч байна (XCS-2647) -relax оновчлолыг идэвхжүүлж, боломжтой санах ойд тохирохгүй код эсвэл өгөгдлийн хэсгүүд байсан үед холбогч эвдэрсэн. Одоо ийм нөхцөлд оронд нь алдааны мессежийг гаргадаг.
EEPROM хандалт муу (XCS-2629) -monist-data-in-proem сонголтыг идэвхжүүлсэн үед leproma _read_ блоклох горим нь Mega төхөөрөмж дээр зөв ажиллаагүй (энэ нь өгөгдмөл төлөв) бөгөөд үүний үр дүнд EEPROM санах ойг зөв уншаагүй.
Санах ойн хуваарилалт буруу (XCS-2593, XCS-2651) -Текст эсвэл -Тата холбогч сонголт (жишээ ньample -Wl драйверын сонголтыг ашиглан дамжуулсан) заасан бол харгалзах текст/өгөгдлийн бүсийн гарал үүслийг шинэчилсэн; Гэсэн хэдий ч эцсийн хаягийг зохих ёсоор тохируулаагүй бөгөөд энэ нь зорилтот төхөөрөмжийн санах ойн хүрээг хэтрүүлэхэд хүргэж болзошгүй юм.
ATtiny тасалдлын код буруу (XCS-2465) Tatin төхөөрөмжүүдэд зориулан бүтээж, оновчлолыг идэвхгүй болгосон (-00) үед тасалдлын функцууд нь хүрээнээс гадуур ассемблер мессежийг өдөөсөн байж болзошгүй.
Сонголтуудыг дамжуулаагүй байна (XCS-2452) -Wl сонголтыг олон, таслалаар тусгаарласан холбогч сонголттой ашиглах үед холбоосын бүх сонголтууд холбогч руу дамжуулагдаагүй.
Програмын санах ойг шууд бусаар унших алдаа (XCS-2450) Зарим тохиолдолд хөрвүүлэгч нь заагчаас програмын санах ой руу хоёр байт утгыг унших үед дотоод алдаа (танигдахгүй insn) гаргасан.
2.32 хувилбар
Номын сангийн хоёр дахь хандалт амжилтгүй боллоо (XCS-2381) xc8-ar-ийн Windows хувилбарыг дуудаж байна. exe номын сангийн архивлагч одоо байгаа номын сангийн архивт хоёр дахь удаагаа нэвтрэхэд алдааны мэдэгдлийн нэрийг өөрчлөх боломжгүй болсон байж магадгүй.
2.31 хувилбар
Тайлбарлагдаагүй хөрвүүлэгчийн алдаа (XCS-2367) Системийн түр лавлахыг цэг агуулсан замд тохируулсан Windows платформ дээр ажиллах үед'.' тэмдэгт байвал хөрвүүлэгч ажиллаж чадаагүй байж магадгүй.
2.30 хувилбар
Глобал шошгуудыг тоймлосны дараа буруу байрлуулсан (XCS-2299) Процедурын хийсвэрлэлээр хасагдсан угсралтын дараалалд глобал шошго байршуулдаг гараар бичсэн угсралтын кодыг зөв байршуулаагүй байж болзошгүй.
Тайвшруулах осол (XCS-2287) -merlad сонголтыг ашигласнаар сүүлний үсрэлтийг тайвшруулах оновчлол нь хэсгийн төгсгөлд байгаагүй ret зааврыг арилгахыг оролдох үед холбоосыг гацахад хүргэсэн байж магадгүй юм.
Шошгоуудыг утгын хувьд оновчтой болгох үед гацах (XCS-2282) "Шошгог утгыг утгаар" GNU C хэлний өргөтгөлийг ашигласан код нь процедурын хийсвэрлэлийн оновчлолыг гацахад хүргэсэн бөгөөд тоймтой VMA хүрээг засах алдаатай байж болзошгүй.
Тийм ч тогтвортой биш (XCS-2271) Эхлэх () болон бусад функцүүдийн прототипүүд -monist-data inprogmem функц идэвхгүй болсон үед буцаасан мөрийн заагч дээр стандарт бус зардлын шалгуур үзүүлэлтийг зааж өгөхөө больсон. avrxmega3 болон avertin төхөөрөмжүүдийн хувьд энэ функц бүрмөсөн идэвхждэг гэдгийг анхаарна уу.
Алдагдсан эхлүүлэгчид (XCS-2269) Хэсэгт орчуулгын нэгж дэх нэгээс олон хувьсагчийг (хэсэг эсвэл шинж чанарыг ((хэсэг) ашиглан) байрлуулсан үед эхний ийм хувьсагч тэг эхлүүлсэн эсвэл эхлүүлэгчгүй байсан бол ижил орчуулгын нэгж дэх бусад хувьсагчдыг эхлүүлнэ. ижил хэсэгт байрлуулсан нь алдагдсан.
Хувилбар 2.29 (Функциональ аюулгүй байдлын хувилбар)
Байхгүй.
2.20 хувилбар
Урт командын алдаа (XCS-1983) AVR зорилтыг ашиглах үед хөрвүүлэгч нь a-аар зогссон байж магадгүй file Хэрэв командын мөр нь маш том бөгөөд хашилт, урвуу зураас гэх мэт тусгай тэмдэгтүүдийг агуулсан бол алдаа олдсонгүй.
Оноогоогүй өгөгдлийн хэсэг (XCS-1920) AVR холбогч нь avrxmega3 болон avrtiny архитектурт зориулж бүтээхдээ тусгай зориулалтын өгөгдлийн хэсгүүдэд санах ойг хуваарилж чадсангүй, энэ нь санах ойн давхардлын алдааг үүсгэж болзошгүй юм.
Хувилбар 2.19 (Функциональ аюулгүй байдлын хувилбар)
Байхгүй.
2.10 хувилбар
Нүүлгэн шилжүүлэлтийн алдаа (XCS-1891) Хамгийн сайн тохирох хуваарилагч нь холбогчийг сулласны дараа хэсгүүдийн хооронд санах ойн "нүх" үлдээх явдал байв. Энэ нь санах ойг хуваахаас гадна компьютерийн харьцангуй үсрэлт эсвэл дуудлагын хүрээнээс гарахтай холбоотой холбогчийг нүүлгэн шилжүүлэхэд алдаа гарах магадлалыг нэмэгдүүлсэн.
Тайвшруулах замаар өөрчлөгддөггүй зааварчилгаа (XCS-1889) Зорилтот нь тайван байвал хүрэх боломжтой болох үсрэх эсвэл дуудлагын зааварчилгааны хувьд холбогч суларсангүй.
Алга болсон ажиллагаа (XCSE-388) -аас хэд хэдэн тодорхойлолт clock_ div_ t болон clock_prescale_set () зэрэг нь ATmega324PB, ATmega328PB, ATtiny441, ATtiny841 зэрэг төхөөрөмжүүдэд тодорхойлогдоогүй.
Макро байхгүй байна Урьдчилсан процессорын макрос_ xcs _MODE_, _xcs VERSION, _xc болон xcs нь хөрвүүлэгчээр автоматаар тодорхойлогдоогүй. Эдгээрийг одоо ашиглах боломжтой.
2.05 хувилбар
Хөрвүүлэгчийн дотоод алдаа (XCS-1822) Windows дээр бүтээх үед кодыг оновчтой болгох үед хөрвүүлэгчийн дотоод алдаа гарсан байж магадгүй юм.
RAM хэт их ачаалал илрээгүй (XCS-1800, XCS-1796) Боломжтой RAM-аас хэтэрсэн програмуудыг зарим тохиолдолд хөрвүүлэгч илрүүлээгүй тул ажиллах үеийн кодын алдаа гарсан.
Оруулсан флаш санах ой (XCS-1792) avrxmega3 болон avrtiny төхөөрөмжүүдийн хувьд флаш санах ойн зарим хэсгийг MPLAB X IDE програмчлаагүй орхисон байж болзошгүй.
Үндсэн функцийг гүйцэтгэж чадаагүй (XCS-1788) Хөтөлбөрт ямар ч глобал хувьсагч тодорхойлогдоогүй зарим тохиолдолд ажиллах үеийн эхлүүлэх код гараагүй бөгөөд үндсэн () функцэд хэзээ ч хүрч чадаагүй.
Санах ойн мэдээлэл буруу (XCS-1787) avrxmega3 болон avrtiny төхөөрөмжүүдийн хувьд avr хэмжээтэй программ нь зөвхөн уншигдах өгөгдөл нь програмын санах ойн оронд RAM зарцуулж байна гэж мэдээлж байсан.
Програмын санах ойн уншилт буруу (XCS-1783) Өгөгдлийн хаягийн орон зайд буулгасан, PROGMEM макро/атрибут ашиглан объектуудыг тодорхойлсон програмын санах ойтой төхөөрөмжүүдэд зориулж эмхэтгэсэн төслүүд эдгээр объектыг буруу хаягаас уншсан байж болзошгүй.
Шинж чанаруудтай дотоод алдаа (XCS-1773) Хэрэв та заагч объектуудыг тодорхойлсон бол дотоод алдаа гарлаа
_at () эсвэл attribute() тэмдэгтүүдийг заагч нэр болон хасагдсан төрлийн хооронд, жишээ нь.ample, char *
_at ( 0x80015 0) cp; Ийм кодтой тулгарвал анхааруулга өгөх болно.
Үндсэн функцийг гүйцэтгэж чадаагүй (XCS-1780, XCS-1767, XCS-1754) EEPROM хувьсагчийг ашиглах эсвэл тохируулгын прагма ашиглан гал хамгаалагчийг тодорхойлох нь үндсэн ()-д хүрэхээс өмнө ажиллах үеийн эхлүүлэх кодонд өгөгдлийг буруу эхлүүлсэн ба/эсвэл програмын гүйцэтгэлийг хаасан байж болзошгүй.
Жижиг төхөөрөмжүүдийн гал хамгаалагчийн алдаа (XCS-1778, XCS-1742) Attiny4/5/9/10/20/40 төхөөрөмжүүдийн толгой хэсэгт гал хамгаалагчийн уртыг буруу зааж өгсөн байна. files нь гал хамгаалагчийг тодорхойлсон кодыг бүтээх оролдлого хийх үед холбоосын алдаа гарахад хүргэдэг.
Сегментийн алдаа (XCS-1777) Тасралтгүй сегментчилсэн алдааг зассан.
Ассемблерийн эвдрэл (XCS-1761) Хөрвүүлэгчийг Ubuntu 18 дээр ажиллуулах үед avr-as ассемблер эвдэрсэн байж магадгүй.
Объектуудыг арилгаагүй (XCS-1752) Эхлээгүй статик хадгалах хугацааны объектуудыг ажиллуулах үеийн эхлүүлэх кодоор цэвэрлээгүй байж магадгүй.
Зөрчилтэй төхөөрөмжийн тодорхойлолтыг үл тоомсорлосон (XCS-1749) Хэд хэдэн төхөөрөмжийн тодорхойлолтыг ашиглаж, өөр төхөөрөмжүүдийг зааж өгөх үед хөрвүүлэгч алдаа гаргаагүй.
Санах ойн эвдрэл (XCS-1748) Heap_ start тэмдэгтийг буруу тохируулсан тул энгийн хувьсагчдыг овоо гэмтээж болзошгүй.
Холбогчийг шилжүүлэх алдаа (XCS-1739) Код нь яг 4к байт зайтай rjmp эсвэл rcall-г агуулж байвал холбогчийг шилжүүлэх алдаа гарсан байж магадгүй.
2.00 хувилбар
Байхгүй.
Мэдэгдэж буй асуудлууд
Дараах нь хөрвүүлэгчийн үйл ажиллагааны хязгаарлалт юм. Эдгээр нь ерөнхий кодлох хязгаарлалт байж болно, эсвэл
хэрэглэгчийн гарын авлагад байгаа мэдээллээс хазайсан. Гарчиг дахь хаалтанд орсон шошго(ууд) нь хяналтын мэдээллийн сан дахь тухайн асуудлын таних тэмдэг юм. Хэрэв та дэмжлэгтэй холбоо барих шаардлагатай бол энэ нь ашигтай байж магадгүй юм. Шошгогүй эдгээр зүйлүүд нь горимын үйл ажиллагааг тодорхойлсон хязгаарлалтууд бөгөөд тэдгээр нь байнга хүчинтэй байх магадлалтай.
MPLAB X IDE интеграци
MPLAB IDE нэгтгэх Хэрэв MPLAB IDE-ээс хөрвүүлэгчийг ашиглах гэж байгаа бол хөрвүүлэгчийг суулгахаасаа өмнө MPLAB IDE-г суулгах ёстой.
Код үүсгэх
ТХГН-ийн санах ойн хуваарилалтын алдаа (XCS-2881) Процедурын хийсвэрлэлийг оновчтой болгох үед тухайн программ нь боломжтой зайд багтах боломжтой байсан ч кодын хэмжээ нь төхөөрөмж дээрх боломжтой програмын санах ойн хэмжээтэй ойролцоо байвал холбогч санах ойн хуваарилалтын алдааг мэдээлж болно.
Тийм ч ухаалаг биш Smart-IO (XCS-2872) Хөрвүүлэгчийн smart-io функц нь coast-data-in-proem функцийг идэвхгүй болгосон эсвэл төхөөрөмж нь бүх флэшийг өгөгдлийн санах ойд буулгасан тохиолдолд спринт функцэд хүчинтэй боловч дэд оновчтой код үүсгэх болно.
Бүр бага ухаалаг Smart-IO (XCS-2869) Хөрвүүлэгчийн smart-io функц нь -floe болон -fno-buil tin сонголтуудыг хоёуланг нь ашиглах үед хүчинтэй боловч оновчтой бус код үүсгэх болно.
Зөвхөн уншихад тохиромжтой бус өгөгдөл байршуулах (XCS-2849) Холбогч одоогоор санах ойн зураг дээрх APPCODE болон APPDATA санах ойн хэсгүүд болон [Үгүй-]Унших-Бичиж байх хэсгүүдийг мэдэхгүй байна. Үүний үр дүнд холбогч нь санах ойн тохиромжгүй хэсэгт зөвхөн унших боломжтой өгөгдлийг хуваарилах магадлал багатай байдаг. Хэрэв coast-data-in-pragma функцийг идэвхжүүлсэн бол, ялангуяа тохиргооны-mapped-proem-ийн эргийн-өгөгдлийн функцийг идэвхжүүлсэн тохиолдолд алдаатай өгөгдөл гарах магадлал нэмэгддэг. Шаардлагатай бол эдгээр функцийг идэвхгүй болгож болно.
Объект file боловсруулах захиалга (XCS-2863) Объектуудын дараалал files нь холбогчоор боловсруулагдах болно. Процедурын хийсвэрлэлийн оновчлол (-mpa сонголт) ашиглахаас хамаарч өөр өөр байж болно. Энэ нь зөвхөн олон модулийн сул функцийг тодорхойлсон кодонд л нөлөөлнө.
Үнэмлэхүйтэй холбогчийн алдаа (XCS-2777) RAM-ийн эхэнд байгаа хаяг дээр объектыг үнэмлэхүй болгож, эхлээгүй объектуудыг мөн тодорхойлсон үед холбогчийн алдаа гарч болзошгүй.
Богино сэрээх ID (XCS-2775) ATA5700/2 төхөөрөмжүүдийн хувьд PHID0/1 регистрүүд нь 16 битийн өргөн биш харин зөвхөн 32 битийн өргөнтэй гэж тодорхойлогддог.
Тэмдэгтийг дуудах үед холбогч эвдэрсэн (XCS-2758) Эх код нь -Wl, –defsym холбогч тохируулгыг ашиглан тодорхойлсон тэмдэгтийг дуудах үед -merlad драйвер сонголтыг ашиглавал холбогч эвдэрч болзошгүй.
Буруу эхлүүлсэн (XCS-2679) Зарим глобал/статик байт хэмжээтэй объектын анхны утгуудыг өгөгдлийн санах ойд хаана байрлуулах болон ажиллах үед хувьсагчид хандах хооронд зөрүү байна.
буруу эхлүүлсэн багцуудыг хоосон (XCS-2652) Заасан ()-ээр хөрвүүлэх сэдвийн мөр нь экспоненциал форматаар хөвөгч цэгийн тоо мэт харагдахыг агуулж, e тэмдэгтийн дараа гэнэтийн тэмдэгт байгаа тохиолдолд хоосон хаяг заасан бол дараах тэмдэгтийг заана. e биш харин e нь өөрөө. Жишээ ньample: заасан("хоой", хоосон); нь х тэмдэгтийг хоосон зааж өгөх болно.
Шууд бус функцийн дуудлага (XCS-2628) Зарим тохиолдолд бүтцийн нэг хэсэг болгон хадгалагдсан функцийн заагчаар хийсэн функцын дуудлага бүтэлгүйтэж болзошгүй.
strtof нь арван зургаатын тоот хөвөгчдөд тэгийг буцаана (XCS-2626) strtof () et al, scanf () гэх мэт номын сангийн функцууд нь илтгэгчийг заагаагүй арван арвантын хөвөгч цэгийн тоог үргэлж хөрвүүлдэг.
тэг. Жишээ ньample: stator("Шар шувуу", & хоосон); 0 биш харин 1 утгыг буцаана.
Стекийн зөвлөхийн буруу мессеж (XCS-2542, XCS-2541) Зарим тохиолдолд ашигласан рекурс эсвэл тодорхойгүй стекийн талаарх стекийн зөвлөхийн анхааруулга (alloca()-г ашиглах боломжтой) гардаггүй.
Давхардсан тасалдлын кодын алдаа (XCS-2421) Нэгээс олон тасалдлын функц ижил биетэй бол хөрвүүлэгч нь нэг тасалдлын функцийг нөгөөг нь дууддаг гаралттай байж болно. Энэ нь дуудлагын тасалдсан бүх регистрүүдийг шаардлагагүйгээр хадгалахад хүргэж, одоогийн тасалдал зохицуулагчийн эпилог ажиллахаас өмнө тасалдлыг идэвхжүүлэх бөгөөд энэ нь кодын бүтэлгүйтэлд хүргэж болзошгүй юм.
Програмын санах ойд байхгүй Const объектууд (XCS-2408) avrxmega3 болон avertins төслүүдийн хувьд урьдчилан тооцоолоогүй const объектуудыг програмын санах ойд байршуулсан гэж анхааруулсан ч өгөгдлийн санах ойд байршуулдаг. Энэ нь өгөгдлийн санах ойн зайд програмын санах ойгүй төхөөрөмжүүдэд нөлөөлөхгүй бөгөөд эхлүүлсэн объектод нөлөөлөхгүй.
DFP зам буруу гарсан (XCS-2376) Хэрэв хөрвүүлэгч хүчингүй DFP зам болон "spec"-ээр дуудагдсан бол file Сонгосон төхөөрөмжид байгаа бол хөрвүүлэгч нь алга болсон төхөөрөмжийн гэр бүлийн багцыг мэдээлээгүй бөгөөд үүний оронд "spec"-ийг сонгож байна. file, энэ нь буруу гаралтад хүргэж болзошгүй. "Онцлох зүйл" files нь тархсан DFP-тэй шинэчлэгдээгүй байж болох бөгөөд зөвхөн дотоод хөрвүүлэгчийн туршилтад ашиглах зориулалттай байсан.
Санах ойн давхцал илрээгүй (XCS-1966) Хөрвүүлэгч нь тухайн хаяг (()-ээр) болон хэсгийн () тодорхойлогч ашиглан ижил хаягтай холбогдсон бусад объектуудын санах ойн давхцлыг илрүүлэхгүй байна.
Номын сангийн функцууд болон _meme (XCS-1763) алдаа _memo хаягийн зайд аргумент бүхий limbic float гэж нэрлэгддэг функцууд амжилтгүй болж магадгүй. Номын сангийн горимуудыг зарим C оператороос дууддаг тул жишээ ньample, дараах код нөлөөлсөн: буцах regFloatVar > memxFloatVar;
Хязгаарлагдмал лимбийн хэрэгжилт (AVRTC-731) ATTiny4/5/9/10/20/40 бүтээгдэхүүний хувьд limbic дахь C / Math номын сангийн стандарт хэрэгжилт маш хязгаарлагдмал эсвэл байхгүй байна.
Програмын санах ойн хязгаарлалт (AVRTC-732) 128 кб-аас дээш хэмжээтэй програмын санах ойн зургуудыг багажийн сүлжээгээр дэмждэг; Гэсэн хэдий ч, -relax сонголтыг ашиглах үед шаардлагатай функцийн бүдүүвчийг үүсгэхээс илүүтэйгээр тайвшралгүйгээр, алдааны мэдэгдэлгүйгээр холбогчийг цуцлах тохиолдол байдаг.
Нэрийн зайны хязгаарлалт (AVRTC-733) Нэрлэсэн хаягийн зайг хэрэглэгчийн гарын авлагын Тусгай төрлийн шалгуур үзүүлэлт хэсэгт дурдсан хязгаарлалтын дагуу багажийн сүлжээгээр дэмжинэ.
Цагийн бүсүүд The номын сангийн функцууд нь GMT-ийг тооцдог бөгөөд орон нутгийн цагийн бүсийг дэмждэггүй тул орон нутгийн цаг () нь gummite ()-тэй ижил цагийг буцаана.ample.
ХЭРЭГЛЭГЧИЙН ДЭМЖЛЭГ
file:///Applications/microehip/xc8/v 2 .40/docs/VR-д зориулсан me_X C 8_ уншина уу. htm
Баримт бичиг / нөөц
![]() |
MICROCHIP MPLAB XC8 C хөрвүүлэгч програм хангамж [pdf] Эзэмшигчийн гарын авлага MPLAB XC8 C, MPLAB XC8 C эмхэтгэгч програм хангамж, хөрвүүлэгч програм хангамж, програм хангамж |