میکروکنترلر ARM چیست؟ معرفی معماری ARM
محتویات
در این مقاله در مورد مبانی میکروکنترلر های ARM ویژگی های معماری ARM صحبت میکنیم. پردازنده های ARM می توانند 32 بیتی یا 64 بیتی باشند. پردازنده های RISC سرعت بالاتری دارند زیرا تعداد کمی دستورالعمل را انجام می دهند.
میکروکنترلر ARM
ARM مخفف Advanced RISC Machine است و اساساً به عنوان یک میکروکنترلر RISC 32 بیتی موجود است. برای اولین بار توسط سازمان کامپیوتر Acron در سال 1987 معرفی شد. ARM نیز مانند سایر میکروکنترلرها از خانواده معماری میکروکنترلرها است و این پتنت توسط طراحان تراشه میکروکنترلرهای مختلف به ثبت رسیده است و آنها میکروکنترلرهایی مانند ST، موتورولا، NXP و… را تولید می کنند. اساساً ARM با نسخههای مختلف عرضه میشود، زیرا هر نسخه دارای مزایا و معایب خاص خود است. خانواده پردازندههای ARM طراحی خود را از سال 1987، زمانی که طراحی اولیه میکروکنترلر ARM خود را آغاز کردند، حفظ کردند.
پیشنهاد میکنم ابتدا مقاله میکروکنترلر چیست و میکروکنترلر AVR را بخوانید.
معماری میکروکنترلر ARM در سیستمهای تعبیه شده بسیار پر استفاده هستند. در حقیقت میتوان گفت در حال حاضر 60 درصد دستگاه ها دارای پردازنده با معماری ARM هستند.
پردازندههای ARM تعداد ترانزیستورهای کمتری دارند، زیرا مجموعه دستورالعمل های آنها کاهشیافته است که باعث میشود اندازه کل آی سی کمتر شود. اکثر دستگاه های الکترونیکی مانند تبلت، موبایل، تلفن های هوشمند و سایر دستگاه های تلفن همراه از این پردازنده ها تشکیل شده اند. با ترکیب ریزپردازنده ARM با RAM، ROM و سایر لوازم جانبی در یک تراشه، یک میکروکنترلر ARM به عنوان مثال LPC2148 به دست می آید.
معماری میکروکنترلر ARM
ARM دارای انواع مختلفی در بازار تجاری است، اما خانواده ARM Cortex که توسط معماری ARMv7 توسعه یافته است بسیار محبوب است. خانواده ARM Cortex دوباره به 3 زیر خانواده تقسیم می شود:
- سری ARM-Cortex Axe
- سری ARM-Cortex Rx
- سری ARM-Cortex Mx
معماری ARM Cortex-M3 MCU
پردازنده Cortex-M3 یک پردازنده 32 بیتی کم هزینه با کارایی بالا است. ARM یک پردازنده مبتنی بر «معماری هاروارد» است که خط داده و دستورالعمل جداگانه ای را برای برقراری ارتباط با RAM، ROM و … ارائه می دهد. این معماری شامل خط لوله 3 مرحله ای برای واکشی، رمزگشایی و اجرای متوالی دستورالعمل ها است.
پردازنده های Cortex-M3 ARM توسط مجموعه دستورالعمل های THUMB بر اساس فناوری THUMB-2 پیاده سازی می شوند. بنابراین، تراکم کد بالا را تضمین می کند و نیاز به حافظه برنامه را کاهش می دهد. مجموعه دستورالعمل Cortex-M3 به دلیل معماری مدرن 32 بیتی، عملکرد عالی را ارائه می دهد. پردازنده ARM core-m3 از نزدیک با کنترل کننده وقفه برداری تودرتو (NVIC) ادغام شده است تا عملکرد وقفه خوبی را ارائه دهد.
برنامه نویسی میکروکنترلر ARM
در حال حاضر، فروشندگان میکروکنترلر، میکروکنترلرهای 32 بیتی را بر اساس معماری ARM cortex-m3 ارائه می کنند. بسیاری از توسعه دهندگان سیستم های امبدد شروع به استفاده از این میکروکنترلرهای 32 بیتی برای پروژه های خود کرده اند. میکروکنترلرهای ARM از زبان های برنامه نویسی سطح پایین و سطح بالا پشتیبانی می کنند. برخی از معماریهای میکروکنترلر سنتی با محدودیتهای زیادی ساخته شدهاند، بنابراین استفاده از زبان برنامهنویسی سطح بالا دشوار است.
به عنوان مثال، اندازه حافظه محدود است و ممکن است برای پروژه ما کافی نباشد. میکروکنترلرهای ARM با فرکانس 100 مگاهرتز و عملکرد بالاتر کار می کنند، بنابراین از زبان های سطح بالاتر پشتیبانی می کنند. میکروکنترلر ARM با IDE های مختلف مانند keiluvision3، keiluvision4، coocox و … برنامه ریزی میشوند. یک میکروکنترلر 8 بیتی از دستورالعمل های 8 بیتی و ARM cortex-M از دستورالعمل های 32 بیتی استفاده می کند.
از آنجایی که امروزه بیشتر با میکروکنترلر 32 بیتی آشنا هستیم، از این رو اجازه دهید یک میکروکنترلر 32 بیتی را به عنوان یک میکروکنترلر LPC-2148 در نظر بگیریم. LPC-2148 میکروکنترلر پرکاربرد از خانواده ARM-7 است. این میکروکنترلر توسط فیلیپس ساخته شده است و با بسیاری از تجهیزات جانبی داخلی همراه شده است که باعث کارآمدتر شدن آن می شود و همچنین برای مبتدیان و توسعه دهندگان سطح بالا برای یادگیری و تحقیق قابل اعتمادتر است.
رجیستر های ARM
ARM از هفت حالت پردازش برای اجرای وظایف استفاده می کند.
- حالت User
- حالت FIQ
- حالت IRQ
- حالت SVC
- حالت UNDEFINED
- حالت ABORT
- حالت Monitor
- حالت User: حالت کاربر یک حالت عادی است که کمترین تعداد رجیستر را دارد. SPSR ندارد و دسترسی محدودی به CPSR دارد.
- FIQ و IRQ: حالت های FIQ و IRQ دو حالت ایجاد وقفه در CPU هستند. FIQ وقفه پردازش و IRQ وقفه استاندارد است. حالت FIQ دارای پنج رجیستر بانکی اضافی برای ارائه انعطاف پذیری بیشتر و عملکرد بالا در هنگام مدیریت وقفه های بحرانی است.
- حالت SVC: حالت Supervisor حالت وقفه نرم افزاری پردازنده برای راه اندازی یا تنظیم مجدد است.
- حالت Undefined: حالت Undefined زمانی که دستورات غیرقانونی اجرا می شوند به دام می افتند. هسته ARM از گذرگاه داده 32 بیتی و جریان داده سریعتر تشکیل شده است.
- حالت THUMB: در حالت THUMB داده های 32 بیتی به 16 بیت تقسیم شده و سرعت پردازش را افزایش می دهد.
- حالت THUMB-2: در حالت THUMB-2 دستورالعمل ها می توانند 16 بیتی یا 32 بیتی باشند و عملکرد میکروکنترلر ARM Cortex –M3 را افزایش می دهند. میکروکنترلر ARM cortex-m3 فقط از دستورالعمل های THUMB-2 استفاده می کند.
ARM-7 یک معماری بارگذاری و ذخیرهسازی است که در آن اگر میخواهید دستورالعملهای پردازش داده را انجام دهید، ابتدا دادهها باید از یک حافظه ذخیرهسازی به مجموعهای از رجیستر های مرکزی منتقل شوند، دستورالعمل پردازش داده باید اجرا شود و سپس داده ها دوباره در حافظه ذخیره می شوند.
مجموعه مرکزی رجیسترها بانکی متشکل از 16 رجیستر از R0 تا R15 است. هر یک از این رجیسترها دارای پهنای 32 بیتی هستند در حالی که R0 – R12 رجیستر های کاربر هستند و R13 – R15 دارای عملکردهای خاصی هستند. این سه رجیستر نهایی در زیر لیست شدند:
- R13: Stack Pointer (SP)
- R14: Linked Register (LR)
- R15: Program Counter (PC)
- STACK POINTER (SP-R13): اشاره گر stack یک ثبات به نام Stack در داخل پردازنده است که آدرس دستور بعدی را که قرار است اجرا شود ذخیره می کند.
- LINKED REGISTER (LR-R14): رجیستر R14 پیوندی است که اطلاعات بازگشتی را برای زیر روال ها، فراخوانی های تابع و استثناها ذخیره می کند. هنگام تنظیم مجدد، پردازنده مقدار LR را روی 0xFFFFFFFF تنظیم می کند.
- Program Counter (PC-R15): رجیستر R15 شمارنده برنامه در ARM-7 است که حاوی آدرس فعلی دستورالعملی است که در حال اجرا است.
نکته: STACK یک بافر موقت ویژه است که داده ها را از بالا به پایین ذخیره می کند.
دو رجیستر مهم:
- رجیستر وضعیت فعلی برنامه (CPSR)
- رجیستر وضعیت برنامه ذخیره شده (SPSR)
رجیستر های رزرو شده برای توابع خاص استفاده می شوند. SPSR و CPSR حاوی بیت های کنترل وضعیت هستند که برای ذخیره داده های موقت استفاده می شوند. رجیستر SPSR و CPSR دارای ویژگی هایی هستند که حالت های عملیاتی تعریف شده، فلگ های فعال یا غیرفعال وقفه و فلگ وضعیت ALU را دارند. هسته ARM در دو حالت 32 بیتی یا حالت THUMBS کار می کند.