MICROCHIP-LOGO

MICROCHIP XC8 C Compiler Version 2.45 Release Notes សម្រាប់ AVR MCU

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

ព័ត៌មានអំពីផលិតផល

MPLAB XC8 C Compiler គឺជាឧបករណ៍កម្មវិធីដែលប្រើសម្រាប់កំណត់គោលដៅឧបករណ៍ Microchip AVR ។ វាត្រូវបានរចនាឡើងដើម្បីចងក្រងកូដ C និងបង្កើតដែលអាចប្រតិបត្តិបាន។ files សម្រាប់ឧបករណ៍ទាំងនេះ។ កំណែចងក្រងដែលត្រូវបានយោងនៅក្នុងសៀវភៅណែនាំអ្នកប្រើប្រាស់នេះគឺ 2.45 ជាមួយនឹងកាលបរិច្ឆេទបង្កើតជាផ្លូវការនៅថ្ងៃទី 18 ខែសីហា ឆ្នាំ 2023។ កំណែមុនគឺ 2.41 ដែលត្រូវបានបង្កើតឡើងនៅថ្ងៃទី 8 ខែកុម្ភៈ ឆ្នាំ 2023។ កម្មវិធីចងក្រងភ្ជាប់មកជាមួយសៀវភៅណែនាំសុវត្ថិភាពមុខងារ ដែលផ្តល់ព័ត៌មានបន្ថែម។ និងការណែនាំនៅពេលប្រើកម្មវិធីចងក្រង MPLAB XC ជាមួយនឹងកម្មវិធីសុវត្ថិភាពមុខងារ។ សៀវភៅណែនាំនេះត្រូវបានរួមបញ្ចូលនៅក្នុងកញ្ចប់ឯកសារនៅពេលអ្នកទិញអាជ្ញាប័ណ្ណសុវត្ថិភាពមុខងារ។ MPLAB XC8 C Compiler គាំទ្រឧបករណ៍ AVR MCU 8-bit ដែលមានទាំងអស់នៅពេលចេញផ្សាយ។ អ្នកអាចយោងទៅ avr_chipinfo.html file នៅក្នុងថតឯកសាររបស់កម្មវិធីចងក្រងសម្រាប់បញ្ជីឧបករណ៍ដែលគាំទ្រទាំងអស់ និងការកំណត់រចនាសម្ព័ន្ធប៊ីតរបស់វា។ មានកម្មវិធីចងក្រង MPLAB XC8 ផ្សេងៗគ្នា។ ការបោះពុម្ពដែលមានអាជ្ញាប័ណ្ណ (PRO) ផ្តល់នូវកម្រិតខ្ពស់នៃការបង្កើនប្រសិទ្ធភាពធៀបនឹងការបោះពុម្ពឥតគិតថ្លៃ។ ដើម្បីដំណើរការកម្មវិធីចងក្រងជាផលិតផលដែលមានអាជ្ញាប័ណ្ណ អ្នកត្រូវទិញសោធ្វើឱ្យសកម្ម។ ទោះយ៉ាងណាក៏ដោយ កំណែដែលគ្មានអាជ្ញាប័ណ្ណអាចប្រើប្រាស់ដោយគ្មានកំណត់ដោយគ្មានអាជ្ញាប័ណ្ណ។ សម្រាប់កម្មវិធីសុវត្ថិភាពមុខងារ កម្មវិធីចងក្រងសុវត្ថិភាពមុខងារ MPLAB XC8 មាន។ វាទាមទារអាជ្ញាប័ណ្ណសុវត្ថិភាពមុខងារដែលបានទិញពី Microchip សម្រាប់ដំណើរការ។ នៅពេលដែលបានធ្វើឱ្យសកម្ម កម្រិតបង្កើនប្រសិទ្ធភាពទាំងអស់ និងមុខងារចងក្រងអាចត្រូវបានប្រើប្រាស់។ កម្មវិធីចងក្រងសុវត្ថិភាពមុខងារ MPLAB XC ក៏គាំទ្រអាជ្ញាប័ណ្ណម៉ាស៊ីនមេបណ្តាញផងដែរ។ ព័ត៌មានលម្អិតអំពីការដំឡើង ការធ្វើឱ្យសកម្ម ប្រភេទអាជ្ញាប័ណ្ណ និងបញ្ហានៃការធ្វើចំណាកស្រុកអាចរកបាននៅក្នុងឯកសារដំឡើង និងអាជ្ញាប័ណ្ណ MPLAB XC C Compilers (DS50002059) ។

ការណែនាំអំពីការប្រើប្រាស់ផលិតផល

  1. មុនពេលដំណើរការកម្មវិធី MPLAB XC8 C Compiler សូមអានសៀវភៅណែនាំអ្នកប្រើប្រាស់សម្រាប់ព័ត៌មានសំខាន់ៗ និងការណែនាំជាក់លាក់ចំពោះការកំណត់គោលដៅឧបករណ៍ Microchip AVR ។
  2. ប្រសិនបើអ្នកកំពុងប្រើកម្មវិធីចងក្រងសម្រាប់ឧបករណ៍ PIC 8 ប៊ីត សូមមើលឯកសារ MPLAB XC8 C Compiler Release Notes សម្រាប់ឯកសារ PIC ។
  3. ត្រូវប្រាកដថាប្រព័ន្ធប្រតិបត្តិការរបស់អ្នកបំពេញតាមតម្រូវការប្រព័ន្ធសម្រាប់ដំណើរការកម្មវិធីចងក្រង។ ប្រព័ន្ធគោលពីរសម្រាប់ macOS ត្រូវបានចុះហត្ថលេខាដោយកូដ និងកំណត់សំគាល់។ ម៉ាស៊ីនមេបណ្តាញអាជ្ញាប័ណ្ណ MPLAB XC មានសម្រាប់ Microsoft Windows 10 និងខ្ពស់ជាងនេះ Ubuntu 18.04 និងខ្ពស់ជាងនេះ និង macOS 10.15 និងខ្ពស់ជាងនេះ។ ចំណាំថាម៉ាស៊ីនមេអាជ្ញាប័ណ្ណបណ្តាញ MPLAB XC មិនត្រូវបានសាកល្បងលើប្រព័ន្ធប្រតិបត្តិការទាំងនេះទេ។
  4. ម៉ាស៊ីនមេអាជ្ញាប័ណ្ណបណ្តាញ MPLAB XC អាចដំណើរការនៅលើម៉ាស៊ីននិម្មិតនៃ OS ដែលគាំទ្រដោយប្រើអាជ្ញាប័ណ្ណម៉ាស៊ីននិម្មិតសម្រាប់អាជ្ញាប័ណ្ណបណ្តាញ (SW006021-VM) ។ កំណែ 32 ប៊ីតទាំងអស់នៃម៉ាស៊ីនមេបណ្តាញ MPLAB XC ត្រូវបានបញ្ឈប់ដោយចាប់ផ្តើមពីកំណែ 3.00 ។
  5. ដើម្បីដំណើរការ MPLAB XC8 C Compiler ជាផលិតផលដែលមានអាជ្ញាប័ណ្ណ (PRO) សូមទិញសោធ្វើឱ្យសកម្ម។ វានឹងផ្តល់នូវកម្រិតខ្ពស់នៃការបង្កើនប្រសិទ្ធភាពធៀបនឹងកំណែឥតគិតថ្លៃ។ ទោះជាយ៉ាងណាក៏ដោយ អ្នកចងក្រងដែលគ្មានអាជ្ញាប័ណ្ណអាចដំណើរការដោយគ្មានកំណត់ដោយគ្មានអាជ្ញាប័ណ្ណ។
  6. ប្រសិនបើអ្នកកំពុងប្រើ MPLAB XC8 Functional Safety Compiler សម្រាប់កម្មវិធីសុវត្ថិភាពមុខងារ វាត្រូវតែធ្វើឱ្យសកម្មជាមួយនឹងអាជ្ញាប័ណ្ណសុវត្ថិភាពមុខងារដែលបានទិញពី Microchip ។ កម្មវិធីចងក្រងនឹងមិនដំណើរការដោយគ្មានអាជ្ញាប័ណ្ណនេះទេ។ នៅពេលដែលបានធ្វើឱ្យសកម្ម អ្នកអាចជ្រើសរើសកម្រិតបង្កើនប្រសិទ្ធភាពណាមួយ ហើយប្រើមុខងារចងក្រងទាំងអស់។ អាជ្ញាប័ណ្ណម៉ាស៊ីនមេបណ្តាញត្រូវបានគាំទ្រដោយការចេញផ្សាយនេះនៃ MPLAB XC Functional Safety Compiler ។
  7. សម្រាប់ការណែនាំលម្អិតអំពីការដំឡើង ការធ្វើឱ្យសកម្ម និងការផ្ដល់អាជ្ញាប័ណ្ណនៃ MPLAB XC8 C Compiler សូមមើលឯកសារដំឡើង និងផ្តល់អាជ្ញាប័ណ្ណ MPLAB XC C Compilers (DS50002059) ។
  8. ប្រសិនបើអ្នកកំពុងដំណើរការកម្មវិធីចងក្រងក្រោមអាជ្ញាប័ណ្ណវាយតម្លៃ អ្នកនឹងទទួលបានការព្រមានក្នុងអំឡុងពេលចងក្រង នៅពេលអ្នកស្ថិតនៅក្នុងរយៈពេល 14 ថ្ងៃនៃចុងបញ្ចប់នៃរយៈពេលវាយតម្លៃរបស់អ្នក។ ការព្រមានដូចគ្នានេះត្រូវបានចេញប្រសិនបើអ្នកក្នុងរយៈពេល 14 ថ្ងៃបន្ទាប់ពីការបញ្ចប់នៃការជាវ HPA របស់អ្នក។

ជាងview

សេចក្តីផ្តើម
ការចេញផ្សាយនៃកម្មវិធីចងក្រង Microchip MPLAB® XC8 C នេះមានលក្ខណៈពិសេសថ្មីៗជាច្រើន ការជួសជុលកំហុស និងការគាំទ្រសម្រាប់ឧបករណ៍ថ្មី។

កាលបរិច្ឆេទសាងសង់
កាលបរិច្ឆេទបង្កើតជាផ្លូវការនៃកំណែចងក្រងនេះគឺថ្ងៃទី 18 ខែសីហា ឆ្នាំ 2023។

កំណែមុន។
កំណែចងក្រង MPLAB XC8 C ពីមុនគឺ 2.41 ដែលបង្កើតឡើងនៅថ្ងៃទី 8 ខែកុម្ភៈ ឆ្នាំ 2023។

សៀវភៅណែនាំសុវត្ថិភាពមុខងារ
សៀវភៅណែនាំសុវត្ថិភាពមុខងារសម្រាប់អ្នកចងក្រង MPLAB XC មាននៅក្នុងកញ្ចប់ឯកសារ នៅពេលអ្នកទិញអាជ្ញាប័ណ្ណសុវត្ថិភាពមុខងារ។

អាជ្ញាប័ណ្ណសមាសភាគ និងកំណែ
MPLAB XC8 C Compiler សម្រាប់ឧបករណ៍ AVR MCUs ត្រូវបានសរសេរ និងចែកចាយក្រោម GNU General Public License (GPL) ដែលមានន័យថា ប្រភពកូដរបស់វាត្រូវបានចែកចាយដោយសេរី និងអាចរកបានជាសាធារណៈ។ កូដប្រភពសម្រាប់ឧបករណ៍នៅក្រោម GNU GPL អាចត្រូវបានទាញយកដាច់ដោយឡែកពី Microchip webគេហទំព័រ។ អ្នកអាចអាន GNU GPL នៅក្នុង file បានដាក់ឈ្មោះថតរងនៃថតដំឡើងរបស់អ្នក។ ការពិភាក្សាទូទៅអំពីគោលការណ៍ដែលស្ថិតនៅក្រោម GPL អាចត្រូវបានរកឃើញនៅទីនេះ។ លេខកូដជំនួយត្រូវបានផ្តល់ជូនសម្រាប់បឋមកថា files, linker scripts, និង runtime libraries គឺជាកូដកម្មសិទ្ធិ និងមិនត្រូវបានគ្របដណ្តប់នៅក្រោម GPL ទេ។ កម្មវិធីចងក្រងនេះគឺជាការអនុវត្តន៍ GCC កំណែ 5.4.0, binutils កំណែ 2.26 និងប្រើ avr-libc កំណែ 2.0.0 ។

តម្រូវការប្រព័ន្ធ
កម្មវិធីចងក្រង MPLAB XC8 C និងកម្មវិធីផ្តល់អាជ្ញាប័ណ្ណដែលវាប្រើប្រាស់មានសម្រាប់ប្រព័ន្ធប្រតិបត្តិការជាច្រើន រួមទាំងកំណែ 64 ប៊ីតដូចខាងក្រោម៖ ការបោះពុម្ពវិជ្ជាជីវៈរបស់ Microsoft® Windows® 10, Ubuntu® 18.04, macOS® 13.2 (Ventura) និង Fedora 34. ប្រព័ន្ធគោលពីរសម្រាប់ Windows ត្រូវបានចុះហត្ថលេខាដោយកូដ។ ប្រព័ន្ធគោលពីរសម្រាប់ macOS ត្រូវបានចុះហត្ថលេខាដោយកូដ និងកំណត់សំគាល់។ ម៉ាស៊ីនមេអាជ្ញាប័ណ្ណបណ្តាញ MPLAB XC មានសម្រាប់ប្រព័ន្ធប្រតិបត្តិការ 64 ប៊ីតជាច្រើន រួមទាំង Microsoft Windows 10 និងខ្ពស់ជាងនេះ។ អ៊ូប៊ុនទូ 18.04 និងខ្ពស់ជាងនេះ; ឬ macOS 10.15 និងខ្ពស់ជាងនេះ។ ម៉ាស៊ីនមេក៏អាចដំណើរការលើប្រព័ន្ធប្រតិបត្តិការផ្សេងៗរួមទាំង Windows Server, Linux distributions ដូចជា Oracle® Enterprise Linux® និង Red Hat® Enterprise Linux ក៏ដូចជាកំណែចាស់នៃប្រព័ន្ធប្រតិបត្តិការដែលគាំទ្រផងដែរ។ ទោះយ៉ាងណាក៏ដោយ MPLAB XC Network License Server មិនត្រូវបានសាកល្បងលើប្រព័ន្ធប្រតិបត្តិការទាំងនេះទេ។ ម៉ាស៊ីនមេអាជ្ញាប័ណ្ណបណ្តាញ MPLAB XC អាចដំណើរការនៅលើម៉ាស៊ីននិម្មិតនៃ OS ដែលគាំទ្រដោយប្រើអាជ្ញាប័ណ្ណម៉ាស៊ីននិម្មិតសម្រាប់អាជ្ញាប័ណ្ណបណ្តាញ (SW006021-VM) ។ កំណែ 32 ប៊ីតទាំងអស់នៃម៉ាស៊ីនមេបណ្តាញ MPLAB XC ត្រូវបានបញ្ឈប់ដោយចាប់ផ្តើមពីកំណែ 3.00 ។

បានគាំទ្រឧបករណ៍
កម្មវិធីចងក្រងនេះគាំទ្រឧបករណ៍ AVR MCU 8 ប៊ីតដែលមានទាំងអស់នៅពេលចេញផ្សាយ។ សូមមើល avr_chipinfo.html (នៅក្នុងថតឯកសាររបស់អ្នកចងក្រង) សម្រាប់បញ្ជីឧបករណ៍ដែលគាំទ្រទាំងអស់។ ឯកសារទាំងនេះក៏រាយការកំណត់ការកំណត់ប៊ីតសម្រាប់ឧបករណ៍នីមួយៗផងដែរ។

កំណែ និងការអាប់ដេតអាជ្ញាប័ណ្ណ
កម្មវិធីចងក្រង MPLAB XC8 អាចត្រូវបានធ្វើឱ្យសកម្មជាផលិតផលដែលមានអាជ្ញាប័ណ្ណ (PRO) ឬគ្មានអាជ្ញាប័ណ្ណ (ឥតគិតថ្លៃ) ។ អ្នក​ត្រូវ​ទិញ​សោ​ធ្វើ​ឲ្យ​សកម្ម​ដើម្បី​ផ្តល់​អាជ្ញាប័ណ្ណ​អ្នក​ចងក្រង​របស់​អ្នក។ អាជ្ញាប័ណ្ណអនុញ្ញាតឱ្យមានកម្រិតខ្ពស់នៃការបង្កើនប្រសិទ្ធភាពធៀបនឹងផលិតផលឥតគិតថ្លៃ។ កម្មវិធីចងក្រងដែលគ្មានអាជ្ញាប័ណ្ណអាចដំណើរការដោយគ្មានកំណត់ដោយគ្មានអាជ្ញាប័ណ្ណ។ ឧបករណ៍ចងក្រងសុវត្ថិភាពមុខងារ MPLAB XC8 ត្រូវតែត្រូវបានធ្វើឱ្យសកម្មជាមួយនឹងអាជ្ញាប័ណ្ណសុវត្ថិភាពមុខងារដែលបានទិញពី Microchip ។ កម្មវិធីចងក្រងនឹងមិនដំណើរការដោយគ្មានអាជ្ញាប័ណ្ណនេះទេ។ នៅពេលដែលបានធ្វើឱ្យសកម្ម អ្នកអាចជ្រើសរើសកម្រិតបង្កើនប្រសិទ្ធភាពណាមួយ ហើយប្រើមុខងារចងក្រងទាំងអស់។ ការចេញផ្សាយនេះនៃ MPLAB XC Functional Safety Compiler គាំទ្រអាជ្ញាប័ណ្ណម៉ាស៊ីនមេបណ្តាញ។ សូមមើលឯកសារដំឡើង និងផ្តល់អាជ្ញាប័ណ្ណ MPLAB XC C Compilers (DS50002059) សម្រាប់ព័ត៌មានអំពីប្រភេទអាជ្ញាប័ណ្ណ និងការដំឡើងកម្មវិធីចងក្រងដែលមានអាជ្ញាប័ណ្ណ។

ការដំឡើងនិងការធ្វើឱ្យសកម្ម
សូមមើលផងដែរ ផ្នែកបញ្ហាការធ្វើចំណាកស្រុក និងដែនកំណត់សម្រាប់ព័ត៌មានសំខាន់ៗអំពីអ្នកគ្រប់គ្រងអាជ្ញាបណ្ណចុងក្រោយបង្អស់ដែលរួមបញ្ចូលជាមួយកម្មវិធីចងក្រងនេះ។ ប្រសិនបើប្រើ MPLAB IDE ត្រូវប្រាកដថាដំឡើង MPLAB X IDE កំណែ 5.0 ឬថ្មីជាងនេះ មុនពេលដំឡើងឧបករណ៍នេះ។ ចាកចេញពី IDE មុនពេលដំឡើងកម្មវិធីចងក្រង។ ដំណើរការកម្មវិធីដំឡើងកម្មវិធីចងក្រង .run (Linux) ឬ .app (macOS) ឧទាហរណ៍ XC8-1.00.11403-windows.exe ហើយធ្វើតាមការណែនាំនៅលើអេក្រង់។ បញ្ជីដំឡើងលំនាំដើមត្រូវបានណែនាំ។ ប្រសិនបើអ្នកកំពុងប្រើលីនុច អ្នកត្រូវតែដំឡើងកម្មវិធីចងក្រងដោយប្រើស្ថានីយ និងពីគណនីឫស។ ដំឡើងដោយប្រើគណនី macOS ដែលមានសិទ្ធិជាអ្នកគ្រប់គ្រង។ ឥឡូវនេះការធ្វើឱ្យសកម្មត្រូវបានអនុវត្តដោយឡែកពីគ្នាទៅនឹងការដំឡើង។ សូមមើលកម្មវិធីគ្រប់គ្រងអាជ្ញាប័ណ្ណឯកសារសម្រាប់MPLAB® XC C Compilers (DS52059) សម្រាប់ព័ត៌មានបន្ថែម។ ប្រសិនបើអ្នកជ្រើសរើសដំណើរការកម្មវិធីចងក្រងក្រោមអាជ្ញាប័ណ្ណវាយតម្លៃ ឥឡូវនេះអ្នកនឹងទទួលបានការព្រមានក្នុងអំឡុងពេលចងក្រង នៅពេលដែលអ្នកស្ថិតនៅក្នុងរយៈពេល 14 ថ្ងៃនៃចុងបញ្ចប់នៃរយៈពេលវាយតម្លៃរបស់អ្នក។ ការព្រមានដូចគ្នានេះត្រូវបានចេញប្រសិនបើអ្នកក្នុងរយៈពេល 14 ថ្ងៃបន្ទាប់ពីការបញ្ចប់នៃការជាវ HPA របស់អ្នក។ ម៉ាស៊ីនមេអាជ្ញាប័ណ្ណបណ្តាញ XC គឺជាកម្មវិធីដំឡើងដាច់ដោយឡែក ហើយមិនត្រូវបានរួមបញ្ចូលនៅក្នុងកម្មវិធីដំឡើងកម្មវិធីចងក្រងអ្នកប្រើតែមួយទេ។ ឥឡូវនេះ កម្មវិធីគ្រប់គ្រងអាជ្ញាប័ណ្ណ XC គាំទ្រការរ៉ូមីងនៃអាជ្ញាប័ណ្ណបណ្តាញអណ្តែត។ ផ្តោតលើអ្នកប្រើប្រាស់ទូរស័ព្ទ មុខងារនេះអនុញ្ញាតឱ្យមានអាជ្ញាប័ណ្ណអណ្តែតដើម្បីបិទបណ្តាញក្នុងរយៈពេលខ្លី។ ដោយប្រើមុខងារនេះ អ្នកអាចផ្តាច់ចេញពីបណ្តាញ ហើយនៅតែប្រើកម្មវិធីចងក្រង MPLAB XC របស់អ្នក។ សូមមើលថតឯកសារនៃការដំឡើង XCLM សម្រាប់បន្ថែមលើមុខងារនេះ។ MPLAB X IDE រួមបញ្ចូលបង្អួចអាជ្ញាប័ណ្ណ (ឧបករណ៍ > អាជ្ញាប័ណ្ណ) ដើម្បីគ្រប់គ្រងការរ៉ូមីងដោយមើលឃើញ។

ការដោះស្រាយបញ្ហាការដំឡើង
ប្រសិនបើអ្នកជួបប្រទះការលំបាកក្នុងការដំឡើងកម្មវិធីចងក្រងនៅក្រោមប្រព័ន្ធប្រតិបត្តិការវីនដូណាមួយ សូមសាកល្បងការណែនាំខាងក្រោម។

  • ដំណើរការដំឡើងជាអ្នកគ្រប់គ្រង។
  • កំណត់ការអនុញ្ញាតរបស់កម្មវិធីដំឡើងទៅ 'ការគ្រប់គ្រងពេញលេញ' ។ (ចុចកណ្ដុរស្ដាំលើឯកសារ ជ្រើសរើស លក្ខណសម្បត្តិ ផ្ទាំងសុវត្ថិភាព ជ្រើសរើសអ្នកប្រើប្រាស់ កែសម្រួល។ )
  • កំណត់ការអនុញ្ញាតនៃថត temp ទៅ 'ការគ្រប់គ្រងពេញលេញ' ។

ដើម្បីកំណត់ទីតាំងនៃ Temp Folder វាយ %temp% ទៅក្នុងពាក្យបញ្ជា Run (Windows logo key + R)។ វានឹងបើកប្រអប់អ្នករុករកឯកសារដែលបង្ហាញថតនោះ ហើយនឹងអនុញ្ញាតឱ្យអ្នកកំណត់ផ្លូវនៃថតនោះ។

ឯកសារចងក្រង
ការណែនាំរបស់អ្នកប្រើរបស់អ្នកចងក្រងអាចត្រូវបានបើកពីទំព័រ HTML ដែលបើកនៅក្នុងកម្មវិធីរុករករបស់អ្នក នៅពេលចុចប៊ូតុងជំនួយពណ៌ខៀវនៅក្នុងផ្ទាំងគ្រប់គ្រង MPLAB X IDE ដូចដែលបានបង្ហាញនៅក្នុងរូបថតអេក្រង់។MICROCHIP-XC8-C-Compiler-Version-2-45-Release-Notes-for-AVR-MCU-1

ប្រសិនបើអ្នកកំពុងបង្កើតគោលដៅ AVR 8 ប៊ីត មគ្គុទ្ទេសក៍អ្នកចងក្រង MPLAB® XC8 C សម្រាប់ AVR® MCU មានព័ត៌មានអំពីជម្រើសចងក្រងទាំងនោះ និងលក្ខណៈពិសេសដែលអាចអនុវត្តបានចំពោះស្ថាបត្យកម្មនេះ។

ជំនួយអតិថិជន
អ្នកអាចសួរសំណួររបស់អ្នកប្រើផ្សេងទៀតនៃផលិតផលនេះនៅក្នុងវេទិកា XC8 ។ Microchip ស្វាគមន៍របាយការណ៍កំហុស ការផ្ដល់យោបល់ ឬយោបល់ទាក់ទងនឹងកំណែចងក្រងនេះ។ សូមដឹកនាំរបាយការណ៍កំហុស ឬសំណើលក្ខណៈពិសេសតាមរយៈប្រព័ន្ធជំនួយ។

ការធ្វើបច្ចុប្បន្នភាពឯកសារ

សម្រាប់ឯកសារ MPLAB XC8 កំណែអនឡាញ និងចុងក្រោយបំផុត សូមចូលទៅកាន់ឯកសារបច្ចេកទេសអនឡាញរបស់ Microchip webគេហទំព័រ។
ឯកសារ AVR ថ្មី ឬបានធ្វើបច្ចុប្បន្នភាពនៅក្នុងការចេញផ្សាយនេះ៖

គ្មាន

  • AVR® GNU Toolchain ទៅ MPLAB® XC8 Migration Guide ពិពណ៌នាអំពីការផ្លាស់ប្តូរកូដប្រភព និងជម្រើសបង្កើតដែលអាចត្រូវបានទាមទារ ប្រសិនបើអ្នកសម្រេចចិត្តផ្ទេរគម្រោង C-based ពី AVR 8-bit GNU Toolchain ទៅ Microchip MPLAB XC8 C Compiler។
  • មគ្គុទ្ទេសក៍ឯកសារយោងបណ្ណាល័យស្តង់ដារមីក្រូឈីប Unified ពិពណ៌នាអំពីឥរិយាបថ និងចំណុចប្រទាក់ទៅនឹងមុខងារដែលបានកំណត់ដោយបណ្ណាល័យស្តង់ដារមីក្រូឈីប ក៏ដូចជាការប្រើប្រាស់គោលបំណងនៃប្រភេទបណ្ណាល័យ និងម៉ាក្រូ។ ព័ត៌មានមួយចំនួនពីមុនត្រូវបានផ្ទុកនៅក្នុង មគ្គុទ្ទេសក៍អ្នកប្រើប្រាស់MPLAB® XC8 C Compiler សម្រាប់ AVR® MCU ។ ព័ត៌មានបណ្ណាល័យសម្រាប់ឧបករណ៍ជាក់លាក់នៅតែមាននៅក្នុងការណែនាំចងក្រងនេះ។
  • ប្រសិនបើអ្នកទើបតែចាប់ផ្តើមជាមួយឧបករណ៍ 8 ប៊ីត និង MPLAB XC8 C Compiler នោះ MPLAB® XC8 User's
  • មគ្គុទ្ទេសក៍សម្រាប់វិស្វករបង្កប់ - AVR® MCUs (DS50003108) មានព័ត៌មានស្តីពីការបង្កើតគម្រោងនៅក្នុង MPLAB X IDE និងការសរសេរកូដសម្រាប់គម្រោង MPLAB XC8 C ដំបូងរបស់អ្នក។ ការណែនាំនេះត្រូវបានចែកចាយជាមួយកម្មវិធីចងក្រង។
  • មគ្គុទ្ទេសក៍របស់អ្នកប្រើ Hexmate ត្រូវបានបម្រុងទុកសម្រាប់អ្នកដែលកំពុងដំណើរការ Hexmate ជាកម្មវិធីឯករាជ្យ។

តើមានអ្វីថ្មី។

ខាងក្រោមនេះគឺជាលក្ខណៈពិសេស AVR-target ថ្មីដែលកម្មវិធីចងក្រងឥឡូវនេះគាំទ្រ។ លេខកំណែនៅក្នុងចំណងជើងរងបង្ហាញពីកំណែចងក្រងដំបូងដើម្បីគាំទ្រលក្ខណៈពិសេសដែលធ្វើតាម។

កំណែ 2.45
កម្មវិធីគ្រប់គ្រងអាជ្ញាប័ណ្ណជាសកល (XC8-3175, XCLM-224) កំណែ macOS របស់កម្មវិធីគ្រប់គ្រងអាជ្ញាប័ណ្ណដែលប្រើជាមួយកម្មវិធីចងក្រងឥឡូវនេះមានលក្ខណៈជាសកល ដោយផ្តល់នូវការគាំទ្រដើមសម្រាប់ទាំងម៉ាស៊ីនដែលមានមូលដ្ឋានលើ Intel- និង M1 ។ កំណែលីនុចនៃកម្មវិធីគ្រប់គ្រងអាជ្ញាប័ណ្ណឥឡូវនេះទាមទារយ៉ាងហោចណាស់កំណែ 2.25 នៃ glibc ។ Mac universal binaries (XC8-3168, XC8-2951) ឯកសារគោលពីរចងក្រងសម្រាប់ macOS ឥឡូវនេះមានលក្ខណៈជាសកល ដោយផ្តល់នូវការគាំទ្រដើមសម្រាប់ទាំងម៉ាស៊ីនដែលមានមូលដ្ឋានលើ Intel- និង M1 ។ កាត់បន្ថយទំហំបណ្ណាល័យចំណុចអណ្តែត (XC8-3112, XC8-3071) ការកែលម្អត្រូវបានធ្វើឡើងចំពោះមុខងារបណ្ណាល័យចំណុចអណ្តែត រួមទាំង sinf() pow(), sqrt(), expf(), log1fp() និង nextafterf() ដែលមើលឃើញការកាត់បន្ថយទំហំកូដសម្រាប់ទម្លាប់ទាំងនេះ។ ការគាំទ្រឧបករណ៍ថ្មីឥឡូវនេះមានសម្រាប់ផ្នែក AVR ខាងក្រោម៖ AVR16EA28, AVR16EA32, AVR16EA48, AVR32EA28, AVR32EA32, AVR32EA48, AVR16EB14, AVR16EB20, AVR16EB28, និង AVR16EB32។

កំណែ 2.41

  • ការគាំទ្រ Bootrow (XC8-3053) កម្មវិធីចងក្រងនឹងដាក់មាតិកានៃផ្នែកណាមួយដែលមានបុព្វបទ .bootrow នៅអាសយដ្ឋាន 0x860000 នៅក្នុងឯកសារ HEX ។ ផ្នែកទាំងនេះត្រូវបានប្រើប្រាស់សម្រាប់អង្គចងចាំ BOOTROW ដែលត្រូវបានរចនាឡើងសម្រាប់ការផ្ទុកសោ និងព័ត៌មានសុវត្ថិភាពផ្សេងទៀត ដែលគួរតែអាចចូលប្រើបានសម្រាប់តែកម្មវិធីចាប់ផ្ដើមប្រព័ន្ធប៉ុណ្ណោះ។
  • ការ​លុប​ចោល​ការ​ត្រឡប់​ដែល​មិន​បាន​សង​វិញ (XC8-3048) ឥឡូវ​នេះ​កម្មវិធី​ចងក្រង​នឹង​លុប​បំបាត់​ការ​ណែនាំ​ដែល​មិន​ប្រើ​ដដែល​ក្នុង​មុខងារ​ជាមួយ​នឹង​ការ​លោត​កន្ទុយ​នៅ​ពេល​ដែល​ស្គ្រីប​តំណ​ផ្ទាល់​ខ្លួន​ត្រូវ​បាន​ប្រើ។ នេះគឺជាការបង្កើនប្រសិទ្ធភាពស្រដៀងគ្នាទៅនឹងអ្វីដែលបានអនុវត្តពីមុន ប៉ុន្តែឥឡូវនេះវាត្រូវបានអនុវត្តនៅលើផ្នែកដែលកំព្រាទាំងអស់ បើទោះបីជាស្គ្រីបតំណភ្ជាប់ផ្ទាល់ខ្លួនត្រូវបានប្រើ ហើយគ្រោងការណ៍បែងចែកសមល្អបំផុតមិនដំណើរការក៏ដោយ។
  • ការផ្លាស់ប្តូរប្រភេទពេលវេលា (XC8-2982, 2932) ប្រភេទបណ្ណាល័យស្តង់ដារ C99 time_t ត្រូវបានផ្លាស់ប្តូរពីប្រភេទវែងវែងទៅជាប្រភេទវែងដែលមិនបានចុះហត្ថលេខា ដែលផ្តល់នូវការកែលម្អទំហំកូដនៅក្នុងមុខងារដែលទាក់ទងនឹងពេលវេលាមួយចំនួន ដូចជា mktime()។
  • ណុបថ្មី (XC8-2946, 2945) ម៉ាក្រូ NOP() ត្រូវបានបន្ថែមទៅ . ម៉ាក្រូនេះបញ្ចូលការណែនាំគ្មានប្រតិបត្តិការទៅក្នុងលទ្ធផល។
  • អាប់ដេតទៅ XCLM (XC8-2944) កម្មវិធីគ្រប់គ្រងអាជ្ញាប័ណ្ណដែលប្រើជាមួយកម្មវិធីចងក្រងត្រូវបានធ្វើបច្ចុប្បន្នភាព ហើយឥឡូវនេះកាន់តែមានការឆ្លើយតបនៅពេលពិនិត្យមើលព័ត៌មានលម្អិតអំពីអាជ្ញាប័ណ្ណរបស់អ្នកចងក្រង។
  • Trampការហៅទូរសព្ទ olined (XC8-2760) ឥឡូវនេះ កម្មវិធីចងក្រងអាចអនុវត្តការជំនួសការណែនាំការហៅទម្រង់វែងជាមួយនឹងការហៅទូរសព្ទដែលទាក់ទងខ្លីជាង នៅពេលដែលទម្រង់នៃការណែនាំដែលទាក់ទងជាធម្មតានឹងនៅក្រៅជួរនៃទិសដៅរបស់ពួកគេ។ ក្នុងស្ថានភាពនេះ កម្មវិធីចងក្រងនឹងព្យាយាមជំនួសដោយការណែនាំ rcall ទៅកាន់ការណែនាំអំពីការហៅ jmp ដែលនឹង 'trampការប្រតិបត្តិ oline ទៅកាន់អាសយដ្ឋានដែលត្រូវការ ឧampលេ៖

កំណែ 2.40

  • ការគាំទ្រឧបករណ៍ថ្មីឥឡូវនេះមានសម្រាប់ផ្នែក AVR ខាងក្រោម៖ AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EAVR28, AVR64.
  • ការធ្វើឱ្យប្រសើរឡើងនូវនីតិវិធីអរូបី ឧបករណ៍បង្កើនប្រសិទ្ធភាពអរូបីតាមនីតិវិធី (PA) ត្រូវបានធ្វើឱ្យប្រសើរឡើង ដូច្នេះកូដដែលមានការណែនាំអំពីការហៅមុខងារ (call/rcall) អាចត្រូវបានគូសបញ្ជាក់។ វា​នឹង​កើត​ឡើង​លុះត្រា​តែ​ជង់​មិន​ត្រូវ​បាន​ប្រើ​ដើម្បី​ឆ្លង​កាត់​អាគុយម៉ង់ ឬ​ទទួល​បាន​តម្លៃ​ត្រឡប់​ពី​អនុគមន៍។ ជង់ត្រូវបានប្រើនៅពេលហៅមុខងារដែលមានបញ្ជីអាគុយម៉ង់អថេរ ឬនៅពេលហៅមុខងារដែលយកអាគុយម៉ង់ច្រើនជាងការចុះឈ្មោះដែលបានកំណត់សម្រាប់គោលបំណងនេះ។ មុខងារនេះអាចត្រូវបានបិទដោយប្រើជម្រើស – mno-pa-outline-calls ឬ ដំណើរការ abstraction អាចត្រូវបានបិទទាំងស្រុងសម្រាប់មុខងារ andor file របស់ object ដោយប្រើ -mno-pa-on-file -mno-pa-on-function រៀងៗខ្លួន ឬដោយប្រើគុណលក្ខណៈ nopa (__nopa specificer) ជ្រើសរើសដោយមុខងារ។
  • ម៉ាក្រូគ្របដណ្តប់កូដ ឥឡូវនេះកម្មវិធីចងក្រងកំណត់ម៉ាក្រូ __CODECOV ប្រសិនបើជម្រើស -mcodecov ត្រឹមត្រូវត្រូវបានបញ្ជាក់។
  • ជម្រើសការកក់អង្គចងចាំ ឥឡូវនេះកម្មវិធីបញ្ជា xc8-cc នឹងទទួលយកជម្រើស -mreserve=space@start:end នៅពេលបង្កើតសម្រាប់គោលដៅ AVR ។ ជម្រើសនេះរក្សាទុកជួរអង្គចងចាំដែលបានបញ្ជាក់នៅក្នុងទំហំអង្គចងចាំទិន្នន័យ ឬកម្មវិធី ដោយការពារអ្នកភ្ជាប់ពីការបញ្ចូលកូដ ឬវត្ថុនៅក្នុងតំបន់នេះ។
  • Smart IO ឆ្លាតវៃជាងមុន ការកែលម្អជាច្រើនត្រូវបានធ្វើឡើងចំពោះមុខងារ Smart IO រួមទាំងការកែប្រែទូទៅចំពោះកូដស្នូល printf ដោយចាត់ទុកឧបករណ៍បញ្ជាក់ការបំប្លែង %n ជាវ៉ារ្យ៉ង់ឯករាជ្យ ភ្ជាប់ក្នុងទម្រង់ការលេចឡើងរបស់ vararg តាមតម្រូវការ ដោយប្រើប្រភេទទិន្នន័យខ្លីជាង តាមដែលអាចធ្វើទៅបានសម្រាប់ការគ្រប់គ្រង។ អាគុយម៉ង់មុខងារ IO និងកត្តាកូដទូទៅនៅក្នុងទទឹងវាល និងការគ្រប់គ្រងភាពជាក់លាក់។ នេះអាចបណ្តាលឱ្យមានលេខកូដដ៏សំខាន់ និងការសន្សំទិន្នន័យ ក៏ដូចជាបង្កើនល្បឿនប្រតិបត្តិរបស់ IO ។

កំណែ 2.39 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)
អាជ្ញាប័ណ្ណម៉ាស៊ីនមេបណ្តាញ ការចេញផ្សាយកម្មវិធីចងក្រងសុវត្ថិភាពមុខងារ MPLAB XC8 គាំទ្រអាជ្ញាប័ណ្ណម៉ាស៊ីនមេបណ្តាញ។

កំណែ 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 មាន SFR (ឧ. FLMAP) ដែលបញ្ជាក់ផ្នែក 32k នៃអង្គចងចាំកម្មវិធីនឹងត្រូវបានគូសវាសទៅក្នុងអង្គចងចាំទិន្នន័យ។ ជម្រើសថ្មី - mconst-data-in-config-mapped-progmem អាចត្រូវបានប្រើដើម្បីឱ្យ linker ដាក់ទិន្នន័យដែលមានលក្ខណៈសម្បត្តិគ្រប់គ្រាន់ទាំងអស់នៅក្នុងផ្នែក 32k ហើយចាប់ផ្តើមការចុះឈ្មោះ SFR ដែលពាក់ព័ន្ធដោយស្វ័យប្រវត្តិ ដើម្បីធានាថាទិន្នន័យនេះត្រូវបានគូសវាសទៅក្នុងទំហំអង្គចងចាំទិន្នន័យ។ ដែលជាកន្លែងដែលវានឹងត្រូវបានចូលប្រើកាន់តែមានប្រសិទ្ធភាព។
  • បណ្ណាល័យស្តង់ដារ Microchip Unified ទាំងអស់ អ្នកចងក្រង MPLAB XC ទាំងអស់នឹងចែករំលែកបណ្ណាល័យស្តង់ដារ Microchip Unified ដែលឥឡូវនេះមានជាមួយការចេញផ្សាយ MPLAB XC8 នេះ។ MPLAB® XC8 C Compiler User Guide for AVR® MCU លែងរួមបញ្ចូលឯកសារសម្រាប់មុខងារស្តង់ដារទាំងនេះទៀតហើយ។ ឥឡូវនេះ ព័ត៌មាននេះអាចត្រូវបានរកឃើញនៅក្នុង មគ្គុទ្ទេសក៍ឯកសារយោងបណ្ណាល័យស្តង់ដារ Unifiled Microchip ។ ចំណាំថាមុខងារមួយចំនួនដែលបានកំណត់ពីមុនដោយ avr-libc លែងមានទៀតហើយ។ (សូមមើលមុខងារបណ្ណាល័យ។ )
  • Smart IO ជាផ្នែកនៃបណ្ណាល័យដែលបានបង្រួបបង្រួមថ្មី មុខងារ IO នៅក្នុងគ្រួសារ printf និង scanf ឥឡូវនេះត្រូវបានបង្កើតដោយខ្លួនឯងនៅលើ build នីមួយៗ ដោយផ្អែកលើរបៀបដែលមុខងារទាំងនេះត្រូវបានប្រើប្រាស់នៅក្នុងកម្មវិធី។ វា​អាច​កាត់​បន្ថយ​ធនធាន​ដែល​បាន​ប្រើ​ដោយ​កម្មវិធី​យ៉ាង​ច្រើន។
  • ជម្រើសជំនួយ Smart IO នៅពេលវិភាគការហៅទៅកាន់មុខងារ IO ឆ្លាតវៃ (ដូចជា printf() ឬ scanf() កម្មវិធីចងក្រងមិនអាចតែងតែកំណត់ពីខ្សែអក្សរទ្រង់ទ្រាយ ឬសន្និដ្ឋានពីអាគុយម៉ង់ដែលបញ្ជាក់ការបំប្លែងទាំងនោះដែលត្រូវការដោយការហៅនោះទេ។ ពីមុន អ្នកចងក្រងតែងតែបង្កើត គ្មានការសន្មត់ទេ ហើយធានាថាមុខងារ IO ដែលមានមុខងារពេញលេញត្រូវបានភ្ជាប់ទៅក្នុងរូបភាពកម្មវិធីចុងក្រោយ ជម្រើស -msmart-io-format=fmt ថ្មីត្រូវបានបន្ថែម ដូច្នេះអ្នកចងក្រងអាចត្រូវបានជូនដំណឹងដោយអ្នកប្រើប្រាស់នៃកម្មវិធីបំលែងជាក់លាក់ដែលប្រើដោយ smart IO ជំនួសវិញ។ មុខងារដែលការប្រើប្រាស់មានភាពមិនច្បាស់លាស់ ការពារទម្លាប់ IO ដែលវែងហួសពីការភ្ជាប់ (សូមមើលជម្រើសទម្រង់ smart-io-format សម្រាប់ព័ត៌មានលម្អិត។)
  • ការដាក់ផ្នែកផ្ទាល់ខ្លួនពីមុន ជម្រើស -Wl,–section-start បានដាក់តែផ្នែកដែលបានបញ្ជាក់នៅអាសយដ្ឋានដែលបានស្នើរសុំ នៅពេលដែលស្គ្រីប linker កំណត់ផ្នែកលទ្ធផលដែលមានឈ្មោះដូចគ្នា។ នៅពេលនោះមិនមែនជាករណីនោះទេ ផ្នែកត្រូវបានដាក់នៅអាសយដ្ឋានដែលបានជ្រើសរើសដោយអ្នកភ្ជាប់ ហើយជម្រើសនេះត្រូវបានគេមិនអើពើជាសំខាន់។ ឥឡូវនេះជម្រើសនឹងត្រូវបានផ្តល់កិត្តិយសសម្រាប់ផ្នែកផ្ទាល់ខ្លួនទាំងអស់ ទោះបីជាស្គ្រីបតំណភ្ជាប់មិនកំណត់ផ្នែកក៏ដោយ។ ទោះជាយ៉ាងណាក៏ដោយ សូមចំណាំថា សម្រាប់ផ្នែកស្តង់ដារ ដូចជា .text, .bss ឬ .data អ្នកបែងចែកសមល្អបំផុតនឹងនៅតែគ្រប់គ្រងទាំងស្រុងលើការដាក់របស់ពួកគេ ហើយជម្រើសនឹងមិនមានឥទ្ធិពលទេ។ ប្រើជម្រើស -Wl,-Tsection=addr ដូចដែលបានពិពណ៌នានៅក្នុងការណែនាំរបស់អ្នកប្រើ។

កំណែ 2.32

  • ការណែនាំអំពីជង់អាចប្រើបានជាមួយនឹងអាជ្ញាប័ណ្ណចងក្រង PRO លក្ខណៈពិសេសការណែនាំជង់របស់អ្នកចងក្រងអាចត្រូវបានប្រើដើម្បីប៉ាន់ប្រមាណជម្រៅអតិបរមានៃជង់ណាមួយដែលប្រើដោយកម្មវិធី។ វាបង្កើត និងវិភាគក្រាហ្វការហៅរបស់កម្មវិធី កំណត់ការប្រើប្រាស់ជង់នៃមុខងារនីមួយៗ និងបង្កើតរបាយការណ៍ ដែលជម្រៅនៃជង់ដែលប្រើដោយកម្មវិធីអាចត្រូវបានសន្និដ្ឋាន។ មុខងារនេះត្រូវបានបើកតាមរយៈជម្រើសបន្ទាត់ពាក្យបញ្ជា -mchp-stack-usage ។ សេចក្តីសង្ខេបនៃការប្រើប្រាស់ជង់ត្រូវបានបោះពុម្ពបន្ទាប់ពីការប្រតិបត្តិ។ របាយការណ៍ជង់លម្អិតមាននៅក្នុងឯកសារផែនទី ដែលអាចត្រូវបានស្នើសុំតាមវិធីធម្មតា។
  • ការគាំទ្រឧបករណ៍ថ្មីគឺអាចរកបានសម្រាប់ផ្នែក AVR ខាងក្រោម៖ ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32
  • ការគាំទ្រឧបករណ៍ដែលបានដកថយ ការគាំទ្រលែងមានសម្រាប់ផ្នែក AVR ខាងក្រោមទៀតហើយ៖ AVR16DA28, AVR16DA32 និង, AVR16DA48។

កំណែ 2.31
គ្មាន។

កំណែ 2.30

  • ជម្រើសថ្មីដើម្បីការពារការចាប់ផ្តើមទិន្នន័យ ជម្រើសកម្មវិធីបញ្ជា -mno-data-init ថ្មីរារាំងការចាប់ផ្តើមទិន្នន័យ និងការសម្អាតផ្នែក bss ។ វាដំណើរការដោយការទប់ស្កាត់លទ្ធផលនៃនិមិត្តសញ្ញា do_clear_bss នៅក្នុងឯកសារដំឡើង ដែលនឹងរារាំងការបញ្ចូលទម្លាប់ទាំងនោះដោយអ្នកភ្ជាប់។
  • ការធ្វើឱ្យប្រសើរការបង្កើនប្រសិទ្ធភាពការកែលម្អការបង្កើនប្រសិទ្ធភាពមួយចំនួនត្រូវបានធ្វើឡើង រួមទាំងការដកចេញនូវការណែនាំត្រឡប់មកវិញដែលលែងត្រូវការ ការដកចេញនូវការលោតមួយចំនួនបន្ទាប់ពីការណែនាំរំលងប្រសិនបើប៊ីត និងធ្វើឱ្យប្រសើរឡើងនូវដំណើរការអរូបី និងសមត្ថភាពក្នុងការធ្វើម្តងទៀតនូវដំណើរការនេះ។
    ជម្រើសបន្ថែមឥឡូវនេះមានដើម្បីគ្រប់គ្រងការបង្កើនប្រសិទ្ធភាពទាំងនេះមួយចំនួន ជាពិសេស -fsection- anchors ដែលអនុញ្ញាតឱ្យចូលប្រើវត្ថុឋិតិវន្តដែលត្រូវបានអនុវត្តទាក់ទងទៅនឹងនិមិត្តសញ្ញាមួយ។ -mpa- iterations=n ដែលអនុញ្ញាតឱ្យចំនួននៃការធ្វើឡើងវិញអរូបីនៃនីតិវិធីត្រូវបានផ្លាស់ប្តូរពីលំនាំដើមនៃ 2; និង -mpa-callcost-shortcall ដែលអនុវត្តការអរូបីតាមនីតិវិធីកាន់តែឈ្លានពាន ដោយសង្ឃឹមថាអ្នកភ្ជាប់អាចបន្ធូរបន្ថយការហៅយូរ។ ជម្រើសចុងក្រោយនេះអាចបង្កើនទំហំកូដ ប្រសិនបើការសន្មត់មូលដ្ឋានមិនត្រូវបានសម្រេច។
  • ការគាំទ្រឧបករណ៍ថ្មីមានសម្រាប់ផ្នែក AVR ដូចខាងក្រោម៖ AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DAVR64, AVR128DB, ១២៨DB៦៤។
  • ឧបករណ៍ដែលបានដកថយ ជំនួយគាំទ្រលែងមានសម្រាប់ផ្នែក AVR ខាងក្រោមទៀតហើយ៖ ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, 6616AC6617ATA664251ATAXNUMXC

កំណែ 2.29 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)

  • ឯកសារបឋមកថាសម្រាប់ចងក្រងភ្ជាប់មកជាមួយ ដើម្បីធានាថាកម្មវិធីចងក្រងអាចអនុលោមតាមការកំណត់ភាសាដូចជា MISRA , ត្រូវបានធ្វើបច្ចុប្បន្នភាព។ បឋមកថានេះមានគំរូដើមសម្រាប់មុខងារដែលភ្ជាប់មកជាមួយទាំងអស់ ដូចជា __builtin_avr_nop() និង __builtin_avr_delay_cycles() ។ ការភ្ជាប់មកជាមួយមួយចំនួនប្រហែលជាមិនអនុលោមតាម MISRA ទេ។ ទាំងនេះអាចត្រូវបានលុបចោលដោយបន្ថែមការកំណត់ __XC_STRICT_MISRA ទៅបន្ទាត់ពាក្យបញ្ជាចងក្រង។ ការភ្ជាប់មកជាមួយ និងការប្រកាសរបស់ពួកគេត្រូវបានធ្វើបច្ចុប្បន្នភាពដើម្បីប្រើប្រភេទទទឹងថេរ។

កំណែ 2.20

  • ការគាំទ្រឧបករណ៍ថ្មីគឺអាចរកបានសម្រាប់ផ្នែក AVR ខាងក្រោម៖ ATTINY1624, ATTINY1626, និង ATTINY1627។
  • ការបែងចែកសមល្អបំផុតកាន់តែប្រសើរ អ្នកបែងចែកសមល្អបំផុត (BFA) នៅក្នុងកម្មវិធីចងក្រងត្រូវបានធ្វើឱ្យប្រសើរឡើង ដូច្នេះផ្នែកត្រូវបានបែងចែកតាមលំដាប់ដែលអនុញ្ញាតឱ្យមានការបង្កើនប្រសិទ្ធភាពកាន់តែប្រសើរ។ ឥឡូវនេះ BFA គាំទ្រចន្លោះអាសយដ្ឋានដែលមានឈ្មោះ និងគ្រប់គ្រងការចាប់ផ្តើមទិន្នន័យបានប្រសើរជាងមុន។
  • ការធ្វើឱ្យប្រសើរឡើងនូវដំណើរការអរូបី ការធ្វើឱ្យប្រសើរនៃដំណើរការអរូបីឥឡូវនេះត្រូវបានអនុវត្តលើលំដាប់កូដបន្ថែមទៀត។ ស្ថានភាពពីមុនដែលការបង្កើនប្រសិទ្ធភាពនេះអាចបង្កើនទំហំកូដត្រូវបានដោះស្រាយដោយការធ្វើឱ្យកូដបង្កើនប្រសិទ្ធភាពដឹងពីដំណើរការប្រមូលសំរាមរបស់អ្នកភ្ជាប់។
  • អវត្ដមាននៃ AVR Assembler AVR Assembler មិនត្រូវបានរួមបញ្ចូលជាមួយនឹងការចែកចាយនេះទៀតទេ។

កំណែ 2.19 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)
គ្មាន។

កំណែ 2.10

  • Code Coverage ការចេញផ្សាយនេះរួមបញ្ចូលនូវមុខងារគ្របដណ្តប់កូដដែលជួយសម្រួលដល់ការវិភាគនៃវិសាលភាពដែលកូដប្រភពរបស់គម្រោងត្រូវបានប្រតិបត្តិ។ ប្រើជម្រើស -mcodecov=ram ដើម្បីបើកវា។ បន្ទាប់ពីដំណើរការកម្មវិធីនៅលើ Hardware របស់អ្នក ព័ត៌មានអំពីការគ្របដណ្តប់កូដនឹងត្រូវបានរួមបញ្ចូលនៅក្នុងឧបករណ៍ ហើយវាអាចត្រូវបានផ្ទេរទៅ និងបង្ហាញដោយ MPLAB X IDE តាមរយៈកម្មវិធីជំនួយការគ្របដណ្តប់កូដ។ សូមមើលឯកសារ IDE សម្រាប់ព័ត៌មានអំពីកម្មវិធីជំនួយនេះអាចទទួលបាន។
    #pragma nocodecov អាច​ត្រូវ​បាន​ប្រើ​ដើម្បី​មិន​រាប់​បញ្ចូល​មុខងារ​ជា​បន្ត​បន្ទាប់​ពី​ការ​វិភាគ​ការ​គ្របដណ្តប់។ តាមឧត្ដមគតិ Pragma គួរតែត្រូវបានបន្ថែមនៅដើមឯកសារ ដើម្បីដកឯកសារនោះទាំងស្រុងចេញពីការវិភាគគ្របដណ្តប់។ ជាជម្រើស __attribute__((nocodecov)) អាចត្រូវបានប្រើដើម្បីដកមុខងារជាក់លាក់ចេញពីការវិភាគគ្របដណ្តប់។
  • ឯកសារពិពណ៌នាឧបករណ៍ ឯកសារឧបករណ៍ថ្មីមួយហៅថា avr_chipinfo.html មានទីតាំងនៅក្នុងថតឯកសារនៃការចែកចាយអ្នកចងក្រង។ ឯកសារនេះរាយឧបករណ៍ទាំងអស់ដែលគាំទ្រដោយកម្មវិធីចងក្រង។ ចុច​លើ​ឈ្មោះ​ឧបករណ៍ ហើយ​វា​នឹង​បើក​ទំព័រ​ដែល​បង្ហាញ​ការ​កំណត់​កំណត់​/តម្លៃ​ប៊ីត​ដែល​អនុញ្ញាត​ទាំងអស់​សម្រាប់​ឧបករណ៍​នោះ ដោយ​មាន​ឧ.amples ។
  • អរូបីតាមនីតិវិធី ការបង្កើនប្រសិទ្ធភាពអរូបីនៃនីតិវិធី ដែលជំនួសប្លុកទូទៅនៃកូដការជួបប្រជុំគ្នាជាមួយនឹងការហៅទៅកាន់ច្បាប់ចម្លងដែលបានស្រង់ចេញនៃប្លុកនោះត្រូវបានបន្ថែមទៅកម្មវិធីចងក្រង។ ទាំងនេះត្រូវបានអនុវត្តដោយកម្មវិធីដាច់ដោយឡែក ដែលត្រូវបានហៅដោយស្វ័យប្រវត្តិដោយអ្នកចងក្រង នៅពេលជ្រើសរើសការបង្កើនប្រសិទ្ធភាពកម្រិត 2, 3 ឬ s ។ ការបង្កើនប្រសិទ្ធភាពទាំងនេះកាត់បន្ថយទំហំកូដ ប៉ុន្តែវាអាចកាត់បន្ថយល្បឿននៃការប្រតិបត្តិ និងការបំបាត់កំហុសកូដ។ អរូបីតាមនីតិវិធីអាចត្រូវបានបិទនៅកម្រិតបង្កើនប្រសិទ្ធភាពខ្ពស់ដោយប្រើជម្រើស -mno-pa ឬអាចត្រូវបានបើកនៅកម្រិតបង្កើនប្រសិទ្ធភាពទាប (អាស្រ័យលើអាជ្ញាប័ណ្ណរបស់អ្នក) ដោយប្រើ -mpa ។ វាអាចត្រូវបានបិទសម្រាប់ឯកសារវត្ថុដោយប្រើ -mno-pa-on-file=fileឈ្មោះ ឬបិទសម្រាប់អនុគមន៍ដោយប្រើ -mno-pa-on- function=function។ នៅខាងក្នុងកូដប្រភពរបស់អ្នក ការអរូបីតាមនីតិវិធីអាចត្រូវបានបិទសម្រាប់មុខងារមួយដោយប្រើ __attribute__((nopa)) ជាមួយនឹងនិយមន័យនៃមុខងារ ឬដោយប្រើ __nopa ដែលពង្រីកដល់ __attribute__((nopa, noinline)) ហើយដូច្នេះការពារមុខងារ inlining ពីការកើតឡើង។ ហើយមានការអរូបីនៃកូដខាងក្នុង។
  • ការគាំទ្រប៊ីតចាក់សោនៅក្នុង pragma ការកំណត់ #pragma ឥឡូវនេះអាចត្រូវបានប្រើដើម្បីបញ្ជាក់ប៊ីតចាក់សោ AVR ក៏ដូចជាប៊ីតកំណត់រចនាសម្ព័ន្ធផ្សេងទៀត។ សូមពិនិត្យមើលឯកសារ avr_chipinfo.html (បានរៀបរាប់ខាងលើ) សម្រាប់ការកំណត់/តម្លៃគូដែលត្រូវប្រើជាមួយ pragma នេះ។
  • ការគាំទ្រឧបករណ៍ថ្មី ការគាំទ្រមានសម្រាប់ផ្នែកខាងក្រោម៖ AVR28DA128, AVR64DA128, AVR32DA128, និង AVR48DA128។

កំណែ 2.05

  • ប៊ីតច្រើនទៀតសម្រាប់លុយកាក់របស់អ្នក កំណែ macOS នៃកម្មវិធីចងក្រង និងកម្មវិធីគ្រប់គ្រងអាជ្ញាបណ្ណនេះគឺជាកម្មវិធី 64 ប៊ីត។ វានឹងធានាថាកម្មវិធីចងក្រងនឹងដំឡើង និងដំណើរការដោយគ្មានការព្រមានលើកំណែចុងក្រោយនៃ macOS ។
  • Const objects in program memory ឥឡូវនេះអ្នកចងក្រងអាចដាក់វត្ថុដែលមានលក្ខណៈសម្បត្តិគ្រប់គ្រាន់នៅក្នុងកម្មវិធី Flash memory ជាជាងអោយវត្ថុទាំងនេះស្ថិតនៅក្នុង RAM។ កម្មវិធីចងក្រងត្រូវបានកែប្រែ ដូច្នេះទិន្នន័យសកលដែលមានលក្ខណៈគ្រប់គ្រាន់ត្រូវបានរក្សាទុកក្នុងអង្គចងចាំកម្មវិធី ហើយទិន្នន័យនេះអាចចូលប្រើដោយផ្ទាល់ និងដោយប្រយោលដោយប្រើការណែនាំអំពីកម្មវិធីសមស្រប។ មុខងារថ្មីនេះត្រូវបានបើកតាមលំនាំដើម ប៉ុន្តែអាចត្រូវបានបិទដោយប្រើជម្រើស -mno-const-data-in-progmem។ សម្រាប់ស្ថាបត្យកម្ម avrxmega3 និង avrtiny មុខងារនេះមិនត្រូវបានទាមទារទេ ហើយតែងតែត្រូវបានបិទ ដោយសារអង្គចងចាំកម្មវិធីត្រូវបានគូសវាសទៅក្នុងទំហំអាសយដ្ឋានទិន្នន័យសម្រាប់ឧបករណ៍ទាំងនេះ។
  • កំណែស្តង់ដារដោយឥតគិតថ្លៃ (ឥតគិតថ្លៃ) នៃកម្មវិធីចងក្រងនេះឥឡូវនេះអនុញ្ញាតឱ្យមានការបង្កើនប្រសិទ្ធភាពរហូតដល់កម្រិត 2។ វានឹងអនុញ្ញាតឱ្យមានលទ្ធផលស្រដៀងគ្នា បើទោះបីជាមិនដូចគ្នាក៏ដោយ ប៉ុន្តែអ្វីដែលអាចធ្វើទៅបានពីមុនដោយប្រើអាជ្ញាប័ណ្ណស្តង់ដារ។
  • សូមស្វាគមន៍ AVRASM2 ឧបករណ៍ដំឡើង AVRASM2 សម្រាប់ឧបករណ៍ 8 ប៊ីតឥឡូវនេះត្រូវបានរួមបញ្ចូលនៅក្នុងកម្មវិធីដំឡើងកម្មវិធីចងក្រង XC8 ។ ឧបករណ៍ដំឡើងនេះមិនត្រូវបានប្រើដោយអ្នកចងក្រង XC8 ទេ ប៉ុន្តែមានសម្រាប់គម្រោងដោយផ្អែកលើប្រភពដំឡើងដែលសរសេរដោយដៃ។
  • ការគាំទ្រឧបករណ៍ថ្មីគឺអាចរកបានសម្រាប់ផ្នែកខាងក្រោម៖ ATMEGA1608, ATMEGA1609, ATMEGA808, និង ATMEGA809។

កំណែ 2.00

  • កម្មវិធីបញ្ជាកម្រិតកំពូល កម្មវិធីបញ្ជាថ្មីដែលហៅថា xc8-cc ឥឡូវនេះស្ថិតនៅពីលើកម្មវិធីបញ្ជា avr-gcc មុន និងកម្មវិធីបញ្ជា xc8 ហើយវាអាចហៅទៅកម្មវិធីចងក្រងដែលសមស្របដោយផ្អែកលើការជ្រើសរើសឧបករណ៍គោលដៅ។ កម្មវិធីបញ្ជានេះទទួលយកជម្រើសរចនាប័ទ្ម GCC ដែលត្រូវបានបកប្រែសម្រាប់ ឬឆ្លងកាត់ទៅកាន់កម្មវិធីចងក្រងដែលកំពុងដំណើរការ។ កម្មវិធីបញ្ជានេះអនុញ្ញាតឱ្យសំណុំនៃជម្រើសស្រដៀងគ្នាដែលមានអត្ថន័យស្រដៀងគ្នាដើម្បីប្រើជាមួយគោលដៅ AVR ឬ PIC ហើយដូច្នេះគឺជាវិធីដែលត្រូវបានណែនាំដើម្បីហៅកម្មវិធីចងក្រង។ ប្រសិនបើចាំបាច់ កម្មវិធីបញ្ជា avr-gcc ចាស់អាចត្រូវបានហៅដោយផ្ទាល់ដោយប្រើជម្រើសរចនាប័ទ្មចាស់ដែលវាបានទទួលយកនៅក្នុងកំណែចងក្រងមុន។
  • Common C Interface ឥឡូវនេះកម្មវិធីចងក្រងនេះអាចអនុលោមតាម MPLAB Common C Interface ដែលអនុញ្ញាតឱ្យកូដប្រភពត្រូវបានបញ្ជូនកាន់តែងាយស្រួលឆ្លងកាត់អ្នកចងក្រង MPLAB XC ទាំងអស់។ ជម្រើស -mext=cci ស្នើសុំលក្ខណៈពិសេសនេះ ដោយបើកវាក្យសម្ព័ន្ធជំនួសសម្រាប់ផ្នែកបន្ថែមភាសាជាច្រើន។
  • កម្មវិធីបញ្ជាបណ្ណារក្សថ្មី កម្មវិធីបញ្ជាបណ្ណារក្សថ្មីត្រូវបានដាក់នៅខាងលើបណ្ណារក្សបណ្ណាល័យ PIC មុន និងបណ្ណារក្ស AVR avr-ar ។ កម្មវិធីបញ្ជានេះទទួលយកជម្រើសរចនាប័ទ្ម GCC-archiver ដែលត្រូវបានបកប្រែសម្រាប់ ឬឆ្លងកាត់ទៅបណ្ណារក្សដែលកំពុងដំណើរការ។ កម្មវិធីបញ្ជាថ្មីអនុញ្ញាតឱ្យសំណុំនៃជម្រើសស្រដៀងគ្នាដែលមានអត្ថន័យស្រដៀងគ្នា ត្រូវបានប្រើដើម្បីបង្កើត ឬរៀបចំឯកសារបណ្ណាល័យ PIC ឬ AVR ហើយដូច្នេះគឺជាវិធីដែលត្រូវបានណែនាំដើម្បីហៅបណ្ណារក្ស។ ប្រសិនបើត្រូវការសម្រាប់គម្រោងកេរដំណែល បណ្ណារក្សមុនអាចត្រូវបានហៅដោយផ្ទាល់ដោយប្រើជម្រើសរចនាប័ទ្មចាស់ដែលវាបានទទួលយកនៅក្នុងកំណែចងក្រងមុន។

បញ្ហាចំណាកស្រុក

ខាង​ក្រោម​នេះ​គឺ​ជា​លក្ខណៈ​ពិសេស​ដែល​ឥឡូវ​ត្រូវ​បាន​ដោះស្រាយ​ខុស​គ្នា​ដោយ​អ្នក​ចងក្រង។ ការផ្លាស់ប្តូរទាំងនេះអាចតម្រូវឱ្យមានការកែប្រែកូដប្រភពរបស់អ្នក ប្រសិនបើការបញ្ជូនកូដទៅកាន់កំណែចងក្រងនេះ។ លេខកំណែនៅក្នុងចំណងជើងរងបង្ហាញពីកំណែចងក្រងដំបូងដើម្បីគាំទ្រការផ្លាស់ប្តូរដែលធ្វើតាម។

កំណែ 2.45
គ្មាន។

កំណែ 2.41
មុខងារ fma មិនត្រឹមត្រូវត្រូវបានដកចេញ (XC8-2913) បណ្ណាល័យស្តង់ដារ C99 ( ) មិន​បាន​គណនា​ការ​បន្ថែម​គុណ​ដោយ​ភាព​ជាក់លាក់​គ្មាន​កំណត់​ទៅ​នឹង​ការ​បង្គត់​តែ​មួយ​ទេ ប៉ុន្តែ​ជំនួស​មក​វិញ​នូវ​កំហុស​ជុំ​វិញ​បង្គរ​ជាមួយ​នឹង​ប្រតិបត្តិការ​នីមួយៗ។ មុខងារទាំងនេះត្រូវបានដកចេញពីបណ្ណាល័យដែលបានផ្គត់ផ្គង់។

កំណែ 2.40
គ្មាន។

កំណែ 2.39 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)
គ្មាន។

កំណែ 2.36
គ្មាន។

កំណែ 2.35

  • ការគ្រប់គ្រងខ្សែអក្សរទៅមូលដ្ឋាន (XC8-2420) ដើម្បីធានាបាននូវភាពស៊ីសង្វាក់គ្នាជាមួយនឹងកម្មវិធីចងក្រង XC ផ្សេងទៀត មុខងារខ្សែអក្សរ XC8 ដូចជា sttol() ជាដើម។ នឹងមិនព្យាយាមបំប្លែងខ្សែអក្សរបញ្ចូលទៀតទេ ប្រសិនបើមូលដ្ឋានដែលបានបញ្ជាក់មានទំហំធំជាង 36 ហើយនឹងកំណត់ជំនួសវិញ។ ស្តង់ដារ C មិន​បញ្ជាក់​ពី​ឥរិយាបទ​នៃ​មុខងារ​នៅ​ពេល​ដែល​តម្លៃ​គោល​នេះ​ត្រូវ​បាន​លើស។
  • ការបង្កើនប្រសិទ្ធភាពល្បឿនមិនសមរម្យ ការបង្កើនប្រសិទ្ធភាពអរូបីតាមនីតិវិធីកំពុងត្រូវបានបើកនៅពេលជ្រើសរើសការបង្កើនប្រសិទ្ធភាពកម្រិត 3 (-O3)។ ការបង្កើនប្រសិទ្ធភាពទាំងនេះកាត់បន្ថយទំហំកូដដោយចំណាយលើល្បឿនកូដ ដូច្នេះមិនគួរត្រូវបានអនុវត្តទេ។ គម្រោង​ដែល​ប្រើ​កម្រិត​បង្កើន​ប្រសិទ្ធភាព​នេះ​អាច​នឹង​ឃើញ​ភាព​ខុស​គ្នា​ក្នុង​ទំហំ​កូដ និង​ល្បឿន​ប្រតិបត្តិ​នៅ​ពេល​បង្កើត​ឡើង​ជាមួយ​នឹង​ការ​ចេញផ្សាយ​នេះ។
  • មុខងារបណ្ណាល័យ កូដសម្រាប់មុខងារបណ្ណាល័យ C ស្តង់ដារជាច្រើនឥឡូវនេះបានមកពីបណ្ណាល័យស្តង់ដារឯកត្តជនរបស់ Microchip ដែលអាចបង្ហាញអាកប្បកិរិយាខុសៗគ្នាក្នុងកាលៈទេសៈខ្លះ បើប្រៀបធៀបទៅនឹងអ្វីដែលផ្តល់ដោយអតីតបណ្ណាល័យ avr-libc ។ សម្រាប់អតីតampដូច្នេះ វាលែងចាំបាច់ក្នុងការភ្ជាប់ក្នុងបណ្ណាល័យ lprintf_flt (-lprintf_flt ជម្រើស) ដើម្បីបើកការគាំទ្រ IO ដែលបានធ្វើទ្រង់ទ្រាយសម្រាប់ការកំណត់ទម្រង់អណ្តែត។ លក្ខណៈពិសេស IO ដ៏ឆ្លាតវៃនៃបណ្ណាល័យស្តង់ដារមីក្រូឈីបបង្រួបបង្រួម ធ្វើឱ្យជម្រើសនេះមិនអាចខ្វះបាន។ បន្ថែមពីលើនេះ ការប្រើប្រាស់ _P ទម្លាប់បច្ច័យសម្រាប់មុខងារខ្សែអក្សរ និងអង្គចងចាំ (ឧ. ទម្លាប់ C ស្តង់ដារ (ឧទាហរណ៍ strcpy() នឹងដំណើរការត្រឹមត្រូវជាមួយទិន្នន័យបែបនេះ នៅពេលដែលមុខងារ const-data-in-program-memory ត្រូវបានបើក។

កំណែ 2.32
គ្មាន។

កំណែ 2.31
គ្មាន។

កំណែ 2.30
គ្មាន។

កំណែ 2.29 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)
គ្មាន។

កំណែ 2.2
បានផ្លាស់ប្តូរប្លង់ DFP ឥឡូវនេះកម្មវិធីចងក្រងសន្មត់ថាប្លង់ផ្សេងគ្នាដែលប្រើដោយ DFPs (កញ្ចប់គ្រួសារឧបករណ៍)។ នេះនឹងមានន័យថា DFP ចាស់ប្រហែលជាមិនដំណើរការជាមួយនឹងការចេញផ្សាយនេះទេ ហើយអ្នកចងក្រងចាស់នឹងមិនអាចប្រើ DFPs ចុងក្រោយបង្អស់បានទេ។

កំណែ 2.19 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)
គ្មាន។

កំណែ 2.10
គ្មាន

កំណែ 2.05
Const objects in program memory ចំណាំថា តាមលំនាំដើម វត្ថុ const-qualifiied នឹងត្រូវបានដាក់ និងចូលប្រើក្នុងអង្គចងចាំកម្មវិធី (ដូចដែលបានពិពណ៌នានៅទីនេះ)។ វានឹងប៉ះពាល់ដល់ទំហំ និងល្បឿនប្រតិបត្តិនៃគម្រោងរបស់អ្នក ប៉ុន្តែគួរតែកាត់បន្ថយការប្រើប្រាស់ RAM។ មុខងារនេះអាចត្រូវបានបិទ ប្រសិនបើចាំបាច់ ដោយប្រើជម្រើស -mno-const-data-in-progmem ។

កំណែ 2.00

  • Configuration fuses ហ្វុយហ្ស៊ីបនៃការកំណត់ឧបករណ៍ឥឡូវនេះអាចសរសេរកម្មវិធីដោយប្រើ config pragma អមដោយ set-value pairs ដើម្បីបញ្ជាក់ស្ថានភាព fuse ឧ. #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
  • វត្ថុ និងអនុគមន៍ដាច់ខាតឥឡូវនេះ វត្ថុ និងមុខងារអាចត្រូវបានដាក់នៅអាសយដ្ឋានជាក់លាក់ក្នុងអង្គចងចាំដោយប្រើ CCI __at(address) specifer សម្រាប់ឧ។ampលេ៖
    • # រួមបញ្ចូល
      int foobar __at(0x800100);
      char __at(0x250) getID(int offset) { … }
      អាគុយម៉ង់ចំពោះអ្នកបញ្ជាក់នេះត្រូវតែជាថេរដែលតំណាងឱ្យអាសយដ្ឋានដែលបៃដំបូង ឬការណែនាំនឹងត្រូវបានដាក់។ អាសយដ្ឋាន RAM ត្រូវបានចង្អុលបង្ហាញដោយប្រើអុហ្វសិត 0x800000 ។ បើកដំណើរការ CCI ដើម្បីប្រើមុខងារនេះ។
  • វាក្យសម្ព័ន្ធមុខងាររំខានថ្មី ឥឡូវអ្នកចងក្រងទទួលយកកម្មវិធីបញ្ជាក់ CCI __interrupt(num) ដើម្បីបង្ហាញថាមុខងារ C គឺជាឧបករណ៍ដោះស្រាយការរំខាន។ អ្នកបញ្ជាក់យកលេខរំខាន ឧទាហរណ៍ampលេ៖ #រួមបញ្ចូល មោឃៈ __រំខាន(SPI_STC_vect_num) spi_Isr(មោឃៈ) { … }

បញ្ហាថេរ

ខាង​ក្រោម​នេះ​គឺ​ជា​ការ​កែ​តម្រូវ​ដែល​ត្រូវ​បាន​ធ្វើ​ឡើង​ចំពោះ​អ្នក​ចងក្រង។ ទាំងនេះអាចជួសជុលកំហុសនៅក្នុងកូដដែលបានបង្កើត ឬផ្លាស់ប្តូរប្រតិបត្តិការរបស់អ្នកចងក្រងទៅជាអ្វីដែលមានបំណង ឬបញ្ជាក់ដោយការណែនាំរបស់អ្នកប្រើប្រាស់។ លេខកំណែនៅក្នុងចំណងជើងរងបង្ហាញពីកំណែចងក្រងដំបូងដើម្បីមានការជួសជុលសម្រាប់បញ្ហាដែលកើតឡើង។ ស្លាកសញ្ញាតង្កៀបនៅក្នុងចំណងជើងគឺជាការកំណត់អត្តសញ្ញាណបញ្ហានៅក្នុងមូលដ្ឋានទិន្នន័យតាមដាន។ ទាំងនេះអាចមានប្រយោជន៍ ប្រសិនបើអ្នកត្រូវការទាក់ទងផ្នែកជំនួយ។
ចំណាំថាបញ្ហាជាក់លាក់នៃឧបករណ៍មួយចំនួនត្រូវបានកែតម្រូវនៅក្នុងកញ្ចប់គ្រួសារឧបករណ៍ (DFP) ដែលភ្ជាប់ជាមួយឧបករណ៍។ សូមមើលកម្មវិធីគ្រប់គ្រងកញ្ចប់ MPLAB សម្រាប់ព័ត៌មានអំពីការផ្លាស់ប្តូរដែលបានធ្វើឡើងចំពោះ DFPs និងដើម្បីទាញយកកញ្ចប់ចុងក្រោយបំផុត។

កំណែ 2.45

  • ការបរាជ័យអាជ្ញាប័ណ្ណរ៉ូមីង (XCLM-235) អាជ្ញាប័ណ្ណរ៉ូមីងបានបរាជ័យក្នុងការដំណើរការត្រឹមត្រូវនៅលើវេទិកាលីនុចដោយប្រើកំណែ glibc យឺតជាង 2.28 ។
  • កំហុសខាងក្នុងជាមួយអារេនៃរចនាសម្ព័ន្ធ (XC8-3069) នៅពេលដែលសមាជិកអារេពហុវិមាត្រនៃរចនាសម្ព័ន្ធត្រូវបានដំណើរការ គុណលក្ខណៈលំហអាសយដ្ឋានមិនត្រូវបានផ្សព្វផ្សាយត្រឹមត្រូវទៅអារេទេ។ នេះនាំឱ្យមានភាពមិនស៊ីគ្នានៅក្នុងព័ត៌មានគុណលក្ខណៈលំហអាសយដ្ឋាន និងកំហុសអ្នកចងក្រងខាងក្នុង។ ស្ថានភាពនេះត្រូវបានកែតម្រូវ។
  • សរសេរមិនល្អទៅស្ទ្រីមដែលមិនបានបង្កើត (ML-353, XC8-3100) ប្រសិនបើស្ទ្រីមលទ្ធផល/កំហុសស្តង់ដារមិនត្រូវបានដំឡើងយ៉ាងច្បាស់លាស់ដោយប្រើ FDEV_SETUP_STREAM ឬ _init_stdout/_init_stderr ការព្យាយាមសរសេរទៅកាន់ពួកគេ បណ្តាលឱ្យមានអាកប្បកិរិយាមិនត្រូវបានកំណត់។ វាក៏ប៉ះពាល់ដល់ការសរសេរពីមុខងារ stdlib ដូចជា perror() ផងដែរ។ រាល់ការសរសេរទៅកាន់ស្ទ្រីមទាំងនេះមុនពេលពួកវាត្រូវបានចាប់ផ្តើមឥឡូវនេះនឹងត្រូវមិនអើពើ។
  • កម្មវិធីកែប្រែដែលមិនគាំទ្រ (XC8-2505) បណ្ណាល័យ avr-libc មិនគាំទ្រកម្មវិធីកែប្រែ * នៅក្នុងការកំណត់ការបម្លែងរចនាប័ទ្ម printf សម្រាប់ឧទាហរណ៍ampពី "%*f" ។ ឥឡូវនេះវាត្រូវបានគាំទ្រជាមួយនឹងការណែនាំនៃបណ្ណាល័យស្តង់ដារមីក្រូឈីប។
  • ការព្រមានដែលមិនធ្លាប់មានច្រើន (XC8-2409) កម្មវិធីចងក្រងកំពុងចេញសារព្រមានដូចគ្នាបេះបិទជាច្រើន នៅពេលជួបប្រទះអារេ const ដែលមិនត្រូវបានចាប់ផ្តើម។ សារគួរតែត្រូវបានចេញតែមួយដងប៉ុណ្ណោះ ដែលឥឡូវនេះជាករណីនៅពេលដែលស្ថានភាពនេះកើតឡើង។

កំណែ 2.41

  • បញ្ហា Dongle លើ Ventura (XC8-3088) Dongles ធ្លាប់ផ្តល់អាជ្ញាប័ណ្ណកម្មវិធីចងក្រងប្រហែលជាមិនត្រូវបានអានត្រឹមត្រូវនៅលើម៉ាស៊ីន macOS Ventura ដែលបណ្តាលឱ្យមានការបរាជ័យក្នុងការផ្តល់អាជ្ញាប័ណ្ណ។ ការផ្លាស់ប្តូរទៅអ្នកគ្រប់គ្រងអាជ្ញាប័ណ្ណ XCLM ដោះស្រាយបញ្ហានេះ។
  • ការចង្អុលបង្ហាញមិនត្រឹមត្រូវនៃការបែងចែកអង្គចងចាំ (XC8-2925) ការប៉ុនប៉ងដើម្បីបែងចែក SIZE_MAX បៃ (ឬតម្លៃនៅជិតនេះ) នៃអង្គចងចាំដោយប្រើមុខងារគ្រប់គ្រងអង្គចងចាំបណ្ណាល័យស្តង់ដារ (malloc() et al) ដែលបានស្នើសុំនៅពេលប្រើការអនុវត្តការបែងចែកអង្គចងចាំថាមវន្តសាមញ្ញ។ ឥឡូវនេះ ទ្រនិច NULL នឹងត្រូវបានត្រឡប់ ហើយ errno កំណត់ទៅ ENOMEM ក្នុងស្ថានភាពបែបនេះ។
  • មុខងារ fma មិនត្រឹមត្រូវត្រូវបានដកចេញ (XC8-2913) បណ្ណាល័យស្តង់ដារ C99 fma()-family functions ( ) មិន​បាន​គណនា​ការ​បន្ថែម​គុណ​ដោយ​ភាព​ជាក់លាក់​គ្មាន​កំណត់​ទៅ​នឹង​ការ​បង្គត់​តែ​មួយ​ទេ ប៉ុន្តែ​ជំនួស​មក​វិញ​នូវ​កំហុស​ជុំ​វិញ​បង្គរ​ជាមួយ​នឹង​ប្រតិបត្តិការ​នីមួយៗ។ មុខងារទាំងនេះត្រូវបានដកចេញពីបណ្ណាល័យដែលបានផ្គត់ផ្គង់។
  • ការគ្រប់គ្រងការបំប្លែងខ្សែអក្សរមិនល្អ (XC8-2921, XC8-2652) នៅពេលដែល 'លំដាប់ប្រធានបទ' សម្រាប់ការបំប្លែងដោយ strtod() មានអ្វីដែលហាក់ដូចជាលេខអណ្តែតក្នុងទម្រង់អិចស្ប៉ូណង់ស្យែល ហើយមានតួអក្សរដែលមិនរំពឹងទុកបន្ទាប់ពី e/E តួអក្សរ បន្ទាប់មកកន្លែងដែល endptr ត្រូវបានផ្តល់ឱ្យ វាត្រូវបានផ្តល់អាសយដ្ឋានដែលមានវាចង្អុលទៅតួអក្សរបន្ទាប់ពី ខណៈពេលដែលវាគួរត្រូវបានចង្អុលទៅតួអក្សរ e//E ខ្លួនវា ចាប់តាំងពីវាមិនត្រូវបានបំប្លែង។ សម្រាប់អតីតample, strtod(“100exx”, &ep) គួរតែត្រឡប់ 100.00 ហើយកំណត់ ep ដើម្បីចង្អុលទៅផ្នែក “exx” នៃខ្សែអក្សរ ខណៈដែលមុខងារកំពុងត្រឡប់តម្លៃត្រឹមត្រូវ ប៉ុន្តែកំណត់ផ្នែក “xx” នៃខ្សែអក្សរ។

កំណែ 2.40

  • ធូរស្រាលពេក (XC8-2876) នៅពេលប្រើជម្រើស -mrelax កម្មវិធីចងក្រងមិនបែងចែកផ្នែកមួយចំនួនរួមគ្នាទេ ដែលបណ្តាលឱ្យមានទំហំកូដតិចបំផុត។ វាអាចកើតឡើងជាមួយនឹងកូដដែលបានប្រើបណ្ណាល័យ MUSL ថ្មី ឬជាមួយនិមិត្តសញ្ញាខ្សោយ។
  • មុខងារផែនទីមិនត្រូវបានបិទដូចដែលបានបញ្ជាក់នៅក្នុងការព្រមាន (XC8-2875) មុខងារ const-data-in-confg-mapped-progmem គឺពឹងផ្អែកលើមុខងារ const-data-in-progmem កំពុងត្រូវបានបើក។ ប្រសិនបើមុខងារ const-data-in-confg-mapped-progmem ត្រូវបានបើកយ៉ាងជាក់លាក់ដោយប្រើជម្រើស ហើយមុខងារ const-data-in-progmem ត្រូវបានបិទ ជំហានតំណបានបរាជ័យ ទោះបីជាមានសារព្រមានដែលបញ្ជាក់ថា const-data-in មុខងារ -config-mapped-progmem ត្រូវបានបិទដោយស្វ័យប្រវត្តិ ដែលមិនត្រឹមត្រូវទាំងស្រុង។ មុខងារ const-data-in-confg-mapped-progmem ឥឡូវនេះត្រូវបានបិទទាំងស្រុងក្នុងស្ថានភាពនេះ។
  • ការផ្លាស់ប្តូរ DFP ដើម្បីចូលប្រើ NVMCTRL (XC8-2848) យ៉ាងត្រឹមត្រូវ លេខកូដចាប់ផ្តើមពេលដំណើរការដែលប្រើដោយឧបករណ៍ AVR64EA មិនបានគិតពីការចុះឈ្មោះ NVMCTRL ស្ថិតនៅក្រោមការការពារការផ្លាស់ប្តូរការកំណត់ (CCP) ហើយមិនអាចកំណត់ IO SFR ទៅទំព័រដែលបានប្រើនោះទេ។ ដោយមុខងារចងក្រង const-data-in-confg-mapped-progmem ។ ការផ្លាស់ប្តូរដែលបានធ្វើឡើងនៅក្នុង AVR-Ex_DFP កំណែ 2.2.55 នឹងអនុញ្ញាតឱ្យកូដចាប់ផ្តើមពេលដំណើរការដើម្បីសរសេរឱ្យបានត្រឹមត្រូវទៅការចុះឈ្មោះនេះ។
  • ការផ្លាស់ប្តូរ DFP ដើម្បីជៀសវាងការគូសផែនទីពន្លឺ (XC8-2847) ការងារជុំវិញសម្រាប់បញ្ហាជាមួយមុខងារឧបករណ៍គូសផែនទីដែលបានរាយការណ៍នៅក្នុង AVR128DA28/32/48/64 Silicon Errata (DS80000882) ត្រូវបានអនុវត្ត។ មុខងារចងក្រង const-data-in-confg-mapped-progmem នឹងមិនត្រូវបានអនុវត្តតាមលំនាំដើមសម្រាប់ឧបករណ៍ដែលរងផលប៉ះពាល់ទេ ហើយការផ្លាស់ប្តូរនេះនឹងបង្ហាញនៅក្នុង AVR-Dx_DFP កំណែ 2.2.160។
  • បង្កើតកំហុសជាមួយ sinhf ឬ coshf (XC8-2834) ការប៉ុនប៉ងប្រើមុខងារបណ្ណាល័យ sinhf() ឬ coshf() បណ្តាលឱ្យមានកំហុសតំណ ដោយពណ៌នាអំពីឯកសារយោងដែលមិនបានកំណត់។ មុខងារដែលបាត់ដែលបានយោងឥឡូវនេះត្រូវបានរួមបញ្ចូលនៅក្នុងការចែកចាយកម្មវិធីចងក្រង។
  • បង្កើតកំហុសជាមួយ nopa (XC8-2833) ការប្រើប្រាស់គុណលក្ខណៈ nopa ជាមួយនឹងមុខងារដែលមានឈ្មោះ assembler របស់វាបញ្ជាក់ដោយប្រើ __asm__() បង្កសារកំហុសពី assembler។ ការរួមបញ្ចូលគ្នានេះមិនអាចទៅរួចទេ។
  • ការបរាជ័យមុខងារ Variadic ជាមួយអាគុយម៉ង់ទ្រនិច (XC8-2755, XC8-2731) មុខងារដែលមានចំនួនអថេរនៃអាគុយម៉ង់រំពឹងថា 24-bit (__memx type) pointers នឹងត្រូវបានឆ្លងកាត់នៅក្នុងបញ្ជីអាគុយម៉ង់អថេរ នៅពេលដែលមុខងារ const-data-in-progmem គឺ បានបើកដំណើរការ។ អាគុយម៉ង់ដែលជាចង្អុលទៅអង្គចងចាំទិន្នន័យកំពុងត្រូវបានបញ្ជូនជាវត្ថុ 16 ប៊ីត ដែលបណ្តាលឱ្យបរាជ័យកូដនៅពេលពួកគេអាននៅទីបំផុត។ នៅពេលដែលមុខងារ const-data-in-progmem ត្រូវបានបើក អាគុយម៉ង់ទ្រនិច 16 ប៊ីតឥឡូវនេះត្រូវបានបំប្លែងទៅជាទ្រនិច 24 ប៊ីត។
  • មុខងារបណ្ណាល័យ strtoxxx បរាជ័យ (XC8-2620) នៅពេលដែលមុខងារ const-data-in-progmem ត្រូវបានបើក ប៉ារ៉ាម៉ែត្រ endptr នៅក្នុងមុខងារបណ្ណាល័យ strtoxxx មិនត្រូវបានអាប់ដេតត្រឹមត្រូវសម្រាប់អាគុយម៉ង់ខ្សែប្រភពដែលមិនមាននៅក្នុងអង្គចងចាំកម្មវិធីទេ។
  • ការដាស់តឿនសម្រាប់ការខាសមិនត្រឹមត្រូវ (XC8-2612) ឥឡូវនេះកម្មវិធីចងក្រងនឹងចេញកំហុស ប្រសិនបើមុខងារ const-in-progmem ត្រូវបានបើក ហើយអាសយដ្ឋាននៃខ្សែអក្សរត្រូវបានបញ្ជូនយ៉ាងច្បាស់ទៅកាន់ទំហំអាសយដ្ឋានទិន្នន័យ (ទម្លាក់តម្លៃ const qualifier) ​​ឧទាហរណ៍ample, (uint8_t *) “ជំរាបសួរពិភពលោក!” . ការព្រមានគឺមានបញ្ហាប្រសិនបើអាសយដ្ឋានអាចនឹងមិនត្រឹមត្រូវ នៅពេលដែលទ្រនិចទិន្នន័យ const ត្រូវបានបញ្ជូនយ៉ាងច្បាស់ទៅកាន់ទំហំអាសយដ្ឋានទិន្នន័យ។
  • ការដាក់វត្ថុដែលមិនដំណើរការដំបូង (XC8-2408) វត្ថុដែលងាយនឹងបង្កជាហេតុដែលមិនទាន់បានកំណត់ និង const
    មិនត្រូវបានដាក់ក្នុងអង្គចងចាំកម្មវិធីនៅលើឧបករណ៍ដែលគូសផែនទីទាំងអស់ ឬផ្នែកនៃអង្គចងចាំកម្មវិធីរបស់ពួកគេទៅក្នុងចន្លោះអាសយដ្ឋានទិន្នន័យ។ សម្រាប់ឧបករណ៍ទាំងនេះ វត្ថុបែបនេះឥឡូវនេះត្រូវបានដាក់ក្នុងអង្គចងចាំកម្មវិធី ដែលធ្វើឱ្យប្រតិបត្តិការរបស់ពួកគេស្របជាមួយនឹងឧបករណ៍ផ្សេងទៀត។

កំណែ 2.39 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)
គ្មាន។

កំណែ 2.36
កំហុសនៅពេលពន្យាពេល (XC8-2774) ការផ្លាស់ប្តូរតិចតួចនៅក្នុងលំនាំដើម ការបង្កើនប្រសិទ្ធភាពរបៀបឥតគិតថ្លៃបានរារាំងការបត់ថេរនៃកន្សោម operand ទៅនឹងមុខងារដែលបានភ្ជាប់មកជាមួយពន្យាពេល ដែលបណ្តាលឱ្យពួកវាត្រូវបានចាត់ទុកថាមិនថេរ និងបង្កឱ្យមានកំហុស៖ __builtin_avr_delay_cycles រំពឹងថានឹងមានចំនួនសរុប ថេរ។

កំណែ 2.35

  • ការបែងចែកជាប់គ្នាដោយប្រើ __at (XC8-2653) ការបែងចែកជាប់គ្នានៃកន្លែងជាច្រើននៅក្នុងផ្នែកដែលមានឈ្មោះដូចគ្នា និងការប្រើ __at() មិនដំណើរការត្រឹមត្រូវ។ សម្រាប់អតីតampលេ៖
    const char arr1[] __attribute__((section(“.mysec”)))) __at (0x500) = {0xAB, 0xCD}; const char arr2[] __attribute__((section(“.mysec”))) = {0xEF, 0xFE}; គួរតែដាក់ arr2 ភ្លាមៗបន្ទាប់ពី arr1
  • ការបញ្ជាក់អាសយដ្ឋានចាប់ផ្តើមផ្នែក (XC8-2650) ជម្រើស -Wl,–section-start បានបរាជ័យដោយស្ងៀមស្ងាត់ក្នុងការដាក់ផ្នែកនៅអាសយដ្ឋានចាប់ផ្តើមដែលបានតែងតាំង។ បញ្ហានេះត្រូវបានជួសជុលសម្រាប់ផ្នែកដែលមានឈ្មោះផ្ទាល់ខ្លួន។ ទោះយ៉ាងណាក៏ដោយ វានឹងមិនដំណើរការសម្រាប់ផ្នែកស្តង់ដារណាមួយដូចជា .text ឬ .bss ដែលត្រូវតែដាក់ដោយប្រើជម្រើស -Wl,-T។ Linker គាំងនៅពេលសម្រាក (XC8-2647) នៅពេលដែលការបង្កើនប្រសិទ្ធភាព -mrelax ត្រូវបានបើក ហើយមានផ្នែកកូដ ឬទិន្នន័យដែលមិនសមនឹងអង្គចងចាំដែលមាននោះ តំណភ្ជាប់បានគាំង។ ឥឡូវនេះ ក្នុងកាលៈទេសៈបែបនេះ សារកំហុសត្រូវបានចេញជំនួសវិញ។
  • គ្មានការថយក្រោយ (XC8-2646) ជម្រើស –nofallback មិនត្រូវបានអនុវត្តត្រឹមត្រូវ ឬចងក្រងជាឯកសារទេ។ ឥឡូវ​នេះ​អាច​ត្រូវ​បាន​ជ្រើស​ដើម្បី​ប្រាកដ​ថា​កម្មវិធី​ចងក្រង​នឹង​មិន​ត្រឡប់​ទៅ​រក​ការ​កំណត់​ការ​បង្កើន​ប្រសិទ្ធភាព​ទាប​ជាង​ប្រសិន​បើ​កម្មវិធី​ចងក្រង​មិន​មាន​អាជ្ញាប័ណ្ណ ហើយ​នឹង​ចេញ​កំហុស​ជំនួស​វិញ។
  • ការបង្កើនប្រសិទ្ធភាពល្បឿនមិនសមរម្យ (XC8-2637) ការបង្កើនប្រសិទ្ធភាពអរូបីតាមនីតិវិធីកំពុងត្រូវបានបើកនៅពេលជ្រើសរើសការបង្កើនប្រសិទ្ធភាពកម្រិត 3 (-O3)។ ការបង្កើនប្រសិទ្ធភាពទាំងនេះកាត់បន្ថយទំហំកូដដោយចំណាយលើល្បឿនកូដ ដូច្នេះមិនគួរត្រូវបានអនុវត្តទេ។
  • ការចូលប្រើ EEPROM មិនល្អ (XC8-2629) ទម្លាប់ eeprom_read_block មិនដំណើរការត្រឹមត្រូវនៅលើឧបករណ៍ Xmega នៅពេលដែលជម្រើស – mconst-data-in-progmem ត្រូវបានបើក (ដែលជាស្ថានភាពលំនាំដើម) ដែលបណ្តាលឱ្យអង្គចងចាំ EEPROM មិនត្រូវបានអានត្រឹមត្រូវ។
  • ការបែងចែកអង្គចងចាំមិនត្រឹមត្រូវ (XC8-2593, XC8-2651) នៅពេលជម្រើស -Ttext ឬ -Tdata linker (សម្រាប់ឧ។ample បានឆ្លងកាត់ដោយប្រើជម្រើសកម្មវិធីបញ្ជា -Wl) ត្រូវបានបញ្ជាក់ ប្រភពដើមនៃតំបន់អត្ថបទ/ទិន្នន័យដែលត្រូវគ្នាត្រូវបានធ្វើបច្ចុប្បន្នភាព។ ទោះយ៉ាងណាក៏ដោយ អាសយដ្ឋានបញ្ចប់មិនត្រូវបានកែតម្រូវតាមនោះ ដែលអាចនាំទៅដល់តំបន់លើសពីជួរអង្គចងចាំរបស់ឧបករណ៍គោលដៅ។
  • គាំងជាមួយនឹងមុខងារលើសគុណលក្ខណៈ (XC8-2580) កម្មវិធីចងក្រងគាំង ប្រសិនបើមុខងារមួយត្រូវបានប្រកាសដោយប្រើគុណលក្ខណៈរំខាន សញ្ញា ឬ nmi ច្រើនជាងមួយ ឧ, __attribute__((__signal__, __interrupt__))។
  • លេខកូដរំខាន ATtiny មិនត្រឹមត្រូវ (XC8-2465) នៅពេលបង្កើតឧបករណ៍ ATtiny និងការបង្កើនប្រសិទ្ធភាពត្រូវបានបិទ (-O0) មុខងាររំខានអាចបណ្តាលឱ្យដំណើរការចេញពីជួរ
  • ជម្រើសមិនត្រូវបានឆ្លងកាត់ (XC8-2452) នៅពេលប្រើជម្រើស -Wl ជាមួយនឹងជម្រើសតំណភ្ជាប់ដែលបំបែកដោយសញ្ញាក្បៀសច្រើន មិនមែនជម្រើសតំណភ្ជាប់ទាំងអស់ត្រូវបានបញ្ជូនទៅអ្នកភ្ជាប់នោះទេ។
  • កំហុសក្នុងការអានអង្គចងចាំកម្មវិធីដោយប្រយោល (XC8-2450) ក្នុងករណីខ្លះ កម្មវិធីចងក្រងបង្កើតកំហុសខាងក្នុង (មិនអាចស្គាល់ insn) នៅពេលអានតម្លៃពីរបៃពីទ្រនិចទៅអង្គចងចាំកម្មវិធី

កំណែ 2.32
ការចូលប្រើបណ្ណាល័យជាលើកទីពីរបរាជ័យ (XC8-2381) ការហៅកំណែ Windows នៃបណ្ណសារបណ្ណាល័យ xc8-ar.exe ជាលើកទីពីរដើម្បីចូលប្រើបណ្ណសារបណ្ណាល័យដែលមានស្រាប់អាចបរាជ័យដោយមិនអាចប្តូរឈ្មោះសារកំហុសបាន។

កំណែ 2.31
ការបរាជ័យនៃកម្មវិធីចងក្រងដែលមិនអាចពន្យល់បាន (XC8-2367) នៅពេលដំណើរការលើប្រព័ន្ធប្រតិបត្តិការ Windows ដែលមានថតបណ្តោះអាសន្នរបស់ប្រព័ន្ធកំណត់ទៅផ្លូវដែលរួមបញ្ចូលចំនុច '.' តួអក្សរ អ្នកចងក្រងអាចបរាជ័យក្នុងការប្រតិបត្តិ។

កំណែ 2.30

  • ស្លាកសកលត្រូវបានដាក់ខុសបន្ទាប់ពីការគូសបញ្ជាក់ (XC8-2299) កូដការជួបប្រជុំដែលសរសេរដោយដៃដែលដាក់ស្លាកសកលនៅក្នុងលំដាប់នៃការជួបប្រជុំគ្នាដែលត្រូវបានដកចេញដោយអរូបីតាមនីតិវិធីប្រហែលជាមិនត្រូវបានដាក់ឡើងវិញត្រឹមត្រូវ។
  • ការគាំងបន្ធូរអារម្មណ៍ (XC8-2287) ការប្រើជម្រើស -mrelax អាចបណ្តាលឱ្យតំណភ្ជាប់គាំងនៅពេលដែលការបង្កើនប្រសិទ្ធភាពការបន្ធូរបន្ថយការលោតកន្ទុយព្យាយាមដកចេញការណែនាំដែលមិនមាននៅចុងបញ្ចប់នៃផ្នែកមួយ។
  • ការគាំងនៅពេលការបង្កើនប្រសិទ្ធភាពស្លាកជាតម្លៃ (XC8-2282) កូដដោយប្រើ "ស្លាកជាតម្លៃ" ផ្នែកបន្ថែមភាសា GNU C អាចនឹងបណ្តាលឱ្យការបង្កើនប្រសិទ្ធភាពអរូបីតាមនីតិវិធីគាំង ដោយមានកំហុសក្នុងការជួសជុលជួរ។
  • Not so const (XC8-2271) គំរូដើមសម្រាប់ strstr() និងមុខងារផ្សេងទៀតពី លែង​បញ្ជាក់​គុណវុឌ្ឍិ​មិន​ស្តង់ដារ​លើ​ទ្រនិច​ខ្សែ​ដែល​បាន​ត្រឡប់​វិញ​នៅ​ពេល​មុខងារ const -mconst-data-in-progmem ត្រូវ​បាន​បិទ។ ចំណាំថាជាមួយនឹងឧបករណ៍ avrxmega3 និង avrtiny មុខងារនេះត្រូវបានបើកជាអចិន្ត្រៃយ៍។
  • បាត់បង់កម្មវិធីចាប់ផ្តើម (XC8-2269) នៅពេលដែលអថេរច្រើនជាងមួយនៅក្នុងឯកតាបកប្រែត្រូវបានដាក់ក្នុងផ្នែកមួយ (ដោយប្រើ __section ឬ __attribute__((section))) ហើយអថេរបែបនេះដំបូងត្រូវបានចាប់ផ្តើមសូន្យ ឬមិនមានកម្មវិធីចាប់ផ្តើមទេ កម្មវិធីចាប់ផ្តើមសម្រាប់ អថេរផ្សេងទៀតនៅក្នុងឯកតាបកប្រែដូចគ្នាដែលត្រូវបានដាក់ក្នុងផ្នែកដូចគ្នាត្រូវបានបាត់បង់។

កំណែ 2.29 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)
គ្មាន។

កំណែ 2.20

  • កំហុសជាមួយពាក្យបញ្ជាវែង (XC8-1983) នៅពេលប្រើគោលដៅ AVR កម្មវិធីចងក្រងអាចឈប់ជាមួយនឹងឯកសារដែលរកមិនឃើញកំហុស ប្រសិនបើបន្ទាត់ពាក្យបញ្ជាមានទំហំធំខ្លាំង និងមានតួអក្សរពិសេសដូចជា សម្រង់ សញ្ញាថយក្រោយ ជាដើម។
  • ផ្នែក rodata ដែលមិនបានកំណត់ (XC8-1920) ឧបករណ៍ភ្ជាប់ AVR បានបរាជ័យក្នុងការកំណត់អង្គចងចាំសម្រាប់ផ្នែក rodata ផ្ទាល់ខ្លួន នៅពេលសាងសង់សម្រាប់ស្ថាបត្យកម្ម avrxmega3 និង avrtiny ដែលអាចធ្វើឱ្យមានកំហុសត្រួតលើគ្នានៃអង្គចងចាំ

កំណែ 2.19 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)
គ្មាន។

កំណែ 2.10

  • ការបរាជ័យនៃការផ្លាស់ប្តូរទីតាំង (XC8-1891) អ្នកបែងចែកសមល្អបំផុតគឺទុក 'រន្ធ' នៃការចងចាំនៅចន្លោះផ្នែកបន្ទាប់ពីការបន្ធូរបន្ថយតំណភ្ជាប់។ ក្រៅពីការបំបែកអង្គចងចាំ នេះបង្កើនលទ្ធភាពនៃការបរាជ័យនៃការផ្លាស់ប្តូរទីតាំងរបស់តំណភ្ជាប់ដែលទាក់ទងនឹងការលោតដែលទាក់ទងនឹងកុំព្យូទ័រ ឬការហៅចេញក្រៅជួរ។
  • ការណែនាំដែលមិនត្រូវបានផ្លាស់ប្តូរដោយការសម្រាក (XC8-1889) ការសំរាកលំហែ Linker មិនបានកើតឡើងសម្រាប់ការលោត ឬហៅការណែនាំដែលគោលដៅអាចទៅដល់បាន ប្រសិនបើសម្រាក។
  • បាត់ មុខងារ (XC8E-388) និយមន័យជាច្រើនពី ដូចជា clock_div_t និង clock_prescale_set() មិនត្រូវបានកំណត់សម្រាប់ឧបករណ៍ រួមទាំង ATmega324PB, ATmega328PB, ATtiny441, និង ATtiny841។
  • បាត់ម៉ាក្រូ ម៉ាក្រូរបស់ឧបករណ៍ដំណើរការមុន _XC8_MODE_, __XC8_VERSION, __XC និង __XC8 កំណត់ដោយស្វ័យប្រវត្តិដោយកម្មវិធីចងក្រង។ ទាំងនេះ​ឥឡូវ​អាច​ប្រើ​បាន​ហើយ។

កំណែ 2.05

  • កំហុសក្នុងការចងក្រងខាងក្នុង (XC8-1822) នៅពេលបង្កើតនៅក្រោមវីនដូ កំហុសក្នុងការចងក្រងខាងក្នុងអាចនឹងត្រូវបានបង្កើតឡើងនៅពេលបង្កើនប្រសិទ្ធភាពកូដ។
  • លើស RAM មិនត្រូវបានរកឃើញ (XC8-1800, XC8-1796) កម្មវិធីដែលលើសពី RAM ដែលអាចប្រើបានមិនត្រូវបានរកឃើញដោយអ្នកចងក្រងក្នុងស្ថានភាពមួយចំនួន ដែលបណ្តាលឱ្យមានការបរាជ័យនៃកូដពេលដំណើរការ។
  • អង្គចងចាំពន្លឺដែលលុបចោល (XC8-1792) សម្រាប់ឧបករណ៍ avrxmega3 និង avrtiny ផ្នែកនៃអង្គចងចាំពន្លឺអាចនឹងត្រូវបានទុកចោលដោយ MPLAB X IDE ដោយមិនកំណត់កម្មវិធី។
  • ការបរាជ័យក្នុងការប្រតិបត្តិមេ (XC8-1788) នៅក្នុងស្ថានភាពមួយចំនួនដែលកម្មវិធីមិនមានអថេរសកលដែលបានកំណត់ កូដចាប់ផ្តើមពេលដំណើរការមិនចេញទេ ហើយមុខងារ main() មិនត្រូវបានទៅដល់ឡើយ។
  • ព័ត៌មានអង្គចងចាំមិនត្រឹមត្រូវ (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 ឬការកំណត់ fuses ដោយប្រើ config pragma អាចនឹងបណ្តាលឱ្យមានការចាប់ផ្តើមទិន្នន័យមិនត្រឹមត្រូវ និង/ឬចាក់សោការប្រតិបត្តិកម្មវិធីនៅក្នុងកូដមេនៃពេលដំណើរការមុនពេលដំណើរការ។ )
  • កំហុស fuse ជាមួយឧបករណ៍តូចៗ (XC8-1778, XC8-1742) ឧបករណ៍ attiny4/5/9/10/20/40 មានប្រវែង fuse មិនត្រឹមត្រូវដែលបានបញ្ជាក់នៅក្នុងឯកសារបឋមកថារបស់ពួកគេ ដែលនាំឱ្យមានកំហុស linker នៅពេលព្យាយាមបង្កើតកូដដែលកំណត់ fuses .
  • កំហុសនៃការបែងចែក (XC8-1777) កំហុសនៃការបែងចែកបណ្តោះអាសន្នត្រូវបានកែតម្រូវ។
  • Assembler crash (XC8-1761) avr-as assembler អាចគាំងនៅពេលដែល compiler ដំណើរការនៅក្រោម Ubuntu 18។
  • វត្ថុមិនត្រូវបានសម្អាត (XC8-1752) វត្ថុរយៈពេលផ្ទុកឋិតិវន្តដែលមិនទាន់បានកំណត់ ប្រហែលជាមិនត្រូវបានសម្អាតដោយលេខកូដចាប់ផ្ដើមពេលដំណើរការទេ។
  • មិនអើពើការបញ្ជាក់ឧបករណ៍ដែលជាប់ទាក់ទងគ្នា (XC8-1749) កម្មវិធីចងក្រងមិនបង្កើតកំហុសទេ នៅពេលដែលជម្រើសនៃការបញ្ជាក់ឧបករណ៍ច្រើនត្រូវបានប្រើ និងចង្អុលបង្ហាញឧបករណ៍ផ្សេងៗ។
  • ខូចការចងចាំដោយ heap (XC8-1748) និមិត្តសញ្ញា __heap_start កំពុងត្រូវបានកំណត់មិនត្រឹមត្រូវ ដែលបណ្តាលឱ្យមានលទ្ធភាពនៃអថេរធម្មតាត្រូវបានខូចដោយ heap ។
  • កំហុសផ្លាស់ប្តូរទីតាំងរបស់ Linker (XC8-1739) កំហុសផ្លាស់ប្តូរទីតាំងរបស់តំណភ្ជាប់អាចត្រូវបានបញ្ចេញនៅពេលដែលកូដមាន rjmp ឬ rcall ដែលមានគោលដៅពិតប្រាកដ 4k បៃឆ្ងាយ។

កំណែ 2.00
គ្មាន។

បញ្ហាដែលគេស្គាល់

ខាងក្រោមនេះគឺជាដែនកំណត់ក្នុងប្រតិបត្តិការរបស់អ្នកចងក្រង។ ទាំងនេះអាចជាការរឹតបន្តឹងការសរសេរកូដទូទៅ ឬគម្លាតពីព័ត៌មានដែលមាននៅក្នុងសៀវភៅណែនាំរបស់អ្នកប្រើ។ ស្លាកសញ្ញាតង្កៀបនៅក្នុងចំណងជើងគឺជាការកំណត់អត្តសញ្ញាណបញ្ហានៅក្នុងមូលដ្ឋានទិន្នន័យតាមដាន។ វាអាចមានប្រយោជន៍ ប្រសិនបើអ្នកត្រូវការទាក់ទងផ្នែកជំនួយ។ ធាតុទាំងនោះដែលមិនមានស្លាកគឺជាដែនកំណត់ដែលពណ៌នាអំពី modi operandi ហើយដែលទំនងជានៅតែមានសុពលភាពជាអចិន្ត្រៃយ៍។

ការរួមបញ្ចូល MPLAB X IDE

  • ការរួមបញ្ចូល MPLAB IDE ប្រសិនបើ Compiler នឹងត្រូវប្រើពី MPLAB IDE នោះអ្នកត្រូវតែដំឡើង MPLAB IDE មុនពេលដំឡើង Compiler ។
  • ព័ត៌មានបំបាត់កំហុសអារេ (XC8-3157) ព័ត៌មានបំបាត់កំហុសដែលផលិតដោយអ្នកចងក្រងមិនបង្ហាញប្រភេទវត្ថុសម្រាប់អារេក្នុងចន្លោះអាសយដ្ឋាន __memx ឱ្យបានត្រឹមត្រូវទេ។ វានឹងការពារការសង្កេតវត្ថុនៅក្នុង IDE ។

ការបង្កើតកូដ

  • Segfault with section-anchors option (XC8-3045) កម្មវិធីដែលបានកំណត់មុខងារជាមួយនឹងបញ្ជីអាគុយម៉ង់អថេរ ហើយដែលប្រើជម្រើស -fsection-anchors អាចនឹងបង្កឱ្យមានកំហុសផ្នែកចងក្រងខាងក្នុង៖ កំហុសការបែងចែក
  • ព័ត៌មានបំបាត់កំហុសចេញពីការធ្វើសមកាលកម្ម (XC8-2948) នៅពេលដែលការបង្កើនប្រសិទ្ធភាពការបន្ធូរបន្ថយកម្មវិធីភ្ជាប់នឹងបង្រួញការណែនាំ (សម្រាប់ឧ។ample call to rcall សេចក្តីណែនាំ) បន្ទាត់ប្រភពទៅនឹងការគូសផែនទីអាសយដ្ឋានប្រហែលជាមិននៅស៊ីសង្វាក់គ្នាទេ នៅពេលដែលមានប្រតិបត្តិការបង្រួមច្រើនជាងមួយកើតឡើងនៅក្នុងផ្នែកមួយ។ នៅក្នុង ឧample, មានការហៅទូរស័ព្ទចំនួនពីរទៅកាន់ foo ដែលបញ្ចប់ដោយការសម្រាកចំពោះការហៅដែលទាក់ទង។
  • ការបរាជ័យក្នុងការបែងចែកអង្គចងចាំ PA (XC8-2881) នៅពេលប្រើកម្មវិធីបង្កើនប្រសិទ្ធភាពអរូបីតាមនីតិវិធី អ្នកភ្ជាប់អាចរាយការណ៍ពីកំហុសក្នុងការបែងចែកអង្គចងចាំ នៅពេលដែលទំហំកូដជិតនឹងបរិមាណនៃអង្គចងចាំកម្មវិធីដែលមាននៅលើឧបករណ៍ ទោះបីជាកម្មវិធីគួរតែអាចកំណត់កម្មវិធីដែលអាចប្រើបានក៏ដោយ។ លំហ។
  • Smart-IO (XC8-2872) មុខងារ smart-io របស់អ្នកចងក្រងនឹងបង្កើតកូដត្រឹមត្រូវ ប៉ុន្តែអនុភាពល្អបំផុតសម្រាប់មុខងារ snprintf ប្រសិនបើមុខងារ const-data-in-progmem ត្រូវបានបិទ ឬប្រសិនបើឧបករណ៍មានទាំងអស់របស់វា។ flash ត្រូវបានគូសវាសទៅក្នុងអង្គចងចាំទិន្នន័យ។
  • សូម្បីតែ Smart-IO (XC8-2869) មុខងារ smart-io របស់អ្នកចងក្រងនឹងបង្កើតកូដត្រឹមត្រូវ ប៉ុន្តែល្អបំផុតនៅពេលជម្រើស -flto និង -fno-builtin ត្រូវបានប្រើប្រាស់ទាំងពីរ។
  • ការដាក់ទិន្នន័យសម្រាប់តែអានបានល្អបំផុត (XC8-2849) បច្ចុប្បន្នឧបករណ៍ភ្ជាប់មិនដឹងពីផ្នែកអង្គចងចាំ APPCODE និង APPDATA ឬការបែងចែក [No-]Read-While-Write នៅក្នុងផែនទីអង្គចងចាំទេ។ ជាលទ្ធផល មានឱកាសតិចតួចដែលអ្នកភ្ជាប់អាចបែងចែកទិន្នន័យបានតែអាននៅក្នុងតំបន់អង្គចងចាំដែលមិនសមស្រប។ ឱកាសនៃទិន្នន័យមិនត្រឹមត្រូវកើនឡើង ប្រសិនបើមុខងារ const-data-in-progmem ត្រូវបានបើក ជាពិសេសប្រសិនបើមុខងារ const-data-in-confg-mapped-progmem ត្រូវបានបើកផងដែរ។ មុខងារទាំងនេះអាចត្រូវបានបិទប្រសិនបើចាំបាច់។
  • លំដាប់ដំណើរការឯកសារវត្ថុ (XC8-2863) លំដាប់ដែលឯកសារវត្ថុនឹងត្រូវបានដំណើរការដោយអ្នកភ្ជាប់អាចខុសគ្នាដោយផ្អែកលើការប្រើប្រាស់ការបង្កើនប្រសិទ្ធភាពអរូបីតាមនីតិវិធី (-mpa ជម្រើស) ។ វានឹងប៉ះពាល់តែកូដដែលកំណត់មុខងារខ្សោយនៅទូទាំងម៉ូឌុលច្រើន។
  • Linker error with absolute (XC8-2777) នៅពេលដែល object ត្រូវបានធ្វើឡើង absolute at address នៅដើម RAM ហើយ object uninitialized ក៏ត្រូវបានកំណត់ផងដែរ កំហុស linker អាចនឹងត្រូវបានកេះ។
  • លេខសម្គាល់ការភ្ញាក់ខ្លី (XC8-2775) សម្រាប់ឧបករណ៍ ATA5700/2 ការចុះឈ្មោះ PHID0/1 ត្រូវបានកំណត់ត្រឹមតែទទឹង 16 ប៊ីត ជាជាង 32 ប៊ីត។
  • Linker គាំងនៅពេលហៅនិមិត្តសញ្ញា (XC8-2758) តំណភ្ជាប់អាចគាំងប្រសិនបើជម្រើសកម្មវិធីបញ្ជា -mrelax ត្រូវបានប្រើនៅពេលដែលកូដប្រភពហៅនិមិត្តសញ្ញាដែលត្រូវបានកំណត់ដោយប្រើជម្រើស - Wl,-defsym linker ។
  • ការចាប់ផ្តើមមិនត្រឹមត្រូវ (XC8-2679) មានភាពមិនស្របគ្នារវាងកន្លែងដែលតម្លៃដំបូងសម្រាប់វត្ថុទំហំបៃ/ឋិតិវន្តមួយចំនួនត្រូវបានដាក់ក្នុងអង្គចងចាំទិន្នន័យ និងកន្លែងដែលអថេរនឹងត្រូវបានចូលប្រើនៅពេលដំណើរការ។
  • ការហៅមុខងារដោយប្រយោលមិនល្អ (XC8-2628) ក្នុងករណីខ្លះ ការហៅមុខងារដែលបានធ្វើឡើងតាមរយៈទ្រនិចមុខងារដែលរក្សាទុកជាផ្នែកនៃរចនាសម្ព័ន្ធអាចនឹងបរាជ័យ។
  • strtof ត្រឡប់សូន្យសម្រាប់អណ្តែតគោលគោលដប់ប្រាំមួយ (XC8-2626) បណ្ណាល័យមានមុខងារ strtof() et al និង scanf() et al តែងតែបំប្លែងលេខគោលដប់ប្រាំមួយ ដែលមិនបញ្ជាក់និទស្សន្តទៅជាសូន្យ។ សម្រាប់អតីតampលេ៖ strtof(“0x1”, &endptr); នឹងត្រឡប់តម្លៃ 0 មិនមែន 1 ទេ។
  • ការផ្ញើសាររបស់ទីប្រឹក្សាជង់មិនត្រឹមត្រូវ (XC8-2542, XC8-2541) ក្នុងករណីខ្លះ ការព្រមានរបស់ទីប្រឹក្សាជង់ទាក់ទងនឹងការបង្កើតឡើងវិញ ឬជង់មិនកំណត់ដែលបានប្រើ (អាចតាមរយៈការប្រើប្រាស់ alloca()) មិនត្រូវបានបញ្ចេញទេ។
  • ការបរាជ័យជាមួយលេខកូដរំខានស្ទួន (XC8-2421) ប្រសិនបើមុខងាររំខានច្រើនជាងមួយមានតួដូចគ្នា អ្នកចងក្រងអាចមានលទ្ធផលសម្រាប់មុខងាររំខានមួយ ហៅមួយទៀត។ វានឹងនាំឱ្យការចុះឈ្មោះដែលបានហៅចូលទាំងអស់ត្រូវបានរក្សាទុកដោយមិនចាំបាច់ ហើយការរំខាននឹងត្រូវបានបើក សូម្បីតែមុនពេលការផ្សាយរបស់អ្នកដោះស្រាយការរំខានបច្ចុប្បន្នបានដំណើរការ ដែលអាចនាំឱ្យមានការបរាជ័យកូដ។
  • លទ្ធផលមិនល្អជាមួយនឹងផ្លូវ DFP មិនត្រឹមត្រូវ (XC8-2376) ប្រសិនបើកម្មវិធីចងក្រងត្រូវបានហៅជាមួយផ្លូវ DFP មិនត្រឹមត្រូវ ហើយឯកសារ 'spec' មានសម្រាប់ឧបករណ៍ដែលបានជ្រើសរើសនោះ អ្នកចងក្រងមិនរាយការណ៍អំពីកញ្ចប់គ្រួសារឧបករណ៍ដែលបាត់ទេ ហើយជំនួសវិញដោយជ្រើសរើស 'លក្ខណៈពិសេស' ឯកសារ ដែលបន្ទាប់មកអាចនាំឱ្យមានលទ្ធផលមិនត្រឹមត្រូវ។ ឯកសារ 'ជាក់លាក់' ប្រហែលជាមិនទាន់សម័យជាមួយ DFPs ដែលបានចែកចាយទេ ហើយត្រូវបានបម្រុងទុកសម្រាប់ប្រើជាមួយការធ្វើតេស្តចងក្រងខាងក្នុងតែប៉ុណ្ណោះ។
  • ការត្រួតលើគ្នានៃអង្គចងចាំមិនអាចរកឃើញ (XC8-1966) កម្មវិធីចងក្រងមិនបានរកឃើញការត្រួតលើគ្នានៃអង្គចងចាំនៃវត្ថុដែលបានធ្វើឡើងដាច់ខាតនៅអាសយដ្ឋានមួយ (តាមរយៈ __at()) និងវត្ថុផ្សេងទៀតដោយប្រើអ្នកបញ្ជាក់ __section() ហើយដែលត្រូវបានភ្ជាប់ទៅអាសយដ្ឋានដូចគ្នា។
  • ការបរាជ័យជាមួយនឹងមុខងារបណ្ណាល័យ និង __memx (XC8-1763) ហៅថា libgccoat functions ជាមួយនឹងអាគុយម៉ង់ក្នុងចន្លោះអាសយដ្ឋាន __memx អាចនឹងបរាជ័យ។ ចំណាំថាទម្លាប់បណ្ណាល័យត្រូវបានហៅពីប្រតិបត្តិករ C មួយចំនួន ដូច្នេះឧទាហរណ៍ampដូច្នេះ កូដខាងក្រោមត្រូវបានប៉ះពាល់៖ ត្រឡប់ regFloatVar > memxFloatVar;
  • ការអនុវត្ត libgcc មានកំណត់ (AVRTC-731) សម្រាប់ផលិតផល ATTiny4/5/9/10/20/40 ការអនុវត្តបណ្ណាល័យ C/Math ស្តង់ដារនៅក្នុង libgcc មានកម្រិត ឬមិនមានវត្តមាន។
  • ការកំណត់អង្គចងចាំកម្មវិធី (AVRTC-732) រូបភាពអង្គចងចាំកម្មវិធីលើសពី 128 kb ត្រូវបានគាំទ្រដោយ toolchain ។ ទោះយ៉ាងណាក៏ដោយ មានករណីដែលគេស្គាល់ថា linker aborts ដោយគ្មានការបន្ធូរបន្ថយ និងដោយគ្មានសារកំហុសមានប្រយោជន៍ ជាជាងបង្កើត stubs មុខងារដែលត្រូវការ នៅពេលដែលជម្រើស -mrelax ត្រូវបានប្រើ។
  • ការកំណត់ទំហំឈ្មោះ (AVRTC-733) ចន្លោះអាសយដ្ឋានដែលមានឈ្មោះត្រូវបានគាំទ្រដោយខ្សែសង្វាក់ឧបករណ៍ អាស្រ័យនឹងដែនកំណត់ដែលបានរៀបរាប់នៅក្នុងផ្នែកណែនាំរបស់អ្នកប្រើ ការកំណត់ប្រភេទពិសេស។
  • តំបន់ពេលវេលា The មុខងារបណ្ណាល័យសន្មត់ថា GMT និងមិនគាំទ្រតំបន់ម៉ោងក្នុងស្រុក ដូច្នេះ localtime() នឹងត្រឡប់ពេលវេលាដូចគ្នាជាមួយ gmtime() សម្រាប់ឧ។ampលេ

ឯកសារ/ធនធាន

MICROCHIP XC8 C Compiler Version 2.45 Release Notes សម្រាប់ AVR MCU [pdf] សេចក្តីណែនាំ
AVR MCU, XC8 C, XC8 C Compiler Version 2.45 Release Notes for AVR MCU, Compiler Version 2.45 Release Notes for AVR MCU, Version 2.45 Release Notes for AVR MCU, Release Notes for AVR MCU, Notes for AVR MCU, AVR MCU

ឯកសារយោង

ទុកមតិយោបល់

អាសយដ្ឋានអ៊ីមែលរបស់អ្នកនឹងមិនត្រូវបានផ្សព្វផ្សាយទេ។ វាលដែលត្រូវការត្រូវបានសម្គាល់ *