انستیتو تحقیقات ماهیان

واحد کنترل اینتراپت بخش دوم(NVIC)

۲۹ فروردین ۱۳۹۶

در ادامه بخش اول در مورد نحوه عملکرد واحد  کنترل کننده وقفه های برداری تو در تو به قسمت استثناهای داخلی میکرو رسیدیم که در این بخش در مورد آنها صحبت می کنیم

۱- خطای کارکرد (Usage fault)

این خطا زمانی به وجود می آید که یک کد اشتباه اجرا شود . علت معمول این اشتباه زمانی است که به پردازنده یک opcode اشتباه داده شود . بیشتر کامپایلر ها توانی تولید کد برای محدوده وسیعی از هسته های ARM را دارا هستند پس امکان دارد کامپایلر به صورت اشتباهی پیکر بندی شده باشد .

دلایل دیگری که می تواند باعث این استثنا شوند به شرح زیر هستند :

۱- دستور ناشناخته

۲- آدرس بازگشت اشتباه

۳- دسترسی اشتباه به حافظه بدون صف آرایی

۲- خطای باس (Bus fault)

خطای باس زمانی اتفاق می افتد که خطایی روی ماتریکس باس پیشرفته (AHB bus matrix) دیده شود .

دلایل دیگر این استثنا به صورت زیر می باشد :

۱- محدوده حافظه اشتباه

۲- انتقال دیتا اشتباه . به طور مثال نوشتن بایت در ورد یا بالعکس

۳- خطای مدیریت حافظه (Memory Manager Fault)

مدیریت خافظه یک واحد در پردازنده های سری Cortex-M که زمان طراحی میکروکنترلر میتواند به آن اضافه شود .این واحد کنترل کننده نحوه دسترسی به قسمت های مختلف حافظه با توجه به حالت کاری (Operating mode) آن است

۴- خطای سخت (Hard fault)

این خطا به دو صورت میتواند اتفاق بیوفتد اول زمانی که یک ارور باس به وجود آید و در حال خواندن بردار وقفه باشیم و دوم زمانی است که خطاهای دیگر غیر فعال باشند و خطا تبدیل به خطای سخت می شود

فعال کردن استثناها

خطای سخت همیشه فعال است و تنها با تغییرات در رجیستر FAULTMASK می تواند غیر فعال شود . استثنا های دیگر باید توسط رجیستر های SCB , SHC , SR فعال شوند

در این بخش سعی کردیم توضیح مختصری در مورد استثناهای پردازنده های Cortex-M بدیم

در قسمت بعدی و آخرین بخش واحد کنترل اینتراپت به اولویت بندی اینتراپت ها و نحوه میدریت اینتراپت ها در موارد خاص توسط این واحد می پردازیم

لطفا هر گونه نظر و پیشنهادی دارید در قسمت نظرات مطرح کنید