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

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

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

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

ARM گونه اي از انواع ريزپردازنده ها است كه مطابق طراحي RISC CPU  كار كرده و شركت ايتاليايي ARM Holding آن را طراحي نموده است. معماري اين گونه از ميكروكنترلرها به نحوي است كه دستورالعمل هاي 32 بيتي را پردازش مي نمايد و روز به روز در حال گسترش و پيشرفت مي باشد.

ARM مخفف Advanced RISC Machine  است. معماري اين ميكروكنترلر براساس طراحي RISC  بوده و بنابراين هسته اصلي CPU نيازمند 35 هزار ترانزيستور است.  و همان طور كه مي دانيم پردازنده هاي عادي موجود در بازار *86 كه براساس اين معماري RISC طراحي شده اند، حداقل نيازمند ميليون ها ترانزيستور مي باشند. مهم ترين علت استفاده از ريزپردازنده هاي ARM اين است كه مصرف انرژي بسيار پاييني دارند و همين امر باعث استفاده گسترده آن ها در ابزارهاي قابل حملي مثل تلفن هاي همراه هوشمند يا انواع مختلفي از تبلت ها و رايانه هاي نوت بوك شده اsj.

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

در سال 2011 ، بازار ARM رونق فوق العاده اي گرفت و 9/7 ميليارد دیوایس مبتني بر معماري ARM وارد بازار شدند. برخلاف انتظار عموم كه تصور مي كنند اين ريزپردازنده تنها در تلفن هاي همراه هوشمند و تبلت ها به كار گرفته مي شوند؛ جالب است بدانيد كه بيش از 95 درصد از تلفن هاي همراه هوشمند دنيا، 90 درصد از هارد ديسك ها و حدود 40 درصد از تلويزيون هاي ديجيتال و دستگاه هاي ست تاپ باكس و 15 درصد از ميكروكنترلرها و 20 درصد از كامپيوترها مبتني بر معماري ريزپردازنده ARM كار مي كنند. همانطور كه برآورد گرديد، اين آمار در سال 2017 به صورت چشم گيري افزايش داشت و به حدود چهار برابر مقادير سال 2011 رسيد. چون بازار تلفن هاي هوشمند و تبلت ها در سال 2017 با پيشرفت فوق العاده اي رو به رو شدند.

تا سال 2011، معماري ARM تنها بر روي پلت فرم 32 بيتي با عرض حافظه 1 بايت كار مي كرد. ولي با معرفي ARMv8 اين معماري پشتيباني از دستورالعمل هاي 64 بيتي را در دستور كار خود قرار داد. ولي هنوز در سيستم ها و روي تراشه ها استفاده نشده بود. در سال 2012 مايكروسافت نيز نسخه ويندوز سازگار با معماري ARM را به همراه تبلت سرفيكس RT  معرفي كرد. AMD نيز در گزارش هاي خود اعلام كرد كه برنامه اي دارد تا در سال 2014 سرورهاي مبتني بر معماري 64 بيتي ARM خود را وارد بازار كند.

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

كاربرد ARM

براي ساخت CPUهاي 32 بيتي و 64 بيتي چند هسته اي از ARM بهره برده مي شود. معماري RISC دستور العمل هاي زيادي ندارد و سرعت اجراي دستورالعمل ها در چنين معماري بسيار بيشتر از معماري هاي ديگر است و توان مصرفي بسيار كمتري نيز نسبت به معماري هاي ديگر دارد.

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

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

در سال هاي اخير، از ريزپردازنده هاي ARM در ساخت رايانه هاي قابل حمل نيز بهره گرفته شده و بيش از 20 درصد از نوت بوك ها با اين ريزپردازنده ها كار مي كنند.

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

همان طور كه مي دانيم سيستم ها، روز به روز توسعه مي يابند و بنابراين ريزپردازنده هاي 8 بيتي و 16 بيتي به هيچ عنوان پاسخ گوي نيازهاي اين سيستم هاي پيشرفته نيستند. پس نياز به طراحي ريزپردازنده هاي 32 بيتي روز به روز بيشتر احساس مي شود. در اين ميان ريزپردازنده هاي 32 بيتي خانواده ARM به علت اين كه توان كمتري مصرف مي كنند و سرعت پردازش زيادي داشته و قيمت آن ها بسيار پايين است، اولين انتخاب به شمار مي روند. به همين دليل، امروزه تعداد زيادي از كمپاني هاي بزرگ ريزپردازنده، در توليدات خود از هسته هاي ريزپردازنده ARM بهره مي گيرند. ريزپردازنده هاي ARM نيازي به استفاده از المان هاي خارجي ندارند چون در ساختار داخلي خود اجزاي متفاوتي مثل واسط هاي اترنت، USB و CAN در داخل تراشه، پياده سازي نموده اند و از سوي ديگر معماري 32 بيتي آن ها اين امكان را ايجاد مي كند كه زبان هاي سطح بالايي مثل C و C++ براي برنامه نويسي اين تراشه ها مورد استفاده قرار گيرند.

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

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

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

  • بيشتر هسته هاي ARM7 تا فركانس 60 مگاهرتز قادر به كار هستند و سرعت پردازش بسيار بالايي دارند. هسته هاي Cortex-M3 نيز تا فركانس 133 مگاهرتز كار مي كنند.
  • توان مصرفي ريزپردازنده هاي ARM بسيار پايين تر از ريزپردازنده هاي ديگر است و به ازاي هر مگاهرتز تواني از 2/0 ميلي وات تا يك ميلي وات مصرف مي كنند.
  • سخت افزارهاي جانبي متنوعي دارند مثل 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 مدلي است كه براي شروع كار خيلي مناسب است. اين برد نيازي به منبع تغذيه مستقل و سوئيچينگ ندارد و به صورت حاضر و آماده قابل استفاده است. اين بردها با استفاده از كابل به لپ تاپ يا رايانه هاي شخصي شما متصل مي شوند و مي توان به راحتي روي آن ها برنامه نويسي انجام داد. نكته بسيار جالب توجه اين كه به راحتي مي توانيد با اين بردها هر پروژه اي را انجام دهيد و مثال هاي زيادي در اينترنت موجود هستند كه مي توانيد براي راه اندازي انواع پروژه ها از اين بردها استفاده نماييد.

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

 

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

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

محسن چهرازی

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

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

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