برنامج المترجم MICROCHIP MPLAB XC8 C 

برنامج المترجم MICROCHIP MPLAB XC8 C

يحتوي هذا المستند على معلومات مهمة تتعلق بمترجم MPLAB XC8 C عند استهداف أجهزة MICROCHIP AVR.
يرجى قراءتها قبل تشغيل هذا البرنامج. راجع ملاحظات إصدار برنامج التحويل البرمجي MPLAB XC8 C للحصول على مستند الموافقة المسبقة عن علم إذا كنت تستخدم برنامج التحويل البرمجي لأجهزة الموافقة المسبقة عن علم ذات 8 بت.

محتويات يخفي

زيادةview

مقدمة

يحتوي هذا الإصدار من برنامج التحويل البرمجي Microchip MPLAB® XC8 C على العديد من الميزات الجديدة وإصلاحات الأخطاء ودعم الأجهزة الجديدة.

تاريخ البناء

تاريخ الإنشاء الرسمي لإصدار المترجم هذا هو 3 يوليو 2022.

إصدار سابق

كان الإصدار السابق للمترجم MPLAB XC8 C هو 2.39، وهو مترجم أمان وظيفي، تم إنشاؤه في 27 يناير 2022. وكان المترجم القياسي السابق هو الإصدار 2.36، الذي تم إنشاؤه في 27 يناير 2022.

دليل السلامة الوظيفية

يتوفر دليل السلامة الوظيفية لمجمعي MPLAB XC في حزمة الوثائق عند شراء ترخيص أمان وظيفي.

تراخيص وإصدارات المكونات

تتم كتابة مترجم MPLAB® XC8 C لأدوات AVR MCUs وتوزيعه بموجب ترخيص GNU العام (GPL) مما يعني أن كود المصدر الخاص به يتم توزيعه مجانًا ومتاح للجمهور. يمكن تنزيل الكود المصدري للأدوات الموجودة تحت رخصة GNU GPL بشكل منفصل عن Microchip webموقع. يمكنك قراءة جنو جي بي إل في file يقع اسمه في الدليل الفرعي لدليل التثبيت الخاص بك. يمكن الاطلاع على مناقشة عامة للمبادئ التي تقوم عليها GPL هنا. تم توفير رمز الدعم للرأس fileتعتبر البرامج النصية للرابط ومكتبات وقت التشغيل بمثابة تعليمات برمجية خاصة ولا تغطيها رخصة GPL.

هذا المترجم هو تطبيق لإصدار مجلس التعاون الخليجي 5.4.0، وbinutils الإصدار 2.26، ويستخدم avr-libc الإصدار 2.0.0.

متطلبات النظام

يتوفر برنامج التحويل البرمجي MPLAB XC8 C وبرنامج الترخيص الذي يستخدمه لمجموعة متنوعة من أنظمة التشغيل، بما في ذلك إصدارات 64 بت مما يلي: الإصدارات الاحترافية من Microsoft Windows 10؛ أوبونتو 18.04؛ و ماك 10.15.5. تم توقيع الثنائيات لنظام التشغيل Windows بالرمز. تم توقيع الثنائيات لنظام التشغيل Mac OS وتوثيقها.

إذا كنت تقوم بتشغيل خادم ترخيص شبكة، فيمكن استخدام أجهزة الكمبيوتر التي تحتوي على أنظمة تشغيل مدعومة من قبل المجمعين فقط لاستضافة خادم الترخيص. اعتبارًا من الإصدار 2.0 من xclm، يمكن تثبيت خادم ترخيص الشبكة على نظام Microsoft Windows Server الأساسي، لكن خادم الترخيص لا يحتاج إلى التشغيل على إصدار خادم من نظام التشغيل.

الأجهزة المدعومة

يدعم هذا المترجم جميع أجهزة AVR MCU ذات 8 بت المعروفة وقت الإصدار. راجع (في دليل مستند المترجم) للحصول على قائمة بجميع الأجهزة المدعومة. هؤلاء fileيسرد أيضًا إعدادات بت التكوين لكل جهاز.

الإصدارات وترقيات الترخيص

يمكن تنشيط برنامج التحويل البرمجي MPLAB XC8 كمنتج مرخص (PRO) أو غير مرخص (مجاني). تحتاج إلى شراء مفتاح التنشيط لترخيص المترجم الخاص بك. يسمح الترخيص بمستوى أعلى من التحسين مقارنة بالمنتج المجاني. يمكن تشغيل مترجم غير مرخص إلى أجل غير مسمى دون ترخيص.

يجب تنشيط برنامج التحويل البرمجي للسلامة الوظيفية MPLAB XC8 باستخدام ترخيص أمان وظيفي تم شراؤه من شركة Microchip. لن يعمل المترجم بدون هذا الترخيص. بمجرد التنشيط، يمكنك تحديد أي مستوى تحسين واستخدام كافة ميزات المترجم. يدعم هذا الإصدار من MPLAB XC Functional Safety Compiler ترخيص خادم الشبكة.
راجع مستند تثبيت وترخيص MPLAB XC C Compilers (DS50002059) للحصول على معلومات حول أنواع التراخيص وتثبيت المترجم بترخيص.

التثبيت والتنشيط

راجع أيضًا أقسام مشكلات الترحيل والقيود للحصول على معلومات مهمة حول أحدث مدير ترخيص مضمن في هذا المترجم.
إذا كنت تستخدم MPLAB IDE، فتأكد من تثبيت الإصدار 5.0 من MPLAB X IDE الأحدث أو الأحدث قبل تثبيت هذه الأداة. قم بإنهاء IDE قبل تثبيت المحول البرمجي. قم بتشغيل تطبيق تثبيت برنامج التحويل البرمجي .exe (Windows) أو .run (Linux) أو التطبيق (macOS)، على سبيل المثال XC8-1.00.11403-windows.exe واتبع الإرشادات التي تظهر على الشاشة.
يوصى باستخدام دليل التثبيت الافتراضي. إذا كنت تستخدم Linux، فيجب عليك تثبيت المترجم باستخدام محطة طرفية ومن حساب جذر. قم بالتثبيت باستخدام حساب macOS مع امتيازات المسؤول.

يتم الآن التنشيط بشكل منفصل عن التثبيت. راجع المستند مدير الترخيص لمجمعات MPLAB® XC C (DS52059) لمزيد من المعلومات.

إذا اخترت تشغيل المترجم بموجب ترخيص التقييم، فستتلقى الآن تحذيرًا أثناء التجميع عندما تكون في غضون 14 يومًا من نهاية فترة التقييم. يتم إصدار نفس التحذير إذا كنت في غضون 14 يومًا من انتهاء اشتراك HPA الخاص بك.

يعد خادم ترخيص شبكة XC برنامج تثبيت منفصل ولم يتم تضمينه في برنامج تثبيت برنامج التحويل البرمجي للمستخدم الواحد.

يدعم مدير ترخيص XC الآن تجوال تراخيص الشبكة العائمة. تستهدف هذه الميزة مستخدمي الأجهزة المحمولة، وتسمح للترخيص العائم بالخروج من الشبكة لفترة قصيرة من الوقت. باستخدام هذه الميزة، يمكنك قطع الاتصال بالشبكة والاستمرار في استخدام برنامج التحويل البرمجي MPLAB XC الخاص بك. راجع مجلد المستندات الخاص بتثبيت XCLM لمعرفة المزيد حول هذه الميزة. يتضمن MPLAB X IDE نافذة تراخيص (الأدوات > التراخيص) لإدارة التجوال بشكل مرئي.

حل مشاكل التثبيت

إذا واجهت صعوبات في تثبيت المترجم ضمن أي من أنظمة تشغيل Windows، فجرّب الاقتراحات التالية.

  • قم بتشغيل التثبيت كمسؤول.
  • قم بتعيين أذونات تطبيق التثبيت على "التحكم الكامل". (انقر بزر الماوس الأيمن على file، حدد الخصائص، علامة التبويب الأمان، حدد المستخدم، تحرير.)
  • قم بتعيين أذونات المجلد المؤقت على "التحكم الكامل!

لتحديد موقع المجلد المؤقت، اكتب %temp% في أمر التشغيل (مفتاح شعار Windows + R). سيؤدي هذا إلى فتح أ file يعرض مربع حوار المستكشف هذا الدليل وسيسمح لك بتحديد مسار هذا المجلد.

توثيق المترجم

يمكن فتح أدلة مستخدم المترجم من صفحة HTML التي تفتح في متصفحك عند النقر فوق زر المساعدة الأزرق في لوحة معلومات MPLAB X IDE ، كما هو موضح في لقطة الشاشة.

توثيق المترجم
إذا كنت تقوم بالبناء لأهداف AVR 8 بت ، فإن دليل مستخدم مترجم MPLAB® XC8 C لـ AVR® MCU يحتوي على معلومات حول خيارات المترجم والميزات التي تنطبق على هذه البنية.

دعم العملاء

ترحب Microchip بتقارير الأخطاء أو الاقتراحات أو التعليقات المتعلقة بإصدار المترجم هذا. يرجى توجيه أي تقارير أخطاء أو طلبات ميزات عبر نظام الدعم.

تحديثات التوثيق

للحصول على إصدارات على الإنترنت ومحدثة من وثائق MPLAB XC8 ، يرجى زيارة التوثيق الفني عبر الإنترنت الخاص بشريحة Microchip webموقع.

وثائق AVR الجديدة أو المحدثة في هذا الإصدار:

  • إشعار حقوق الطبع والنشر MUSL
  • تثبيت وترخيص مترجمات MPLAB XC C (المراجعة M)
  • دليل مستخدم MPLAB XC8 للمهندسين المضمنين - وحدات AVR MCU (المراجعة أ)
  • دليل مستخدم برنامج التحويل البرمجي MPLAB XC8 C لـ AVR MCU (المراجعة F)
  • الدليل المرجعي للمكتبة القياسية الموحدة للرقائق الدقيقة (المراجعة ب)

يصف الدليل المرجعي لمكتبة Microchip Unified Standard Library سلوك الوظائف التي تحددها مكتبة Microchip Unified Standard Library والواجهة الخاصة بها، بالإضافة إلى الاستخدام المقصود لأنواع المكتبات ووحدات الماكرو. تم تضمين بعض هذه المعلومات مسبقًا في دليل مستخدم MPLAB® XC8 C Compiler! لـ AVR® MCU. لا تزال معلومات المكتبة الخاصة بالجهاز موجودة في دليل المترجم هذا.

إذا كنت قد بدأت للتو باستخدام أجهزة 8 بت ومترجم MPLAB XC8 C، فإن دليل مستخدم MPLAB® XC8! للمهندسين المضمنين - AVR® MCUs (DS50003108) يحتوي على معلومات حول إعداد المشاريع في MPLAB X IDE وكتابة التعليمات البرمجية لمشروعك الأول MPLAB XC8 C. يتم الآن توزيع هذا الدليل مع المترجم.

تم تضمين دليل مستخدم Hamate في دليل المستندات في هذا الإصدار. هذا الدليل مخصص لأولئك الذين يقومون بتشغيل Hamate كتطبيق مستقل.

ما الجديد

فيما يلي ميزات AVR-target الجديدة التي يدعمها المترجم الآن. يشير رقم الإصدار في العناوين الفرعية إلى إصدار المترجم الأول الذي يدعم الميزات التالية.

الإصدار 2.40

دعم الجهاز الجديد يتوفر الدعم الآن لأجزاء AVR التالية: AT90PWM3، AVR16DD14، AVR16DD20، AVR16DD28، AVR16DD32، AVR32DD14، AVR32DD20، AVR32DD28، AVR32DD32، AVR64EA28، AVR64EA32، وAVR64EA48.
تحسين التجريد الإجرائي تم تحسين أداة تحسين التجريد الإجرائي (PA) بحيث يمكن تحديد التعليمات البرمجية التي تحتوي على تعليمات استدعاء الوظيفة (استدعاء الاستدعاء)). لن يحدث هذا إلا إذا لم يتم استخدام المكدس لتمرير الوسائط أو الحصول على قيمة الإرجاع من الوظيفة. يتم استخدام المكدس عند استدعاء دالة بقائمة وسائط متغيرة أو عند استدعاء دالة تأخذ وسائط أكثر من السجلات المخصصة لهذا الغرض. يمكن تعطيل هذه الميزة باستخدام خيار مكالمات Monk-pa-outline، أو يمكن تعطيل التجريد الإجرائي بالكامل لكائن ما file أو الوظيفة باستخدام -monk-pa-on-file و -mo.-pa-on-function على التوالي، أو باستخدام سمة nipa ( محدد nipa ) بشكل انتقائي مع الوظائف

ماكرو تغطية التعليمات البرمجية يقوم المترجم الآن بتعريف الماكرو __CODECOV إذا تم تحديد خيار mcodecov صالح.

خيار حجز الذاكرة سيقبل برنامج التشغيل xc8-cc الآن خيار -mreserve=space@start: end عند إنشاء أهداف AVR. يحجز هذا الخيار نطاق الذاكرة المحدد في مساحة ذاكرة البيانات أو البرنامج، مما يمنع الرابط من تعبئة التعليمات البرمجية أو الكائنات في هذه المنطقة.

IO أكثر ذكاءً تم إجراء العديد من التحسينات على وظائف Smart IO، بما في ذلك التعديلات العامة على كود printf الأساسي، والتعامل مع محدد التحويل %n كمتغير مستقل، والربط في إجراءات vararg pop عند الطلب، واستخدام أنواع بيانات أقصر حيثما أمكن ذلك للتعامل مع وسيطات وظيفة IO واحتساب الكود العام في عرض المجال والتعامل الدقيق. يمكن أن يؤدي ذلك إلى توفير كبير في التعليمات البرمجية والبيانات، بالإضافة إلى زيادة سرعة تنفيذ الإدخال/الإخراج.

الإصدار 2.39 (إصدار السلامة الوظيفية)

ترخيص خادم الشبكة يدعم هذا الإصدار من MPLAB XC8 Functional Safety Compiler ترخيص خادم الشبكة.

الإصدار 2.36

لا أحد.

الإصدار 2.35

دعم الجهاز الجديد يتوفر الدعم لأجزاء AVR التالية: ATTINY3224، وATTINY3226، وATTINY3227، وAVR64DD14، وAVR64DD20، وAVR64DD28، وAVR64DD32.

تحسين تبديل السياق يغير خيار -mcall-isr-prologues الجديد كيفية حفظ وظائف المقاطعة للسجلات عند الإدخال وكيفية استعادة تلك السجلات عند انتهاء روتين المقاطعة. وهو يعمل بطريقة مشابهة للخيار -mcall-prologues، ولكنه يؤثر فقط على وظائف المقاطعة (ISRs).

المزيد من تحسين تبديل السياق يتحكم خيار -mgas-isr-prologues الجديد في كود حكة السياقات الذي تم إنشاؤه لإجراءات خدمة المقاطعة الصغيرة. عند تمكين هذه الميزة، ستطلب من المجمّع فحص ISR لاستخدام السجل وحفظ هذه السجلات المستخدمة فقط إذا لزم الأمر.

رسم خرائط فلاش قابلة للتكوين تحتوي بعض الأجهزة في عائلة AVR DA وAVR DB على SFR (على سبيل المثال FLMAP) الذي يحدد قسم 32 كيلو بايت من ذاكرة البرنامج الذي سيتم تعيينه في ذاكرة البيانات. يمكن استخدام خيار mconst-data-in-config-mapped-proem الجديد لجعل الرابط يضع جميع البيانات المؤهلة السلبية في قسم واحد بحجم 32 كيلو بايت ويقوم تلقائيًا بتهيئة سجل SFR ذي الصلة لضمان تعيين هذه البيانات في مساحة ذاكرة البيانات حيث سيتم الوصول إليها بشكل أكثر فعالية.

المكتبات القياسية الموحدة للرقائق الدقيقة سيتشارك جميع مترجمي MPLAB XC في مكتبة Microchip Unified Standard Library، المتوفرة الآن مع هذا الإصدار من MPLAB XC8. لم يعد دليل مستخدم MPLAB® XC8 C Compiler أو AVR® MCU يتضمن الوثائق الخاصة بهذه الوظائف القياسية. يمكن الآن العثور على هذه المعلومات في الدليل المرجعي لمكتبة Microchip Unified Standard Library. لاحظ أن بعض الوظائف التي تم تعريفها مسبقًا بواسطة avr-libc لم تعد متوفرة. (انظر ليبرار):'. وظائف…)

IO الذكية كجزء من المكتبات الموحدة الجديدة، يتم الآن إنشاء وظائف الإدخال والإخراج في عائلات الطباعة والمسح الضوئي بشكل مخصص في كل إصدار، بناءً على كيفية استخدام هذه الوظائف في البرنامج. وهذا يمكن أن يقلل بشكل كبير من الموارد التي يستخدمها البرنامج.
خيار المساعدة الذكية IO عند تحليل استدعاءات وظائف الإدخال والإخراج الذكية (مثل printf () أو scanf ())، لا يستطيع المترجم دائمًا التحديد من سلسلة التنسيق أو الاستدلال من الوسيطات على محددات التحويل التي يتطلبها الاستدعاء. في السابق، لم يكن المترجم دائمًا يضع أي افتراضات ويضمن ربط وظائف الإدخال والإخراج (IO) كاملة الوظائف بالصورة النهائية للبرنامج. تمت إضافة خيار جديد – msmart-io-format=fmt بحيث يمكن للمستخدم بدلاً من ذلك إعلام المترجم بمحددات التحويل المستخدمة بواسطة وظائف الإدخال والإخراج الذكية التي يكون استخدامها غامضًا، مما يمنع ربط إجراءات الإدخال والإخراج الطويلة جدًا. (راجع خيار تنسيق Smart-io لمزيد من التفاصيل.)

وضع أقسام مخصصة في السابق، كان خيار -Wl, -section-start يضع القسم المحدد على العنوان المطلوب فقط عندما يحدد البرنامج النصي للرابط قسم إخراج يحمل نفس الاسم. عندما لم يكن الأمر كذلك، تم وضع القسم على عنوان اختاره الرابط وتم تجاهل الخيار بشكل أساسي. سيتم الآن تفعيل الخيار لجميع الأقسام المخصصة، حتى لو لم يحدد البرنامج النصي للرابط القسم. ومع ذلك، لاحظ أنه بالنسبة للأقسام القياسية، مثل . نص، . ب س أو . البيانات، فإن المُخصص الأفضل سيظل يتمتع بالتحكم الكامل في موضعها، ولن يكون للخيار أي تأثير. استخدم -Wl, -Tsection=add الخيار، كما هو موضح في دليل المستخدم.

الإصدار 2.32

توجيه المكدس تتوفر ميزة توجيه المكدس الخاصة بالمترجم بترخيص PRO، ويمكن استخدامها لتقدير الحد الأقصى لعمق أي مكدس يستخدمه البرنامج. يقوم ببناء وتحليل الرسم البياني للاتصال الخاص بالبرنامج، ويحدد استخدام المكدس لكل وظيفة، وينتج تقريرًا يمكن من خلاله استنتاج عمق المكدسات التي يستخدمها البرنامج. يتم تمكين هذه الميزة من خلال خيار سطر الأوامر -mchp-stack-usage. تتم طباعة ملخص استخدام المكدس بعد التنفيذ. يتوفر تقرير مكدس مفصل في الخريطة fileوالتي يمكن طلبها بالطريقة المعتادة.

دعم دعم الجهاز الجديد متوفر لأجزاء AVR التالية: ATTINY 427، ATTINY 424، ATTINY 426، ATTINY827، ATTINY824، ATTINY826، AVR32DB32، AVR64DB48، AVR64DB64، AVR64DB28، AVR32DB28، AVR64DB32، وAVR32DB48.

دعم دعم الجهاز المنسحب لم يعد متوفرًا لأجزاء AVR التالية: AVR16DA28، وAVR16DA32، وAVR16DA48.

الإصدار 2.31

لا أحد.

الإصدار 2.30

خيار جديد لمنع تهيئة البيانات يمنع خيار برنامج التشغيل الجديد -mno-data-ini t تهيئة البيانات ومسح أقسام bss. وهو يعمل عن طريق منع إخراج بيانات do_copy_ ورموز d o_clear_ bss في التجميع files، والذي بدوره سيمنع إدراج تلك الإجراءات بواسطة الرابط.

تحسينات محسّنة تم إجراء عدد من تحسينات التحسين ، بما في ذلك إزالة تعليمات الإرجاع الزائدة ، وإزالة بعض القفزات التي تتبع تعليمة تخطي إذا كانت بت ، وتحسين التجريد الإجرائي والقدرة على تكرار هذه العملية.

تتوفر الآن خيارات إضافية للتحكم في بعض هذه التحسينات، وتحديدًا نقاط ارتساء القسم -f، والتي تسمح بالوصول إلى الكائنات الثابتة التي سيتم تنفيذها بالنسبة لرمز واحد؛ -mpai derations=n، والذي يسمح بتغيير عدد تكرارات التجريد الإجرائي من العدد الافتراضي 2؛ و -mpa- تكلفة المكالمة- Shortcall، والتي تؤدي تجريدًا إجرائيًا أكثر عدوانية، على أمل أن يتمكن الرابط من تخفيف المكالمات الطويلة. يمكن لهذا الخيار الأخير زيادة حجم الكود إذا لم يتم تحقيق الافتراضات الأساسية.

دعم الجهاز الجديد يتوفر الدعم لأجزاء AVR التالية: AVR16DA28، AVR16DA32،
AVR16DA48، AVR32DA28، AVR32DA32، AVR32DA48، AVR64DA28، AVR64DA32، AVR64DA48، AVR64DA64، AVR128DB28، AVR128DB32، AVR128DB48، وAVR128DB64.

دعم الجهاز المسحوب لم يعد الدعم متوفرًا لأجزاء AVR التالية: ATA5272، ATA5790، ATA5790N، ATA5791، ATA5795، ATA6285، ATA6286، ATA6612C، ATA6613C، ATA6614Q، ATA6616C، ATA6617C، و ATA664251.

الإصدار 2.29 (إصدار السلامة الوظيفية)

رأس الصفحة file للمكونات المضمنة للمترجم للتأكد من أن المترجم يمكن أن يتوافق مع مواصفات اللغة مثل MISRA، فإن header file، والتي يتم تضمينها تلقائيًا بواسطة ، تم التحديث. يحتوي هذا الرأس على النماذج الأولية لجميع الوظائف المضمنة، مثل _buil tin _avrnop () و _buil tin_ avr Delay_ Cycles () . قد لا تكون بعض المكونات الإضافية متوافقة مع MISRA؛ يمكن حذفها عن طريق إضافة تعريف _Xe_ STRICT_ MISRA إلى سطر أوامر المحول البرمجي. تم تحديث العناصر المضمنة وإعلاناتها لاستخدام الأنواع ذات العرض الثابت.

الإصدار 2.20

دعم الجهاز الجديد يتوفر الدعم لأجزاء AVR التالية: ATTINY1624، وATTINY1626، وATTINY1627.

تخصيص أفضل أفضل تم تحسين المُخصص الأفضل (BFA) في المترجم بحيث يتم تخصيص الأقسام بترتيب يسمح بتحسين أفضل. يدعم منتدى بواو الاسيوى الآن مساحات العناوين المسماة ويتعامل بشكل أفضل مع تهيئة البيانات.

تحسين التجريد الإجرائي يتم الآن إجراء تحسينات التجريد الإجرائي على المزيد من تسلسلات التعليمات البرمجية. تمت معالجة المواقف السابقة التي قد يؤدي فيها هذا التحسين إلى زيادة حجم التعليمات البرمجية عن طريق جعل رمز التحسين على علم بعملية تجميع البيانات المهملة الخاصة بالرابط.

غياب مجمع AVR لم يعد مجمع AVR مضمنًا في هذا التوزيع.

الإصدار 2.19 (إصدار السلامة الوظيفية)

لا أحد.

الإصدار 2.10

تغطية التعليمات البرمجية يتضمن هذا الإصدار ميزة تغطية التعليمات البرمجية التي تسهل تحليل مدى تنفيذ التعليمات البرمجية المصدر للمشروع. استخدم الخيار -mcodecov=ram لتمكينه. بعد تنفيذ البرنامج على أجهزتك، سيتم تجميع معلومات تغطية التعليمات البرمجية في الجهاز، ويمكن نقلها وعرضها بواسطة MPLAB X IDE عبر مكون إضافي لتغطية التعليمات البرمجية. راجع وثائق IDE للحصول على معلومات حول هذا البرنامج المساعد الذي يمكن الحصول عليه. يمكن استخدام #pragma mcodecov لاستبعاد الوظائف اللاحقة من تحليل التغطية. ومن الناحية المثالية ينبغي إضافة البراغما في بداية file لاستبعاد ذلك كله file من تحليل التغطية وبدلاً من ذلك، يمكن استخدام السمة ( (mcodecov) ) لاستبعاد وظيفة معينة من تحليل التغطية.

وصف الجهاز files جهاز جديد file دعا avr chipinfo. يقع html في دليل المستندات الخاص بتوزيع المترجم. هذا file يسرد جميع الأجهزة التي يدعمها المترجم. انقر فوق اسم الجهاز، وسيفتح صفحة تعرض جميع أزواج إعدادات/قيم بت التكوين المسموح بها لهذا الجهاز، مع السابقينampليز.

التجريد الإجرائي تمت إضافة تحسينات التجريد الإجرائي إلى المترجم، والتي تستبدل الكتل الشائعة من كود التجميع باستدعاءات لنسخة مستخرجة من تلك الكتلة. يتم تنفيذ ذلك بواسطة تطبيق منفصل، والذي يتم استدعاؤه تلقائيًا بواسطة المترجم عند تحديد تحسينات المستوى 2 أو 3. تعمل هذه التحسينات على تقليل حجم التعليمات البرمجية، ولكنها قد تقلل من سرعة التنفيذ وإمكانية تصحيح الأخطاء في التعليمات البرمجية.
يمكن تعطيل التجريد الإجرائي عند مستويات التحسين الأعلى باستخدام الخيار -mno-pa، أو يمكن تمكينه عند مستويات التحسين الأقل (التي تخضع لترخيصك) باستخدام -mpa. يمكن تعطيله لكائن ما file باستخدام -mno-pa-on-file=filename، أو تعطيله لوظيفة باستخدام -mno-pa on function= function.
داخل الكود المصدري الخاص بك، يمكن تعطيل التجريد الإجرائي لوظيفة ما باستخدام _attribute_ ( (nopa)) مع تعريف الوظيفة، أو باستخدام _nopa، الذي يمتد إلى السمة ( (nopa, noinline)) وبالتالي يمنع تضمين الوظيفة من الحدوث وهناك تجريد من التعليمات البرمجية المضمنة.
دعم بت القفل في براغما يمكن الآن استخدام التكوين #pragma لتحديد بتات قفل AVR بالإضافة إلى بتات التكوين الأخرى. تحقق من معلومات شريحة avr. لغة البرمجة file (المذكورة أعلاه) لأزواج الإعداد/القيمة لاستخدامها مع هذه البراغما.
دعم الجهاز الجديد يتوفر الدعم للأجزاء التالية: AVR28DA128، وAVR64DA128، وAVR32DA128، وAVR48DA128.

الإصدار 2.05

المزيد من القطع لأموالك أصبح إصدار macOS من هذا المترجم ومدير الترخيص الآن تطبيقًا 64 بت. سيضمن هذا تثبيت المترجم وتشغيله دون تحذيرات على الإصدارات الحديثة من نظام التشغيل macOS.
كائنات Const في ذاكرة البرنامج يمكن للمترجم الآن وضع كائنات Const المؤهلة في ذاكرة فلاش الخاصة بالبرنامج، بدلاً من وضعها في ذاكرة الوصول العشوائي (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، ويمكنه استدعاء المترجم المناسب بناءً على اختيار الجهاز المستهدف. يقبل برنامج التشغيل هذا خيارات نمط مجلس التعاون الخليجي، والتي تتم ترجمتها أو تمريرها إلى المترجم الذي يتم تنفيذه. يسمح برنامج التشغيل هذا باستخدام مجموعة مماثلة من الخيارات ذات دلالات مماثلة مع أي هدف AVR أو PIC وبالتالي فهو الطريقة الموصى بها لاستدعاء المترجم. إذا لزم الأمر، يمكن استدعاء برنامج التشغيل القديم avr-gcc مباشرةً باستخدام خيارات النمط القديم التي قبلها في إصدارات المترجم السابقة.

واجهة C المشتركة يمكن لهذا المترجم الآن أن يتوافق مع واجهة MPLAB Common C، مما يسمح بنقل كود المصدر بسهولة أكبر عبر جميع مترجمات MPLAB XC. يطلب الخيار -mext=cci هذه الميزة، مما يتيح بناء جملة بديل للعديد من امتدادات اللغة.

سائق مكتبة جديد يتم وضع برنامج تشغيل أمين مكتبة جديد أعلى أمين مكتبة PIC libr السابق وأمين مكتبة AVR avr-ar. يقبل برنامج التشغيل هذا خيارات نمط أرشيف دول مجلس التعاون الخليجي، والتي تتم ترجمتها أو تمريرها إلى أمين المكتبة الذي يتم تنفيذه. يسمح برنامج التشغيل الجديد باستخدام مجموعة مماثلة من الخيارات ذات دلالات مماثلة لإنشاء أو معالجة أي مكتبة PIC أو AVR file وبالتالي فهي الطريقة الموصى بها لاستدعاء أمين المكتبة. إذا لزم الأمر للمشاريع القديمة، يمكن استدعاء أمين المكتبة السابق مباشرةً باستخدام خيارات النمط القديم التي قبلها في إصدارات المترجم السابقة.

قضايا الهجرة

فيما يلي الميزات التي يتم التعامل معها الآن بشكل مختلف بواسطة المترجم. قد تتطلب هذه التغييرات تعديل التعليمات البرمجية المصدر الخاصة بك في حالة نقل التعليمات البرمجية إلى إصدار برنامج التحويل البرمجي هذا. يشير رقم الإصدار في العناوين الفرعية إلى إصدار المترجم الأول لدعم التغييرات التالية.

الإصدار 2.40

لا أحد.

الإصدار 2.39 (إصدار السلامة الوظيفية)

لا أحد.

الإصدار 2.36

لا أحد.

الإصدار 2.35

التعامل مع القواعد من السلسلة (XCS-2420) لضمان الاتساق مع مترجمات XC الأخرى، لن تحاول وظائف السلسلة إلى XC8، مثل strtol () وما إلى ذلك، تحويل سلسلة إدخال إذا كانت القاعدة المحددة أكبر من 36 وستقوم بدلاً من ذلك بتعيين errno إلى EINVAL. لا يحدد معيار C سلوك الوظائف عند تجاوز هذه القيمة الأساسية.

تحسينات السرعة غير مناسبة تم تمكين تحسينات التجريد الإجرائي عند اختيار تحسينات المستوى 3 (-03). تعمل هذه التحسينات على تقليل حجم الكود على حساب سرعة الكود، لذلك لا ينبغي تنفيذها. قد تشهد المشاريع التي تستخدم مستوى التحسين هذا اختلافات في حجم التعليمات البرمجية وسرعة التنفيذ عند إنشائها مع هذا الإصدار.

وظائف المكتبة يأتي الآن الكود الخاص بالعديد من وظائف مكتبة C القياسية من مكتبة Microchip القياسية الموحدة، والتي قد تظهر سلوكًا مختلفًا في بعض الظروف مقارنة بتلك التي توفرها مكتبة avr-libc السابقة. على سبيل المثالample، لم يعد من الضروري الارتباط في مكتبة lprintf_flt (خيار -print _flt) لتشغيل دعم الإدخال والإخراج المنسق لمحددات التنسيق العائم. تجعل ميزات الإدخال والإخراج الذكية في Microchip Unified Standard Library هذا الخيار زائدًا عن الحاجة. بالإضافة إلى ذلك، فإن استخدام إجراءات _p اللاحقة لوظائف السلسلة والذاكرة (على سبيل المثال strcpy_P () وما إلى ذلك .. ) التي تعمل على سلاسل ثابتة في الفلاش لم تعد ضرورية. ستعمل إجراءات C القياسية (على سبيل المثال strcpy ()) بشكل صحيح مع هذه البيانات عند تمكين ميزة ذاكرة البرنامج const-data-in-program.

الإصدار 2.32

لا أحد.

الإصدار 2.31

لا أحد.

الإصدار 2.30

لا أحد.

الإصدار 2.29 (إصدار السلامة الوظيفية)

لا أحد.

الإصدار 2.20

تم تغيير تخطيط DFP يفترض المترجم الآن تخطيطًا مختلفًا تستخدمه DFPs (حزم عائلة الأجهزة). وهذا يعني أن برنامج DFP الأقدم قد لا يعمل مع هذا الإصدار، ولن يتمكن المترجمون الأقدم من استخدام أحدث برامج DFP.

الإصدار 2.19 (إصدار السلامة الوظيفية)

لا أحد.

الإصدار 2.10

لا أحد

الإصدار 2.05

كائنات Const في ذاكرة البرنامج لاحظ أنه افتراضيًا، سيتم وضع الكائنات const-qualfiied والوصول إليها في ذاكرة البرنامج (كما هو موضح هنا). سيؤثر هذا على حجم مشروعك وسرعة تنفيذه، لكن من المفترض أن يقلل من استخدام ذاكرة الوصول العشوائي (RAM). يمكن تعطيل هذه الميزة، إذا لزم الأمر، باستخدام الخيار -mnoconst- da ta-in-progmem.

الإصدار 2.00

الصمامات التكوين يمكن الآن برمجة صمامات تكوين الجهاز باستخدام عملية التكوين متبوعة بأزواج قيمة الإعداد لتحديد حالة المصهر، على سبيل المثال
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
الأشياء والوظائف المطلقة يمكن الآن وضع الكائنات والوظائف في عنوان محدد في الذاكرة باستخدام محدد CCI _at (العنوان)، على سبيل المثالampلو: #تشمل int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } يجب أن تكون الوسيطة لهذا المحدد ثابتًا يمثل العنوان الذي سيتم وضع البايت الأول أو التعليمات عليه. تتم الإشارة إلى عناوين ذاكرة الوصول العشوائي (RAM) باستخدام إزاحة 0x800000. تمكين CCI لاستخدام هذه الميزة.
بناء جملة وظيفة المقاطعة الجديدة يقبل المترجم الآن محدد مقاطعة CCI (num) للإشارة إلى أن وظائف C هي معالجات المقاطعة. يأخذ المحدد رقم المقاطعة، على سبيل المثالampلو: #تشمل مقاطعة باطلة (SPI STC_ vect _num) spi Isr (void) { … }

المشاكل التي تم إصلاحها

فيما يلي التصحيحات التي تم إجراؤها على المحول البرمجي. قد يؤدي ذلك إلى إصلاح الأخطاء في التعليمات البرمجية التي تم إنشاؤها أو تغيير تشغيل المترجم إلى ما كان مقصودًا أو محددًا في دليل المستخدم. يشير رقم الإصدار الموجود في العناوين الفرعية إلى إصدار المترجم الأول الذي يحتوي على إصلاحات للمشكلات التالية. إن التصنيف (التسميات) الموجودة بين قوسين في العنوان هي تعريف تلك المشكلة في قاعدة بيانات التتبع. قد تكون هذه مفيدة إذا كنت بحاجة إلى الاتصال بالدعم.

لاحظ أنه تم تصحيح بعض المشكلات الخاصة بالجهاز في حزمة عائلة الأجهزة (DFP) المرتبطة بالجهاز. راجع MPLAB Pack Manager للحصول على معلومات حول التغييرات التي تم إجراؤها على DFPs ولتنزيل أحدث الحزم.

الإصدار 2.40

مريح جدًا (XCS-2876) عند استخدام الخيار -mrelax، لم يكن المترجم يخصص بعض الأقسام معًا، مما أدى إلى تقليل أحجام التعليمات البرمجية المثالية. ربما حدث هذا مع التعليمات البرمجية التي تستخدم مكتبات MUSL الجديدة أو مع الرموز الضعيفة.
لم يتم تعطيل ميزة التعيين كما هو مذكور في التحذير (XCS-2875) تعتمد ميزة Mappedprogmem لبيانات التكلفة في التكوين على تمكين ميزة بيانات التكلفة قيد التنفيذ. إذا تم تمكين ميزة cost-data-ipconfig-mapped-proem بشكل صريح باستخدام الخيار وتم تعطيل ميزة cost-data-inprogmem، فستفشل خطوة الارتباط، على الرغم من ظهور رسالة تحذيرية تفيد بأن السلبيات data- in-config-mapped- تم تعطيل ميزة proem تلقائيًا، وهو ما لم يكن صحيحًا تمامًا. تم الآن تعطيل ميزة const-data-in-config-mapped-proem بشكل كامل في هذه الحالة.
يتغير DFP للوصول بشكل صحيح إلى NVMCTRL (XCS-2848) رمز بدء تشغيل وقت التشغيل الذي تستخدمه أجهزة AVR64EA لم يأخذ في الاعتبار أن سجل NVMCTRL كان ضمن حماية تغيير التكوين (CCP) ولم يتمكن من تعيين IO SFR على الصفحة المستخدمة بواسطة برنامج التحويل البرمجي const-data-in configmapped-proem ميزة. ستسمح التغييرات التي تم إجراؤها في الإصدار 2.2.55 من AVR-Ex_DFP لرمز بدء التشغيل في وقت التشغيل بالكتابة بشكل صحيح في هذا السجل.
تغييرات DFP لتجنب تعيين الفلاش (XCS-2847) تم تنفيذ حل بديل لمشكلة تتعلق بميزة جهاز تعيين الفلاش التي تم الإبلاغ عنها في AVR128DA28/32/48/64 Silicon Errata (DS80000882). لن يتم تطبيق ميزة برنامج التحويل البرمجي const-data-in-config-mapped-proem افتراضيًا على الأجهزة المتأثرة، وسيظهر هذا التغيير في الإصدار 2.2.160 من AVR-Ex_DFP.
خطأ في البناء مع sinhf أو coshf (XCS-2834) أدت محاولات استخدام وظائف مكتبة sinhf () أو coshf () إلى حدوث خطأ في الارتباط، وهو ما يصف مرجعًا غير محدد. لقد تم الآن تضمين الوظيفة المفقودة المشار إليها في توزيع المترجم.
أخطاء البناء مع nopa (XCS-2833) يؤدي استخدام السمة nopa مع وظيفة تم تحديد اسم المجمّع الخاص بها باستخدام كـ () إلى ظهور رسائل خطأ من المجمّع. هذا المزيج غير ممكن.
فشل دالة متغيرة مع وسيطات المؤشر (XCS-2755، XCS-2731) تتوقع الدالات التي تحتوي على عدد متغير من الوسائط تمرير مؤشرات 24 بت (نوع _memo) في قائمة الوسائط المتغيرة عند تمكين ميزة بيانات التكلفة في proem. تم تمرير الوسيطات التي كانت عبارة عن مؤشرات إلى ذاكرة البيانات ككائنات ذات 16 بت، مما تسبب في فشل التعليمات البرمجية عند قراءتها في النهاية. عند تمكين ميزة cons data-in-proem، يتم الآن تحويل كافة وسيطات المؤشرات ذات 16 بت إلى مؤشرات ذات 24 بت. فشل وظائف مكتبة strtoxxx (XCS-2620) عند تمكين ميزة const-data-in-proem، لم يتم تحديث معلمة الإدخال في وظائف مكتبة strtoxxx بشكل صحيح لوسيطات السلسلة المصدر غير الموجودة في ذاكرة البرنامج.
تنبيهات بشأن عمليات التحويل غير الصالحة (XCS-2612) سيصدر المترجم الآن خطأ إذا تم تمكين ميزة التكلفة الأولية وتم إرسال عنوان السلسلة الحرفية بشكل صريح إلى مساحة عنوان البيانات (إسقاط مؤهل const)، على سبيل المثالampلو، (uint8 ر *) "مرحبا بالعالم!". يتم إصدار تحذير إذا كان العنوان غير صالح عند إرسال مؤشر بيانات ثابت بشكل صريح إلى مساحة عنوان البيانات.
وضع كائنات ثابتة غير مهيأة (XCS-2408) لم يتم وضع الكائنات الثابتة والثابتة غير المهيأة في ذاكرة البرنامج على الأجهزة التي تقوم بتعيين كل أو جزء من ذاكرة البرنامج الخاصة بها في مساحة عنوان البيانات. بالنسبة لهذه الأجهزة، يتم الآن وضع هذه الكائنات في ذاكرة البرنامج، مما يجعل عملها متوافقًا مع الأجهزة الأخرى.

الإصدار 2.39 (إصدار السلامة الوظيفية)

لا أحد.

الإصدار 2.36

حدث خطأ عند التأخير (XCS-2774) أدت التغييرات الطفيفة في تحسينات الوضع الحر الافتراضي إلى منع الطي المستمر لتعبيرات المعامل إلى وظائف التأخير المضمنة، مما أدى إلى معاملتها على أنها جهات اتصال غير متصلة وتسبب الخطأ: _buil tin avr late_ دورات تتوقع ac compile ثابت عدد صحيح.

الإصدار 2.35

التخصيص المتجاور باستخدام _at (XCS-2653) لم يعمل التخصيص المتجاور لكائنات متعددة في قسم يحمل نفس الاسم واستخدام at () بشكل صحيح. على سبيل المثالample: constchararrl [ ] at tributte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; تكلفة char arr2[ ] at tri Butte ((section(“.my s eke”))) = {Oxen, Ox FE }; كان يجب أن تضع arr2 مباشرة بعد aril.
تحديد عناوين بداية القسم (XCS-2650) كان خيار -Wal، -section-start يفشل بصمت في وضع الأقسام في عنوان البداية المحدد. تم إصلاح هذه المشكلة لأي أقسام ذات أسماء مخصصة؛ ومع ذلك، فإنه لن يعمل مع أي أقسام قياسية، مثل . النص أو . bss، والذي يجب وضعه باستخدام خيار -Wl، -T.
يتعطل الرابط عند الاسترخاء (XCS-2647) عندما تم تمكين التحسين -relax وكان هناك تعليمات برمجية أو أقسام بيانات لا تتناسب مع الذاكرة المتوفرة، تعطل الرابط. الآن، في مثل هذه الظروف، يتم إصدار رسائل الخطأ بدلاً من ذلك.
وصول غير صالح إلى EEPROM (XCS-2629) لم يعمل روتين leproma _read_ block بشكل صحيح على أجهزة Mega عندما تم تمكين الخيار -monist-data-in-proem (وهو الحالة الافتراضية)، مما أدى إلى عدم قراءة ذاكرة EEPROM بشكل صحيح.
تخصيص ذاكرة غير صالح (XCS-2593، XCS-2651) عندما يكون خيار الرابط -Text أو -Tata (على سبيل المثالampتم تحديد تمريره باستخدام خيار برنامج التشغيل -Wl)، وتم تحديث أصل منطقة النص/البيانات المقابلة؛ ومع ذلك، لم يتم تعديل عنوان النهاية وفقًا لذلك، مما قد يؤدي إلى تجاوز المنطقة نطاق ذاكرة الجهاز المستهدف.
رمز مقاطعة ATtiny غير صالح (XCS-2465) عند إنشاء أجهزة Tatin وتم تعطيل التحسينات (-00)، ربما تكون وظائف المقاطعة قد أدت إلى تشغيل رسائل مجمع المعامل خارج النطاق.
لا يتم تمرير الخيارات عبر (XCS-2452) عند استخدام الخيار -Wl مع خيارات رابط متعددة مفصولة بفواصل، لم يتم تمرير كافة خيارات الرابط إلى الرابط.
خطأ في قراءة ذاكرة البرنامج بشكل غير مباشر (XCS-2450) في بعض الحالات، أنتج المترجم خطأ داخليًا (insn لا يمكن التعرف عليه) عند قراءة قيمة ثنائية البايت من مؤشر إلى ذاكرة البرنامج

الإصدار 2.32

فشل الوصول الثاني للمكتبة (XCS-2381) استدعاء إصدار Windows من xc8-ar. قد يكون أرشيف مكتبة exe قد فشل للمرة الثانية في الوصول إلى أرشيف المكتبة الحالي مع عدم القدرة على إعادة تسمية رسالة الخطأ.

الإصدار 2.31

فشل المترجم غير المبررة (XCS-2367) عند التشغيل على أنظمة Windows الأساسية التي تم تعيين الدليل المؤقت للنظام فيها على مسار يتضمن نقطة'.' حرف، ربما فشل المترجم في التنفيذ.

الإصدار 2.30

التسميات العامة في غير مكانها بعد التحديد التفصيلي (XCS-2299) ربما لم يتم تغيير موضع رمز التجميع المكتوب بخط اليد والذي يضع التسميات العامة ضمن تسلسلات التجميع التي تم أخذها في الاعتبار عن طريق التجريد الإجرائي.
تحطم مريح (XCS-2287) ربما يكون استخدام الخيار -merlad قد تسبب في تعطل الرابط عندما حاولت تحسينات استرخاء قفزة الذيل إزالة تعليمات الإرجاع التي لم تكن في نهاية القسم.
يتعطل عند تحسين التسميات كقيم (XCS-2282) ربما تسببت التعليمات البرمجية التي تستخدم ملحق لغة GNU C "التسميات كقيم" في تعطل تحسينات التجريد الإجرائي، مع وجود خطأ في إصلاح امتدادات نطاق VMA المحدد.
ليس كذلك ثابت (XCS-2271) النماذج الأولية للبدء () والوظائف الأخرى من لم تعد تحدد مؤهل التكلفة غير القياسية على مؤشرات السلسلة التي تم إرجاعها عند تعطيل ميزة -monist-data inprogmem. لاحظ أنه مع أجهزة avrxmega3 وavertin، يتم تمكين هذه الميزة بشكل دائم.
المُهيئات المفقودة (XCS-2269) عندما يتم وضع أكثر من متغير واحد في وحدة الترجمة في قسم (باستخدام القسم أو السمة ((القسم)))، وكان أول متغير من هذا القبيل تمت تهيئته بصفر أو لم يكن لديه مُهيئ، مُهيئات للمتغيرات الأخرى في نفس وحدة الترجمة التي تم وضعها في نفس القسم فقدت.

الإصدار 2.29 (إصدار السلامة الوظيفية)

لا أحد.

الإصدار 2.20

خطأ في الأوامر الطويلة (XCS-1983) عند استخدام هدف AVR، ربما توقف المترجم عند استخدام ملف file لم يتم العثور على خطأ، إذا كان سطر الأوامر كبيرًا جدًا ويحتوي على أحرف خاصة مثل علامات الاقتباس والخطوط المائلة العكسية وما إلى ذلك.
قسم روداتا غير المعين (XCS-1920) فشل رابط AVR في تعيين ذاكرة لأقسام Rodata المخصصة عند إنشاء معماريات avrxmega3 وavrtiny، مما قد يؤدي إلى حدوث أخطاء في تداخل الذاكرة

الإصدار 2.19 (إصدار السلامة الوظيفية)

لا أحد.

الإصدار 2.10

فشل النقل (XCS-1891) كان المُخصص الأفضل هو ترك "ثقوب" الذاكرة بين الأقسام بعد استرخاء الرابط. وبصرف النظر عن تجزئة الذاكرة، فقد زاد هذا من احتمالية حدوث حالات فشل في نقل الرابط فيما يتعلق بالقفزات المتعلقة بالكمبيوتر أو أن تصبح المكالمات خارج النطاق.
التعليمات التي لا يتم تحويلها بالاسترخاء (XCS-1889) لم يحدث استرخاء الرابط لتعليمات القفز أو الاتصال التي تصبح أهدافها قابلة للوصول إذا تم استرخائها.
مفتقد الوظيفة (XCSE-388) عدة تعريفات من ، مثل Clock_ div_ t وclock_prescale_set ()، لم يتم تعريفها للأجهزة، بما في ذلك ATmega324PB، وATmega328PB، وATtiny441، وATtiny841.
وحدات الماكرو مفقودة لم يتم تعريف وحدات الماكرو الخاصة بالمعالج المسبق _ xcs _MODE_، و_xcs VERSION، و_xc، وxcs تلقائيًا بواسطة المترجم. هذه متاحة الآن.

الإصدار 2.05

خطأ مترجم داخلي (XCS-1822) عند البناء تحت نظام Windows، ربما حدث خطأ داخلي في المترجم عند تحسين التعليمات البرمجية.
لم يتم الكشف عن تجاوز سعة ذاكرة الوصول العشوائي (XCS-1800، XCS-1796) البرامج التي تجاوزت ذاكرة الوصول العشوائي المتوفرة لم يكتشفها المترجم في بعض المواقف، مما أدى إلى فشل التعليمات البرمجية في وقت التشغيل.
ذاكرة فلاش محذوفة (XCS-1792) بالنسبة لأجهزة avrxmega3 وavrtiny، ربما تم ترك أجزاء من ذاكرة الفلاش غير مبرمجة بواسطة MPLAB X IDE.
فشل في تنفيذ الرئيسي (XCS-1788) في بعض الحالات التي لم يكن لدى البرنامج فيها متغيرات عامة محددة، لم يتم الخروج من رمز بدء التشغيل في وقت التشغيل ولم يتم الوصول إلى الوظيفة الرئيسية () مطلقًا.
معلومات الذاكرة غير صحيحة (XCS-1787) بالنسبة لأجهزة avrxmega3 وavrtiny، كان برنامج avr-size يُبلغ عن أن بيانات القراءة فقط تستهلك ذاكرة الوصول العشوائي (RAM) بدلاً من ذاكرة البرنامج.
قراءة غير صحيحة لذاكرة البرنامج (XCS-1783) المشاريع التي تم تجميعها للأجهزة ذات ذاكرة البرنامج المعينة في مساحة عنوان البيانات والتي تحدد الكائنات باستخدام الماكرو/السمة PROGMEM ربما تكون قد قرأت هذه الكائنات من عنوان خاطئ.
خطأ داخلي في السمات (XCS-1773) حدث خطأ داخلي إذا قمت بتعريف كائنات المؤشر بالملحق
_at () أو الرموز المميزة attribute() بين اسم المؤشر والنوع غير المرجعي، على سبيل المثالampلو، شار *
_at (0x80015 0) كب؛ يتم الآن إصدار تحذير في حالة مواجهة مثل هذا الرمز.
فشل في تنفيذ الرئيسي (XCS-1780، XCS-1767، XCS-1754) قد يؤدي استخدام متغيرات EEPROM أو تحديد الصمامات باستخدام عملية التكوين إلى تهيئة غير صحيحة للبيانات و/أو قفل تنفيذ البرنامج في رمز بدء تشغيل وقت التشغيل، قبل الوصول إلى main () .
خطأ في الصمامات مع الأجهزة الصغيرة (XCS-1778، XCS-1742) تحتوي أجهزة attiny4/5/9/10/20/40 على طول مصهر غير صحيح محدد في رأسها fileالتي تؤدي إلى أخطاء الرابط عند محاولة إنشاء تعليمات برمجية تحدد الصمامات.
خطأ التجزئة (XCS-1777) تم تصحيح خطأ التجزئة المتقطع.
تعطل المجمع (XCS-1761) من المحتمل أن يكون مجمع avr-as قد تعطل عندما تم تشغيله تحت Ubuntu 18.
لم يتم مسح الكائنات (XCS-1752) ربما لم يتم مسح كائنات مدة التخزين الثابتة غير المهيأة بواسطة رمز بدء تشغيل وقت التشغيل.
تم تجاهل مواصفات الجهاز المتعارضة (XCS-1749) لم يكن المترجم ينشئ خطأ عند استخدام خيارات متعددة لمواصفات الأجهزة والإشارة إلى أجهزة مختلفة.
تلف الذاكرة بسبب الكومة (XCS-1748) تم تعيين رمز heap_start بشكل غير صحيح، مما أدى إلى احتمال إتلاف المتغيرات العادية بواسطة الكومة.
خطأ في نقل الرابط (XCS-1739) ربما تم إصدار خطأ في نقل الرابط عندما يحتوي الكود على rjmp أو rcall بهدف يبعد 4 كيلو بايت بالضبط.

الإصدار 2.00

لا أحد.

المشاكل المعروفة

فيما يلي القيود المفروضة على تشغيل المترجم. قد تكون هذه قيود ترميز عامة، أو
الانحرافات عن المعلومات الواردة في دليل المستخدم. إن التصنيف (التسميات) الموجودة بين قوسين في العنوان هي تعريف تلك المشكلة في قاعدة بيانات التتبع. قد يكون هذا مفيدًا إذا كنت بحاجة إلى الاتصال بالدعم. تلك العناصر التي لا تحتوي على تسميات هي قيود تصف طريقة العمل والتي من المرجح أن تظل سارية المفعول بشكل دائم.

تكامل MPLAB X IDE

التكامل MPLAB IDE إذا كان سيتم استخدام برنامج Compiler من MPLAB IDE، فيجب عليك تثبيت MPLAB IDE قبل تثبيت برنامج Compiler.

توليد الكود

فشل تخصيص ذاكرة PA (XCS-2881) عند استخدام أدوات تحسين التجريد الإجرائي، قد يقوم الرابط بالإبلاغ عن أخطاء تخصيص الذاكرة عندما يكون حجم التعليمات البرمجية قريبًا من مقدار ذاكرة البرنامج المتوفرة على الجهاز، على الرغم من أن البرنامج يجب أن يكون قادرًا على احتواء المساحة المتوفرة.
Smart-IO (XCS-2872) ليس ذكيًا جدًا ستعمل ميزة Smart-io الخاصة بالمترجم على إنشاء رمز صالح ولكنه دون المستوى الأمثل لوظيفة Sprint إذا تم تعطيل ميزة Coast-data-in-proem أو إذا كان الجهاز يحتوي على كل فلاشاته المعينة في ذاكرة البيانات.
حتى Smart-IO الأقل ذكاءً (XCS-2869) ستعمل ميزة Smart-io الخاصة بالمترجم على إنشاء كود صالح ولكن دون المستوى الأمثل عند استخدام خياري -floe و -fno-buil tin.
وضع البيانات للقراءة فقط دون المستوى الأمثل (XCS-2849) الرابط ليس على علم حاليًا بأقسام ذاكرة APPCODE وAPPDATA، ولا أقسام [No-]Read-While-Write في خريطة الذاكرة. ونتيجة لذلك، هناك احتمال ضئيل أن يقوم الرابط بتخصيص بيانات للقراءة فقط في منطقة غير مناسبة من الذاكرة. تزداد فرصة البيانات في غير مكانها إذا تم تمكين ميزة Coast-data-in-pragma، خاصة إذا تم تمكين ميزة Coast-data-in-config-mapped-proem أيضًا. يمكن تعطيل هذه الميزات إذا لزم الأمر.
هدف file أمر المعالجة (XCS-2863) الترتيب الذي الكائنات fileقد تختلف معالجة s بواسطة الرابط بناءً على استخدام تحسينات التجريد الإجرائي (خيار -mpa). لن يؤثر هذا إلا على الكود الذي يحدد الوظائف الضعيفة عبر وحدات متعددة.
خطأ رابط مطلق (XCS-2777) عندما يتم تعيين كائن مطلقًا على عنوان في بداية ذاكرة الوصول العشوائي (RAM) ويتم أيضًا تعريف كائنات غير مهيأة، فقد يحدث خطأ في الرابط.
معرفات التنبيه القصيرة (XCS-2775) بالنسبة لأجهزة ATA5700/2، يتم تعريف سجلات PHID0/1 فقط بعرض 16 بت، بدلاً من 32 بت.
تعطل الرابط عند استدعاء الرمز (XCS-2758) قد يتعطل الرابط إذا تم استخدام خيار برنامج التشغيل -merlad عندما تستدعي التعليمات البرمجية المصدر رمزًا تم تعريفه باستخدام خيار الرابط -Wl، -defsym.
تهيئة غير صحيحة (XCS-2679) يوجد تناقض بين مكان وضع القيم الأولية لبعض الكائنات ذات حجم البايت العمومي/الثابت في ذاكرة البيانات ومكان الوصول إلى المتغيرات في وقت التشغيل.
بدأ بشكل غير صحيح بتعيين فارغ (XCS-2652) في الحالات التي تحتوي فيها سلسلة موضوع للتحويل حسب ما هو مذكور () على ما يبدو أنه رقم فاصلة عائمة بتنسيق أسي ويوجد حرف غير متوقع بعد الحرف e، فإن العنوان الفارغ، إذا تم توفيره، سيشير إلى الحرف بعده البريد وليس البريد نفسه. على سبيل المثالampلو: ذكر ("هوي"، فارغ)؛ سيؤدي إلى الإشارة الفارغة إلى الحرف x.
استدعاءات دالة غير مباشرة غير صالحة (XCS-2628) في بعض الحالات، قد تفشل استدعاءات الوظائف التي يتم إجراؤها عبر مؤشر دالة مخزن كجزء من البنية.
تقوم strtof بإرجاع صفر للعوامات السداسية العشرية (XCS-2626) تقوم وظائف المكتبة strtof () et al وscanf () et al دائمًا بتحويل رقم الفاصلة العائمة السداسي العشري الذي لا يحدد الأس إلى
صفر. على سبيل المثالampلو: الجزء الثابت("البومة"، &فارغة)؛ سيرجع القيمة 0 وليس 1
رسائل مستشار المكدس غير الدقيقة (XCS-2542، XCS-2541) في بعض الحالات، لا يتم إصدار تحذير مستشار المكدس فيما يتعلق بالتكرار أو المكدس غير المحدد المستخدم (ربما من خلال استخدام alloca()).
فشل مع رمز المقاطعة المكرر (XCS-2421) عندما يكون هناك أكثر من وظيفة مقاطعة واحدة لها نفس الجسم، فقد يكون لدى المترجم إخراج لوظيفة مقاطعة واحدة تستدعي الأخرى. سيؤدي هذا إلى حفظ جميع سجلات المكالمات المزدحمة دون داع، وسيتم تمكين المقاطعات حتى قبل تشغيل خاتمة معالج المقاطعة الحالي، مما قد يؤدي إلى فشل التعليمات البرمجية.
كائنات Const غير موجودة في ذاكرة البرنامج (XCS-2408) بالنسبة لمشاريع avrxmega3 و avertins، يتم وضع كائنات const غير المثالية في ذاكرة البيانات، على الرغم من أن التحذير يشير إلى أنها قد تم وضعها في ذاكرة البرنامج. لن يؤثر هذا على الأجهزة التي لا تحتوي على ذاكرة برنامج معينة في مساحة ذاكرة البيانات، ولن يؤثر على أي كائن تتم تهيئته.
إخراج غير صالح مع مسار DFP غير صالح (XCS-2376) إذا تم استدعاء المترجم باستخدام مسار DFP غير صالح و"المواصفات" file موجودة للجهاز المحدد، فإن المترجم لا يقوم بالإبلاغ عن حزمة عائلة الجهاز المفقودة وبدلاً من ذلك يقوم بتحديد "المواصفات" file، مما قد يؤدي بعد ذلك إلى إخراج غير صالح. "المواصفات" fileقد لا تكون s محدثة مع DFPs الموزعة وكانت مخصصة للاستخدام مع اختبار المترجم الداخلي فقط.
تداخل الذاكرة لم يتم اكتشافه (XCS-1966) لا يكتشف المترجم تداخل الذاكرة للكائنات التي تم جعلها مطلقة في عنوان (عبر في ()) والكائنات الأخرى باستخدام محدد القسم () والمرتبطة بنفس العنوان.
فشل في وظائف المكتبة و_meme (XCS-1763) قد تفشل وظائف التعويم الحوفي التي يتم استدعاؤها مع وسيطة في مساحة عنوان _memo. لاحظ أن إجراءات المكتبة يتم استدعاؤها من بعض مشغلي لغة C، على سبيل المثالample ، تأثر الكود التالي: return regFloatVar> memxFloatVar؛
التنفيذ الحوفي المحدود (AVRTC-731) بالنسبة لمنتجات ATTiny4/5/9/10/20/40، يكون تطبيق مكتبة C/Math القياسية في الحوفي محدودًا جدًا أو غير موجود.
قيود ذاكرة البرنامج (AVRTC-732) يتم دعم صور ذاكرة البرنامج التي يتجاوز حجمها 128 كيلو بايت بواسطة سلسلة الأدوات؛ ومع ذلك، توجد حالات معروفة لإحباط الرابط دون الاسترخاء وبدون رسالة خطأ مفيدة بدلاً من إنشاء كعب روتين الوظيفة المطلوبة عند استخدام الخيار -relax.
قيود مساحة الاسم (AVRTC-733) يتم دعم مساحات العناوين المسماة بواسطة سلسلة الأدوات، مع مراعاة القيود المذكورة في قسم دليل المستخدم "مؤهلات النوع الخاص".
المناطق الزمنية ال تفترض وظائف المكتبة توقيت جرينتش ولا تدعم المناطق الزمنية المحلية، وبالتالي فإن التوقيت المحلي () سيعود نفس وقت الصمغ ()، على سبيل المثالampليه.

دعم العملاء

file///التطبيقات/microehip/xc8/v 2 .40/docs/Read me_X C 8_ لـ VR. هتم

المستندات / الموارد

برنامج المترجم MICROCHIP MPLAB XC8 C [بي دي اف] دليل المالك
MPLAB XC8 C، MPLAB XC8 C برنامج مترجم، برنامج مترجم، البرمجيات

مراجع

اترك تعليقا

لن يتم نشر عنوان بريدك الإلكتروني. تم وضع علامة على الحقول المطلوبة *