میکروکنترلر ARM: هر آنچه باید بدانید
ARM چیست؟ چه چیزی معماری ARM را منحصربفرد میکند؟
میکروکنترلر ARM پردازندهایست که در تلفنهای هوشمند، تبلتها، و حتی برخی لپتاپها بکاربرده میشود. این فنآوری در اوایل سال 2010 کمک شایانی به رشد و توسعهی سریع رایانههای قابل حمل داشته و تاثیر بسزایی در ساخت دستگاههای الکترونیکی دارد.
.
فهرست مطالب
میکروکنترلر ARM چیست؟
میکروکنترلر ARM از خانواده CPUهای مبتنی بر معماری RISC (Reduced Instruction Set Computer) بوده که براساس معماری Advanced RISC Machines (ARM) (به معنی ماشینهای RISC پیشرفته توسعهیافته) میباشد. RISC یک رایانه کم دستور و یک معماری بهینه با حداقل دستورالعمل است.
میکروکنترلر ARM، پردازندههای چند هستهای 64RISC یا 32 بیتی میسازد.
هلدینگ ARM هیچ پردازندهای را تولید نمیکند. این شرکت این فنآوری را ایجاد کرده، دستورالعملهای استاندارد را توسعه داده، و سپس به دیگر تولیدکنندهها این امکان را میدهد تا از این طراحیها استفاده کنند. از اینرو پردازندههای ARM گوناگونی وجود دارند که هرکدام به روش متفاوتی کار میکنند.
علاوه بر پردازندهها و هستههای IP ،ARM ابزارهای توسعه نرم افزار جامعی همانند Keil و DS-5 را برای توسعه سیستمهای کامل و سیستم روی تراشه مبتنی بر میکروکنترلرهای ARM ارایه میدهد.
مروری بر ویژگیهای میکروکنترلر ARM
همانطورکه بیان شد پردازندههای ARM مبتنی بر معماری RISC هستند. اما براساس نیازمندیهای سیستمهای تعبیهشده، اصلاحاتی در معماریRISC صورت میگیرد.
معماری میکروکنترلر ARM از نوع انتقال داده (load and store) است. در این نوع معماری پردازش داده بجای اینکه به طور مستقیم در حافظه انجام شود تنها بر روی محتوای رجیسترها انجام میگیرد، از این رو دستورات پردازش داده بر روی رجیسترها متفاوت میباشند.
مجموعه دستورات ARM یکسان و دارای طول ثابت هستند. پردازندههای ARM 32 بیتی دو مجموعه دستورالعمل دارند: مجموعه دستورات کلی 32 بیتی ARM و مجموعه دستورات 16 بیت Thumb.
میکروکنترلر ARM از پاپلاینهای چند مرحلهای برای سرعت بخشیدن به انجام دستورات پشتیبانی میکند. یک پاپلاین سه مرحلهای ساده، شامل مراحل فچ، دیکد و اجرا میباشد.
پردازنده ARM چگونه کار میکند؟
به دلیل کاهش پیچیدگی واحدهای RISC برروی یک تراشه به ترانزیستورهای کمتری نیاز داریم. بطورکلی ترانزیستور بیشتر به معنای توان مصرفی بیشتر و ساختار پیچیدهتر میباشد که در نتیجه باعث افزایش قیمت میشود.
از اینرو، میکروکنترلرهای ARM معمولاً ارزان قیمتتر از پردازندههای دسکتاپ سنتی هستند.
فچ، دیکد و اجرای دستورالعملها فرآیند رایج CPUها میباشند. هدف از طراحی میکروکنترلر ARM ارائه بالاترین میزان کارایی است، و فقط دستورالعملهایی را میپذیرند که در یک سیکل حافظه انجام میشوند.
امّا این دستورالعملها پیچیدهتر و طولانیتر از دستگاههای RISC سنتی هستند.
در مقایسه با دیگر میکروکنترلرها، میکروکنترلر ARM به دلیل سرعت بالا، قیمت پایین، توان مصرفی کم، و تولید حرارت کمتر برای دستگاههای مبتنی بر باتری، سبک، قابل حمل، همانند تلفنهای هوشمند، لپتاپها و تبلتها، همچنین سیستمهای تعبیهشده مناسب است. با این وجود، میکروکنترلرهای ARM برای سرورها و دسکتاپها به ویژه اَبَر کامپیوترها نیز بکاربرده میشوند.
تفاوت پردازندههای ARM و x86
این دو خانواده از پردازندهها تفاوتهای بسیاری دارند، که میتوان به توانایی پردازش، مصرف توان، نرمافزار، و کاربردها اشاره کرد.
میکروکنترلر ARM مبتنی بر معماری RISC است در حالیکه اینتل (x86) مبتنی بر CISC Complex) Instruction Set Computing) به معنای محاسبه مجموعه دستورات پیچیده، میباشد. دستورات میکروکنترلر ARM بسیار کمتر از دستورات CISC میباشند که بسیاری از این دستورها با چندین عملیات اجرا میشوند. تعداد دستورات بیشتر موجب عملکرد بهتر میشود، اما برای دیکد کردن این دستورات پیچیده توان بیشتری مصرف میشود.
خانوادههای میکروکنترلر ARM
میکروکنترلر ARM دارای چندین پردازنده است که براساس هسته پردازندهای که با آن پیادهسازی میشود در تعدادی خانواده دستهبندی میشود. معماری پردازندههای ARM در هر خانواده نیز توسعه مییابد. برخی از خانوادههای معروف پردازنده ARM عبارتند از: ARM7, ARM9, ARM10 و ARM11.
جدول زیر برخی از خانوادههای متداول ARM را با معماریهای آنها نشان میدهد.
خانواده ARM | معماری |
ARM7TDMI | ARMv4T |
ARM9E | ARMv5TE |
ARM11 | ARMv6 |
Cortex-M | ARMv7-M |
Cortex-R | ARMv7R |
Cortex-A (32-bit) | ARMv7-A |
Cortex-A (64-bit) | ARMv8-A |
حروف یا کلمات پس از “ARM” ویژگیهای یک پردازنده را مشخص میکنند.
- x- خانواده یا سریها
- y- مدیریت حافظه/ واحد حفاظت
- z- حافظه پنهانی
- T- دیکدر Thumb 16 بیتی
- D- دیباگر JTAG
- M- ضربکننده سریع
- I- ماکروسل شبیهساز (ICE) تعبیهشده در مدار
- E- دستورالعملهای پیشرفته برای DSP (TDMI فرض میشود)
- J- Jazelle (برای اجرای سریع JAVA)
- F- واحد ممیز شناور برداری
- S- نسخه قابل سنتز (Synthesizable)
تفسیر ویژگیها
T- مجموعه دستورالعمل Thumb
پردازندههای ARM هر دو مجموعه دستور ARM 32 بیتی و مجموعه دستور Thumb 16 بیتی را پشتیبانی میکنند. دستورات اصلی ARM 32 بیتی شامل کدهای عملیاتی 32 بیتی هستند که یک الگوی باینری 4 بایتی است. دستورات Thumb 16 بیتی شامل کدهای عملیاتی 16 بیتی یا الگوی باینری 2 بایتی برای بهبود تراکم کد هستند.
D- دیباگر JTAG
JTAG یک پروتکل سریال است که توسط میکروکنترلر ARM برای انتقال اطلاعات دیباگشده بین پردازنده و تجهیزات بکاربرده میشود.
M- ضربکننده سریع
پردازندههای ARM قدیمیتر از یک واحد ضربکننده ساده و کوچک استفاده میکردند. این واحد ضربکننده به سیکل کلاک بیشتری برای تکمیل یک عمل ضرب نیاز دارد. با معرفی واحد ضربکننده سریع، سیکلهای کلاک موردنیاز برای عمل ضرب بطورقابل توجهی کاهش مییابند و از اینرو پردازندههای ARM مدرن یک حاصلضرب 32 بیتی را در یک سیکل محاسبه میکنند.
I- ماکروسل ICE تعبیهشده
پردازندههای ARM دارای سختافزار دیباگ بر روی تراشه هستند که امکان تنظیم breakpoint و watchpoint را برای پردازنده فراهم میسازد.
E- دستورالعملهای پیشرفته
میکروکنترلر ARM در این حالت از مجموعه دستور DSP توسعهیافته برای کاربردهای DSP با کارآیی بالا پشتیبانی میکند. با این دستورات DSP توسعهیافته، عملکرد DSP پردازندههای ARM بدون فرکانسهای کلاک بالا افزایش مییابد.
J- Jazelle
پردازندههای ARM با تکنولوژی Jazelle برای اجرای سریع کدهای Java بکاربرده میشوند. DBX Jazelle یاExecution Direct Bytecode برای اجرای Java با عملکرد بالا بدون اثرگذاری بر باتری یا حافظه در تلفنهای همراه و دیگر دستگاههای الکتریکی بکاربرده میشود.
F- واحد ممیز شناور برداری
معماری ممیز شناور در میکروکنترلر ARM اجرای عملیاتهای حسابی ممیز شناور را امکانپذیر میسازد. گستره دینامیکی و دقت ارایه شده توسط معماری ممیز شناور در پردازندههای ARM در کاربردهای Real time در حوزههای صنعتی و خودروسازی مورد استفاده قرار میگیرند.
S- قابل سنتز (Synthesizable)
هسته میکروکنترلر ARM به عنوان سورس کد در دسترس است. این کد در فرمتی کامپایل میشود که توسط EDA Tools به آسانی قابل درک باشد. با استفاده از کد سورس، اصلاح معماری پردازنده ARM امکانپذیر است.
انواع پردازندههای ARM
انواع پردازندههای ARM عبارتند از: پردازندههای کلاسیک، پردازندههای تعبیهشده و پردازندههای کاربردی.
پردازندههای کلاسیک ARM خانوادههای ARM7،ARM9، و ARM9 را دربرمیگیرند و ARM7TMDI هنوز پرکاربردترین پردازنده 32 بیتی است. پردازندههای مبتنی بر ARM7 هنوز در بسیاری از دستگاههای 32 بیتی ساده و کوچک بکاربرده میشوند.
اگرچه ARM7 یا دیگر پردازندههای کلاسیک برای سیستمهای تعبیهشده مقیاس کوچک بکاربرده میشوند، سیستمهای تعبیهشده جدیدتر با استفاده از پردازندههای تعبیهشده ARM پیشرفته یا پردازندههای Cortex-M یا پردازندههای Cortex-R ساخته میشوند.
پردازندههای Cortex-M ویژگیهای میکروکنترلری دارند درحالیکه پردازندههای Cortex-R Real time هستند.
پردازندههای ARM Cortex-M، کم مصرف و برای پیادهسازی ساده هستند و عمدتاً برای کاربردهای تعبیهشدهی پیشرفته توسعه یافتهاند. پردازندههای ARM Cortex-M به چندین هسته پردازنده مانند پردازندههای Cortex-M0+, Cortex-M3, Cortex-M4 Cortex-M0 و Cortex-M7 تقسیم میشوند.
پردازندههای ARM سری Cortex-R راهحلی را برای سیستمهای تعبیهشده real time ارائه میدهند و قابلیت اطمینان بالا، تحمل خطای بالا و پاسخهای real time دارند. پردازندههای سری Cortex-R در سیستمهایی که کارآیی بالا و محدودیت زمانی اهمیت دارد بکاربرده میشوند.
خانواده Cortex-R شامل هستههای پردازنده مانند Cortex-R4، Cortex-R5، Cortex-R7 و Cortex-R8 میشود.
پردازندههای ARM سری Cortex-A بالاترین کارآیی را در میان پردازندههای ARM دارند. این پردازندهها در دستگاههای متحرک قدرتمند، لوازم خانگی، سیستمهای اتوماسیون، اتومبیلها و دیگر سیستمهای تعبیهشده بکاربرده میشوند.
پردازندههای Cortex-A به سه دسته پردازندههای با High Performance، High Efficiency و Ultra-High Efficiency تقسیم میشوند. هر کدام از این دستهها دارای چندین نوع هستهی پردازنده میباشند.
STM32 میکروکنترلر
خانواده STM32 میکروکنترلرهای ۳۲ بیتی شرکت ST هستند. این محصول با ترکیب عملکرد بسیار قوی، ولتاژ کاری پایین، پردازش سیگنال دیجیتال و سهولت در توسعه، محبوبیت بسیار زیادی را را کسب کرده اند.
سری STM32F1 نخستین گروه میکروکنترلر STM32 مبتنی بر هسته ARM Cortex-M3 است. سری F1 با افزایش سرعت پردازنده ، اندازه حافظه داخلی ، انواع لوازم جانبی با گذشت زمان تکامل یافته است. هرکدام زیر مجموعه های خانواده STM32 خود شامل زیر مجوعه های بساری میشوند. از محبوب ترین زیر مجموعه این خانواده می توان به پردازنده های سری STM32F103C8T6 اشاره کرد.
از جمله ویژگی های این پردازشگر:
- حداکثر فرکانس کاری ۷۲ مگاهرتز
- ۶۴ کیلوبایت حافظه Flash و ۲۰ کیلوبایت حافطه SRAM
- ۷ کانال DMA Controller
- پشتیبانی از: Timer, ADC, SPI, I2C و USART
- دارای ۳۷ پورت GPIO
- و …
سلام خسته باشید.. آموزش بسیار عالی است که نمونه ی آن در سایت های زبان اصلی حتی وجود ندارد … فقط هیچ کدام یک از کد ها قابل مشاهده نیستند .. ممنون میشیم مشکل را حل کنید