میکروکنترلرهای ARM

همه آنچه باید درباره میکروکنترلرهای ARM بدانیم

نکات برگزیده مقاله

  • آشنایی اولیه با میکروکنتر ARM
  • کاربردهای میکروکنترلر ARM
  • مقایسه انواع ریز پردازنده های ARM
  • مزایای ریزپردازنده ARM نسبت به دیگر ریزپردازنده ها
  • ریزپردازنده های موجود در بازار ایران
  • برنامه نویسی ریز پردازنده ARM

ARM گونه ای از انواع ریزپردازنده ها است که مطابق طراحی RISC CPU  کار کرده و شرکت ایتالیایی ARM Holding آن را طراحی نموده است. معماری این گونه از میکروکنترلرها به نحوی است که دستورالعمل های ۳۲ بیتی را پردازش می نماید و روز به روز در حال گسترش و پیشرفت می باشد.

ARM مخفف Advanced RISC Machine  است. معماری این میکروکنترلر براساس طراحی RISC  بوده و بنابراین هسته اصلی CPU نیازمند ۳۵ هزار ترانزیستور است.  و همان طور که می دانیم پردازنده های عادی موجود در بازار *۸۶ که براساس این معماری RISC طراحی شده اند، حداقل نیازمند میلیون ها ترانزیستور می باشند. مهم ترین علت استفاده از ریزپردازنده های ARM این است که مصرف انرژی بسیار پایینی دارند و همین امر باعث استفاده گسترده آن ها در ابزارهای قابل حملی مثل تلفن های همراه هوشمند یا انواع مختلفی از تبلت ها و رایانه های نوت بوک شده اsj.

شرکت ARM Holding ، انحصاراً ریزپردازنده ها را تولید نمی کند ولی گواهی استفاده از معماری این ریزپردازنده را به دیگر کمپانی های نیمه هادی می فروشد. سایر کمپانی ها نیز به راحتی قادر هستند تا تراشه های خود را مبنی بر معماری ARM تولید نمایند. از جمله سایر کمپانی هایی که از فناوری طراحی ARM استفاده می کنند می توان به اپل (استفاده در تراشه های Ax)، سامسونگ ( استفاده در پردازنده های Exynos)‌ و انویدیا (‌استفاده در تگرا )‌و کوالکام (‌استفاده در پردازنده های Snpdragon)‌اشاره کرد.

در سال ۲۰۱۱ ، بازار ARM رونق فوق العاده ای گرفت و ۹/۷ میلیارد دیوایس مبتنی بر معماری ARM وارد بازار شدند. برخلاف انتظار عموم که تصور می کنند این ریزپردازنده تنها در تلفن های همراه هوشمند و تبلت ها به کار گرفته می شوند؛ جالب است بدانید که بیش از ۹۵ درصد از تلفن های همراه هوشمند دنیا، ۹۰ درصد از هارد دیسک ها و حدود ۴۰ درصد از تلویزیون های دیجیتال و دستگاه های ست تاپ باکس و ۱۵ درصد از میکروکنترلرها و ۲۰ درصد از کامپیوترها مبتنی بر معماری ریزپردازنده ARM کار می کنند. همانطور که برآورد گردید، این آمار در سال ۲۰۱۷ به صورت چشم گیری افزایش داشت و به حدود چهار برابر مقادیر سال ۲۰۱۱ رسید. چون بازار تلفن های هوشمند و تبلت ها در سال ۲۰۱۷ با پیشرفت فوق العاده ای رو به رو شدند.

تا سال ۲۰۱۱، معماری ARM تنها بر روی پلت فرم ۳۲ بیتی با عرض حافظه ۱ بایت کار می کرد. ولی با معرفی ARMv8 این معماری پشتیبانی از دستورالعمل های ۶۴ بیتی را در دستور کار خود قرار داد. ولی هنوز در سیستم ها و روی تراشه ها استفاده نشده بود. در سال ۲۰۱۲ مایکروسافت نیز نسخه ویندوز سازگار با معماری ARM را به همراه تبلت سرفیکس RT  معرفی کرد. AMD نیز در گزارش های خود اعلام کرد که برنامه ای دارد تا در سال ۲۰۱۴ سرورهای مبتنی بر معماری ۶۴ بیتی ARM خود را وارد بازار کند.

ARM گواهی استفاده از معماری خود را به شرکت های دیگر نیز داد. این کمپانی ها در حال حاضر گواهی استفاده از ARM را دارند. از جمله این شرکت ها می توان به AMD ، آلکاتل، اپل، فوجیتسو، هوآوی، اینتل، ال جی، مایکروسافت، نینتندو، انویدیا، پاناسونیک، کوالکام، سامسونگ، شارپ، سونی اریکسون، توشیبا و یاماها اشاره نمود.

کاربرد ARM

برای ساخت CPUهای ۳۲ بیتی و ۶۴ بیتی چند هسته ای از ARM بهره برده می شود. معماری RISC دستور العمل های زیادی ندارد و سرعت اجرای دستورالعمل ها در چنین معماری بسیار بیشتر از معماری های دیگر است و توان مصرفی بسیار کمتری نیز نسبت به معماری های دیگر دارد.

در حال حاضر، از جمله مزایای ریزپردازنده های ARM می توان به کاربردهای گسترده آن ها در دستگاه های الکترونیکی مثل تلفن های همراه،‌ تبلت ها، پلیرها، ساعت های هوشمند و … اشاره نمود. ریزپردازنده های ARM به دلیل داشتن تعداد دستورالعمل کمتر، در هنگام ساخت نیاز به تعداد کمتری ترانزیستور دارند و به همین دلیل ساخت IC های پردازنده با اندازه کوچک تر و در حد تراشه ها، امکان پذیر می باشد.

طراحی ساده ARM باعث می شود تا پردازش های چند هسته ای بهینه تری طراحی شود و کدنویسی این پردازنده ها نیز به مراتب ساده تر باشد. پردازنده های ARM در برخی دستورالعمل های مشترک، پایداری بیشتری نسبت به پردازنده های اینتل دارند.

در سال های اخیر، از ریزپردازنده های ARM در ساخت رایانه های قابل حمل نیز بهره گرفته شده و بیش از ۲۰ درصد از نوت بوک ها با این ریزپردازنده ها کار می کنند.

مقایسه ریز پردازنده های ARM

همان طور که می دانیم سیستم ها، روز به روز توسعه می یابند و بنابراین ریزپردازنده های ۸ بیتی و ۱۶ بیتی به هیچ عنوان پاسخ گوی نیازهای این سیستم های پیشرفته نیستند. پس نیاز به طراحی ریزپردازنده های ۳۲ بیتی روز به روز بیشتر احساس می شود. در این میان ریزپردازنده های ۳۲ بیتی خانواده ARM به علت این که توان کمتری مصرف می کنند و سرعت پردازش زیادی داشته و قیمت آن ها بسیار پایین است، اولین انتخاب به شمار می روند. به همین دلیل، امروزه تعداد زیادی از کمپانی های بزرگ ریزپردازنده، در تولیدات خود از هسته های ریزپردازنده ARM بهره می گیرند. ریزپردازنده های ARM نیازی به استفاده از المان های خارجی ندارند چون در ساختار داخلی خود اجزای متفاوتی مثل واسط های اترنت، USB و CAN در داخل تراشه، پیاده سازی نموده اند و از سوی دیگر معماری ۳۲ بیتی آن ها این امکان را ایجاد می کند که زبان های سطح بالایی مثل C و C++ برای برنامه نویسی این تراشه ها مورد استفاده قرار گیرند.

کتابخانه های زیادی برای کار کردن با این تراشه، طراحی شده اند و می توان با استفاده از سیستم عامل های موجود و این کتابخانه ها، با جزئیات داخلی و رجیسترهای تراشه، تداخلی نداشته باشیم و به راحتی از تراشه استفاده کنیم. ویندوز CE،‌ لینوکس، سمبیان OS گونه ای از سیستم عامل های RTOS هستند که در سیستم های موجود در بازار‌، قابل خرید می باشند. کتابخانه TCP/IP توسط بسیاری از تولیدکنندگان ریز پردازنده های ARM،‌ به طور رایگان ارائه می شود و می توان این تراشه ها را بدون تداخل کار بر با لایه های پایین شبکه، به شبکه متصل نمود.

معماری ریزپردازنده های ۳۲ بیتی ARM مبتنی بر هسته های M3- کورتکس ، ARM9 و ARM7 می باشد. تراشه های ARM9 سرعت پردازش بیشتری نسبت به ARM7 دارد و معماری آن ها برای استفاده در سیستم عامل های RTOS مثل ویندوز CE و لینوکس،‌ بسیار بهینه عمل می کند. اما بسیاری از ریزپردازنده های ARM9 حافظه کد داخلی ندارند و از واحد مدیریت حافظه MMU برای ارتباط با حافظه های خارجی مثل SDram و NAND Flash بهره می گیرند. اما ریزپردازنده های ARM7، برنامه کاربر را در حافظه فلش داخلی تراشه ذخیره کرده و پس از آن اجرا می نماید. مصرف ریزپردازنده های ARM9 معمولا بیشتر از انواع ARM7 است.

مزایای ریزپردازنده ARM نسبت به دیگر ریزپردازنده ها

  • بیشتر هسته های ARM7 تا فرکانس ۶۰ مگاهرتز قادر به کار هستند و سرعت پردازش بسیار بالایی دارند. هسته های Cortex-M3 نیز تا فرکانس ۱۳۳ مگاهرتز کار می کنند.
  • توان مصرفی ریزپردازنده های ARM بسیار پایین تر از ریزپردازنده های دیگر است و به ازای هر مگاهرتز توانی از ۲/۰ میلی وات تا یک میلی وات مصرف می کنند.
  • سخت افزارهای جانبی متنوعی دارند مثل SDRam ,Ethernet ,CAN ,UART ,SPI ,USB ,DAC ,ADC, …
  • حافظه داخلی زیاد

ریزپردازنده های موجود در ایران

ریزپردازنده های معمول در بازار ایران،‌ از سه شرکت STM ,Atmel ,NXP هستند و STM تنوع بسیار گسترده ای دارد. بعد از آن شرکت NXP یا فلیپس سری های LPC13xx ,LPC17xx ,LPC23xx ,LPC21xx در بازار وجود دارند و شرکت ATMEL نیز با نام تجاری AT91SAM موجود می باشند.

برنامه نویسی ریز پردازنده ARM

برنامه نویسی این پردازنده با استفاده از زبان های سطح بالایی مثل C و ++C ، بیسیک و اسمبلی است.

برای زبان های C مثل C و یا ++C چندین کامپایلر ارائه شده که از جمله مهم ترین این کامپایلر ها می توان به کامپایلر Keil uvision و AR اشاره نمود که در این کامپایلرها زبان های اسمبلی و C و ++C نیز می توانند برنامه نویسی شوند.

در خصوص زبان بیسیک، کامپایلر بسکام ARM  موجود است ولی کرک مناسبی برای آن انجام نگرفته و بنابراین به صورت رایگان در دسترس همه قرار ندارد.

حال به توضیحات بیشتری در مورد زبان برنامه نویسی ریزپردازنده های ARM می پردازیم.

امکان توسعه برنامه ها و نرم افزار های موجود با زبان های برنامه نویسی مختلف روی بردهای جاسازی شده (Embedded) و مبتنی بر ARM وجود دارد. نمونه ای از پرکاربردترین زبان های برنامه نویسی عبارتند از زبان پایتون، جاوا،‌ ++C و … که هرکدام نقاط قوت و ضعف و خصوصیات منحصر به خود را دارند. تصمیم گیری در مورد این که از چه زبان برنامه نویسی برای توسعه نرم افزار خود استفاده کنید، بستگی به عوامل زیر دارد:

  • نوع نرم افزار
  • بازدهی کار
  • کتابخانه های موجود و آماده در زبان برنامه نویسی
  • سرعت بهبود برنامه
  • میزان مهارت برنامه نویسان
  • امکان پشتیبانی در آینده و …

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

در این جا به بیان چند مثال ساده بیان می پردازیم:

فرض کنید که هدف، کنترل ابزار و ارتباط با دستگاه های جانبی مثل پروتکل های ارتباطی استاندارد است. Ethernet ,RS232 ,SPI ,GPIO مثال های این چنینی می باشند.

پروتکل های ذکر شده، خصوصیات متفاوتی دارند. مثلاً، همه زبان های برنامه نویسی موجود در دنیا چه زبان های سطح بالا چه زبان های سطح پایین، برای ارتباط از Ethernet  و RS232 نیاز به کتابخانه و توابع موجود دارند. اما در صورت نیاز به ارسال و دریافت اطلاعات با نرخ بالا در شبکه، نیاز به سرعت و قدرت ریزپردازنده بالایی داریم و بنابراین بهتر است از زبان برنامه نویسی مثل C و ++C استفاده کنیم. در زبان برنامه نویسی پایتون، برای ارتباط با ورودی و خروجی هایی مثل SPI یا GPIO می توانیم از کتابخانه ها و توابع زبان C و ++C استفاده کنیم. به همین ترتیب تنها با کامپایل دوباره کتابخانه در سیستم، می توانید به درگاه ها دسترسی داشته باشید.

در بسیاری از زبان های برنامه نویسی قوی مثل جاوا و پایتون، می توانیم از کتابخانه های C نیز استفاده کنیم . فقط باید در نظر بگیریم که آیا نیاز است از یک یا چند کتابخانه در سیستم استفاده کنیم یا این که زبان برنامه نویسی به دلیل راحتی کار، اصرار به استفاده از کتابخانه ها دارد؟!

برخی مواقع نیاز است تا اطلاعات را با الگوریتم های ریاضیاتی پردازش کنیم. در چنین شرایطی اگر حجم پردازش داده زیاد باشد نیاز است که الگوریتم های محاسباتی در زبان C و ++C  پیاده سازی شود. حالا می توانیم تصمیم بگیریم که این بخش از کدها به صورت کتابخانه ای مجزا استفاده می شود یا در صورت نیاز، همه پروژه با استفاده از زبان C و ++C پیاده گردند.

در این قسمت به برخی از ویژگی های مهم زبان برنامه نویسی اشاره می کنیم.

زبان برنامه نویسی C و ++C

  • امکان استفاده در تمامی برنامه ها
  • بهینه سازی فایل اجرایی خروجی در مقایسه با سایر زبان های برنامه نویسی
  • نیاز به مدیریت حافظه توسط برنامه ساز و بدون نیاز به پشتیبانی Garbage Collector
  • بهترین زبان برای پردازش و کار با درگاه های ارتباطی متفاوت ( زبان های برنامه نویسی سطح پایین)
  • بدون پشتیبانی از Exeption Handling در محیط پردازشی لینوکس

جاوا

  • پشتیبانی کامل از شی گرایی
  • انتقال در سکوهای مختلف با کمترین تغییرات
  • پشتیبانی از Exception Handling

پایتون

  • بهره گیری از Syntax بسیار آسان
  • یادگیری ساده
  • قابلیت برنامه نویسی سریع و توسعه سریع کدها
  • امکان انتقال به سکوهای مختلف با کمترین تغییرات
  • پشتیبانی از شی گرایی
  • قابلیت استفاده اسان از کتابخانه های C و ++C
  • پشتیبانی از Exception Handling
  • پشتیبانی قوی محاسباتی ریاضیاتی و آماری (‌با در دست داشتن کتابخانه های قوی)

بازدهی در انجام پردازش های ریاضیاتی در صورتی که از هر زبان بدون استفاده از کتابخانه های C و ++C استفاده شود،‌ نتیجه به ترتیب زیر است:

  •  C و ++C
  • جاوا
  • پایتون

در زبان برنامه نویسی پایتون، امکان استفاده از کدهای C و ++C  و کامپایلرها و لینک ها وجود دارد ولی اگر تنها از کدهای پایتون استفاده کنیم چندین برابر از کدهای نوشته شده با جاوا و C و ++C کندتر است.

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

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

  • کامپایلر

نرم افزار کامپایلر وظیفه دارد تا زبان برنامه نویسی ما را تبدیل به رشته های صفر و یک کند. البته می توانیم مستقیما با صفر و یک نیز برنامه را بنویسیم ولی این کار، کاری به مراتب سخت و زمان بر است. پس ترحیح برنامه نویسان این است که از زبان های سطح بالایی مثل C برای برنامه نویسی استفاده کنند و بعد از آن با کامپایلر، برنامه را به زبان ماشین یا صفر و یک تبدیل می کنیم تا ماشین برنامه ما را بفهمد. پس از آن، کامپایلر یک فایل به ما می دهد و ما می توانیم این فایل را روی IC پیاده سازی کنیم. یکی از بهترین کامپایلر ها برای ریز پردازنده های ARM، نرم افزار Keil است.

  • پروگرامر

پروگرامر ابزاری است که به ما کمک می کند تا برنامه ای را که با کامپیوتر نوشته ایم روی IC بریزیم. اگر پروگرامر نداشتیم باید از نرم افزارهای شبیه سازی مثل پروتئوس استفاده کنیم.

  • نرم افزارهای شبیه ساز

در میان تمام نرم افزارهای شبیه سازی که وجود دارند، نرم افزار پروتئوس کارآمدترین و معروف ترین نرم افزارها می باشند.

زمانی که ریزپردازنده های سری ARM وارد بازار شدند، کم کم ریزپردازنده های AVR از رقابت خارج شدند. در مقام مقایسه میکروکنترلرهای ARM و AVR، می توان به تفاوت قیمت این دو دسته ریزپردازنده دقت کنیم. مثلا ریز پردازنده ARM تقریبا یک پنجم AVR قیمت دارد. و در کنار کم هزینه بودن ،‌مزایای زیادی نیز نسبت به AVR دارد.

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

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

به طور مثال برد ARDUINO مدل UNO مدلی است که برای شروع کار خیلی مناسب است. این برد نیازی به منبع تغذیه مستقل و سوئیچینگ ندارد و به صورت حاضر و آماده قابل استفاده است. این بردها با استفاده از کابل به لپ تاپ یا رایانه های شخصی شما متصل می شوند و می توان به راحتی روی آن ها برنامه نویسی انجام داد. نکته بسیار جالب توجه این که به راحتی می توانید با این بردها هر پروژه ای را انجام دهید و مثال های زیادی در اینترنت موجود هستند که می توانید برای راه اندازی انواع پروژه ها از این بردها استفاده نمایید.

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

 

به این مقاله امتیاز بدهید:

امتیاز کاربران: اولین نفر باشید!
برچسب ها
نمایش بیشتر

محسن چهرازی

من محسن چهرازی، دانش آموخته رشته مهندسی برق- الکترونیک هستم. در زمینه های کنترل تابلو فرمان آسانسور، برنامه نویسی میکروکنترلرها (زبان C) و MATLAB، کدنویسی VHDL برای FPGA ها و تا حدودی نانو الکترونیک تخصص دارم. این وبسایت رو درست کردم تا با هم یاد بگیریم تحلیلی به مسائل الکترونیک نگاه کنیم و کمی از بخاطر سپردن دریای فرمول ها فاصله بگیریم.

دیدگاه خود را بنویسید. (این مقاله بر اساس نظرات شما به روز رسانی خواهد شد.)

avatar
  مشترک شدن  
اطلاع رسانی کن
دکمه بازگشت به بالا
بستن
بستن