MPLAB XC8 C Compiler Version 2.39 Release Notes សម្រាប់ AVR MCU
ការណែនាំអ្នកប្រើប្រាស់
ឯកសារនេះមានព័ត៌មានសំខាន់ៗដែលទាក់ទងនឹងឧបករណ៍ចងក្រង MPLAB XC8 C នៅពេលកំណត់គោលដៅឧបករណ៍មីក្រូជីប AVR ។ សូមអានវាមុនពេលដំណើរការកម្មវិធីនេះ។
សូមមើលការចេញផ្សាយការចងក្រង MPLAB XC8 សម្រាប់ឯកសារ PIC ប្រសិនបើអ្នកកំពុងប្រើឧបករណ៍ចងក្រងសម្រាប់ឧបករណ៍ PIC 8 ប៊ីត។
ជាងview
1.1. សេចក្តីផ្តើម
ការចេញផ្សាយកម្មវិធីចងក្រង Microchip MPLAB® XC8 C នេះគឺជាការចងក្រងសុវត្ថិភាពមុខងារ ដោយផ្អែកលើការចេញផ្សាយ v2.36 នៃកម្មវិធីចងក្រងនេះហើយដែលឥឡូវនេះគាំទ្រអាជ្ញាប័ណ្ណម៉ាស៊ីនមេបណ្តាញ។
១.២. កាលបរិច្ឆេទចេញផ្សាយ
កាលបរិច្ឆេទចេញផ្សាយជាផ្លូវការនៃកំណែចងក្រងនេះគឺថ្ងៃទី 27 ខែមករា ឆ្នាំ 2022។
១.៣. កំណែមុន។
កំណែចងក្រង MPLAB XC8 C ពីមុនគឺ 2.36 ដែលបានចេញផ្សាយថ្ងៃទី 25 ខែមករា ឆ្នាំ 2022។
១.៤. សៀវភៅណែនាំសុវត្ថិភាពមុខងារ
សៀវភៅណែនាំសុវត្ថិភាពមុខងារសម្រាប់អ្នកចងក្រង MPLAB XC មាននៅក្នុងកញ្ចប់ឯកសារ នៅពេលអ្នកទិញអាជ្ញាប័ណ្ណសុវត្ថិភាពមុខងារ។
១.៥. អាជ្ញាប័ណ្ណសមាសភាគ និងកំណែ® គាត់ MPLAB
XC8 C Compiler សម្រាប់ឧបករណ៍ AVR MCUs ត្រូវបានសរសេរ និងចែកចាយក្រោមអាជ្ញាប័ណ្ណសាធារណៈទូទៅរបស់ GNU (GPL) ដែលមានន័យថាកូដប្រភពរបស់វាត្រូវបានចែកចាយដោយសេរី និងអាចរកបានជាសាធារណៈ។
កូដប្រភពសម្រាប់ឧបករណ៍នៅក្រោម GNU GPL អាចត្រូវបានទាញយកដាច់ដោយឡែកពី Microchip webគេហទំព័រ។ អ្នកអាចអាន GNU GPL នៅក្នុងឯកសារដែលមានទីតាំងថតរងនៃបញ្ជីដំឡើង license.txt avr/doc របស់អ្នក។ ការពិភាក្សាទូទៅអំពីគោលការណ៍ដែលស្ថិតនៅក្រោម GPL អាចត្រូវបានរកឃើញនៅទីនេះ។
កូដជំនួយដែលបានផ្តល់សម្រាប់ឯកសារបឋមកថា ស្គ្រីបតំណភ្ជាប់ និងបណ្ណាល័យពេលដំណើរការគឺជាកូដកម្មសិទ្ធិ និងមិនត្រូវបានគ្របដណ្តប់ក្រោម GPL ទេ។
កម្មវិធីចងក្រងនេះគឺជាការអនុវត្តន៍ GCC កំណែ 5.4.0, binutils កំណែ 2.26 និងប្រើ avr-libc កំណែ 2.0.0 ។
1.6. តម្រូវការប្រព័ន្ធ
កម្មវិធីចងក្រង MPLAB XC8 C និងកម្មវិធីផ្តល់អាជ្ញាប័ណ្ណដែលវាប្រើប្រាស់មានសម្រាប់ប្រព័ន្ធប្រតិបត្តិការជាច្រើន រួមទាំងកំណែ 64 ប៊ីតដូចខាងក្រោម៖ ការបោះពុម្ពវិជ្ជាជីវៈរបស់ Microsoft Windows 10; អ៊ូប៊ុនទូ 18.04; និង macOS 10.15.5 ។ Binaries សម្រាប់ Windows ត្រូវបានចុះហត្ថលេខាដោយកូដ។ ប្រព័ន្ធគោលពីរសម្រាប់ macOS ត្រូវបានចុះហត្ថលេខាដោយកូដ និងកំណត់សំគាល់។
ប្រសិនបើអ្នកកំពុងដំណើរការម៉ាស៊ីនមេអាជ្ញាប័ណ្ណបណ្តាញ មានតែកុំព្យូទ័រដែលមានប្រព័ន្ធប្រតិបត្តិការដែលគាំទ្រដោយអ្នកចងក្រងប៉ុណ្ណោះដែលអាចត្រូវបានប្រើដើម្បីបង្ហោះម៉ាស៊ីនមេអាជ្ញាប័ណ្ណ។ ចាប់ពី xclm កំណែ 2.0 ម៉ាស៊ីនមេអាជ្ញាប័ណ្ណបណ្តាញអាចត្រូវបានដំឡើងនៅលើវេទិកា Microsoft Windows Server ប៉ុន្តែម៉ាស៊ីនមេអាជ្ញាប័ណ្ណមិនចាំបាច់ដំណើរការលើកំណែម៉ាស៊ីនមេនៃប្រព័ន្ធប្រតិបត្តិការទេ។
១.៧. ឧបករណ៍ដែលគាំទ្រ
កម្មវិធីចងក្រងនេះគាំទ្រឧបករណ៍ 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 មុនពេលដំឡើងកម្មវិធីចងក្រង។ ដំណើរការកម្មវិធីដំឡើង (Windows), (Linux) ឬ (macOS) .exe .run .app compiler ឧ. ហើយធ្វើតាមការណែនាំនៅលើអេក្រង់។
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 សូមវាយពាក្យបញ្ជា Run (Windows logo key + R)។ %temp% វានឹងបើកប្រអប់ explorer ឯកសារដែលបង្ហាញថតនោះ ហើយនឹងអនុញ្ញាតឱ្យអ្នកកំណត់ផ្លូវនៃថតនោះ។
១.១០. ឯកសារចងក្រង
ការណែនាំរបស់អ្នកប្រើរបស់អ្នកចងក្រងអាចត្រូវបានបើកពីទំព័រ HTML ដែលបើកនៅក្នុងកម្មវិធីរុករករបស់អ្នក នៅពេលចុចប៊ូតុងជំនួយពណ៌ខៀវនៅក្នុងផ្ទាំងគ្រប់គ្រង MPLAB X IDE ដូចដែលបានបង្ហាញនៅក្នុងរូបថតអេក្រង់។
ប្រសិនបើអ្នកកំពុងបង្កើតគោលដៅ AVR 8 ប៊ីត មគ្គុទ្ទេសក៍ MPLAB® XC8 C Compiler User's® សម្រាប់ AVR
MCU មានព័ត៌មានអំពីជម្រើសចងក្រងទាំងនោះ និងលក្ខណៈពិសេសដែលអាចអនុវត្តបានចំពោះស្ថាបត្យកម្មនេះ។
៥.៧. ជំនួយអតិថិជន
Microchip ស្វាគមន៍របាយការណ៍កំហុស ការផ្ដល់យោបល់ ឬយោបល់ទាក់ទងនឹងកំណែចងក្រងនេះ។ សូមដឹកនាំរបាយការណ៍កំហុស ឬសំណើលក្ខណៈពិសេសតាមរយៈប្រព័ន្ធជំនួយ។
ការធ្វើបច្ចុប្បន្នភាពឯកសារ
សម្រាប់ឯកសារ MPLAB XC8 នៅលើអ៊ីនធឺណិត និងកំណែចុងក្រោយបំផុត សូមចូលទៅកាន់បណ្តាញរបស់ Microchip
ឯកសារបច្ចេកទេស webគេហទំព័រ។
ឯកសារ AVR ថ្មី ឬបានធ្វើបច្ចុប្បន្នភាពនៅក្នុងការចេញផ្សាយនេះ៖
ការដំឡើង និងអាជ្ញាប័ណ្ណ MPLAB® XC C Compilers (DS50002059) កំណែ L
មគ្គុទ្ទេសក៍ឯកសារយោងបណ្ណាល័យស្តង់ដារមីក្រូឈីប Unified ពិពណ៌នាអំពីឥរិយាបថ និងចំណុចប្រទាក់ទៅនឹងមុខងារដែលបានកំណត់ដោយបណ្ណាល័យស្តង់ដារមីក្រូឈីប ក៏ដូចជាការប្រើប្រាស់គោលបំណងនៃប្រភេទបណ្ណាល័យ និងម៉ាក្រូ។ ព័ត៌មានមួយចំនួនពីមុនមាននៅក្នុង MPLA® XC8 C Compiler User!s Guide® សម្រាប់ AVR
MCU ព័ត៌មានបណ្ណាល័យសម្រាប់ឧបករណ៍ជាក់លាក់នៅតែមាននៅក្នុងការណែនាំចងក្រងនេះ។
មគ្គុទ្ទេសក៍របស់អ្នកប្រើ Hexmate ត្រូវបានរួមបញ្ចូលនៅក្នុងថតនៅក្នុងការចេញផ្សាយនេះ។ មគ្គុទ្ទេសក៍នេះត្រូវបានបម្រុងទុកសម្រាប់ឯកសារដែលដំណើរការ Hexmate ជាកម្មវិធីឯករាជ្យ។
ផ្នែកខាងក្រោមផ្តល់នូវការកែតម្រូវ និងព័ត៌មានបន្ថែមចំពោះអ្វីដែលបានរកឃើញនៅក្នុងការណែនាំរបស់អ្នកប្រើប្រាស់ដែលបានដឹកជញ្ជូនជាមួយកម្មវិធីចងក្រង។
២.១. ជម្រើសទម្រង់ smart-io
ជម្រើស-msmart-io-format=fmt fmt ដែលជាខ្សែអក្សរដែលមានទម្រង់ជាក់លាក់នៃការបំប្លែង IO ជូនដំណឹងដល់អ្នកចងក្រងថាការបញ្ជាក់ដែលបានរាយបញ្ជីត្រូវបានប្រើប្រាស់ដោយមុខងារ IO ឆ្លាតវៃ។
ដើម្បីកាត់បន្ថយទំហំកូដ កម្មវិធីចងក្រងប្ដូរតាមបំណងនូវកូដបណ្ណាល័យដែលពាក់ព័ន្ធជាមួយនឹងការបោះពុម្ព និងស្កេនគ្រួសារនៃមុខងារ IO ឆ្លាតវៃ ដោយផ្អែកលើការបញ្ជាក់ការបំប្លែងដែលមាននៅក្នុងខ្សែអក្សរទ្រង់ទ្រាយដែលបានដាក់នៅទូទាំងការហៅទៅកាន់មុខងារទាំងនេះ។ មុខងារនេះគឺដោយស្វ័យប្រវត្តិទាំងស្រុង ហើយមិនអាចបិទបានទេ។
នៅក្នុងស្ថានភាពខ្លះ កម្មវិធីចងក្រងមិនអាចកំណត់ព័ត៌មានប្រើប្រាស់ពីការហៅមុខងារ IO ដែលបានធ្វើទ្រង់ទ្រាយបានទេ។ ប្រសិនបើជម្រើសត្រូវបានប្រើ ការបញ្ជាក់ការបម្លែងដែលទាមទារសម្រាប់មុខងារទាំងនេះត្រូវបានទទួលពីខ្សែអក្សរ។ បើមិនដូច្នេះទេ កម្មវិធីចងក្រងមិនធ្វើការសន្មត់អំពីរបៀបដែលអនុគមន៍ -msmart-io-format=fmt fmt ត្រូវបានប្រើប្រាស់ និងធានាថាមុខងារ IO ដែលបានធ្វើទ្រង់ទ្រាយពេញលេញត្រូវបានភ្ជាប់ទៅក្នុងរូបភាពកម្មវិធីចុងក្រោយ។
សម្រាប់អតីតampដូច្នេះ សូមពិចារណាការហៅទូរសព្ទខាងក្រោមទៅកាន់មុខងារ IO ឆ្លាតវៃ។
vscanf(“%d:%li”, va_list1);
vprintf(“%-s%d”, va_list2);
vprintf(fmt1, va_list3);// ការប្រើប្រាស់មិនច្បាស់លាស់
vscanf(fmt2, va_list4);// ការប្រើប្រាស់មិនច្បាស់លាស់
នៅពេលដំណើរការការហៅទូរសព្ទពីរចុងក្រោយ អ្នកចងក្រងមិនអាចកាត់ព័ត៌មានការប្រើប្រាស់ណាមួយពីខ្សែអក្សរទ្រង់ទ្រាយ ឬអាគុយម៉ង់បានទេ។ នៅក្នុងករណីទាំងនេះ ជម្រើស -msmart-io-format អាចត្រូវបានប្រើ ហើយនឹងអនុញ្ញាតឱ្យបង្កើតមុខងារ I0 ដែលមានទ្រង់ទ្រាយល្អបំផុតបន្ថែមទៀត ដូច្នេះកាត់បន្ថយទំហំកូដរបស់កម្មវិធី។ សម្រាប់អតីតample ប្រសិនបើខ្សែទម្រង់ដែលចង្អុលទៅ fmtl និង fmt2 រួមគ្នាប្រើតែឧបករណ៍បំប្លែង "%d", "%i" និង "%s" នោះ -msmart-io-format=fmt=”%d%i%s "ជម្រើសគួរតែត្រូវបានចេញ។
ខ្សែអក្សរ tint អាចមានការបញ្ជាក់ការបម្លែងត្រឹមត្រូវណាមួយ រួមទាំងទង់ជាតិ និងការកែប្រែ (សម្រាប់ឧample “%-13. 91s”) ហើយគួរតែឆ្លុះបញ្ចាំងយ៉ាងពិតប្រាកដនូវអ្វីដែលបានប្រើដោយមុខងារដែលការប្រើប្រាស់មានភាពមិនច្បាស់លាស់។ ការខកខានក្នុងការរួមបញ្ចូលការបញ្ជាក់នៅក្នុង ប៊ីត អាគុយម៉ង់ដែលវាត្រូវបានប្រើដោយមុខងារ I0 ដែលធ្វើទ្រង់ទ្រាយអាចបណ្តាលឱ្យបរាជ័យកូដ។
ប្រសិនបើ fmt គឺជាខ្សែអក្សរទទេ ឬ ឬមិនមានការកំណត់ការបំប្លែងដែលអាចយល់បាន ការព្រមាននឹងត្រូវបានចេញ ហើយមុខងារ I0 ដែលត្រូវបានធ្វើទ្រង់ទ្រាយពេញលេញត្រូវបានភ្ជាប់ទៅក្នុងរូបភាពកម្មវិធីចុងក្រោយ។
ជម្រើសនេះអាចត្រូវបានប្រើប្រាស់ច្រើនដងនៅលើបន្ទាត់ពាក្យបញ្ជា។ លក្ខណៈបច្ចេកទេសនៃការបំប្លែងដែលបានប្រើជាមួយជម្រើសនីមួយៗត្រូវបានបង្គរ។
២.២. ជម្រើស omit-frame-pointer
ជម្រើស – f omit- frame-pointer ណែនាំអ្នកចងក្រងឱ្យប្រើទ្រនិចជង់ដោយផ្ទាល់ ដើម្បីចូលប្រើវត្ថុនៅលើជង់ ហើយប្រសិនបើអាចធ្វើបាន សូមលុបកូដដែលរក្សាទុក ចាប់ផ្តើម និងស្ដារការចុះឈ្មោះស៊ុមឡើងវិញ។ វាត្រូវបានបើកដោយស្វ័យប្រវត្តិនៅគ្រប់កម្រិតបង្កើនប្រសិទ្ធភាពដែលមិនមែនជាសូន្យ។
ការបដិសេធជម្រើស ដោយប្រើ -fno-omit- frame-pointer អាចជួយកែកំហុសកូដដែលបានកែលម្អ។ ទោះយ៉ាងណាក៏ដោយ ជម្រើសនេះមិនធានាថាទ្រនិចស៊ុមនឹងត្រូវបានប្រើជានិច្ចទេ។
២.៣. ជម្រើស unroll-loops
-funrol I-loops និង -(ជម្រើស unroll-all-loops គ្រប់គ្រងការបង្កើនប្រសិទ្ធភាពតាមល្បឿនកំណត់ ដែលព្យាយាមលុបការពន្យាពេលក្នុង loops។ រង្វិលជុំ unrolled ជាធម្មតាបង្កើនល្បឿនប្រតិបត្តិនៃ code ដែលបានបង្កើត ដោយចំណាយលើទំហំ code ធំជាង។
ជម្រើស – funrol I-loops ពន្លារង្វិលជុំដែលចំនួននៃការធ្វើឡើងវិញអាចត្រូវបានកំណត់នៅពេលចងក្រង ឬនៅពេលដែលកូដចូលទៅក្នុងរង្វិលជុំ។ ជម្រើស -funroll-all-loops គឺកាន់តែឈ្លានពាន ដោះរង្វិលជុំទាំងអស់ ទោះបីជាមិនស្គាល់ចំនួននៃការធ្វើម្តងទៀតក៏ដោយ។ ជាធម្មតា វាមិនសូវមានប្រសិទ្ធភាពក្នុងការធ្វើអោយប្រសើរឡើងនូវល្បឿនប្រតិបត្តិជាងជម្រើស – funrol 1-loops។
២.៤. ខ្លាញ់ - អ៊ីតូ - វត្ថុ ជម្រើស
ជម្រើស – f fat-1 to-obj ects ស្នើសុំឱ្យអ្នកចងក្រងបង្កើតវត្ថុខ្លាញ់ files ដែលមានទាំងពីរ
កូដវត្ថុ និង GIMPLE (តំណាងផ្ទៃក្នុងរបស់ GCC) ដែលសរសេរទៅផ្នែក ELF តែមួយគត់។ វត្ថុបែបនេះ files មានប្រយោជន៍សម្រាប់កូដបណ្ណាល័យដែលអាចត្រូវបានភ្ជាប់ជាមួយគម្រោងដែលធ្វើ និងមិនប្រើឧបករណ៍បង្កើនប្រសិទ្ធភាពពេលវេលាភ្ជាប់ស្តង់ដារ ដែលគ្រប់គ្រងដោយជម្រើស -flto ។
ទម្រង់ – fno-fat-lto-objects នៃជម្រើសនេះ ដែលជាលំនាំដើម ប្រសិនបើគ្មានជម្រើសណាមួយត្រូវបានបញ្ជាក់ រារាំងការដាក់បញ្ចូលកូដវត្ថុទៅក្នុងវត្ថុ files ដែលជាលទ្ធផលបង្កើតបានលឿន។ ទោះយ៉ាងណាក៏ដោយវត្ថុបែបនេះ files ត្រូវតែត្រូវបានភ្ជាប់ជានិច្ចដោយប្រើឧបករណ៍បង្កើនប្រសិទ្ធភាពពេលវេលាភ្ជាប់ស្តង់ដារ។
២.៥. ជម្រើសចែកភាគថាស
នេះ - flto-partiti on=a Igo ri thm ជម្រើសគ្រប់គ្រងក្បួនដោះស្រាយដែលប្រើដើម្បីបែងចែកវត្ថុ files នៅពេលដំណើរការកម្មវិធីបង្កើនប្រសិទ្ធភាពពេលវេលាភ្ជាប់។ អាគុយម៉ង់មិនបិទការបែងចែកទាំងស្រុងទេ ហើយដំណើរការជំហានបង្កើនប្រសិទ្ធភាពពេលវេលាភ្ជាប់ដោយផ្ទាល់ពីដំណាក់កាលការវិភាគកម្មវិធីទាំងមូល (WPA)។ របៀបនៃប្រតិបត្តិការនេះនឹងបង្កើតលទ្ធផលដ៏ល្អប្រសើរបំផុត ដោយចំណាយលើតម្រូវការអង្គចងចាំចងក្រងធំជាង និងរយៈពេលសាងសង់យូរជាង ទោះបីជាវាទំនងជាមិនមានបញ្ហាជាមួយកម្មវិធីតូចក៏ដោយ។ ការបែងចែកវត្ថុ files អាចធ្វើអោយប្រសើរឡើងនូវដំណើរការសាងសង់។ អាគុយម៉ង់មួយបញ្ជាក់ថាភាគថាសមួយគួរត្រូវបានប្រើ ហើយអាគុយម៉ង់ lto1 បញ្ជាក់ការបែងចែកដែលឆ្លុះដែលកំណត់ដោយប្រភពដើម fileស. អាគុយម៉ង់លំនាំដើមមានតុល្យភាព ដែលបញ្ជាក់ការបែងចែកទៅជាកំណាត់ដែលមានទំហំស្មើគ្នា នៅពេលដែលអាចធ្វើទៅបាន។
២.៦. បន្ថែមលើផ្នែក 2.6 ផែនទីជម្រើសតំណភ្ជាប់
-wl, - ផ្នែកចាប់ផ្តើម =វិ tion=addr បាត់ពីតារាងនៃជម្រើសតំណភ្ជាប់ដែលប្រើជាទូទៅ អាចចូលប្រើបានដោយប្រើជម្រើសកម្មវិធីបញ្ជាចងក្រង -wl ។ ជម្រើសនេះអនុញ្ញាតឱ្យដាក់ផ្នែកដែលមានឈ្មោះផ្ទាល់ខ្លួននៅអាសយដ្ឋានដែលបានបញ្ជាក់។ វាមិនអាចប្រើដើម្បីដាក់ផ្នែកស្តង់ដារដូចជា (. data, . bss, . text) ដែលត្រូវតែដាក់ដោយប្រើជម្រើស -wl, -'r ។
២.៧. វិសោធនកម្មផ្នែក 2.7 ការផ្លាស់ប្តូរ និងភ្ជាប់ផ្នែកដែលបានបែងចែក
ចំណាំថាផ្ទុយទៅនឹងព័ត៌មានដែលមាននៅក្នុងផ្នែកនេះនៃការណែនាំរបស់អ្នកប្រើ ការផ្លាស់ប្តូរដែលបានធ្វើឡើងចំពោះអ្នកចងក្រងនៅក្នុងការចេញផ្សាយនេះឥឡូវនេះមានន័យថាផ្នែកផ្ទាល់ខ្លួនអាចត្រូវបានភ្ជាប់ដោយប្រើ -w1, - និកាយ អ៊ីយ៉ុង- start=section=acicir ជម្រើស និងដោយមិនចាំបាច់កែប្រែស្គ្រីបតំណភ្ជាប់។
តើមានអ្វីថ្មី។
ខាងក្រោមនេះជាលក្ខណៈពិសេស AVR-target ថ្មី ដែលកម្មវិធីចងក្រងឥឡូវគាំទ្រ។ លេខកំណែនៅក្នុងចំណងជើងរងបង្ហាញពីកំណែចងក្រងដំបូងដើម្បីគាំទ្រលក្ខណៈពិសេសដែលធ្វើតាម។
៣.១. កំណែ 3.1 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)
អាជ្ញាប័ណ្ណម៉ាស៊ីនមេបណ្តាញ ការចេញផ្សាយកម្មវិធីចងក្រងសុវត្ថិភាពមុខងារ MPLAB XC8 គាំទ្រអាជ្ញាប័ណ្ណម៉ាស៊ីនមេបណ្តាញ។
៣.២. កំណែ 3.2
គ្មាន។
៣.២. កំណែ 3.3
ការគាំទ្រឧបករណ៍ថ្មីគឺអាចរកបានសម្រាប់ផ្នែក 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 អាចត្រូវបានប្រើដើម្បីឱ្យអ្នកភ្ជាប់ដាក់ទិន្នន័យដែលមានលក្ខណៈសម្បត្តិគ្រប់គ្រាន់ទាំងអស់នៅក្នុងផ្នែក 32k ហើយចាប់ផ្តើមការចុះឈ្មោះ SFR ពាក់ព័ន្ធដោយស្វ័យប្រវត្តិដើម្បីធានាថាទិន្នន័យនេះត្រូវបានគូសផែនទីទៅក្នុងទិន្នន័យ។ ទំហំអង្គចងចាំ ដែលវានឹងត្រូវបានចូលប្រើកាន់តែមានប្រសិទ្ធភាព។
បណ្ណាល័យស្តង់ដារបង្រួបបង្រួមមីក្រូឈីប MPLAB ទាំងអស់។ អ្នកចងក្រង XC នឹងចែករំលែកបណ្ណាល័យស្តង់ដារបង្រួបបង្រួម Microchip ដែលឥឡូវនេះមានជាមួយនឹងការចេញផ្សាយ MPLAB XC8 នេះ។ នេះ។ MPLAB® ឧបករណ៍ចងក្រង XC8 C
មគ្គុទ្ទេសក៍របស់អ្នកប្រើសម្រាប់ AVR® MCU មិនរួមបញ្ចូលឯកសារសម្រាប់មុខងារស្តង់ដារទាំងនេះទៀតទេ។ ឥឡូវនេះព័ត៌មាននេះអាចរកបាននៅក្នុង មគ្គុទ្ទេសក៍យោងបណ្ណាល័យស្តង់ដារបង្រួបបង្រួមមីក្រូឈីប។ ចំណាំថាមុខងារមួយចំនួនដែលបានកំណត់ពីមុនដោយ avr-libc លែងមានទៀតហើយ។ (សូមមើល មុខងារបណ្ណាល័យ។ )
ឆ្លាតវៃ I0 ជាផ្នែកនៃបណ្ណាល័យបង្រួបបង្រួមថ្មី មុខងារ JO នៅក្នុងគ្រួសារ printf និង scanf ឥឡូវនេះត្រូវបានបង្កើតដោយខ្លួនឯងនៅលើ build នីមួយៗ ដោយផ្អែកលើរបៀបដែលមុខងារទាំងនេះត្រូវបានប្រើប្រាស់នៅក្នុងកម្មវិធី។ វាអាចកាត់បន្ថយធនធានដែលបានប្រើដោយកម្មវិធីយ៉ាងច្រើន។
ជម្រើសជំនួយ Smart I0 នៅពេលវិភាគការហៅទៅកាន់មុខងារ Smart I0 (ដូចជា printf() ឬ scanf()) កម្មវិធីចងក្រងមិនអាចកំណត់ពីទម្រង់ខ្សែអក្សរ ឬសន្និដ្ឋានពីអាគុយម៉ង់ដែលឧបករណ៍បញ្ជាក់ការបំប្លែងដែលត្រូវការដោយការហៅនោះទេ។ ពីមុន អ្នកចងក្រងតែងតែមិនធ្វើការសន្មត់ ហើយធានាថាមុខងារទាំង 10 ដែលមានមុខងារពេញលេញត្រូវបានភ្ជាប់ទៅក្នុងរូបភាពកម្មវិធីចុងក្រោយ។ ជម្រើសថ្មី – msma rt-io- format=fmt ត្រូវបានបន្ថែម ដូច្នេះអ្នកចងក្រងអាចត្រូវបានជូនដំណឹងដោយអ្នកប្រើប្រាស់នៃកម្មវិធីបញ្ជាក់ការបំប្លែងដែលប្រើដោយមុខងារ Smart I0 ដែលការប្រើប្រាស់មានភាពមិនច្បាស់លាស់ ការពារទម្លាប់ 10 យូរហួសពីការភ្ជាប់។ (សូមមើល ទម្រង់ smart-io ជម្រើសសម្រាប់ព័ត៌មានលម្អិត។ )
ការដាក់ផ្នែកផ្ទាល់ខ្លួនពីមុន ជម្រើស -W1, –section-start បានដាក់តែផ្នែកដែលបានបញ្ជាក់នៅអាសយដ្ឋានដែលបានស្នើសុំ នៅពេលដែលស្គ្រីប linker កំណត់ផ្នែកលទ្ធផលដែលមានឈ្មោះដូចគ្នា។ នៅពេលនោះមិនមែនជាករណីនោះទេ ផ្នែកត្រូវបានដាក់នៅអាសយដ្ឋានដែលបានជ្រើសរើសដោយអ្នកភ្ជាប់ ហើយជម្រើសនេះត្រូវបានគេមិនអើពើជាសំខាន់។ ឥឡូវនេះជម្រើសនឹងត្រូវបានផ្តល់កិត្តិយសសម្រាប់ផ្នែកផ្ទាល់ខ្លួនទាំងអស់ ទោះបីជាស្គ្រីបតំណភ្ជាប់មិនកំណត់ផ្នែកក៏ដោយ។ ទោះជាយ៉ាងណាក៏ដោយ ចំណាំថាសម្រាប់ផ្នែកស្តង់ដារ ដូចជា . អត្ថបទ, ។ bss ឬ។ ទិន្នន័យ អ្នកបែងចែកសមល្អបំផុតនឹងនៅតែមានការគ្រប់គ្រងពេញលេញលើការដាក់របស់ពួកគេ ហើយជម្រើសនឹងមិនមានឥទ្ធិពលទេ។ ប្រើ -wl, -Tsection=addr ជម្រើស ដូចដែលបានពិពណ៌នានៅក្នុងការណែនាំរបស់អ្នកប្រើ។
៣.២. កំណែ 3.4
ការណែនាំអំពីជង់អាចប្រើបានជាមួយនឹងអាជ្ញាប័ណ្ណចងក្រង PRO លក្ខណៈពិសេសការណែនាំជង់របស់អ្នកចងក្រងអាចត្រូវបានប្រើដើម្បីប៉ាន់ប្រមាណជម្រៅអតិបរមានៃជង់ណាមួយដែលប្រើដោយកម្មវិធី។ វាបង្កើត និងវិភាគក្រាហ្វការហៅរបស់កម្មវិធី កំណត់ការប្រើប្រាស់ជង់នៃមុខងារនីមួយៗ និងបង្កើតរបាយការណ៍ ដែលជម្រៅនៃជង់ដែលប្រើដោយកម្មវិធីអាចត្រូវបានសន្និដ្ឋាន។
មុខងារនេះត្រូវបានបើកតាមរយៈជម្រើស -mchp-stack-use command-line។ សេចក្តីសង្ខេបនៃការប្រើប្រាស់ជង់ត្រូវបានបោះពុម្ពបន្ទាប់ពីការប្រតិបត្តិ។ របាយការណ៍ជង់លម្អិតមាននៅក្នុងផែនទី fileដែលអាចត្រូវបានស្នើសុំតាមវិធីធម្មតា។
ការគាំទ្រឧបករណ៍ថ្មីគឺអាចរកបានសម្រាប់ផ្នែក AVR ខាងក្រោម៖ ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTNY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32
ការគាំទ្រឧបករណ៍ដែលបានដកថយ ការគាំទ្រលែងមានសម្រាប់ផ្នែក AVR ខាងក្រោមទៀតហើយ៖ AVR 16DA28, AVR16DA32 និង, AVR16DA48។
៣.៥. កំណែ 3.5 គ្មាន។
៣.២. កំណែ 3.6
ជម្រើសថ្មីដើម្បីការពារការចាប់ផ្តើមទិន្នន័យ ជម្រើសកម្មវិធីបញ្ជា -mno-data-init ថ្មីរារាំងការចាប់ផ្តើមទិន្នន័យ និងការសម្អាតផ្នែក bss ។ វាដំណើរការដោយការទប់ស្កាត់លទ្ធផលនៃ do_copy_data និង do_clear_bss និមិត្តសញ្ញានៅក្នុងការជួបប្រជុំគ្នា។ files ដែលនឹងរារាំងការរួមបញ្ចូលទម្លាប់ទាំងនោះដោយអ្នកភ្ជាប់។
ការធ្វើឱ្យប្រសើរការបង្កើនប្រសិទ្ធភាពការកែលម្អការបង្កើនប្រសិទ្ធភាពមួយចំនួនត្រូវបានធ្វើឡើង រួមទាំងការដកចេញនូវការណែនាំត្រឡប់មកវិញដែលលែងត្រូវការ ការដកចេញនូវការលោតមួយចំនួនបន្ទាប់ពីការណែនាំរំលងប្រសិនបើប៊ីត និងធ្វើឱ្យប្រសើរឡើងនូវដំណើរការអរូបី និងសមត្ថភាពក្នុងការធ្វើម្តងទៀតនូវដំណើរការនេះ។
ឥឡូវនេះជម្រើសបន្ថែមមានដើម្បីគ្រប់គ្រងការបង្កើនប្រសិទ្ធភាពទាំងនេះមួយចំនួន ជាពិសេស -fsection-anchors ដែលអនុញ្ញាតឱ្យចូលប្រើវត្ថុឋិតិវន្តដែលត្រូវបានអនុវត្តទាក់ទងទៅនឹងនិមិត្តសញ្ញាមួយ។ -mpa-ការធ្វើឡើងវិញ =n, ដែលអនុញ្ញាតឱ្យចំនួននៃការធ្វើឡើងវិញអរូបីនៃនីតិវិធីត្រូវបានផ្លាស់ប្តូរពីលំនាំដើមនៃ 2; និង -mpa-callcost-shortcal 1 ដែលអនុវត្តការអរូបីតាមនីតិវិធីកាន់តែឈ្លានពាន ដោយសង្ឃឹមថាអ្នកភ្ជាប់អាចបន្ធូរបន្ថយការហៅទូរស័ព្ទរយៈពេលយូរ។ ជម្រើសចុងក្រោយនេះអាចបង្កើនទំហំកូដ ប្រសិនបើការសន្មត់មូលដ្ឋានមិនត្រូវបានសម្រេច។
ថ្មី។ ការគាំទ្រឧបករណ៍ ការគាំទ្រមានសម្រាប់ផ្នែក AVR ខាងក្រោម៖ AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28DB, AVR128DB32DB ១២៨DB៦៤។
ការគាំទ្រឧបករណ៍ដែលបានដក ការគាំទ្រមិនមានទៀតទេសម្រាប់ផ្នែក AVR ខាងក្រោម៖ ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617, និង ATA664251C,
៣.១. កំណែ 3.7 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)
បឋមកថា file សម្រាប់ការចងក្រង bunt-ins ដើម្បីធានាថាអ្នកចងក្រងអាចអនុលោមតាមលក្ខណៈជាក់លាក់នៃភាសាដូចជា MISRA, the ក្បាល fileដែលត្រូវបានរួមបញ្ចូលដោយស្វ័យប្រវត្តិដោយ , ត្រូវបានធ្វើបច្ចុប្បន្នភាព។ បឋមកថានេះមានគំរូដើមសម្រាប់មុខងារដែលភ្ជាប់មកជាមួយទាំងអស់ ដូចជា built in_avr_nop ( ) និង _builtin_avr_delay_cycles () ។ ការភ្ជាប់មកជាមួយមួយចំនួនប្រហែលជាមិនអនុលោមតាម MISRA ទេ។ ទាំងនេះអាចត្រូវបានលុបចោលដោយបន្ថែមការកំណត់ XC_STRICT MISRA ទៅបន្ទាត់ពាក្យបញ្ជាចងក្រង។ ការភ្ជាប់មកជាមួយ និងការប្រកាសរបស់ពួកគេត្រូវបានធ្វើបច្ចុប្បន្នភាពដើម្បីប្រើប្រភេទទទឹងថេរ។
៣.២. កំណែ 3.8
ថ្មី។ ការគាំទ្រឧបករណ៍ ការគាំទ្រមានសម្រាប់ផ្នែក AVR ខាងក្រោម៖ ATTINY 1624, ATTINY1626, និង ATTINY 1 627។
ការបែងចែកសមល្អបំផុតកាន់តែប្រសើរ អ្នកបែងចែកសមល្អបំផុត (BFA) នៅក្នុងកម្មវិធីចងក្រងត្រូវបានធ្វើឱ្យប្រសើរឡើង ដូច្នេះផ្នែកត្រូវបានបែងចែកតាមលំដាប់ដែលអនុញ្ញាតឱ្យមានការបង្កើនប្រសិទ្ធភាពកាន់តែប្រសើរ។ ឥឡូវនេះ BFA គាំទ្រចន្លោះអាសយដ្ឋានដែលមានឈ្មោះ និងគ្រប់គ្រងការចាប់ផ្តើមទិន្នន័យបានប្រសើរជាងមុន។
ធ្វើឱ្យប្រសើរឡើងនូវដំណើរការអរូបី ការបង្កើនប្រសិទ្ធភាពអរូបីតាមនីតិវិធីឥឡូវនេះត្រូវបានអនុវត្តលើលំដាប់កូដបន្ថែមទៀត។ ស្ថានភាពពីមុនដែលការបង្កើនប្រសិទ្ធភាពនេះអាចបង្កើនទំហំកូដត្រូវបានដោះស្រាយដោយការធ្វើឱ្យកូដបង្កើនប្រសិទ្ធភាពដឹងពីដំណើរការប្រមូលសំរាមរបស់អ្នកភ្ជាប់។
អវត្ដមាននៃ AVR Assembler AVR Assembler មិនត្រូវបានរួមបញ្ចូលជាមួយនឹងការចែកចាយនេះទៀតទេ។ ៣.៩. កំណែ 3.9 (សុវត្ថិភាពមុខងារ ចេញផ្សាយ)
គ្មាន។
៣.២. កំណែ 3.10
កូដគ្របដណ្តប់ ការចេញផ្សាយនេះរួមបញ្ចូលទាំងលក្ខណៈពិសេសគ្របដណ្តប់កូដដែលជួយសម្រួលដល់ការវិភាគនៃវិសាលភាពដែលកូដប្រភពរបស់គម្រោងត្រូវបានប្រតិបត្តិ។ ប្រើជម្រើស -mcodecov=ram ដើម្បីបើកវា។ បន្ទាប់ពីដំណើរការកម្មវិធីនៅលើ Hardware របស់អ្នក ព័ត៌មានអំពីការគ្របដណ្តប់កូដនឹងត្រូវបានរួមបញ្ចូលនៅក្នុងឧបករណ៍ ហើយវាអាចត្រូវបានផ្ទេរទៅ និងបង្ហាញដោយ MPLAB X IDE តាមរយៈកម្មវិធីជំនួយការគ្របដណ្តប់កូដ។ សូមមើលឯកសារ IDE សម្រាប់ព័ត៌មានអំពីកម្មវិធីជំនួយនេះអាចទទួលបាន។
#pragma nocodecov អាចត្រូវបានប្រើដើម្បីមិនរាប់បញ្ចូលមុខងារជាបន្តបន្ទាប់ពីការវិភាគការគ្របដណ្តប់។ តាមឧត្ដមគតិ pragma គួរតែត្រូវបានបន្ថែមនៅដើមដំបូងនៃ file ដើម្បីដកចេញទាំងស្រុងនោះ។ file ពីការវិភាគគ្របដណ្តប់។ ម៉្យាងទៀត _attribute_ ( (nocodecov)) អាចត្រូវបានប្រើដើម្បីដកមុខងារជាក់លាក់មួយចេញពីការវិភាគគ្របដណ្តប់។
ការពិពណ៌នាឧបករណ៍ files ឧបករណ៍ថ្មី។ file ហៅថា avr_chipinfo.html មានទីតាំងនៅក្នុងថតឯកសារ
ការចែកចាយកម្មវិធីចងក្រង។ នេះ។ file រាយឧបករណ៍ទាំងអស់ដែលគាំទ្រដោយកម្មវិធីចងក្រង។ ចុចលើឈ្មោះឧបករណ៍ ហើយវានឹងបើកទំព័រដែលបង្ហាញការកំណត់ការកំណត់/តម្លៃប៊ីតដែលអនុញ្ញាតទាំងអស់សម្រាប់ឧបករណ៍នោះជាមួយនឹងឧ.amples ។
អរូបីតាមនីតិវិធី ការបង្កើនប្រសិទ្ធភាពអរូបីតាមនីតិវិធី ដែលជំនួសប្លុកទូទៅនៃកូដជួបប្រជុំគ្នាជាមួយនឹងការហៅទៅកាន់ច្បាប់ចម្លងដែលបានស្រង់ចេញនៃប្លុកនោះត្រូវបានបន្ថែមទៅកម្មវិធីចងក្រង។ ទាំងនេះត្រូវបានអនុវត្តដោយកម្មវិធីដាច់ដោយឡែក ដែលត្រូវបានហៅដោយស្វ័យប្រវត្តិដោយអ្នកចងក្រង នៅពេលជ្រើសរើសកម្រិត 2, 3 ឬ s ការបង្កើនប្រសិទ្ធភាព។ ការបង្កើនប្រសិទ្ធភាពទាំងនេះកាត់បន្ថយទំហំកូដ ប៉ុន្តែវាអាចកាត់បន្ថយល្បឿននៃការប្រតិបត្តិ និងការបំបាត់កំហុសកូដ។
អរូបីតាមនីតិវិធីអាចត្រូវបានបិទនៅកម្រិតបង្កើនប្រសិទ្ធភាពខ្ពស់ដោយប្រើជម្រើស -mno-pa ឬអាចត្រូវបានបើកនៅកម្រិតបង្កើនប្រសិទ្ធភាពទាប (អាស្រ័យលើអាជ្ញាប័ណ្ណរបស់អ្នក) ដោយប្រើ -mpa ។ វាអាចត្រូវបានបិទសម្រាប់វត្ថុមួយ។ file ដោយប្រើ -mno-pa-on-f ile=fileឈ្មោះ ឬបិទសម្រាប់មុខងារមួយដោយប្រើ -mno-pa-onfunotion=f សកម្មភាព។
នៅក្នុងកូដប្រភពរបស់អ្នក ការអរូបីតាមនីតិវិធីអាចត្រូវបានបិទសម្រាប់មុខងារមួយដោយប្រើ attribute_ ((nopa)) ជាមួយនឹងនិយមន័យនៃអនុគមន៍ ឬដោយប្រើ nopa ដែលពង្រីកទៅ _attribute_ ((nopa, noinline)) ហើយដូច្នេះការពារមុខងារ inlining ពីការកើតឡើង។ ហើយមានការអរូបីនៃកូដខាងក្នុង។
ចាក់សោការគាំទ្រប៊ីតនៅក្នុង pragma ការកំណត់រចនាសម្ព័ន្ធ #pragma ឥឡូវនេះអាចត្រូវបានប្រើដើម្បីបញ្ជាក់ប៊ីតចាក់សោ AVR ក៏ដូចជាប៊ីតកំណត់រចនាសម្ព័ន្ធផ្សេងទៀត។ ពិនិត្យ avr_chipinfo.html file (បានរៀបរាប់ខាងលើ) សម្រាប់ការកំណត់/តម្លៃគូដែលត្រូវប្រើជាមួយការអនុវត្តនេះ។
ថ្មី។ ការគាំទ្រឧបករណ៍ ការគាំទ្រមានសម្រាប់ផ្នែកខាងក្រោម៖ AVR28DAl28, AVR64DAl28, AVR32DAl28, និង AVR48DAl28។
៣.២. កំណែ 3.11
ប៊ីតច្រើនទៀតសម្រាប់ប្រាក់ដុល្លាររបស់អ្នក។ កំណែ macOS នៃកម្មវិធីចងក្រង និងកម្មវិធីគ្រប់គ្រងអាជ្ញាប័ណ្ណនេះ ឥឡូវនេះជាកម្មវិធី 64 ប៊ីត។ វានឹងធានាថាកម្មវិធីចងក្រងនឹងដំឡើង និងដំណើរការដោយគ្មានការព្រមានលើកំណែថ្មីនៃ macOS ។
Const វត្ថុនៅក្នុងអង្គចងចាំកម្មវិធី ឥឡូវនេះ កម្មវិធីចងក្រងអាចដាក់វត្ថុដែលមានលក្ខណៈសម្បត្តិគ្រប់គ្រាន់នៅក្នុងកម្មវិធី Flash memory ជាជាងមានវត្ថុទាំងនេះនៅក្នុង RAM ។ កម្មវិធីចងក្រងត្រូវបានកែប្រែ ដើម្បីឱ្យទិន្នន័យសកលដែលមានគុណវុឌ្ឍិរបស់ t ត្រូវបានរក្សាទុកក្នុងអង្គចងចាំពន្លឺរបស់កម្មវិធី ហើយទិន្នន័យនេះអាចចូលប្រើដោយផ្ទាល់ និងដោយប្រយោលដោយប្រើការណែនាំកម្មវិធី-អង្គចងចាំសមស្រប។ មុខងារថ្មីនេះត្រូវបានបើកតាមលំនាំដើម ប៉ុន្តែអាចត្រូវបានបិទដោយប្រើជម្រើស -mno-const-data-in-progmem។ សម្រាប់ស្ថាបត្យកម្ម avrxmega3 និង avrtiny មុខងារនេះមិនត្រូវបានទាមទារទេ ហើយតែងតែត្រូវបានបិទ ដោយសារអង្គចងចាំកម្មវិធីត្រូវបានគូសផែនទីទៅក្នុងចន្លោះអាសយដ្ឋានទិន្នន័យសម្រាប់ឧបករណ៍ទាំងនេះ។
ស្តង់ដារដោយឥតគិតថ្លៃ កំណែដែលគ្មានអាជ្ញាប័ណ្ណ (ឥតគិតថ្លៃ) នៃកម្មវិធីចងក្រងនេះឥឡូវនេះអនុញ្ញាតឱ្យបង្កើនប្រសិទ្ធភាពរហូតដល់កម្រិត 2។ វានឹងអនុញ្ញាតឱ្យមានលទ្ធផលស្រដៀងគ្នា ទោះបីជាមិនដូចគ្នាក៏ដោយ ប៉ុន្តែអ្វីដែលអាចធ្វើទៅបានពីមុនដោយប្រើអាជ្ញាប័ណ្ណស្តង់ដារ។
សូមស្វាគមន៍ AVRASM2 ឧបករណ៍ដំឡើង AVRASM2 សម្រាប់ឧបករណ៍ 8 ប៊ីតឥឡូវនេះត្រូវបានរួមបញ្ចូលនៅក្នុងកម្មវិធីដំឡើងកម្មវិធីចងក្រង XC8 ។ ឧបករណ៍ដំឡើងនេះមិនត្រូវបានប្រើដោយអ្នកចងក្រង XC8 ទេ ប៉ុន្តែមានសម្រាប់គម្រោងដោយផ្អែកលើប្រភពដំឡើងដែលសរសេរដោយដៃ។
ថ្មី។ ការគាំទ្រឧបករណ៍ ការគាំទ្រមានសម្រាប់ផ្នែកខាងក្រោម៖ ATMEGA1608, ATMEGA 1609, ATMEGA808, និង ATMEGA809។
៣.២. កំណែ 3.12
អ្នកបើកបរកម្រិតកំពូល កម្មវិធីបញ្ជាថ្មីដែលហៅថា xc8 -cc ឥឡូវនេះស្ថិតនៅពីលើកម្មវិធីបញ្ជា avr-gcc មុន និងកម្មវិធីបញ្ជា xc8 ហើយវាអាចហៅទៅកម្មវិធីចងក្រងដែលសមស្របដោយផ្អែកលើការជ្រើសរើសឧបករណ៍គោលដៅ។ កម្មវិធីបញ្ជានេះទទួលយកជម្រើសរចនាប័ទ្ម GCC ដែលត្រូវបានបកប្រែសម្រាប់ ឬឆ្លងកាត់ទៅកាន់កម្មវិធីចងក្រងដែលកំពុងដំណើរការ។ កម្មវិធីបញ្ជានេះអនុញ្ញាតឱ្យសំណុំនៃជម្រើសស្រដៀងគ្នាដែលមានអត្ថន័យស្រដៀងគ្នាដើម្បីប្រើជាមួយគោលដៅ AVR ឬ PIC ហើយដូច្នេះគឺជាវិធីដែលត្រូវបានណែនាំដើម្បីហៅកម្មវិធីចងក្រង។ ប្រសិនបើចាំបាច់ កម្មវិធីបញ្ជា avr-gcc ចាស់អាចត្រូវបានហៅដោយផ្ទាល់ដោយប្រើជម្រើសរចនាប័ទ្មចាស់ដែលវាបានទទួលយកនៅក្នុងកំណែចងក្រងមុន។
ចំណុចប្រទាក់ C ទូទៅ ឥឡូវនេះកម្មវិធីចងក្រងនេះអាចអនុលោមតាម MPLAB Common C Interface ដែលអនុញ្ញាតឱ្យកូដប្រភពត្រូវបានបញ្ជូនកាន់តែងាយស្រួលឆ្លងកាត់អ្នកចងក្រង MPLAB XC ទាំងអស់។ ជម្រើស -mext=cci ស្នើសុំលក្ខណៈពិសេសនេះ ដោយបើកវាក្យសម្ព័ន្ធជំនួសសម្រាប់ផ្នែកបន្ថែមភាសាជាច្រើន។
អ្នកបើកបរបណ្ណារក្សថ្មី A កម្មវិធីបញ្ជាបណ្ណារក្សថ្មីត្រូវបានដាក់នៅខាងលើបណ្ណារក្សបណ្ណាល័យ PIC មុន និងបណ្ណារក្ស AVR avr-ar ។ កម្មវិធីបញ្ជានេះទទួលយកជម្រើសរចនាប័ទ្ម GCC-archiver ដែលត្រូវបានបកប្រែសម្រាប់ ឬឆ្លងកាត់ទៅបណ្ណារក្សដែលកំពុងដំណើរការ។ កម្មវិធីបញ្ជាថ្មីអនុញ្ញាតឱ្យសំណុំនៃជម្រើសស្រដៀងគ្នាដែលមានអត្ថន័យស្រដៀងគ្នា ត្រូវបានប្រើដើម្បីបង្កើត ឬរៀបចំបណ្ណាល័យ PIC ឬ AVR file ដូច្នេះហើយ គឺជាវិធីណែនាំក្នុងការហៅបណ្ណារក្ស។ ប្រសិនបើត្រូវការសម្រាប់គម្រោងកេរដំណែល បណ្ណារក្សមុនអាចត្រូវបានហៅដោយផ្ទាល់ដោយប្រើជម្រើសរចនាប័ទ្មចាស់ដែលវាបានទទួលយកនៅក្នុងកំណែចងក្រងមុន។
បញ្ហាចំណាកស្រុក
លក្ខណៈពិសេស am ខាងក្រោមដែលឥឡូវនេះត្រូវបានចាត់ចែងខុសគ្នាដោយអ្នកចងក្រង។ ការផ្លាស់ប្តូរទាំងនេះអាចទាមទារការកែប្រែកូដប្រភពរបស់អ្នក ប្រសិនបើការបញ្ជូនកូដទៅកាន់កំណែចងក្រងនេះ។ លេខកំណែនៅក្នុងចំណងជើងរងបង្ហាញពីកំណែចងក្រងដំបូងដើម្បីគាំទ្រការផ្លាស់ប្តូរដែលធ្វើតាម។
៣.១. កំណែ 4.1 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)
គ្មាន។
៣.២. កំណែ 4.2 គ្មាន។
4.3. កំណែ 2.35
ការគ្រប់គ្រងខ្សែអក្សរទៅមូលដ្ឋាន (XC8-2420) ដើម្បីធានាបាននូវភាពស៊ីសង្វាក់គ្នាជាមួយនឹងឧបករណ៍ចងក្រង XC ផ្សេងទៀត ខ្សែអក្សរ XC8 មុខងារដូចជា strtol() ជាដើម។ នឹងមិនព្យាយាមបំប្លែងខ្សែអក្សរបញ្ចូលទៀតទេ ប្រសិនបើមូលដ្ឋានដែលបានបញ្ជាក់គឺធំជាង 36 ហើយនឹងកំណត់ errno ទៅ EINVAL ជំនួសវិញ។ ស្តង់ដារ C មិនបញ្ជាក់ពីអាកប្បកិរិយារបស់ មុខងារនៅពេលដែលតម្លៃមូលដ្ឋាននេះត្រូវបានលើស។
ការបង្កើនប្រសិទ្ធភាពល្បឿនមិនសមរម្យ ការបង្កើនប្រសិទ្ធភាពអរូបីតាមនីតិវិធីកំពុងត្រូវបានបើកនៅពេលជ្រើសរើសការបង្កើនប្រសិទ្ធភាពកម្រិត 3 (-03)។ ការបង្កើនប្រសិទ្ធភាពទាំងនេះកាត់បន្ថយទំហំកូដដោយចំណាយលើល្បឿនកូដ ដូច្នេះមិនគួរត្រូវបានអនុវត្តទេ។ គម្រោងដែលប្រើកម្រិតបង្កើនប្រសិទ្ធភាពនេះអាចនឹងឃើញភាពខុសគ្នាក្នុងទំហំកូដ និងល្បឿនប្រតិបត្តិនៅពេលបង្កើតឡើងជាមួយនឹងការចេញផ្សាយនេះ។
មុខងារបណ្ណាល័យ កូដសម្រាប់មុខងារបណ្ណាល័យ C ស្តង់ដារជាច្រើនឥឡូវនេះបានមកពីបណ្ណាល័យស្តង់ដារបង្រួបបង្រួមរបស់ Microchip ដែលអាចបង្ហាញអាកប្បកិរិយាខុសៗគ្នាក្នុងកាលៈទេសៈមួយចំនួនបើប្រៀបធៀបទៅនឹងអ្វីដែលផ្តល់ដោយអតីតបណ្ណាល័យ avr-libc ។ សម្រាប់អតីតampដូច្នេះ វាលែងចាំបាច់ក្នុងការភ្ជាប់ក្នុងបណ្ណាល័យ 1printf flt (ជម្រើស -1printf_flt) ដើម្បីបើកការគាំទ្រ I0 ដែលបានធ្វើទ្រង់ទ្រាយសម្រាប់អ្នកបញ្ជាក់ទម្រង់អណ្តែត។ លក្ខណៈពិសេស 10 ដ៏ឆ្លាតវៃនៃបណ្ណាល័យស្តង់ដារបង្រួបបង្រួម Microchip ធ្វើឱ្យជម្រើសនេះលែងត្រូវការតទៅទៀត។ លើសពីនេះ ការប្រើប្រាស់ទម្លាប់បច្ច័យ _P សម្រាប់មុខងារខ្សែអក្សរ និងអង្គចងចាំ (ឧទាហរណ៍ strcpy_P ( ) ។ ទម្លាប់ C ស្តង់ដារ (ឧទាហរណ៍ strcpy 0) នឹងដំណើរការបានត្រឹមត្រូវជាមួយទិន្នន័យបែបនេះ នៅពេលដែលមុខងារ const-data-in-program-memory ត្រូវបានបើក។
៣.២. កំណែ 4.4
គ្មាន។
៣.២. កំណែ 4.5
គ្មាន។
៣.២. កំណែ 4.6
គ្មាន។
៣.១. កំណែ 4.1 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)
គ្មាន។
៣.២. កំណែ 4.2
បានផ្លាស់ប្តូរប្លង់ DFP ឥឡូវនេះកម្មវិធីចងក្រងសន្មត់ថាប្លង់ផ្សេងគ្នាដែលប្រើដោយ DFPs (កញ្ចប់គ្រួសារឧបករណ៍)។ នេះនឹងមានន័យថា DFP ចាស់ប្រហែលជាមិនដំណើរការជាមួយនឹងការចេញផ្សាយនេះទេ ហើយអ្នកចងក្រងចាស់នឹងមិនអាចប្រើ DFPs ចុងក្រោយបង្អស់បានទេ។
៣.១. កំណែ 4.3 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)
គ្មាន។
៤.៤. កំណែ 4.4 គ្មាន
៣.២. កំណែ 4.5
Const objects in program memory ចំណាំថា តាមលំនាំដើម វត្ថុ const-qualfiied នឹងត្រូវបានដាក់ និងចូលប្រើក្នុងអង្គចងចាំកម្មវិធី (ដូចដែលបានពិពណ៌នារបស់វា)។ វានឹងប៉ះពាល់ដល់ទំហំ និងល្បឿនប្រតិបត្តិនៃគម្រោងរបស់អ្នក ប៉ុន្តែគួរតែកាត់បន្ថយការប្រើប្រាស់ RAM។ មុខងារនេះអាចត្រូវបានបិទ ប្រសិនបើចាំបាច់ ដោយប្រើជម្រើស -mnocons t-data-in-pr ogmem ។
៣.២. កំណែ 4.6
Configuration fuses ឥឡូវនេះ fuses កំណត់រចនាសម្ព័ន្ធឧបករណ៍អាចសរសេរកម្មវិធីដោយប្រើ config pragma តាមពីក្រោយដោយ set-value pairs ដើម្បីបញ្ជាក់ស្ថានភាព fuse ឧ. #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
វត្ថុនិងមុខងារដាច់ខាត ឥឡូវនេះវត្ថុ និងមុខងារអាចត្រូវបានដាក់នៅអាសយដ្ឋានជាក់លាក់ក្នុងអង្គចងចាំដោយប្រើ CCI _at (អាសយដ្ឋាន) អ្នកបញ្ជាក់ ឧampលេ៖
បើរួមបញ្ចូល
int foobar នៅ (0)0300100);
char at(0x250) getID(int offset) ( អាគុយម៉ង់ចំពោះអ្នកបញ្ជាក់នេះត្រូវតែជាថេរដែលតំណាងឱ្យអាសយដ្ឋានដែលបៃទីមួយឬការណែនាំនឹងត្រូវបានដាក់។ អាសយដ្ឋាន RAM ត្រូវបានចង្អុលបង្ហាញដោយប្រើអុហ្វសិតនៃ Ox800000។ បើក CCI ដើម្បី ប្រើមុខងារនេះ។
វាក្យសម្ព័ន្ធមុខងាររំខានថ្មី កម្មវិធីចងក្រង ឥឡូវនេះទទួលយក CCI _interrupt (លេខ) អ្នកបញ្ជាក់ដើម្បីបង្ហាញថាមុខងារ C គឺជាឧបករណ៍ដោះស្រាយការរំខាន។ អ្នកបញ្ជាក់យកលេខរំខាន ឧទាហរណ៍ampលេ៖
បញ្ហាថេរ
ការកែតម្រូវខាងក្រោមដែលត្រូវបានធ្វើឡើងចំពោះអ្នកចងក្រង។ ទាំងនេះអាចជួសជុលកំហុសនៅក្នុងកូដដែលបានបង្កើត ឬផ្លាស់ប្តូរប្រតិបត្តិការរបស់អ្នកចងក្រងទៅជាអ្វីដែលមានបំណង ឬបញ្ជាក់ដោយការណែនាំរបស់អ្នកប្រើប្រាស់។ លេខកំណែនៅក្នុងចំណងជើងរងបង្ហាញពីកំណែចងក្រងដំបូងដែលមានការជួសជុលសម្រាប់បញ្ហាដែលកើតឡើង។ ស្លាកសញ្ញាតង្កៀបនៅក្នុងចំណងជើងគឺជាការកំណត់អត្តសញ្ញាណបញ្ហានៅក្នុងមូលដ្ឋានទិន្នន័យតាមដាន។ ទាំងនេះអាចមានប្រយោជន៍ ប្រសិនបើអ្នកត្រូវការទាក់ទងផ្នែកជំនួយ។
ចំណាំថាបញ្ហាជាក់លាក់នៃឧបករណ៍មួយចំនួនត្រូវបានកែតម្រូវនៅក្នុងកញ្ចប់គ្រួសារឧបករណ៍ (DR)) ភ្ជាប់ជាមួយឧបករណ៍។ សូមមើលកម្មវិធីគ្រប់គ្រងកញ្ចប់ MPLAB សម្រាប់ព័ត៌មានអំពីការផ្លាស់ប្តូរដែលបានធ្វើឡើងចំពោះ DFPs និងដើម្បីទាញយកកញ្ចប់ចុងក្រោយបំផុត។
៣.១. កំណែ 5.1 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)
គ្មាន។
៣.២. កំណែ 5.2
កំហុសនៅពេលពន្យារពេល (XCS–2774) ការផ្លាស់ប្តូរតិចតួចនៅក្នុងការបង្កើនប្រសិទ្ធភាពរបៀបឥតគិតថ្លៃលំនាំដើមបានរារាំងការបត់ថេរនៃកន្សោម operand ទៅនឹងមុខងារដែលភ្ជាប់មកជាមួយពន្យាពេល ដែលបណ្តាលឱ្យពួកវាត្រូវបានចាត់ទុកថាមិនថេរ និងបង្កឱ្យមានកំហុស។ built in_avr_delay_cycles រំពឹងថានឹងមានចំនួនគត់ពេលវេលាចងក្រងថេរ។
៣.២. កំណែ 5.3
ជាប់គ្នា។ ការបែងចែក ដោយប្រើ _at (XCS–2653) ការបែងចែកជាប់គ្នានៃកន្លែងវត្ថុជាច្រើននៅក្នុងផ្នែកដែលមានឈ្មោះដូចគ្នា និងការប្រើប្រាស់ _at() មិនដំណើរការត្រឹមត្រូវ។ សម្រាប់អតីតampលេ៖
const char arrl[ ] attribute (section(“.mysec”) at (0x500) = (OxAB, OxCD);
const char arr2[ ] attribute (sectionr.mysec”)= (OxEF, OxFE);
គួរតែដាក់ arr2 ភ្លាមៗបន្ទាប់ពី arri ។
ការបញ្ជាក់អាសយដ្ឋានចាប់ផ្តើមផ្នែក (XCS–2650) នេះ។ -wl, -section-start option បានបរាជ័យក្នុងការដាក់ផ្នែកនៅអាសយដ្ឋានចាប់ផ្តើមដែលបានតែងតាំង។ បញ្ហានេះត្រូវបានជួសជុលសម្រាប់ផ្នែកដែលមានឈ្មោះផ្ទាល់ខ្លួន។ ទោះយ៉ាងណាក៏ដោយ វានឹងមិនដំណើរការសម្រាប់ផ្នែកស្តង់ដារណាមួយ ដូចជា . អត្ថបទឬ។ bss ដែលត្រូវតែដាក់ដោយប្រើ a -wl, -T ជម្រើស។
Linker គាំងនៅពេលសម្រាក (XCS–2647) ពេលណា ការបង្កើនប្រសិទ្ធភាព -mrelax ត្រូវបានបើក ហើយពួកវាជាផ្នែកកូដ ឬទិន្នន័យដែលមិនសមនឹងអង្គចងចាំដែលមាន តំណភ្ជាប់បានគាំង។ ឥឡូវនេះ ក្នុងកាលៈទេសៈបែបនេះ សារកំហុសត្រូវបានចេញជំនួសវិញ។
អត់ទេ។–ធ្លាក់–ត្រឡប់មកវិញ (XCS–2646) នេះ។ -nofallback ជម្រើសមិនត្រូវបានអនុវត្តត្រឹមត្រូវ ឬចងក្រងជាឯកសារទេ។ ឥឡូវនេះអាចត្រូវបានជ្រើសដើម្បីប្រាកដថាកម្មវិធីចងក្រងនឹងមិនត្រឡប់ទៅរកការកំណត់ការបង្កើនប្រសិទ្ធភាពទាបជាងប្រសិនបើកម្មវិធីចងក្រងមិនមានអាជ្ញាប័ណ្ណ ហើយនឹងចេញកំហុសជំនួសវិញ។
ការបង្កើនប្រសិទ្ធភាពល្បឿនមិនសមរម្យ (XCS–2637) ការបង្កើនប្រសិទ្ធភាពអរូបីតាមនីតិវិធីកំពុងត្រូវបានបើកនៅពេលជ្រើសរើសការបង្កើនប្រសិទ្ធភាពកម្រិត 3 (-03)។ ការបង្កើនប្រសិទ្ធភាពទាំងនេះកាត់បន្ថយទំហំកូដដោយចំណាយលើល្បឿនកូដ ដូច្នេះមិនគួរត្រូវបានអនុវត្តទេ។
ការចូលប្រើ EEPROM មិនល្អ (XCS–2629) ទម្លាប់ eeprom_read_block មិនដំណើរការត្រឹមត្រូវនៅលើឧបករណ៍ Xmega នៅពេលដែលជម្រើស -mconst-data-in-progmem ត្រូវបានបើក (ដែលជាស្ថានភាពលំនាំដើម) ដែលបណ្តាលឱ្យអង្គចងចាំ EEPROM មិនត្រូវបានអានត្រឹមត្រូវ។
ការបែងចែកអង្គចងចាំមិនត្រឹមត្រូវ (X03-2593, XC8-2651) ពេលណា ជម្រើស -Ttext ឬ -Tdata linker (សម្រាប់ឧample បានឆ្លងកាត់ដោយប្រើជម្រើសកម្មវិធីបញ្ជា -wl) ត្រូវបានបញ្ជាក់ ប្រភពដើមនៃតំបន់អត្ថបទ/ទិន្នន័យដែលត្រូវគ្នាត្រូវបានធ្វើបច្ចុប្បន្នភាព។ ទោះយ៉ាងណាក៏ដោយ អាសយដ្ឋានបញ្ចប់មិនត្រូវបានកែតម្រូវតាមនោះ ដែលអាចនាំទៅដល់តំបន់លើសពីជួរអង្គចងចាំរបស់ឧបករណ៍គោលដៅ។
ការគាំងជាមួយនឹងមុខងារលើសគុណលក្ខណៈ (XC8-2580) កម្មវិធីចងក្រងបានគាំង ប្រសិនបើមុខងារមួយត្រូវបានប្រកាសដោយប្រើគុណលក្ខណៈ interrupt, signal ឬ nmi ច្រើនជាងមួយ ឧ, _attribute_ ( ( signal , interrupt ) )។
លេខកូដរំខាន ATtiny មិនត្រឹមត្រូវ (XC8-2465) នៅពេលបង្កើតសម្រាប់ឧបករណ៍ ATtiny និងការបង្កើនប្រសិទ្ធភាពត្រូវបានបិទ (-00) មុខងាររំខានអាចបណ្តាលឱ្យដំណើរការហើយចេញពីសារដំឡើងជួរ។
ជម្រើសមិនត្រូវបានឆ្លងកាត់ (XC8-2452) នៅពេលប្រើ - wl ជម្រើសដែលមានជម្រើសតំណភ្ជាប់ដែលបំបែកដោយសញ្ញាក្បៀសច្រើន មិនមែនជម្រើសតំណភ្ជាប់ទាំងអស់ត្រូវបានបញ្ជូនទៅអ្នកភ្ជាប់នោះទេ។
កំហុសក្នុងការអានអង្គចងចាំកម្មវិធីដោយប្រយោល (X03-2450) ក្នុងករណីខ្លះអ្នកចងក្រងផលិត កំហុសខាងក្នុង (មិនអាចស្គាល់ insn) នៅពេលអានតម្លៃពីរបៃពីទ្រនិចទៅអង្គចងចាំកម្មវិធី
៣.២. កំណែ 5.4
ការចូលប្រើបណ្ណាល័យទីពីរបរាជ័យ (X03-2381) ការហៅកំណែ Windows នៃបណ្ណសារបណ្ណាល័យ xc8-ar.exe ជាលើកទីពីរ ដើម្បីចូលប្រើបណ្ណសារបណ្ណាល័យដែលមានស្រាប់ អាចនឹងបរាជ័យ ដោយសារមិនអាចប្តូរឈ្មោះសារកំហុសបាន។
៣.២. កំណែ 5.5
មិនអាចពន្យល់បាន។ ការបរាជ័យក្នុងការចងក្រង (XC8-2367) នៅពេលដំណើរការ វីនដូ វេទិកាដែលមានថតបណ្តោះអាសន្នរបស់ប្រព័ន្ធកំណត់ទៅផ្លូវដែលរួមបញ្ចូលចំណុច '។' តួអក្សរ អ្នកចងក្រងអាចបរាជ័យក្នុងការប្រតិបត្តិ។
៣.២. កំណែ 5.6
ស្លាកសកលត្រូវបានដាក់ខុសបន្ទាប់ពីការគូសបញ្ជាក់ (XC8-2299) កូដដំឡើងដែលសរសេរដោយដៃដែលដាក់ជាសកល ស្លាកនៅក្នុងលំដាប់នៃការជួបប្រជុំគ្នាដែលត្រូវបានដកចេញដោយអរូបីតាមនីតិវិធី ប្រហែលជាមិនត្រូវបានផ្លាស់ប្តូរទីតាំងត្រឹមត្រូវទេ។
ការគាំងបន្ធូរអារម្មណ៍ (XC8-2287) ដោយប្រើ - រីករាយ ជម្រើសអាចបណ្តាលឱ្យ linker គាំងនៅពេល ការបង្កើនប្រសិទ្ធភាពការបន្ធូរបន្ថយការលោតកន្ទុយបានព្យាយាមដកចេញនូវការណែនាំដែលមិនមាននៅចុងបញ្ចប់នៃ a ផ្នែក។
គាំងនៅពេលបង្កើនប្រសិទ្ធភាពស្លាកជាតម្លៃ (XC8-2282) កូដដោយប្រើ "ស្លាកជាតម្លៃ" GNU C ផ្នែកបន្ថែមភាសាអាចបណ្តាលឱ្យការបង្កើនប្រសិទ្ធភាពអរូបីតាមនីតិវិធីគាំង ដោយមានកំហុសក្នុងការជួសជុលជួរ VMA ដែលបានគូសបញ្ជាក់។
មិនដូច្នេះទេ const (XC8-2271) គំរូសម្រាប់ strstr () និងមុខងារផ្សេងទៀតពី លែងបញ្ជាក់គុណវុឌ្ឍិ const មិនស្តង់ដារលើទ្រនិចខ្សែដែលបានត្រឡប់វិញ នៅពេលមុខងារ -mconst-data- inprogmem ត្រូវបានបិទ។ ចំណាំថាជាមួយនឹងឧបករណ៍ avrxmega3 និង avrtiny មុខងារនេះត្រូវបានបើកជាអចិន្ត្រៃយ៍។
បាត់បង់កម្មវិធីចាប់ផ្តើម (XC8-2269) នៅពេលដែលអថេរច្រើនជាងមួយនៅក្នុងការបកប្រែ ឯកតាត្រូវបានដាក់ក្នុងផ្នែកមួយ (ដោយប្រើ ផ្នែក or គុណលក្ខណៈ ( (ផ្នែក) )) ហើយអថេរបែបនេះដំបូងត្រូវបានចាប់ផ្តើមសូន្យ ឬមិនមានកម្មវិធីចាប់ផ្តើមទេ ការចាប់ផ្តើមសម្រាប់អថេរផ្សេងទៀតនៅក្នុងឯកតាបកប្រែដូចគ្នាដែលត្រូវបានដាក់ក្នុងផ្នែកដូចគ្នាត្រូវបានបាត់បង់។
៥.១. កំណែ 5.1 2.2 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ) គ្មានទេ។
៣.២. កំណែ 5.2
កំហុសជាមួយពាក្យបញ្ជាវែង (XC8-1983) នៅពេលប្រើគោលដៅ AVR កម្មវិធីចងក្រងអាចឈប់ជាមួយនឹងកំហុសដែលរកមិនឃើញ ប្រសិនបើបន្ទាត់ពាក្យបញ្ជាមានទំហំធំខ្លាំង និងមានតួអក្សរពិសេសដូចជា សម្រង់ សញ្ញាបញ្ច្រាស ជាដើម។
ផ្នែក rodata ដែលមិនបានកំណត់ (XC8-1920) ឧបករណ៍ភ្ជាប់ AVR បានបរាជ័យក្នុងការកំណត់អង្គចងចាំសម្រាប់ផ្នែក rodata ផ្ទាល់ខ្លួន នៅពេលសាងសង់សម្រាប់ស្ថាបត្យកម្ម avrxmega3 និង avrtiny ដែលអាចធ្វើឱ្យមានកំហុសត្រួតលើគ្នានៃអង្គចងចាំ
៣.១. កំណែ 5.3 (ការចេញផ្សាយសុវត្ថិភាពមុខងារ)
គ្មាន។
៣.២. កំណែ 5.4
ការបរាជ័យនៃការផ្លាស់ប្តូរទីតាំង (XC8-1891) អ្នកបែងចែកសមល្អបំផុតគឺទុក 'រន្ធ' នៃការចងចាំនៅចន្លោះផ្នែកបន្ទាប់ពីការបន្ធូរបន្ថយតំណភ្ជាប់។ ក្រៅពីការបំបែកអង្គចងចាំ នេះបង្កើនលទ្ធភាពនៃការបរាជ័យនៃការផ្លាស់ប្តូរទីតាំងរបស់តំណភ្ជាប់ដែលទាក់ទងនឹងការលោតដែលទាក់ទងនឹងកុំព្យូទ័រ ឬការហៅចេញក្រៅជួរ។
ការណែនាំដែលមិនត្រូវបានផ្លាស់ប្តូរដោយការសម្រាក (XC8-1889) ការសំរាកលំហែ Linker មិនបានកើតឡើងសម្រាប់ការលោត ឬហៅការណែនាំដែលគោលដៅអាចទៅដល់បាន ប្រសិនបើសម្រាក។
បាត់ មុខងារ (XC8E-3) និយមន័យជាច្រើនពី ដូចជា clock_div_t និង clock_presc ale_s et () មិនត្រូវបានកំណត់សម្រាប់ឧបករណ៍ រួមទាំង ATmega324PB, ATmega328PB, ATtiny441, និង ATtiny841។
ម៉ាក្រូដែលបាត់ ម៉ាក្រូរបស់ម៉ាស៊ីនដំណើរការមុន _XC 8_MODE_, XC 8 VERS ION, XC និង xc8 មិនត្រូវបានកំណត់ដោយស្វ័យប្រវត្តិដោយកម្មវិធីចងក្រងទេ។ ទាំងនេះឥឡូវមានហើយ។
៣.២. កំណែ 5.5
កំហុសក្នុងការចងក្រងខាងក្នុង (XC8-1822) នៅពេលបង្កើតនៅក្រោមវីនដូ កំហុសក្នុងការចងក្រងខាងក្នុងអាចនឹងត្រូវបានបង្កើតឡើងនៅពេលបង្កើនប្រសិទ្ធភាពកូដ។
លើស RAM មិនត្រូវបានរកឃើញ (XC8-1800, XC8-1796) កម្មវិធីដែលលើសពី RAM ដែលអាចប្រើបានមិនត្រូវបានរកឃើញដោយអ្នកចងក្រងក្នុងស្ថានភាពមួយចំនួន ដែលបណ្តាលឱ្យមានការបរាជ័យកូដពេលដំណើរការ។
អង្គចងចាំពន្លឺដែលបានលុបចោល (XC8-1792) សម្រាប់ឧបករណ៍ avrxmega3 និង avrtiny ផ្នែកនៃអង្គចងចាំពន្លឺអាចត្រូវបានទុកចោលដោយកម្មវិធី MPLAB X IDE ។
ការបរាជ័យក្នុងការប្រតិបត្តិមេ (XC8-1788) នៅក្នុងស្ថានភាពមួយចំនួនដែលកម្មវិធីមិនមានអថេរសកលដែលបានកំណត់ កូដចាប់ផ្តើមពេលដំណើរការមិនចេញទេ ហើយមុខងារមេ () មិនដែលទៅដល់ទេ។
ព័ត៌មានអង្គចងចាំមិនត្រឹមត្រូវ (XC8-1787) សម្រាប់ឧបករណ៍ avrxmega3 និង avrtiny កម្មវិធីទំហំ avr កំពុងរាយការណ៍ថាទិន្នន័យតែឆ្កួតកំពុងប្រើប្រាស់ RAM ជំនួសឱ្យអង្គចងចាំកម្មវិធី។
ការអានអង្គចងចាំកម្មវិធីមិនត្រឹមត្រូវ (XC8-1783) គម្រោងដែលបានចងក្រងសម្រាប់ឧបករណ៍ដែលមានអង្គចងចាំកម្មវិធីដែលបានគូសផែនទីទៅក្នុងចន្លោះអាសយដ្ឋានទិន្នន័យ ហើយដែលកំណត់វត្ថុដោយប្រើម៉ាក្រូ/គុណលក្ខណៈ PROGMEM ប្រហែលជាបានអានវត្ថុទាំងនេះពីអាសយដ្ឋានខុស។
កំហុសខាងក្នុងជាមួយគុណលក្ខណៈ (XC8-1773) កំហុសខាងក្នុងបានកើតឡើង ប្រសិនបើអ្នកបានកំណត់វត្ថុទ្រនិចជាមួយសញ្ញា _at 0 ឬ attribute() រវាងឈ្មោះទ្រនិច និងប្រភេទដែលបានយោង ឧ។ample, char * _at (0x800150) cp; ឥឡូវនេះការព្រមានត្រូវបានចេញប្រសិនបើកូដបែបនេះត្រូវបានជួបប្រទះ។
បរាជ័យក្នុងការប្រតិបត្តិមេ (XC8-1780, XC8-1767, XC8-1754) ការប្រើអថេរ EEPROM ឬកំណត់ fuses ដោយប្រើ config pragma អាចបណ្តាលឱ្យមានការចាប់ផ្តើមទិន្នន័យមិនត្រឹមត្រូវ និង/ឬបិទដំណើរការកម្មវិធីនៅក្នុង runtime code startup មុនពេលឈានដល់ main 0 ។
កំហុស Fuse ជាមួយឧបករណ៍តូចៗ (XC8-1778, XC8-1742) ឧបករណ៍ attiny4/5/9/10120140 មានប្រវែង fuse មិនត្រឹមត្រូវដែលបានបញ្ជាក់នៅក្នុងបឋមកថារបស់ពួកគេ files ដែលនាំឱ្យមានកំហុសតំណភ្ជាប់នៅពេលព្យាយាមបង្កើតកូដដែលកំណត់ fuses ។
កំហុសផ្នែក (XC8-1777) កំហុសនៃការបែងចែកជាបន្តបន្ទាប់ត្រូវបានកែតម្រូវ។
ឧប្បត្តិហេតុធ្លាក់ (XC8-1761) avr -as assembler អាចនឹងគាំង នៅពេលដែល compiler ដំណើរការក្រោម Ubuntu 18។
វត្ថុមិនត្រូវបានសម្អាត (XC8-1752) វត្ថុរយៈពេលផ្ទុកឋិតិវន្តដែលមិនទាន់បង្កើតអាចមិនត្រូវបានសម្អាតដោយលេខកូដចាប់ផ្ដើមពេលដំណើរការទេ។
មិនអើពើការបញ្ជាក់ឧបករណ៍ដែលមានជម្លោះ (XC8-1749) The កម្មវិធីចងក្រងមិនបង្កើតកំហុសទេ នៅពេលដែលជម្រើសជាក់លាក់នៃឧបករណ៍ជាច្រើនត្រូវបានប្រើ និងចង្អុលបង្ហាញឧបករណ៍ផ្សេងៗ។
ខូចការចងចាំដោយ heap (XC8-1748) The និមិត្តសញ្ញា _heap_start កំពុងត្រូវបានកំណត់មិនត្រឹមត្រូវ ដែលជាលទ្ធផលអាចធ្វើឱ្យអថេរធម្មតាត្រូវបានខូចដោយ heap។
កំហុសក្នុងការផ្លាស់ទីលំនៅរបស់ Linker (XC8-1739) កំហុសផ្លាស់ប្តូរទីតាំងរបស់ linker អាចត្រូវបានបញ្ចេញនៅពេលដែលកូដមាន rjmn ឬ rcall ជាមួយនឹងគោលដៅពិតប្រាកដ 4k bytes ឆ្ងាយ។
៣.៥. កំណែ 5.6 គ្មាន។
បញ្ហាដែលគេស្គាល់
ខាងក្រោមនេះគឺជាដែនកំណត់ក្នុងប្រតិបត្តិការរបស់អ្នកចងក្រង។ ទាំងនេះអាចជាការរឹតបន្តឹងការសរសេរកូដទូទៅ ឬគម្លាតពីព័ត៌មានដែលមាននៅក្នុងសៀវភៅណែនាំរបស់អ្នកប្រើ។ ស្លាកសញ្ញាតង្កៀបនៅក្នុងជំនោរគឺជាការកំណត់អត្តសញ្ញាណបញ្ហានោះនៅក្នុងមូលដ្ឋានទិន្នន័យតាមដាន។ វាអាចមានប្រយោជន៍ ប្រសិនបើអ្នកត្រូវការទាក់ទងផ្នែកជំនួយ។ ធាតុទាំងនោះដែលមិនមានស្លាកគឺជាដែនកំណត់ដែលពណ៌នាអំពី modi operandi ហើយដែលទំនងជានៅតែមានសុពលភាពជាអចិន្ត្រៃយ៍។
៦.១. MPLAB X IDE សមាហរណកម្ម
MPLAB ការរួមបញ្ចូល IDE ប្រសិនបើ Compiler នឹងត្រូវប្រើពី MPLAB IDE នោះអ្នកត្រូវតែដំឡើង MPLAB IDE មុនពេលដំឡើង Compiler ។
៦.២. ការបង្កើតកូដ
មិនត្រឹមត្រូវ ការចាប់ផ្តើម (XC8-2679) មានភាពមិនស្របគ្នារវាងតម្លៃដំបូងសម្រាប់វត្ថុដែលមានទំហំបៃបៃជាសកល/ឋិតិវន្តមួយចំនួនត្រូវបានដាក់ក្នុងអង្គចងចាំទិន្នន័យ និងកន្លែងដែលអថេរនឹងត្រូវបានចូលប្រើនៅពេលដំណើរការ។
strtod កំណត់ endptr មិនត្រឹមត្រូវ (XC8-2652) ក្នុងករណីដែលខ្សែអក្សរប្រធានបទសម្រាប់ការបំប្លែងដោយ strtod () មានអ្វីដែលមើលទៅដូចជាលេខចំណុចអណ្តែតក្នុងទម្រង់អិចស្ប៉ូណង់ស្យែល ហើយមានតួអក្សរដែលមិនរំពឹងទុកបន្ទាប់ពីតួអក្សរ e បន្ទាប់មកអាសយដ្ឋាន endptr ប្រសិនបើបានផ្តល់នឹងចង្អុលទៅតួអក្សរបន្ទាប់ពី អ៊ី និងមិនមែន អ៊ី ខ្លួនឯងទេ។ សម្រាប់អតីតample: strtod ("100exy", endptr);
នឹងមានលទ្ធផល endptr ចង្អុលទៅតួអក្សរ x ។
ការហៅមុខងារប្រយោលមិនល្អ (X03-2628) ក្នុងករណីខ្លះ ការហៅមុខងារដែលបានធ្វើឡើងតាមរយៈទ្រនិចមុខងារដែលរក្សាទុកជាផ្នែកនៃរចនាសម្ព័ន្ធអាចនឹងបរាជ័យ។
strtof ត្រឡប់សូន្យសម្រាប់អណ្តែតលេខគោលប្រាំមួយ (XC8-2626) បណ្ណាល័យមានមុខងារ strtof() et al និង scanf() et al នឹងតែងតែបំប្លែងលេខអណ្តែតលើលេខគោលដប់ប្រាំមួយ ដែលមិនបញ្ជាក់និទស្សន្តទៅជាសូន្យ។ សម្រាប់អតីតampលេ៖ strtof (“Oxl”, &endptr); នឹងត្រឡប់តម្លៃ 0 មិនមែន 1 ទេ។
ការផ្ញើសាររបស់ទីប្រឹក្សាជង់មិនត្រឹមត្រូវ (XC8-2542, XC8-2541) ក្នុងករណីខ្លះ ការព្រមានរបស់ទីប្រឹក្សាជង់ទាក់ទងនឹងការបង្កើតឡើងវិញ ឬជង់មិនកំណត់ដែលបានប្រើ (អាចតាមរយៈការប្រើប្រាស់ alloca()) មិនត្រូវបានបញ្ចេញទេ។
បរាជ័យជាមួយលេខកូដរំខានស្ទួន (XC8-2421) ប្រសិនបើមុខងាររំខានច្រើនជាងមួយមានតួដូចគ្នា អ្នកចងក្រងអាចមានលទ្ធផលសម្រាប់មុខងាររំខានមួយហៅទៅមួយទៀត។ វានឹងនាំឱ្យការចុះឈ្មោះដែលបានហៅចូលទាំងអស់ត្រូវបានរក្សាទុកដោយមិនចាំបាច់ ហើយការរំខាននឹងត្រូវបានបើក សូម្បីតែមុនពេលការផ្សាយរបស់អ្នកដោះស្រាយការរំខានបច្ចុប្បន្នបានដំណើរការ ដែលអាចនាំឱ្យមានការបរាជ័យកូដ។
ថេរ វត្ថុមិននៅក្នុងអង្គចងចាំកម្មវិធី (XC8-2408) សម្រាប់គម្រោង avrxmega3 និង avrtiny វត្ថុ const unitialized ត្រូវបានដាក់ចូលទៅក្នុងអង្គចងចាំទិន្នន័យ ទោះបីជាការព្រមានបង្ហាញថាពួកវាត្រូវបានដាក់ក្នុងអង្គចងចាំកម្មវិធីក៏ដោយ។ វានឹងមិនប៉ះពាល់ដល់ឧបករណ៍ដែលមិនមានអង្គចងចាំកម្មវិធីដែលបានគូសផែនទីទៅក្នុងទំហំអង្គចងចាំទិន្នន័យនោះទេ ហើយក៏មិនប៉ះពាល់ដល់វត្ថុណាមួយដែលត្រូវបានចាប់ផ្តើមនោះទេ។
លទ្ធផលមិនល្អជាមួយនឹងផ្លូវ DFP មិនត្រឹមត្រូវ (XCS-2376) ប្រសិនបើកម្មវិធីចងក្រងត្រូវបានហៅដោយផ្លូវ DFP មិនត្រឹមត្រូវ និង 'លក្ខណៈពិសេស' file មានសម្រាប់ឧបករណ៍ដែលបានជ្រើសរើស អ្នកចងក្រងមិនរាយការណ៍អំពីកញ្ចប់គ្រួសារឧបករណ៍ដែលបាត់ទេ ហើយជំនួសមកវិញដោយជ្រើសរើស 'លក្ខណៈពិសេស' fileដែលអាចនាំឱ្យមានលទ្ធផលមិនត្រឹមត្រូវ។ 'លក្ខណៈពិសេស' files អាចនឹងមិនទាន់សម័យជាមួយ DFPs ដែលបានចែកចាយ ហើយត្រូវបានបម្រុងទុកសម្រាប់ប្រើជាមួយនឹងការធ្វើតេស្ដចងក្រងខាងក្នុងប៉ុណ្ណោះ។
អង្គចងចាំត្រួតលើគ្នាមិនត្រូវបានរកឃើញ (XC8-1966) កម្មវិធីចងក្រងមិនបានរកឃើញការត្រួតលើគ្នានៃអង្គចងចាំនៃវត្ថុដែលបានធ្វើឡើងដាច់ខាតនៅអាសយដ្ឋានមួយ (តាមរយៈ _at 0) និងវត្ថុផ្សេងទៀតដោយប្រើ _និកាយion() specifier ហើយដែលត្រូវបានភ្ជាប់ទៅអាសយដ្ឋានដូចគ្នា។
ការបរាជ័យជាមួយមុខងារបណ្ណាល័យ និង _memx (XC8-1763) ហៅថា libgcc float 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) ចន្លោះអាស័យដ្ឋានដែលមានឈ្មោះត្រូវបានគាំទ្រដោយ toolchain ដែលស្ថិតនៅក្រោមដែនកំណត់ដែលបានរៀបរាប់នៅក្នុងផ្នែកណែនាំរបស់អ្នកប្រើ ការកំណត់ប្រភេទពិសេស។
តំបន់ពេលវេលា The មុខងារបណ្ណាល័យសន្មតថា GMT និងមិនគាំទ្រតំបន់ម៉ោងក្នុងស្រុក ដូច្នេះទីតាំងវា ime 0 នឹងត្រឡប់ពេលវេលាដូចគ្នាជាមួយ gmtime ( ) , សម្រាប់ឧ។ampលេ
ឯកសារ/ធនធាន
![]() |
MICROCHIP MPLAB XC8 C Compiler Version 2.39 Release Notes សម្រាប់ AVR MCU [pdf] ការណែនាំអ្នកប្រើប្រាស់ MPLAB XC8 C Compiler Version 2.39 Release Notes for AVR MCU, MPLAB XC8 C, Compiler Version 2.39 Release Notes for AVR MCU, Release Notes for AVR MCU |
![]() |
MICROCHIP MPLAB XC8 C Compiler Version 2.39 Release Notes សម្រាប់ AVR MCU [pdf] ការណែនាំអ្នកប្រើប្រាស់ MPLAB XC8 C Compiler Version 2.39 Release Notes for AVR MCU, MPLAB XC8 C, Compiler Version 2.39 Release Notes for AVR MCU, Notes for AVR MCU |
![]() |
ឧបករណ៍ចងក្រង MICROCHIP MPLAB XC8 C [pdf] ការណែនាំអ្នកប្រើប្រាស់ MPLAB XC8 C Compiler, MPLAB XC8 C, Compiler |






