نرم افزار کامپایلر MICROCHIP MPLAB XC8 C 

نرم افزار کامپایلر MICROCHIP MPLAB XC8 C

این سند حاوی اطلاعات مهمی در رابطه با کامپایلر MPLAB XC8 C هنگام هدف قرار دادن دستگاه های AVR میکروچیپ است.
لطفاً قبل از اجرای این نرم افزار آن را بخوانید. اگر از کامپایلر برای دستگاه های PIC 8 بیتی استفاده می کنید، یادداشت های انتشار کامپایلر MPLAB XC8 C را برای سند PIC ببینید.

مطالب پنهان کردن

تمام شدview

مقدمه

این نسخه از کامپایلر Microchip MPLAB® XC8 C شامل چندین ویژگی جدید، رفع اشکال و پشتیبانی از دستگاه جدید است.

تاریخ ساخت

تاریخ ساخت رسمی این نسخه کامپایلر 3 جولای 2022 است.

نسخه پیشین

نسخه قبلی کامپایلر MPLAB XC8 C 2.39 بود، یک کامپایلر ایمنی کاربردی، که در 27 ژانویه 2022 ساخته شد. کامپایلر استاندارد قبلی نسخه 2.36 بود که در 27 ژانویه 2022 ساخته شد.

کتابچه راهنمای ایمنی عملکردی

هنگام خرید مجوز ایمنی عملکردی، یک کتابچه راهنمای ایمنی عملکردی برای کامپایلرهای MPLAB XC در بسته مستندات موجود است.

مجوزها و نسخه های مؤلفه

کامپایلر MPLAB® XC8 C برای ابزارهای AVR MCU تحت مجوز عمومی عمومی گنو (GPL) نوشته و توزیع شده است، به این معنی که کد منبع آن آزادانه توزیع شده و در دسترس عموم است. کد منبع ابزارهای تحت GNU GPL را می توان به طور جداگانه از Microchip دانلود کرد webسایت. شما می توانید GNU GPL را در این قسمت بخوانید file با نام، زیر شاخه دایرکتوری نصب شما قرار دارد. یک بحث کلی در مورد اصول زیربنای GPL را می توان در اینجا یافت. کد پشتیبانی ارائه شده برای هدر files، اسکریپت های پیوند دهنده و کتابخانه های زمان اجرا کد اختصاصی هستند و تحت GPL پوشش داده نمی شوند.

این کامپایلر پیاده سازی GCC نسخه 5.4.0، binutils نسخه 2.26 است و از avr-libc نسخه 2.0.0 استفاده می کند.

سیستم مورد نیاز

کامپایلر MPLAB XC8 C و نرم‌افزار صدور مجوزی که از آن استفاده می‌کند برای انواع سیستم‌عامل‌ها، از جمله نسخه‌های ۶۴ بیتی موارد زیر در دسترس است: نسخه‌های حرفه‌ای Microsoft Windows 64. اوبونتو 10; و macOS 18.04. باینری ها برای ویندوز با کد امضا شده اند. فایل های باینری برای mac OShave به صورت کد امضا و محضری هستند.

اگر از سرور مجوز شبکه استفاده می کنید، فقط رایانه هایی با سیستم عامل های پشتیبانی شده توسط کامپایلرها ممکن است برای میزبانی سرور مجوز استفاده شوند. از xclm نسخه 2.0، سرور مجوز شبکه را می توان بر روی پلت فرم Microsoft Windows Server نصب کرد، اما سرور مجوز نیازی به اجرا بر روی نسخه سرور سیستم عامل ندارد.

دستگاه های پشتیبانی شده

این کامپایلر از تمام دستگاه های AVR MCU 8 بیتی که در زمان انتشار شناخته شده بودند پشتیبانی می کند. برای لیستی از تمام دستگاه های پشتیبانی شده (در دایرکتوری doc کامپایلر) مراجعه کنید. اینها files همچنین تنظیمات بیت پیکربندی را برای هر دستگاه فهرست می کند.

نسخه ها و ارتقاء مجوز

کامپایلر MPLAB XC8 را می توان به عنوان یک محصول دارای مجوز (PRO) یا بدون مجوز (رایگان) فعال کرد. برای مجوز کامپایلر خود باید یک کلید فعال سازی خریداری کنید. مجوز سطح بالاتری از بهینه سازی را در مقایسه با محصول رایگان فراهم می کند. یک کامپایلر بدون مجوز می تواند به طور نامحدود بدون مجوز کار کند.

یک کامپایلر ایمنی عملکردی MPLAB XC8 باید با مجوز ایمنی عملکردی خریداری شده از میکروچیپ فعال شود. کامپایلر بدون این مجوز کار نخواهد کرد. پس از فعال سازی، می توانید هر سطح بهینه سازی را انتخاب کنید و از تمام ویژگی های کامپایلر استفاده کنید. این نسخه از MPLAB XC Functional Safety Compiler از مجوز سرور شبکه پشتیبانی می کند.
برای اطلاعات در مورد انواع مجوزها و نصب کامپایلر با مجوز، به سند نصب و صدور مجوز MPLAB XC C C Compilers (DS50002059) مراجعه کنید.

نصب و راه اندازی و فعال سازی

همچنین برای اطلاعات مهم درباره آخرین مدیر مجوز موجود با این کامپایلر، به بخش‌های مهاجرت و محدودیت‌ها مراجعه کنید.
اگر از MPLAB IDE استفاده می کنید، قبل از نصب این ابزار حتما آخرین MPLAB X IDE نسخه 5.0 یا بالاتر را نصب کنید. قبل از نصب کامپایلر از IDE خارج شوید. برنامه نصب کننده کامپایلر .exe (Windows)، .run (Linux) یا app (macOS)، به عنوان مثال XC8-1.00.11403-windows.exe را اجرا کنید و دستورالعمل های روی صفحه را دنبال کنید.
دایرکتوری نصب پیش فرض توصیه می شود. اگر از لینوکس استفاده می کنید، باید کامپایلر را با استفاده از یک ترمینال و از یک حساب ریشه نصب کنید. با استفاده از یک حساب macOS با امتیازات سرپرست نصب کنید.

فعال سازی اکنون به طور جداگانه برای نصب انجام می شود. برای اطلاعات بیشتر به مدیر مجوز برای کامپایلرهای MPLAB® XC C (DS52059) مراجعه کنید.

اگر انتخاب کنید که کامپایلر را تحت مجوز ارزیابی اجرا کنید، اکنون در طی 14 روز پس از پایان دوره ارزیابی، هشداری در طول تدوین دریافت خواهید کرد. اگر ظرف 14 روز از پایان اشتراک HPA خود باشید، همین اخطار صادر می شود.

سرور مجوز شبکه XC یک نصب کننده جداگانه است و در نصب کننده کامپایلر تک کاربره گنجانده نشده است.

مدیر مجوز XC اکنون از رومینگ مجوزهای شبکه شناور پشتیبانی می کند. این ویژگی با هدف کاربران تلفن همراه، به مجوز شناور اجازه می دهد تا برای مدت کوتاهی از شبکه خارج شود. با استفاده از این ویژگی، می توانید از شبکه جدا شوید و همچنان از کامپایلر MPLAB XC خود استفاده کنید. برای اطلاعات بیشتر در مورد این ویژگی، به پوشه doc نصب XCLM مراجعه کنید. MPLAB X IDE شامل یک پنجره مجوزها (ابزارها > مجوزها) برای مدیریت بصری رومینگ است.

حل مشکلات نصب

اگر در نصب کامپایلر تحت هر یک از سیستم عامل های ویندوز با مشکل مواجه شدید، پیشنهادات زیر را امتحان کنید.

  • نصب را به عنوان مدیر اجرا کنید.
  • مجوزهای برنامه نصب کننده را روی "کنترل کامل" تنظیم کنید. (راست کلیک کنید fileرا انتخاب کنید، ویژگی ها، برگه امنیت، کاربر را انتخاب کنید، ویرایش کنید.)
  • مجوزهای پوشه temp را روی "کنترل کامل!

برای تعیین محل پوشه temp، %temp% را در دستور Run تایپ کنید (کلید لوگوی ویندوز + R). این یک را باز می کند file گفتگوی اکسپلورر که آن دایرکتوری را نشان می دهد و به شما امکان می دهد مسیر آن پوشه را تعیین کنید.

مستندات کامپایلر

راهنماهای کاربر کامپایلر را می توان از صفحه HTML که در مرورگر شما با کلیک روی دکمه آبی رنگ راهنما در داشبورد MPLAB X IDE باز می شود، همانطور که در تصویر نشان داده شده است، باز شود.

مستندات کامپایلر
اگر برای اهداف AVR 8 بیتی می سازید، راهنمای کاربر کامپایلر MPLAB® XC8 C برای AVR® MCU حاوی اطلاعاتی در مورد آن دسته از گزینه ها و ویژگی های کامپایلر است که برای این معماری قابل اجرا هستند.

پشتیبانی مشتری

Microchip از گزارش اشکال، پیشنهادات یا نظرات در مورد این نسخه کامپایلر استقبال می کند. لطفاً هرگونه گزارش اشکال یا درخواست ویژگی را از طریق سیستم پشتیبانی هدایت کنید.

به روز رسانی اسناد

برای نسخه های آنلاین و به روز مستندات MPLAB XC8، لطفاً به مستندات فنی آنلاین میکروچیپ مراجعه کنید. webسایت

اسناد AVR جدید یا به روز شده در این نسخه:

  • اعلامیه حق چاپ MUSL
  • نصب و صدور مجوز کامپایلرهای MPLAB XC C (نسخه M)
  • راهنمای کاربر MPLAB XC8 برای مهندسین جاسازی شده – AVR MCU (نسخه A)
  • راهنمای کاربر کامپایلر MPLAB XC8 C برای AVR MCU (نسخه F)
  • راهنمای مرجع کتابخانه استاندارد یکپارچه میکروچیپ (نسخه B)

راهنمای مرجع کتابخانه استاندارد یکپارچه ریزتراشه، رفتار و رابط با توابع تعریف شده توسط کتابخانه استاندارد یکپارچه ریزتراشه، و همچنین استفاده مورد نظر از انواع کتابخانه ها و ماکروها را شرح می دهد. برخی از این اطلاعات قبلاً در راهنمای کاربر کامپایلر MPLAB® XC8 C برای AVR® MCU موجود بود. اطلاعات کتابخانه خاص دستگاه هنوز در این راهنمای کامپایلر موجود است.

اگر به تازگی با دستگاه های 8 بیتی و کامپایلر MPLAB XC8 C شروع کرده اید، راهنمای کاربر MPLAB® XC8 برای مهندسین جاسازی شده – AVR® MCU (DS50003108) اطلاعاتی در مورد راه اندازی پروژه ها در MPLAB X IDE و نوشتن کد دارد. برای اولین پروژه MPLAB XC8 C شما. این راهنما اکنون با کامپایلر توزیع شده است.

راهنمای کاربر Hamate در فهرست اسناد در این نسخه گنجانده شده است. این راهنما برای کسانی است که Hamate را به عنوان یک برنامه مستقل اجرا می کنند.

چه جدید است

موارد زیر ویژگی های جدید AVR-target است که کامپایلر اکنون از آن پشتیبانی می کند. شماره نسخه در عنوان های فرعی نشان دهنده اولین نسخه کامپایلر است که از ویژگی های بعدی پشتیبانی می کند.

نسخه 2.40

پشتیبانی از دستگاه جدید اکنون پشتیبانی برای قطعات AVR زیر در دسترس است: AT90PWM3، AVR16DD14، AVR16DD20، AVR16DD28، AVR16DD32، AVR32DD14، AVR32DD20، AVR32DD28، AVR32DD32، AVR64DD28، AVR64DD32، AVR64DD48، AVRXNUMXAVDXNUMX، AVRXNUMXAVREA RXNUMXEAXNUMX.
انتزاع رویه ای بهبود یافته ابزار بهینه‌سازی انتزاع رویه‌ای (PA) بهبود یافته است به طوری که کد حاوی دستورالعمل فراخوانی تابع ( فراخوانی فراخوانی )) می‌تواند مشخص شود. این تنها در صورتی انجام می‌شود که پشته برای ارسال آرگومان‌ها یا دریافت مقدار بازگشتی از تابع استفاده نشود. پشته هنگام فراخوانی یک تابع با لیست آرگومان متغیر یا هنگام فراخوانی تابعی که آرگومان های بیشتری نسبت به ثبات های تعیین شده برای این منظور می گیرد، استفاده می شود. این ویژگی را می توان با استفاده از گزینه monk-pa-outline-calls غیرفعال کرد یا انتزاع رویه ای را می توان به طور کامل برای یک شی غیرفعال کرد. file یا با استفاده از -monk-pa-on- عمل کنیدfile و به ترتیب -mo.-pa-on-function یا با استفاده از ویژگی nipa (مشخص کننده nipa) به صورت انتخابی با توابع

ماکرو پوشش کد کامپایلر اکنون اگر یک گزینه معتبر mcodecov مشخص شده باشد، ماکرو __CODECOV را تعریف می کند.

گزینه رزرو حافظه درایور xc8-cc اکنون هنگام ساخت اهداف AVR گزینه -mreserve=space@start: end را می پذیرد. این گزینه محدوده حافظه مشخص شده را در فضای حافظه داده یا برنامه ذخیره می کند و از پر کردن کد یا اشیاء در این ناحیه توسط پیوند دهنده جلوگیری می کند.

IO هوشمند هوشمندتر چندین پیشرفت در توابع Smart IO انجام شده است، از جمله تغییرات کلی در کد اصلی printf، تلقی با مشخص‌کننده تبدیل %n به عنوان یک نوع مستقل، پیوند دادن در روال‌های pop vararg در صورت تقاضا، استفاده از انواع داده‌های کوتاه‌تر در صورت امکان برای مدیریت آرگومان‌های تابع IO. و فاکتورسازی کدهای رایج در پهنای میدان و مدیریت دقیق. این می تواند منجر به صرفه جویی قابل توجهی در کد و داده و همچنین افزایش سرعت اجرای IO شود.

نسخه 2.39 (انتشار ایمنی عملکردی)

مجوز سرور شبکه این نسخه از MPLAB XC8 Functional Safety Compiler از مجوز سرور شبکه پشتیبانی می کند.

نسخه 2.36

هیچ کدام.

نسخه 2.35

پشتیبانی از دستگاه جدید پشتیبانی برای قطعات AVR زیر در دسترس است: ATTINY3224، ATTINY3226، ATTINY3227، AVR64DD14، AVR64DD20، AVR64DD28، و AVR64DD32.

تغییر زمینه بهبود یافته گزینه جدید -mcall-isr-prologues نحوه ذخیره رجیسترها در هنگام ورود توسط توابع وقفه و نحوه بازیابی آن ثبات ها با پایان روال وقفه را تغییر می دهد. به روشی مشابه گزینه -mcall-prologues کار می کند، اما فقط بر توابع وقفه (ISR) تأثیر می گذارد.

حتی تغییر زمینه بهبود یافته تر گزینه جدید -mgas-isr-prologues کد خارش زمینه تولید شده برای روتین های سرویس وقفه های کوچک را کنترل می کند. هنگامی که این ویژگی فعال باشد، اسمبلر ISR را برای استفاده از رجیستر اسکن می کند و فقط در صورت نیاز این ثبات های استفاده شده را ذخیره می کند.

نقشه برداری فلش قابل تنظیم برخی از دستگاه های خانواده AVR DA و AVR DB دارای یک SFR (مثلا FLMAP) هستند که مشخص می کند کدام بخش 32k از حافظه برنامه در حافظه داده نگاشت می شود. گزینه جدید – mconst-data-in-config-mapped-proem می تواند مورد استفاده قرار گیرد تا پیوند دهنده تمام داده های واجد شرایط منفی را در یک بخش 32k قرار دهد و به طور خودکار ثبت SFR مربوطه را مقداردهی اولیه کند تا اطمینان حاصل شود که این داده ها در فضای حافظه داده نگاشت می شوند. ، جایی که به طور مؤثرتری به آن دسترسی پیدا خواهد کرد.

کتابخانه های استاندارد یکپارچه ریزتراشه همه کامپایلرهای MPLAB XC یک Microchip Unified Standard Library را به اشتراک خواهند گذاشت که اکنون با این نسخه MPLAB XC8 در دسترس است. راهنمای کاربر کامپایلر MPLAB® XC8 C/یا AVR® MCU دیگر شامل مستندات این توابع استاندارد نمی شود. اکنون این اطلاعات را می توان در راهنمای مرجع کتابخانه استاندارد یکپارچه میکروچیپ یافت. توجه داشته باشید که برخی از عملکردهایی که قبلاً توسط avr-libc تعریف شده بود، دیگر در دسترس نیستند. (نگاه کنید به کتابدار):'. عملکرد…)

IO هوشمند به‌عنوان بخشی از کتابخانه‌های یکپارچه جدید، توابع IO در خانواده‌های چاپ و اسکن بر اساس نحوه استفاده از این توابع در برنامه، اکنون به صورت سفارشی بر روی هر بیلد تولید می‌شوند. این می تواند به طور قابل ملاحظه ای منابع مورد استفاده یک برنامه را کاهش دهد.
گزینه کمک هوشمند IO هنگام تجزیه و تحلیل فراخوانی‌های توابع هوشمند IO (مانند printf () یا scanf ())، کامپایلر همیشه نمی‌تواند از روی رشته قالب تعیین کند یا از آرگومان‌ها مشخص‌کننده‌های تبدیل مورد نیاز فراخوان را استنتاج کند. قبلاً، کامپایلر همیشه هیچ فرضی نمی‌کرد و اطمینان می‌داد که توابع IO کاملاً کاربردی به تصویر نهایی برنامه مرتبط هستند. یک گزینه جدید – msmart-io-format=fmt اضافه شده است تا کامپایلر بتواند در عوض توسط کاربر از مشخص کننده های تبدیل استفاده شده توسط توابع هوشمند IO که استفاده از آنها مبهم است مطلع شود و از پیوند دادن روتین های بیش از حد طولانی IO جلوگیری کند. (برای جزئیات بیشتر به گزینه smart-io-format مراجعه کنید.)

قرار دادن بخش های سفارشی قبلاً، گزینه -Wl، –section-start تنها زمانی بخش مشخص شده را در آدرس درخواستی قرار می داد که اسکریپت پیوند دهنده یک بخش خروجی را با همان نام تعریف می کرد. زمانی که اینطور نبود، بخش در آدرسی که پیوند دهنده انتخاب کرده بود قرار می گرفت و این گزینه اساسا نادیده گرفته می شد. اکنون این گزینه برای تمام بخش‌های سفارشی مورد استفاده قرار می‌گیرد، حتی اگر اسکریپت پیوند دهنده بخش را تعریف نکند. البته توجه داشته باشید که برای بخش های استاندارد، مانند . متن،. bss یا . داده ها، بهترین تخصیص دهنده هنوز هم کنترل کاملی بر جایگذاری آنها خواهد داشت و این گزینه هیچ تاثیری نخواهد داشت. همانطور که در راهنمای کاربر توضیح داده شده است از گزینه -Wl, -Tsection=add استفاده کنید.

نسخه 2.32

راهنمای پشته با مجوز کامپایلر PRO موجود است، از ویژگی هدایت پشته کامپایلر می توان برای تخمین حداکثر عمق هر پشته استفاده شده توسط یک برنامه استفاده کرد. گراف فراخوانی یک برنامه را می سازد و آنالیز می کند، استفاده از پشته هر تابع را تعیین می کند و گزارشی تولید می کند که از آن می توان عمق پشته های استفاده شده توسط برنامه را استنباط کرد. این ویژگی از طریق گزینه خط فرمان -mchp-stack-usage فعال می شود. خلاصه ای از استفاده از پشته پس از اجرا چاپ می شود. گزارش دقیق پشته در نقشه موجود است file، که به روش معمول قابل درخواست است.

پشتیبانی از دستگاه جدید برای قطعات AVR زیر در دسترس است: ATTINY 427، ATTINY 424، ATTINY 426، ATTINY827، ATTINY824، ATTINY826، AVR32DB32، AVR64DB48، AVR64DB64، AVR64DB28، AVR32DB28، AVR64DB32، AVR32DB48، AVRXNUMX، AVRXNUMXBDXNUMX، AVRXNUMX، AVRXNUMX و AVRXNUMXDBXNUMX.

پشتیبانی از دستگاه عقب نشینی دیگر برای قطعات AVR زیر در دسترس نیست: AVR16DA28، AVR16DA32 و، ​​AVR16DA48.

نسخه 2.31

هیچ کدام.

نسخه 2.30

گزینه جدید برای جلوگیری از مقدار دهی اولیه داده ها یک گزینه جدید -mno-data-ini t درایور از مقداردهی اولیه داده ها و پاک کردن بخش های bss جلوگیری می کند. با سرکوب خروجی داده‌های do_ copy_ و نمادهای d o_ clear_ bss در اسمبلی کار می‌کند. files، که به نوبه خود از گنجاندن آن روال ها توسط پیوند دهنده جلوگیری می کند.

بهینه‌سازی‌های پیشرفته تعدادی از بهبودهای بهینه‌سازی انجام شده‌اند، از جمله حذف دستورالعمل‌های بازگشت اضافی، حذف برخی پرش‌ها به دنبال دستورالعمل skip-if-bit-is، و انتزاع رویه‌ای بهبود یافته و توانایی تکرار این فرآیند.

اکنون گزینه‌های اضافی برای کنترل برخی از این بهینه‌سازی‌ها در دسترس هستند، به‌ویژه لنگرهای بخش -f، که اجازه می‌دهد دسترسی به اشیاء ثابت نسبت به یک نماد انجام شود. -mpai derations=n، که اجازه می دهد تعداد تکرارهای انتزاعی رویه ای از پیش فرض 2 تغییر کند. و -mpa- call cost- shortcall، که انتزاع رویه‌ای تهاجمی‌تری را انجام می‌دهد، به این امید که پیوند دهنده بتواند تماس‌های طولانی را کاهش دهد. اگر مفروضات اساسی محقق نشود، این گزینه آخر می تواند اندازه کد را افزایش دهد.

پشتیبانی از دستگاه جدید پشتیبانی برای قطعات AVR زیر در دسترس است: AVR16DA28، AVR16DA32،
AVR16DA48، AVR32DA28، AVR32DA32، AVR32DA48، AVR64DA28، AVR64DA32، AVR64DA48، AVR64DA64، AVR128DB28، AVR128DB32، AVR128DB48، AVR128DB64، AVRXNUMXDBXNUMX، AVRXNUMXDAXNUMX، AVRXNUMXDAXNUMX، AVRXNUMXDAXNUMX

پشتیبانی دستگاه عقب نشینی شده پشتیبانی برای قطعات AVR زیر دیگر در دسترس نیست: ATA5272، ATA5790، ATA5790N،ATA5791،ATA5795،ATA6285،ATA6286،ATA6612C،ATA6613C،ATA6614Q، ATA6616TAC، ATA6617TAC، و ATA664251TAC، ATAXNUMX.

نسخه 2.29 (انتشار ایمنی عملکردی)

سربرگ file برای کامپایلر داخلی برای اطمینان از اینکه کامپایلر می تواند با مشخصات زبانی مانند MISRA مطابقت داشته باشد، سرتیتر file، که به طور خودکار توسط ، به روز رسانی شده است. این هدر شامل نمونه های اولیه برای همه توابع داخلی است، مانند چرخه های _buil tin _avrnop () و _buil tin_ avr delay_ () . برخی از توکارها ممکن است با MISRA سازگار نباشند. اینها را می توان با افزودن تعریف _Xe_ STRICT_ MISRA به خط فرمان کامپایلر حذف کرد. توکارها و اعلان‌های آن‌ها برای استفاده از انواع با عرض ثابت به‌روزرسانی شده‌اند.

نسخه 2.20

پشتیبانی از دستگاه جدید پشتیبانی برای قطعات AVR زیر در دسترس است: ATTINY1624، ATTINY1626، و ATTINY1627.

بهترین تخصیص مناسب بهترین تخصیص دهنده (BFA) در کامپایلر بهبود یافته است به طوری که بخش ها به ترتیبی تخصیص داده می شوند که امکان بهینه سازی بهتر را فراهم می کند. BFA در حال حاضر از فضاهای آدرس نامگذاری شده پشتیبانی می کند و بهتر از مقداردهی اولیه داده ها استفاده می کند.

انتزاع رویه ای بهبود یافته بهینه‌سازی‌های انتزاعی رویه‌ای اکنون روی دنباله‌های کد بیشتری انجام می‌شوند. موقعیت‌های قبلی که این بهینه‌سازی ممکن است اندازه کد را افزایش داده باشد، با آگاه کردن کد بهینه‌سازی از فرآیند جمع‌آوری زباله پیوند دهنده برطرف شده است.

عدم وجود مونتاژ کننده AVR اسمبلر AVR دیگر در این توزیع گنجانده نشده است.

نسخه 2.19 (انتشار ایمنی عملکردی)

هیچ کدام.

نسخه 2.10

پوشش کد این نسخه شامل یک ویژگی پوشش کد است که تجزیه و تحلیل میزان اجرای کد منبع پروژه را تسهیل می کند. برای فعال کردن آن از گزینه -mcodecov=ram استفاده کنید. پس از اجرای برنامه بر روی سخت افزار شما، اطلاعات پوشش کد در دستگاه جمع آوری می شود و می تواند از طریق یک افزونه پوشش کد به MPLAB X IDE منتقل شده و نمایش داده شود. برای دریافت اطلاعات در مورد این افزونه می توانید به مستندات IDE مراجعه کنید. #pragma mcodecov ممکن است برای حذف عملکردهای بعدی از تجزیه و تحلیل پوشش استفاده شود. در حالت ایده آل، پراگما باید در ابتدای آن اضافه شود file تا کل آن حذف شود file از تجزیه و تحلیل پوشش از طرف دیگر، ویژگی ((mcodecov)) ممکن است برای حذف یک تابع خاص از تجزیه و تحلیل پوشش استفاده شود.

توضیحات دستگاه files یک دستگاه جدید file به نام avr chipinfo. html در دایرکتوری docs توزیع کامپایلر قرار دارد. این file تمام دستگاه های پشتیبانی شده توسط کامپایلر را لیست می کند. روی نام یک دستگاه کلیک کنید، و صفحه ای باز می شود که تمام جفت های تنظیمات بیت پیکربندی مجاز/مقدار برای آن دستگاه را نشان می دهد، با حالت قبلیamples

انتزاع رویه ای بهینه‌سازی‌های انتزاعی رویه‌ای، که جایگزین بلوک‌های رایج کد اسمبلی با فراخوانی یک کپی استخراج‌شده از آن بلوک می‌شوند، به کامپایلر اضافه شده‌اند. اینها توسط یک برنامه جداگانه انجام می شود که به طور خودکار توسط کامپایلر هنگام انتخاب سطوح 2، 3 یا بهینه سازی فراخوانی می شود. این بهینه سازی ها اندازه کد را کاهش می دهند، اما ممکن است سرعت اجرا و اشکال زدایی کد را کاهش دهند.
انتزاع رویه‌ای را می‌توان در سطوح بهینه‌سازی بالاتر با استفاده از گزینه -mno-pa غیرفعال کرد، یا در سطوح بهینه‌سازی پایین‌تر (مطابق با مجوز شما) با استفاده از -mpa فعال شد. می توان آن را برای یک شی غیرفعال کرد file با استفاده از -mno-pa-on-file=fileنام، یا برای یک تابع با استفاده از -mno-pa در تابع= غیر فعال می شود.
در داخل کد منبع شما، انتزاع رویه‌ای را می‌توان برای یک تابع با استفاده از _ویژگی_ ((nopa)) با تعریف تابع، یا با استفاده از _nopa، که به صفت ((nopa، noinline)) گسترش می‌یابد و بنابراین از انجام درون‌خط تابع جلوگیری می‌کند، غیرفعال کرد. و انتزاعی از کد درون خطی وجود دارد.
پشتیبانی از بیت قفل در پراگما اکنون می توان از پیکربندی #pragma برای تعیین بیت های قفل AVR و همچنین سایر بیت های پیکربندی استفاده کرد. اطلاعات تراشه avr را بررسی کنید. html file (در بالا ذکر شد) برای جفت های تنظیم/مقدار برای استفاده با این پراگما.
پشتیبانی از دستگاه جدید پشتیبانی برای قطعات زیر در دسترس است: AVR28DA128، AVR64DA128، AVR32DA128، و AVR48DA128.

نسخه 2.05

بیت های بیشتر برای دلار شما نسخه macOS این کامپایلر و مدیر مجوز اکنون یک برنامه 64 بیتی است. این اطمینان حاصل می کند که کامپایلر بدون اخطار در نسخه های اخیر macOS نصب و اجرا می شود.
اشیاء Const در حافظه برنامه کامپایلر اکنون می تواند اشیاء با شرایط const را در حافظه فلش برنامه قرار دهد، نه اینکه آنها را در RAM قرار دهد. کامپایلر به گونه‌ای اصلاح شده است که داده‌های سراسری با کیفیت const در حافظه فلش برنامه ذخیره می‌شوند و می‌توان به طور مستقیم و غیرمستقیم با استفاده از دستورالعمل‌های مربوط به حافظه برنامه به این داده‌ها دسترسی داشت. این ویژگی جدید به طور پیش‌فرض فعال است، اما می‌توان آن را با استفاده از گزینه -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 قدیمی را می‌توان مستقیماً با استفاده از گزینه‌های قدیمی که در نسخه‌های کامپایلر قبلی پذیرفته بود فراخوانی کرد.

رابط C مشترک این کامپایلر اکنون می‌تواند با رابط C مشترک MPLAB مطابقت داشته باشد و به کد منبع اجازه می‌دهد راحت‌تر در تمام کامپایلرهای MPLAB XC منتقل شود. گزینه -mext=cci این ویژگی را درخواست می‌کند و نحو جایگزین را برای بسیاری از برنامه‌های افزودنی زبان فعال می‌کند.

راننده کتابدار جدید یک درایور کتابدار جدید بالاتر از کتابخانه کتابخانه PIC قبلی و کتابدار AVR avr-ar قرار گرفته است. این درایور گزینه‌های به سبک بایگانی GCC را می‌پذیرد، که یا برای کتابدار در حال اجرا ترجمه یا ارسال می‌شوند. درایور جدید اجازه می دهد تا مجموعه ای از گزینه های مشابه با معنایی مشابه برای ایجاد یا دستکاری هر کتابخانه PIC یا AVR استفاده شود. file و بنابراین روش توصیه شده برای فراخوانی کتابدار است. در صورت نیاز برای پروژه‌های قدیمی، می‌توان کتابدار قبلی را مستقیماً با استفاده از گزینه‌های قدیمی که در نسخه‌های کامپایلر قبلی پذیرفته بود فراخوانی کرد.

مسائل مهاجرت

موارد زیر ویژگی هایی هستند که اکنون توسط کامپایلر به طور متفاوتی مدیریت می شوند. در صورت انتقال کد به این نسخه کامپایلر، ممکن است این تغییرات نیاز به تغییر در کد منبع شما داشته باشد. شماره نسخه در عنوان های فرعی نشان دهنده اولین نسخه کامپایلر است که از تغییرات بعدی پشتیبانی می کند.

نسخه 2.40

هیچ کدام.

نسخه 2.39 (انتشار ایمنی عملکردی)

هیچ کدام.

نسخه 2.36

هیچ کدام.

نسخه 2.35

جابجایی پایه های رشته ای (XCS-2420) برای اطمینان از سازگاری با سایر کامپایلرهای XC، توابع string-to XC8، مانند strtol () و غیره، اگر پایه مشخص شده بزرگتر از 36 باشد، دیگر برای تبدیل رشته ورودی تلاش نمی کنند و در عوض errno را روی EINVAL تنظیم می کنند. استاندارد C رفتار توابع را زمانی که از این مقدار پایه فراتر رفته است، مشخص نمی کند.

بهینه سازی سرعت نامناسب هنگام انتخاب بهینه‌سازی سطح 3 (03-) بهینه‌سازی‌های انتزاع رویه‌ای فعال می‌شدند. این بهینه‌سازی‌ها اندازه کد را به قیمت کاهش سرعت کد کاهش می‌دهند، بنابراین نباید انجام می‌شد. پروژه‌هایی که از این سطح بهینه‌سازی استفاده می‌کنند ممکن است در هنگام ساخت با این نسخه، تفاوت‌هایی را در اندازه کد و سرعت اجرا ببینند.

عملکرد کتابخانه کد بسیاری از توابع استاندارد کتابخانه C اکنون از کتابخانه استاندارد یکپارچه Microchip می آید، که ممکن است در برخی شرایط رفتار متفاوتی را در مقایسه با آنچه که توسط کتابخانه avr-libc قبلی ارائه شده از خود نشان دهد. برای مثالampبنابراین، دیگر نیازی به پیوند در کتابخانه lprintf_flt (گزینه -print _flt) برای فعال کردن پشتیبانی فرمت‌شده IO برای مشخص‌کننده‌های float-format نیست. ویژگی های هوشمند IO کتابخانه استاندارد یکپارچه میکروچیپ این گزینه را اضافی می کند. علاوه بر این، استفاده از روتین های پسوند _p برای توابع رشته و حافظه (به عنوان مثال strcpy_P () و غیره ..) که روی رشته های const در فلش کار می کنند دیگر ضروری نیست. روال های استاندارد C (به عنوان مثال strcpy ()) زمانی که ویژگی const-data-in-program-memory فعال باشد، به درستی با چنین داده هایی کار می کنند.

نسخه 2.32

هیچ کدام.

نسخه 2.31

هیچ کدام.

نسخه 2.30

هیچ کدام.

نسخه 2.29 (انتشار ایمنی عملکردی)

هیچ کدام.

نسخه 2.20

طرح‌بندی DFP تغییر کرد کامپایلر اکنون طرح‌بندی متفاوتی را در نظر می‌گیرد که توسط DFP (بسته‌های خانواده دستگاه) استفاده می‌شود. این بدان معنی است که یک DFP قدیمی ممکن است با این نسخه کار نکند و کامپایلرهای قدیمی تر نمی توانند از آخرین DFP ها استفاده کنند.

نسخه 2.19 (انتشار ایمنی عملکردی)

هیچ کدام.

نسخه 2.10

هیچ کدام

نسخه 2.05

اشیاء Const در حافظه برنامه توجه داشته باشید که به‌طور پیش‌فرض، اشیاء مستمر در حافظه برنامه قرار می‌گیرند و به آن‌ها دسترسی پیدا می‌کنند (همانطور که در اینجا توضیح داده شده است). این بر اندازه و سرعت اجرای پروژه شما تأثیر می گذارد، اما باید مصرف RAM را کاهش دهد. در صورت نیاز می توان این ویژگی را با استفاده از گزینه -mnoconst- da ta-in-progmem غیرفعال کرد.

نسخه 2.00

فیوزهای پیکربندی فیوزهای پیکربندی دستگاه اکنون می توانند با استفاده از یک عمل پیکربندی و به دنبال آن جفت های تنظیم-مقدار برای تعیین وضعیت فیوز برنامه ریزی شوند، به عنوان مثال
پیکربندی #pragma WDT0N = SET
پیکربندی #pragma B0DLEVEL = B0DLEVEL_4V3
اشیاء و توابع مطلق اکنون می توان اشیاء و توابع را با استفاده از مشخص کننده CCI _at (آدرس) در آدرس خاصی در حافظه قرار داد.ample: #شامل int foobar at(Ox800100); char at(Ox250) get ID(int offset) {…} آرگومان این مشخص کننده باید ثابت باشد که نشان دهنده آدرسی باشد که اولین بایت یا دستورالعمل در آن قرار می گیرد. آدرس های RAM با استفاده از افست 0x800000 نشان داده می شوند. CCI را برای استفاده از این ویژگی فعال کنید.
نحو تابع وقفه جدید کامپایلر اکنون مشخص کننده وقفه CCI (num) را می پذیرد تا نشان دهد که توابع C کنترل کننده وقفه هستند. مشخص کننده یک عدد وقفه می گیرد، برای مثالample: #شامل وقفه خالی (SPI STC_ vect _num) spi Isr(void) {… }

رفع مشکلات

موارد زیر اصلاحاتی است که در کامپایلر انجام شده است. اینها ممکن است اشکالات کد تولید شده را برطرف کنند یا عملکرد کامپایلر را به آنچه که توسط راهنمای کاربر در نظر گرفته شده یا مشخص شده است، تغییر دهند. شماره نسخه در عناوین فرعی اولین نسخه کامپایلر را نشان می دهد که شامل رفع مشکلاتی است که در ادامه می آید. برچسب(های) پرانتزی در عنوان، شناسایی آن مشکل در پایگاه داده ردیابی است. در صورت نیاز به تماس با پشتیبانی، اینها ممکن است مفید باشند.

توجه داشته باشید که برخی از مشکلات خاص دستگاه در بسته خانواده دستگاه (DFP) مرتبط با دستگاه تصحیح شده است. برای اطلاعات در مورد تغییرات ایجاد شده در DFP و دانلود آخرین بسته ها به مدیر بسته MPLAB مراجعه کنید.

نسخه 2.40

خیلی آرام (XCS-2876) هنگام استفاده از گزینه -mrelax، کامپایلر برخی از بخش ها را با هم تخصیص نمی داد و در نتیجه اندازه کد بهینه کمتری داشت. این ممکن است با کدهایی که از کتابخانه‌های جدید MUSL استفاده می‌کنند یا با نمادهای ضعیف رخ داده باشد.
ویژگی نقشه برداری همانطور که در هشدار ذکر شده غیرفعال نیست (XCS-2875) ویژگی cost-data-in-config mappedprogmem وابسته به فعال بودن ویژگی cost-data-in-proem است. اگر ویژگی cost-data-ipconfig-mapped-proem به صراحت با استفاده از این گزینه فعال شده بود و ویژگی cost-data-inprogmem غیرفعال شده بود، با وجود پیام هشداری مبنی بر اینکه اطلاعات منفی در پیکربندی-mapped-، مرحله پیوند ناموفق بود. ویژگی proem به طور خودکار غیرفعال شده بود که کاملاً صحیح نبود. ویژگی const-data-in-config-mapped-proem اکنون در این وضعیت کاملاً غیرفعال شده است.
تغییر DFP برای دسترسی صحیح به NVMCTRL (XCS-2848) کد راه‌اندازی زمان اجرا که توسط دستگاه‌های AVR64EA استفاده می‌شود این را در نظر نمی‌گیرد که رجیستر NVMCTRL تحت حفاظت از تغییر پیکربندی (CCP) قرار دارد و قادر به تنظیم IO SFR در صفحه مورد استفاده توسط کامپایلر cont-data-in configmapped-proem نیست. ویژگی. تغییرات ایجاد شده در AVR-Ex_DFP نسخه 2.2.55 به کد راه اندازی زمان اجرا اجازه می دهد تا به درستی در این ثبات بنویسد.
تغییرات DFP برای جلوگیری از نگاشت فلش (XCS-2847) راه حلی برای مشکل در ویژگی دستگاه نقشه برداری فلش گزارش شده در AVR128DA28/32/48/64 Silicon Errata (DS80000882) پیاده سازی شده است. ویژگی کامپایلر const-data-in-config-mapped-proem به طور پیش فرض برای دستگاه های آسیب دیده اعمال نخواهد شد و این تغییر در AVR-Ex_DFP نسخه 2.2.160 ظاهر می شود.
خطای ساخت با sinhf یا coshf (XCS-2834) تلاش برای استفاده از توابع کتابخانه sinhf () یا coshf () منجر به یک خطای پیوند شد که یک مرجع تعریف نشده را توصیف می کرد. تابع گمشده ارجاع شده اکنون در توزیع کامپایلر گنجانده شده است.
خطاهای ساخت با nopa (XCS-2833) استفاده از ویژگی nopa با تابعی که نام اسمبلر آن با استفاده از () مشخص شده است، باعث ایجاد پیام های خطا از اسمبلر می شود. این ترکیب امکان پذیر نیست.
خرابی تابع متغیر با آرگومان های اشاره گر (XCS-2755، XCS-2731) توابع با تعداد متغیر آرگومان انتظار دارند هنگامی که ویژگی cost-data-in-proem فعال است، نشانگرهای 24 بیتی (نوع _memo) در لیست آرگومان متغیر ارسال شوند. آرگومان هایی که اشاره گر به حافظه داده بودند به عنوان اشیاء 16 بیتی ارسال می شدند و باعث شکست کد در هنگام خواندن نهایی می شدند. وقتی ویژگی cons data-in-proem فعال باشد، همه آرگومان های اشاره گر 16 بیتی اکنون به نشانگرهای 24 بیتی تبدیل می شوند. عملکردهای کتابخانه strtoxxx خراب می شوند (XCS-2620) وقتی ویژگی const-data-in-proem فعال بود، پارامتر enter در توابع کتابخانه strtoxxx برای آرگومان های رشته منبع که در حافظه برنامه نیستند به درستی به روز نمی شد.
هشدارها برای بازیگران نامعتبر (XCS-2612) اگر ویژگی cost-in-proem فعال باشد و آدرس یک رشته واقعی به طور صریح به فضای آدرس داده فرستاده شود (کم کردن واجد شرایط const)، اکنون کامپایلر یک خطا صادر می کند.ample، (uint8 t *) "سلام جهان!". در صورتی که آدرس نامعتبر باشد زمانی که یک نشانگر داده const به طور صریح به فضای آدرس داده فرستاده می شود، یک هشدار وجود دارد.
قرار دادن اشیاء const بدون مقدار اولیه (XCS-2408) اشیاء uninitialized const و const v olatile در حافظه برنامه در دستگاه هایی که تمام یا بخشی از حافظه برنامه خود را در فضای آدرس داده نگاشت می کنند، قرار نمی گیرند. برای این دستگاه‌ها، چنین اشیایی در حال حاضر در حافظه برنامه قرار می‌گیرند و عملکرد آنها را با سایر دستگاه‌ها سازگار می‌کنند.

نسخه 2.39 (انتشار ایمنی عملکردی)

هیچ کدام.

نسخه 2.36

خطا هنگام تأخیر (XCS-2774) تغییرات جزئی در بهینه‌سازی حالت آزاد پیش‌فرض از تا شدن مداوم عبارات عملوند به توابع داخلی تأخیر جلوگیری می‌کند و در نتیجه آنها را به‌عنوان غیرتماسی در نظر می‌گیرند و باعث ایجاد خطا می‌شوند: چرخه‌های _buil tin avr delay_ ac ompile انتظار می‌رود ثابت عدد صحیح زمانی

نسخه 2.35

تخصیص پیوسته با استفاده از _at (XCS-2653) تخصیص پیوسته مکان های چند شیء در یک بخش با همان نام و استفاده از () به درستی کار نمی کند. برای مثالample: constchararrl [ ] at tri butte ((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) وقتی گزینه -monist-data-in-proem فعال بود (که حالت پیش‌فرض است)، روال بلوک leproma _read_ به درستی در دستگاه‌های Mega کار نمی‌کرد و در نتیجه حافظه EEPROM به درستی خوانده نمی‌شد.
تخصیص حافظه نامعتبر (XCS-2593، XCS-2651) وقتی گزینه -Text یا -Tata linker (برای مثالampبا استفاده از گزینه درایور -Wl) مشخص می شود، متن/منبع منطقه داده مربوطه به روز شد. با این حال، آدرس پایانی مطابق با آن تنظیم نشده بود، که می‌توانست منجر به فراتر رفتن منطقه از محدوده حافظه دستگاه مورد نظر شود.
کد وقفه ATtiny نامعتبر (XCS-2465) وقتی ساخت دستگاه‌های Tatin و بهینه‌سازی‌ها غیرفعال شد (00-)، توابع وقفه ممکن است پیام‌های اسمبلر عملوند خارج از محدوده را راه‌اندازی کرده باشند.
گزینه‌هایی که ارسال نمی‌شوند (XCS-2452) هنگام استفاده از گزینه -Wl با چندین گزینه پیوند دهنده جدا شده با کاما، همه گزینه های پیوند دهنده به پیوند دهنده منتقل نمی شدند.
خطا در خواندن غیر مستقیم حافظه برنامه (XCS-2450) در برخی موارد، کامپایلر هنگام خواندن یک مقدار دو بایت از یک اشاره گر به حافظه برنامه، یک خطای داخلی (insn غیرقابل تشخیص) ایجاد کرد.

نسخه 2.32

دسترسی دوم به کتابخانه ناموفق بود (XCS-2381) فراخوانی نسخه ویندوز xc8-ar. بایگانی کتابخانه exe برای بار دوم برای دسترسی به آرشیو کتابخانه موجود ممکن است با پیام خطای عدم امکان تغییر نام شکست خورده باشد.

نسخه 2.31

خرابی های کامپایلر غیرقابل توضیح (XCS-2367) هنگام اجرا بر روی پلتفرم های ویندوزی که دایرکتوری موقت سیستم روی مسیری تنظیم شده است که شامل یک نقطه است.' کاراکتر، ممکن است کامپایلر در اجرای آن شکست خورده باشد.

نسخه 2.30

برچسب‌های جهانی پس از طرح‌ریزی نامناسب (XCS-2299) کد اسمبلی دست‌نویس که برچسب‌های سراسری را در توالی‌های اسمبلی قرار می‌دهد که توسط انتزاع رویه‌ای فاکتور می‌شوند، ممکن است به درستی تغییر مکان داده نشده باشند.
تصادف آرامش بخش (XCS-2287) استفاده از گزینه -merlad ممکن است باعث از کار افتادن لینکر شود زمانی که بهینه‌سازی‌های tail jump relaxation تلاش می‌کردند دستورالعمل‌های ret را که در انتهای یک بخش نبودند حذف کنند.
خرابی هنگام بهینه سازی برچسب ها به عنوان مقادیر (XCS-2282) کدی که از پسوند زبان گنو C "برچسب‌ها به‌عنوان مقادیر" استفاده می‌کند، ممکن است باعث از کار افتادن بهینه‌سازی‌های انتزاعی رویه‌ای شده باشد، با یک خطای اصلاح محدوده گستره VMA Outlined.
نه چندان مقرون به صرفه (XCS-2271) نمونه های اولیه برای شروع () و سایر توابع از هنگامی که ویژگی -monist-data inprogmem غیرفعال است، دیگر واجد شرایط هزینه غیر استاندارد را در نشانگرهای رشته برگشتی مشخص نکنید. توجه داشته باشید که در دستگاه‌های avrxmega3 و avertin، این ویژگی برای همیشه فعال است.
آغازگرهای گم شده (XCS-2269) هنگامی که بیش از یک متغیر در یک واحد ترجمه در یک بخش قرار می‌گیرد (با استفاده از بخش یا ویژگی ((بخش)))، و اولین متغیر از این قبیل صفر مقدار دهی اولیه شده است یا فاقد یک مقدار اولیه است، مقداردهی اولیه برای سایر متغیرها در همان واحد ترجمه که در همان قسمت قرار داده شده بودند گم شدند.

نسخه 2.29 (انتشار ایمنی عملکردی)

هیچ کدام.

نسخه 2.20

خطا در دستورات طولانی (XCS-1983) هنگام استفاده از یک هدف AVR، کامپایلر ممکن است با a متوقف شده باشد file خطا یافت نشد، اگر خط فرمان بسیار بزرگ بود و دارای کاراکترهای خاصی مانند نقل قول، بک اسلش و غیره بود.
بخش rodata اختصاص نیافته (XCS-1920) پیونددهنده AVR در هنگام ساختن معماری‌های avrxmega3 و avrtiny نتوانست حافظه را برای بخش‌های rodata سفارشی اختصاص دهد، و به طور بالقوه باعث ایجاد خطاهای همپوشانی حافظه می‌شود.

نسخه 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) هنگام ساخت تحت ویندوز، ممکن است یک خطای کامپایلر داخلی هنگام بهینه سازی کد ایجاد شده باشد.
سرریز RAM شناسایی نشد (XCS-1800، XCS-1796) برنامه‌هایی که از RAM موجود فراتر می‌رفتند توسط کامپایلر در برخی موقعیت‌ها شناسایی نمی‌شدند که منجر به شکست کد زمان اجرا می‌شد.
حافظه فلش حذف شده (XCS-1792) برای دستگاه های avrxmega3 و avrtiny، ممکن است قسمت هایی از حافظه فلش توسط MPLAB X IDE برنامه ریزی نشده باشد.
عدم اجرای اصلی (XCS-1788) در برخی شرایط که برنامه هیچ متغیر جهانی تعریف نشده بود، کد راه‌اندازی زمان اجرا خارج نمی‌شد و تابع اصلی () هرگز به آن دسترسی پیدا نمی‌کرد.
اطلاعات حافظه نادرست (XCS-1787) برای دستگاه های avrxmega3 و avrtiny، برنامه avr-size گزارش می داد که داده های فقط خواندنی به جای حافظه برنامه، RAM مصرف می کنند.
حافظه برنامه خوانده شده نادرست (XCS-1783) پروژه هایی که برای دستگاه هایی با حافظه برنامه نگاشت شده در فضای آدرس داده کامپایل شده و اشیاء را با استفاده از ماکرو/ویژگی PROGMEM تعریف می کنند، ممکن است این اشیاء را از آدرس اشتباه خوانده باشند.
خطای داخلی با ویژگی ها (XCS-1773) اگر اشیاء اشاره گر را با آن تعریف کنید، یک خطای داخلی رخ می دهد
نشانه های _at () یا خصیصه() بین نام اشاره گر و نوع ارجاع نشده، برای مثالample، char *
_at ( 0x80015 0) cp; اکنون در صورت مواجهه با چنین کدی یک هشدار صادر می شود.
عدم اجرای اصلی (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 زمانی که کامپایلر تحت اوبونتو 18 اجرا می شد از کار افتاده باشد.
اشیاء پاک نشده (XCS-1752) ممکن است اشیاء مدت زمان ذخیره‌سازی استاتیک اولیه توسط کد راه‌اندازی زمان اجرا پاک نشده باشند.
مشخصات دستگاه متناقض نادیده گرفته شد (XCS-1749) کامپایلر هنگام استفاده از چندین گزینه مشخصات دستگاه و نشان دادن دستگاه های مختلف، خطایی ایجاد نمی کرد.
تخریب حافظه توسط هیپ (XCS-1748) نماد heap_ start به اشتباه تنظیم می‌شد و در نتیجه احتمال خراب شدن متغیرهای معمولی توسط پشته وجود داشت.
خطای جابجایی لینکر (XCS-1739) ممکن است زمانی که کد حاوی rjmp یا rcall با هدف دقیقاً 4k بایت فاصله دارد، یک خطای جابجایی پیوند دهنده منتشر شده باشد.

نسخه 2.00

هیچ کدام.

مسائل شناخته شده

در زیر محدودیت هایی در عملکرد کامپایلر وجود دارد. اینها ممکن است محدودیت های کدگذاری عمومی یا
انحراف از اطلاعات مندرج در دفترچه راهنمای کاربر. برچسب(های) پرانتزی در عنوان، شناسایی آن مشکل در پایگاه داده ردیابی است. در صورت نیاز به تماس با پشتیبانی، این ممکن است مفید باشد. مواردی که برچسب ندارند، محدودیت‌هایی هستند که حالت عملی را توصیف می‌کنند و احتمالاً برای همیشه به کار می‌روند.

یکپارچه سازی MPLAB X IDE

ادغام MPLAB IDE اگر قرار است کامپایلر از MPLAB IDE استفاده شود، قبل از نصب کامپایلر باید MPLAB IDE را نصب کنید.

تولید کد

عدم تخصیص حافظه PA (XCS-2881) هنگام استفاده از بهینه سازهای انتزاعی رویه ای، پیوند دهنده ممکن است خطاهای تخصیص حافظه را گزارش کند، زمانی که اندازه کد نزدیک به مقدار حافظه برنامه موجود در دستگاه است، حتی اگر برنامه بتواند با فضای موجود مطابقت داشته باشد.
Smart-IO نه چندان هوشمند (XCS-2872) در صورتی که ویژگی coast-data-in-proem غیرفعال شده باشد یا اگر دستگاه تمام فلش خود را در حافظه داده نگاشت کرده باشد، ویژگی smart-io کامپایلر کد معتبر اما زیر بهینه را برای عملکرد sprint تولید می کند.
حتی کمتر هوشمند Smart-IO (XCS-2869) وقتی از گزینه های -floe و -fno-buil tin استفاده شود، ویژگی smart-io کامپایلر کد معتبر اما کمتر از حد مطلوب تولید می کند.
قرار دادن داده‌های فقط خواندنی غیربهینه (XCS-2849) پیوند دهنده در حال حاضر از بخش های حافظه APPCODE و APPDATA و همچنین از تقسیمات [No-]Read-While-Write در نقشه حافظه آگاه نیست. در نتیجه، احتمال کمی وجود دارد که پیوند دهنده داده های فقط خواندنی را در یک ناحیه نامناسب از حافظه تخصیص دهد. اگر ویژگی coast-data-in-pragma فعال باشد، احتمال داده های نابجا افزایش می یابد، به خصوص اگر ویژگی coast-data-in-config-mapped-proem نیز فعال باشد. در صورت نیاز می توان این ویژگی ها را غیرفعال کرد.
شیء file پردازش سفارش (XCS-2863) ترتیب اشیاء fileممکن است بر اساس استفاده از بهینه‌سازی‌های انتزاعی رویه‌ای (گزینه -mpa) توسط پیوند دهنده پردازش شود. این فقط بر روی کدی تأثیر می گذارد که توابع ضعیف را در چندین ماژول تعریف می کند.
خطای پیوند دهنده با مطلق (XCS-2777) هنگامی که یک شی در یک آدرس در ابتدای RAM مطلق می شود و اشیاء اولیه نیز تعریف می شوند، ممکن است یک خطای پیوند دهنده ایجاد شود.
شناسه‌های بیداری کوتاه (XCS-2775) برای دستگاه‌های ATA5700/2، رجیسترهای PHID0/1 فقط به‌عنوان عرض 16 بیت تعریف می‌شوند تا عرض 32 بیت.
خرابی لینکر هنگام فراخوانی نماد (XCS-2758) اگر زمانی که کد منبع نمادی را که با استفاده از گزینه -Wl, –defsym linker تعریف شده است، از گزینه -merlad driver استفاده شود، ممکن است پیوند دهنده خراب شود.
مقداردهی اولیه نادرست (XCS-2679) بین جایی که مقادیر اولیه برای برخی از اشیاء به اندازه بایت سراسری/استاتیک در حافظه داده قرار می‌گیرند و جایی که متغیرها در زمان اجرا به آن‌ها دسترسی خواهند داشت، اختلاف وجود دارد.
اشتباه شروع شده خالی می شود (XCS-2652) در مواردی که رشته موضوعی برای تبدیل با بیان شده () حاوی چیزی است که به نظر می رسد یک عدد ممیز شناور در قالب نمایی است و یک کاراکتر غیرمنتظره بعد از یک کاراکتر e وجود دارد، آدرس خالی، در صورت ارائه، به کاراکتر بعد از آن اشاره می کند. e و نه خود e. برای مثالample: بیان شده ("هوایی"، خالی)؛ منجر به اشاره خالی به کاراکتر x می شود.
فراخوانی عملکرد غیرمستقیم بد (XCS-2628) در برخی موارد، فراخوانی های تابعی که از طریق نشانگر تابع ذخیره شده به عنوان بخشی از ساختار انجام می شود ممکن است با شکست مواجه شوند.
strtof صفر را برای شناورهای هگزا دسیمال برمی گرداند (XCS-2626) توابع کتابخانه strtof () et al و scanf () و همکاران، همیشه یک عدد ممیز شناور هگزادسیمال را که توانی را مشخص نمی کند، تبدیل می کند.
صفر برای مثالample: stator ("جغد"، & خالی); مقدار 0 را برمی گرداند نه 1.
پیام‌های نادرست پشته مشاور (XCS-2542، XCS-2541) در برخی موارد، هشدار مشاور پشته در مورد بازگشت یا پشته نامشخص استفاده شده (احتمالاً از طریق استفاده از alloca()) منتشر نمی شود.
مشکل با کد وقفه تکراری (XCS-2421) در جایی که بیش از یک تابع وقفه دارای بدنه یکسانی باشد، کامپایلر ممکن است خروجی یک تابع وقفه دیگر را داشته باشد. این باعث می‌شود که همه رجیسترهای clobbered به‌طور غیرضروری ذخیره شوند و وقفه‌ها حتی قبل از اجرای اپیلوگ کنترل‌کننده وقفه فعلی فعال می‌شوند که می‌تواند منجر به شکست کد شود.
اشیاء Const که در حافظه برنامه نیستند (XCS-2408) برای پروژه‌های avrxmega3 و avertins، اشیاء const غیر ایده‌آل در حافظه داده قرار می‌گیرند، حتی اگر یک هشدار نشان دهد که آنها در حافظه برنامه قرار گرفته‌اند. این روی دستگاه‌هایی که حافظه برنامه‌ای در فضای حافظه داده نگاشته نشده‌اند، تأثیر نمی‌گذارد، و همچنین روی هر شیئی که مقداردهی اولیه شده است تأثیر نمی‌گذارد.
خروجی بد با مسیر DFP نامعتبر (XCS-2376) اگر کامپایلر با یک مسیر DFP نامعتبر و یک 'spec' فراخوانی شود file برای دستگاه انتخابی وجود دارد، کامپایلر بسته خانواده دستگاه گمشده را گزارش نمی‌کند و در عوض «مشخصات» را انتخاب می‌کند. file، که ممکن است منجر به خروجی نامعتبر شود. 'مشخصات' fileممکن است s با DFP های توزیع شده به روز نباشند و فقط برای آزمایش کامپایلر داخلی در نظر گرفته شده باشند.
همپوشانی حافظه شناسایی نشد (XCS-1966) کامپایلر همپوشانی حافظه اشیایی که در یک آدرس (از طریق ()) مطلق شده اند و سایر اشیاء با استفاده از مشخص کننده بخش () و که به همان آدرس پیوند شده اند را تشخیص نمی دهد.
خرابی در عملکردهای کتابخانه و _meme (XCS-1763) توابع شناور لیمبیک با آرگومان در فضای آدرس _memo ممکن است شکست بخورند. توجه داشته باشید که روال های کتابخانه از برخی عملگرهای C فراخوانی می شوند، بنابراین، برای مثالampکد زیر تحت تأثیر قرار می گیرد: return regFloatVar > memxFloatVar;
اجرای لیمبیک محدود (AVRTC-731) برای محصولات ATTiny4/5/9/10/20/40، اجرای استاندارد کتابخانه C / Math در لیمبیک بسیار محدود است یا وجود ندارد.
محدودیت های حافظه برنامه (AVRTC-732) تصاویر حافظه برنامه بیش از 128 کیلوبایت توسط زنجیره ابزار پشتیبانی می شوند. با این حال، نمونه‌های شناخته شده‌ای از سقط اتصال‌دهنده بدون آرامش و بدون پیام خطای مفید به‌جای تولید تابع مورد نیاز در هنگام استفاده از گزینه -relax وجود دارد.
محدودیت فضای نام (AVRTC-733) فضاهای آدرس نامگذاری شده توسط زنجیره ابزار، مشروط به محدودیت های ذکر شده در بخش راهنمای کاربر، واجد شرایط نوع ویژه، پشتیبانی می شوند.
مناطق زمانی را توابع کتابخانه GMT را فرض می‌کنند و از مناطق زمانی محلی پشتیبانی نمی‌کنند، بنابراین زمان محلی () همان زمان gummite () را برمی‌گرداند.ampله

پشتیبانی از مشتری

file:///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ for A VR. htm

اسناد / منابع

نرم افزار کامپایلر MICROCHIP MPLAB XC8 C [pdf] دفترچه راهنما
MPLAB XC8 C، MPLAB XC8 C نرم افزار کامپایلر، نرم افزار کامپایلر، نرم افزار

مراجع

نظر بدهید

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی مشخص شده اند *