معماری ARM چیست؟ چه تفاوتی با x86 اینتل دارد؟



باز باید برای درس آزمایشگاه مدار الکتریکی ارائه بدم و چه چیزی بهتر از معماری های ARM

بیاید نگاهی به معماری ARM که در بسیاری از وسایل الکتریکی والکترونیکی تون کاربرد داره آشنا بشید!

چکیده

میکروکنترلر ARM چیست؟ این قطعات پردازنده‌ای هستند، از نوع ۳۲ بیتی و دارای معماری RISC هستند و سرعت نسبتا بالایی هم دارند (کلاک از ۳۰۰ تا ۲۰۰۰ مگاهرتز) و مجهز به برخی امکانات داخلی (adc و dac و تایمر وکانتر و pwm و rtc و i2c و spi و dmaو ...)وحافظه کش هستند. قابلیت‌ها و باس‌های استانداردی که برای این پروسسورها در نظر گرفته شده به همراه سرعت بالا، حافظه کش مناسب، مقایسه گرهای داخلی، تایمرهای ۱۶ بیتی برای پیاده‌سازی RTC و ... ، باعث شده که عملکرد این تراشه‌ها نسبت به انواع دیگر پروسسورهای هم تراز، دارای کیفیت و قدرت بالاتری باشه.

بخش اول مقدمه‌ای بر میکروکنترلر ARM

مقدمه‌ای بر میکروکنترلر ARM ARM نوعی از معماری پردازنده‌های کامپیوتری است که بر طبق طراحی RISC CPU (معماری ریسک در ادامه توضیح مختصری خواهیم آورد) و توسط کمپانی بریتانیایی ARM Holding طراحی شده است. معماری ARM که دستورالعمل‌های ۳۲ بیتی را پردازش می‌کند از دهه ۱۹۸۰ تا به امروز در حال توسعه است.

    • معماری ریسک: یک نوع معماری ساخت ریزپردازنده می‌باشد. در این معماری بجای استفاده از دستورالعمل‌های خاص منظوره، که در سایر معماری‌ها مرسوم است، از یک مجموعه دستورالعمل فوق‌العاده بهینه‌سازی شده استفاده می‌شود. اولین پروژه مبتنی بر معماری ریسک در اواخر دهه ۷۰ و اوایل دهه ۸۰ میلادی توسط شرکت آی‌بی‌ام، دانشگاه استانفورد و دانشگاه برکلی آغاز شد. درآن دوره پروژه میپس (MIPS) از دانشگاه استانفورد و پروژه ریسک (RISC) نسخه‌های ۱ و ۲ از دانشگاه برکلی همگی بر پایهٔ یک فلسفه بنا شده بودند که بعداً به عنوان معماری ریسک شناخته شد. اکثر طراحی‌های مبتنی بر معماری ریسک دارای خواص زیر بودند: زمان اجرای یک چرخه‌ای / استفاده از روش خط لوله‌ای / تعداد زیاد ثبات‌ها.

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

جالب است بدانید که شرکت ARM Holding خود تولیدکننده پردازنده نیست و در عوض گواهی استفاده از معماری ARM را به دیگر تولیدکنندگان نیمه هادی می‌فروشد. کمپانی‌ها نیز به راحتی تراشه‌های خود را براساس معماری ARM تولید می‌کنند. از جمله کمپانی‌هایی که پردازنده خود را براساس معماری ARM طراحی می‌کنند می‌توان به اپل در تراشه‌های Ax، سامسونگ در پردازنده‌های Exynos، انویدیا در تگرا و کوالکام در پردازنده‌های Snpdragon اشاره کرد. در سال ۲۰۱۱ مشتریان ARM توانستند ۷٫۹ میلیارد ابزار مبتنی بر این معماری را وارد بازار کنند. شاید تصور می‌کنید که پردازنده‌های مبتنی بر ARM تنها در تبلت و تلفن‌های هوشمند بکار گرفته می‌شوند، اما جالب است بدانید که در همین سال بیش از ۹۵ درصد تلفن‌های هوشمند دنیا، ۹۰ درصد دیسک‌های سخت (HDD)، حدود ۴۰ درصد تلویزیون‌های دیجیتال و ست‌تاپ‌باکس‌ها، ۱۵ درصد میکروکنترلرها و ۲۰ درصد کامپیوترهای موبایل مجهز به پردازنده‌های مبتنی بر معماری ARM بوده‌اند. بدون شک این آمار در سال ۲۰۱۳ رشد فوق‌العاده چشم گیری را تجربه کرده است، چون بازار تلفن‌های هوشمند و تبلت‌های در سال جاری پیشرفت قابل ملاحظه‌ای داشته‌اند. تا اینجای کار معماری ARM تنها برروی پلتفرم ۳۲ بیتی با عرض حافظه ۱ بایت کار می‌کرد. اما با معرفی ARMv۸ این معماری پشتیبانی از دستورات ۶۴ بیتی را نیز آغاز کرد که البته هنوز در سیستم-روی-یک-چیپ‌ها بکار گرفته نشده است. در سال ۲۰۱۲ مایکروسافت نیز نسخه ویندوز سازگار با معماری ARM را به همراه تبلت سرفیس RT معرفی کرد. AMD نیز اعلام نموده که قصد دارد در سال ۲۰۱۴ سرورهای مبتنی بر معماری ۶۴ بیتی ARM را روانه بازار کند. همانطور که پیش‌تر اشاره کردیم، ARM گواهی استفاده از معماری خود را به شرکت‌های دیگر می‌دهد، کمپانی‌هایی که در حال حاضر گواهی استفاده از ARM را دارند عبارتند از: AMD, آلکاتل، اپل, AppliedMicro, Atmel, Broadcom, Cirrus Logic, CSR plc, Digital Equipment Corporation, Ember, Energy Micro, Freescale, فوجیتسو, Fuzhou Rockchip, هواوی، اینتل توسط شرکت‌های زیر شاخه، ال جی, Marvell Technology Group, Microsemi, مایکروسافت, NEC, نینتندو, Nuvoton, انویدیا, NXP (formerly Philips Semiconductor), Oki, ON Semiconductor, پاناسونیک، کوالکام, Renesas, Research In Motion, سامسونگ، شارپ, Silicon Labs, سونی، اریکسون, STMicroelectronics, Symbios Logic, Texas Instruments, توشیبا، یاماها و ZiiLABS RISC و CISC یا ARM در مقابل x86 RISC که مخفف Reduced instruction Set Computing یا مجموعه دستورات ساده شده است در واقع نوعی از طراحی CPU است که پایه و اساس آن، ساده‌سازی دستورات است که منجر به بازده بالا و سرعت بخشیدن به اجرای دستورات می‌شود. (پردازده‌ای که براساس این طراحی ساخته می‌شود را RISC بخوانید ریسک می‌نامند.) مهمترین و معروفترین معماری که براساس RISC طراحی شده، ARM است. درست نقطه مقابل ریسک، طراحی دیگری با نام CISC وجود دارد که مخفف Complex Instruction Set Computing یا مجموعه دستورات پیچیده است که معماری x۸۶ اینتل براساس آن طراحی شده و پردازنده کامپیوترهای رومیزی و لپ تاپ‌ها و بسیاری از ابزارهای دیگر از آن بهره می‌برند. ایده اصلی RISC اولین بار توسط جان کوکی از IBM و در سال ۱۹۷۴ شکل گرفت، نظریه او به این موضوع اشاره داشت که یک کامپیوتر تنها از ۲۰ درصد از دستورات نیاز دارد و ۸۰ درصد دیگر، دستورات غیرضروری هستند. پردازنده‌های ساخته شده براساس این طراحی از دستورات کمی پشتیبانی می‌کنند به این ترتیب به ترانزیستور کمتری نیز نیاز دارند و ساخت آنها نیز کم هزینه است. با کاهش تعداد ترانزیستورها و اجرای دستورات کمتر، پردازنده در زمان کمتری دستورات را پردازش می‌کند. کمی بعد اصطلاح RISC توسط یک استاد دانشگاه کالیفورنیا به نام دیوید پترسون ایجاد شد. هر دو طراحی RISC و CISC به مراتب در انواع و اقسام ابزارها بکار گرفته می‌شوند، اما مفهوم کلی RISC در واقع سیستمی است که در آن به پردازش دستورات کوچک و به شدت بهینه شده پرداخته می‌شود، درست برخلاف CISC که در آن دستورات پیچیده ارسال می‌شوند. یکی از تفاوت‌های عمده بین RISC و CISC نیز در نحوه دسترسی به حافظه و ذخیره و اجرای اطلاعات برروی آن است. در ریسک دسترسی به حافظه تنها از طریق دستورالعمل‌های خاصلی قابل انجام است و به عنوان مثال نمی‌توان از بخشی از دستور add به حافظه دسترسی داشت. علاوه بر ARM شرکت‌های بسیار دیگری از جمله Intel i860, AMD 29k, ARC و غیره از طراحی RISC برای ساخت پردازنده استفاده می‌کنند، اما به لطف گسترش تلفن و تبلت‌ها، معماری ARM به عنوان برجسته‌ترین معماری مبتنی بر RISC شناخته می‌شود.

CISC در سیسک اوضاع دقیقا برعکس ریسک است و پردازنده قادر به پردازش دستورات پیچیده است به همین دلیل نیاز به تعداد بیشتر ترانزیستور و همچنین طراحی پیچیده‌تر و پردازنده‌های گران‌قیمت‌تر دارد. ایده اصلی پشت این طراحی این است که برنامه نویسان ساده‌تر بتوانند نرم‌افزارهای خود را تولید کنند و دستورات را ساده‌تر به CPU ارجاع دهند. به لطف پشتیبانی اینتل و تولیدکنندگان نرم‌افزار، CISC به شدت محبوب شد و تمام کامپیوترها از پردازنده مبتنی بر این طراحی بهره بردند. برخی تصور می‌کنند که ریسک قادر به اجرای دستورات زیاد نیست اما در حقیقت ریسک به اندازه سیسک می‌تواند دستورات مختلف را اجرا کند اما مهمترین تفاوت این دو در این است که در RISC تمام دستورات با یک فرمت، دقیقا یک فرمت صادر می‌شوند و پردازش تمام دستورات یک زمان مشخص طول می‌کشد، معمولا در ریسک در هر سیکل، پردازنده یک دستور را اجرا می‌کند. اما در CISC مجموعه‌ای از دستورات بصورت فشرده و با آدرس دهی مختلف به یکباره پردازش می‌شوند، مثل اعداد اعشاری یا تقسیم که در طراحی RISC وجود ندارند. از آنجایی که دستورات در RISC ساده‌تر هستند پس سریعتر اجرا می‌شوند و نیاز به ترانزیستور کمتری دارند، ترانزیستور کمتر هم به معنی دمای کمتر، مصرف پایین‌تر و فضای کمتر است که آن را برای ابزارهای موبایل مناسب می‌کند. معماری پردازنده‌های مبتنی بر طراحی RISC طی سال‌های گذشته پیشرفت چشم‌گیری داشته و اجرای دستورات پیچیده را نیز میسر کرده است و تولیدکنندگان نرم‌افزاری نیز به سمت ساخت نرم‌افزارهای مبتنی بر این معماری گرایش پیدا کرده‌اند. لازم است بدانید که کامپیوترهای اولیه مک نیز از پردازنده مبتنی بر RISC بهره می‌بردند. اما در واقع پردازنده‌های CISC بسیار سریعتر و پرقدرت‌تر از RISCها هستند و قادر به پردازش امور سنگین می‌باشند اما در عوض گران‌قیمت‌تر، پرمصرف‌تر بوده و دمای بیشتری نیز تولید می‌کنند. در CISC تمرکز برروی سخت‌افزار است و در RISC برروی نرم‌افزار، در CISC دستورات بصورت پیچیده به پردازنده ارسال می‌شوند ولی در RISC نرم‌افزار دستورات را ساده کرده و به عنوان مثال یک عملیات پیچیده را در قالب چندین دستور ساده به پردازنده ارسال می‌کند و پردازنده دستورات ساده را به سرعت پردازش نموده و نتیجه را باز می‌گرداند. پس کدهای نرم‌افزارهای سازگار با RISC طولانی تر ولی کدهای مربوط به نرم‌افزارهای CISC کوتاه‌تر و پیچیده‌تر هستند. البته این بدین معنا نیست که مثلا اگر قرار است برای اندروید یا iOS برنامه بنویسید باید چند هزار خط بیشتر از معادل کامپیوتر ویندوزی آن کد نویسی کنید، در واقع کامپایلرها کدها را به دستورات کوچک زیاد تبدیل می‌کنند و برنامه نویس به سختی متوجه نوع پردازش دستورات می‌شود. اگر بخواهیم در مورد این دو طراحی صحبت کنیم بحث پیچیده و کسل کننده خواهد شد پس به همین جا بسنده می‌کنیم. سیستم-روی-یک-چیپ‌ها و معماری ARM چندین نوع مختلف از معماری برای پردازنده‌های ARM وجود دارد که از آن جمله می‌توان به ARM V۲ ،ARMv3 Arm v۷ و ... اشاره کرد. کمپانی‌ها برای استفاده از هر کدام از این طراحی‌ها باید گواهی مربوط به آن را از ARM Holder دریافت کنند. کمپانی‌ها از این معماری در ساخت پردازنده‌های مورد نظر خود بهره برده و در نهایت یا یکپارچه سازی آن با واحد پردازش گرفیک (GPU)، حافظه رم و قسمت کنترلر باند رادیویی (در تلفن‌های هوشمند) سیستم -روی-یک-چیپ خود را می‌سازند.


معماری ARM چیست؟ چه تفاوتی با x86 اینتل دارد؟



سیستم-روی-یک-چیپ (System on a Chip) که آن را به اختصار SoC می‌نامند در واقع یک تراشه است که در آن پردازنده اصلی (CPU)، پردازنده گرافیک (GPU)، حافظه رم، کنترلرهای ورودی و خروجی و بعضا کنترلر باند رادیویی قرار دارند. پس لازم است بدانید که کل SoC براساس معماری ARM تولید نمی‌شود و تنها بخش CPU آن بر مبنای معماری ARM طراحی و تولید می‌گردد. پس این باور که فلان SoC براساس معماری ARM ساخته شده، اشتباه است و بخش پردازنده اصلی اکثر SoCها براساس یکی از طراح‌های معماری ARM ساخته می‌شوند. از جمله سیستم-روی-یک-چیپ‌هایی که هسته اصلی آن‌ها براساس معماری ARM طراحی شده‌اند می‌توان به ۳ نسل اول تگرا انویدیا، Quatro شرکت CSRT، نوا شرکت اریکسون، OMAP شرکت تکزاس، Exynos شرکت سامسونگ و Ax شرکت اپل اشاره کرد. این شرکت‌ها از معماری ARM و همچنین معماری یکی از هسته‌های طراحی شده توسط این شرکت بهره برده‌اند. اما شرکت‌ها می‌توانند گواهی استفاده از معماری ARM را تهیه کرده و سپس بر اساس آن هسته سفارشی مورد نظرشان را طراحی کنند یعنی به جای اینکه هسته CPU را براساس Cortex-A۹ یا Cortex-A۱۵ یا دیگر هسته‌های ARM بسازنند، خودشان براساس معماری یکی از خانواده‌های ARM، هسته خاص خود را طراحی کنند. به عنوان مثال سیستم-روی-یک-چیپ A۶ اپل، X-Gene ،Krait کوالکام، StrongARM شرکت DEC ،XScale شرکت Marvell اینتل یا Project Denver شرکت انویدیا اینگونه هستند و اگر چه بخش CPU از سیستم-روی-یک-چیپ آنها براساس معماری ARM طراحی شده‌اند، اما طراحی هسته‌ها با آنچه ARM پیشنهاد کرده متفاوت هستند. 

چند پرسش و پاسخ در باره میکروکنترلر ARM

چرا قبلا از این پردازنده استفاده نمیشده، ایا به تازگی وارد بازار شدند؟ این پردازنده قبلا توسط شرکت arm تولید میشده که این شرکت هم به قیمت بالا این پردازنده رو به مشتریان خاص میفروخته، اما از اوایل سال ۲۰۰۲ به بعد این شرکت مجوز ساخت این پردازنده رو به شرکتی‌های همچون ATMEL و Luminary Micro و شرکت philips و چند تا شرکت دیگه میده. شرکت‌های فوق با اضافه کردن امکاناتی مثل انواع مبدل‌ها (دیجتال به انالوگ و ....)، انواع رابط‌ها (بلوتوث، usb و...)این پردازنده رو به یک پردازنده عمومی تبدیل می‌کنند و اون رو به بازار جهانی عرضه میکنن. برای برنامه نویسی این پردازنده‌ها از چه زبان و کامپایلری استفاده میشه؟ برای برنامه نویسی این پردازنده از زبان‌های c و بیسیک و اسمبلی استفاده میشه. کلیه کامپایلرهای زبان اسمبلی برای این پردازنده رایگان هستند

برای زبان‌های c مثل خود c و c++ کامپایلرهای متعددی ارائه شده که کی از این کامپایلرها کامپایلر keil uvision هست که در اون میشه به زبان‌های اسمبلی و c و c++ برنامه نوشت. نسخه رایگان این کامپایلر را در اینترنت می‌توانید دانلود کنید

برای زبان بیسیک نیز کامپایلر بسکام arm وجود داره که هنوز در دسترس عموم قرار نگرفته تا کرک بشه. آیا این پردازنده cpu هستند یا مانند میکرو کنترلرها می‌باشند، یعنی در در داخل خود ram و i/o و.. دارند یا نه ما خودمان باید این امکانات را بهش اضافه کنیم؟ این پردازنده در نمونه‌های گوناگونی ارایه شده است مثلا مدل LPC۲۱۳۸ دارای ۵۱۲ کیلو حافظه فلش، ۳۲ کیلو حافظه رم، مبدل آنالوگ به دیجیتال، مبدل دیجیتال به آنالوگ و ... می‌باشد یا مدل at76c۵۵۱ ساخت شرکت اتمل دارای امکانتی همچون بلوتوث، ارتباط usb و... هست یا مدل arm7tdmi فقط یک پردازنده است که روی خود فقط خطوط i/o دارد و باید برای ان مانند یک میکرو پروسوسر واحدهای rom و ram و کانتر و... تعبیه کرد این پردازنده در مدل‌های وسیع ساخته می‌شوند (بسیار گسترده تر از avr و pic و..) و دست شما برای انتخاب باز است برای اطلاعات بیشتر در مورد هر پردازنده به شرکت سازنده مراجعه کنید.

بخش دوم سیستم‌ها، کامپایلرها و مفسرهای ARM

چه سیستم‌عامل‌هایی از ARM پشتیبانی می‌کنند؟ سیستم‌های Acorn: اولین کامپیوتر مبتنی بر معماری ARM، کامپیوتر شخصی Acorn بود که از سیستم‌عاملی به نامArthur بهره می‌برد. سیستم‌عاملی مبتنی بر RISC OS که از معماری ARM پشتیانی می‌کرد و Acorn و برخی دیگر از تولیدکنندگان از آن استفاده می‌کردند. سیستم‌عامل‌های توکار: معماری ARM از طیف وسیعی از سیستم‌عامل‌های توکار مانند Windows CE, Windows RT, Symbian, ChibiOS/RT, FreeRTOS, eCos, Integrity, Nucleus PLUS, MicroC/OS-II, QNX, RTEMS, CoOS, BRTOS, RTXC Quadros, ThreadX, Unison Operating System, uTasker, VxWorks, MQX و OSE پشتیبانی می‌کند. یونیکس: یونیکس و برخی از سیستم‌عامل‌های مبتنی بر یونیکس مانند: Inferno, Plan 9, QNX و Solaris از ARM پشتیبانی می‌کنند. لینوکس: بسیاری از توزیع‌های لینوکس از ARM پشتیبانی می‌کنند از آن جمله می‌توان به اندروید و کروم گوگل، Arch Linux، بادا سامسونگ، Debian، Fedora،OpenSuse، Ubuntu و WebOS اشاره کرد. BSD: برخی از مشتقات BSD مانند OpenBSD و iOS و OS X اپل نیز از ARM پشتیبانی می‌کند. ویندوز: معماری‌های ARMv 5, ۶ و ۷ از ویندوز CE که در ابزارهای صنعتی و PDAها استفاده می‌شود، پشتیبانی می‌کند. ویندوز RT و ویندوز فون نیز از معماری ARMv۷ پشتیبانی می‌کنند.

کامپایلرها و مفسرهای ARM برای ARM کامپایلرها و مفسرهای زیادی ارائه شده است، زبان بر نامه نویسی اغلب این کامپایلرها C و C++ می‌باشد، در زیر نام این کامپایلرها را اورده‌ایم:

IAR for ARM

قابلیت برنامه نویسی میکرو کنترلرهای ARM به زبان‌های C و C++ و اسمبلی / امکان شبیه‌سازی برنامه نوشته شده / پشتبانی از تمامی میکرو کنترلرهای ARM / دارای منابع اموزشی متوسط. /محیط حرفه‌ای و استفاده از ویرایش‌گر قوی

CrossWorks for ARM

قابلیت برنامه نویسی میکرو کنترلرهای ARM به زبان اسمبلی و C / پشتیبانی از میکرو کنترلرهای که از ARM۷ استفاده می‌کنند / محیط و ادیتور ساده / عدم شبیه‌سازی برنامه نوشته شده / دارای منابع اموزشی کم.

keil arm

قابلیت برنامه نویسی میکرو کنترلرهای ARM به زبان‌های C و C++ و اسمبلی / امکان شبیه‌سازی برنامه نوشته شده / پشتبانی از تمامی میکرو کنترلر های ARM / دارای منابع اموزشی متوسط. /محیط حرفه‌ای و استفاده از ویرایش‌گر قوی /یادگیری سریع نرم‌افزار /

WinArm

قابلیت برنامه نویسی میکرو کنترلرهای ARM به زبان‌های C و C++ / عدم شبیه‌سازی برنامه نوشته شده / پشتیبانی از میکرو کنترلرهای که از ARM۷ استفاده می‌کنند / دارای منابع اموزشی متوسط. /محیط حرفه‌ای و استفاده از ویرایش‌گر قوی /متن باز بودن نرم‌افزار و سایر امکانات جانبی

Flowcode ARM

قابلیت برنامه نویسی میکرو کنترلرهای ARM به زبان گرافیکی) بلوگ دیاگرامی (/ پشتیبانی از میکرو کنترلرهای که از ARM۷ استفاده می‌کنند / دارای منابع اموزشی متوسط. / محیط ساده /امکان شبیه‌سازی برنامه نوشته شده / یادگیری اسان

ARM ADS

قابلیت برنامه نویسی میکرو کنترلرهای ARM به زبان‌های C و C++ و اسمبلی / امکان شبیه‌سازی برنامه نوشته شده / پشتبانی از تمامی میکرو کنترلرهای ARM

دارای منابع اموزشی متوسط. /محیط حرفه‌ای و استفاده از ویرایش‌گر قوی/

میکرو کنترلرهای موجود در ایران

قبل از بررسی محیط این کامپایلر و اموزش نحوه برنامه نویسی در ان، به مقایسه‌ای اجمالی بین میکرو کنترلرهای مختلف پرداخته‌ایم: در ایران خانواده‌های زیر موجود می‌باشد :

atmel  سری ۷x و ۹x) این میکرو کنترلرهای به ترتیب از هسته arm۷ وarm۹ ستفاده می‌کنند (مانند: AT91SAM7X۱۲۸وAT91SAM7X۲۵۶ و AT91SAM۹۲۶۰ و

AT91RM۹۲۰۰ جدبدا هم مشاهده شده برخی وارد کنندگان سری قدیمی ۷s را وارد می‌کنند و این سری مثال Tiny در مقابل Mega در خانواده AVR هست phillips میکروهای ساخته شده توسط شرکت فیلیپس نیز در ایران وجود دارد :LPC۲۱۴۶ و LPC۲۳۶۸ و LPC2378 STMicroelectronics شرکت ST نیز اقدام به تولید میکرو کنترلرهای با هسته ARM نموده است، در ایران میکرو کنترلرهای STM32F101T۶ و STM32F101CB و... موجود است. شرکت‌ها دیگری نیز اقدام به تولید میکرو کنترلر ازهسته ARM نموده‌اند که بحث ما برسر میکرو کنترلرهای موجود در ایران می‌باشد. بحث بر سر برتری میکرو کنترلرها نیز هیچگاه به پایان نمی‌رسد. ما برای کار با ARM میکرو کنترلرهای ساخته شده توسط اتمل را به دالیل زیر انتخاب کرده‌ایم: این شرکت با عرضه میکرو کنترلرهای AVR و ۸۰۵۱ سابقه درخشانی در ایران دارد. پشتیبانی از تولیدات، در این شرکت بی نظیر است. محصوالت این شرکت بیشتر در ایران وجود دارد) به نوعی همه گیر شده است (از دیگر ویژگی‌ها می‌توان به تنوع محصوالت، قیمت کم، وجود منابع اموزش در سایت رسمی شرکت و فروم‌های خارجی، وارادات اسان و تامین قطعات جانبی و.... اشاره کرد.

کامپایلرهای ARM و مقاییسه انها به زبان ساده تر: ارم دارای کامپایلرهای مختلفی می‌باشد. از جمله iar,keil,flowcodearm,winarm,… که در این میان کامپایلرهای iar و keil از محبوبیت بیشتری برخوردارند. کامپایلر iar دارای امکانات کنترلی بیشتر هست و روی رجیسترها احاطه بیشتری می‌تواند داشته باشد. خروجی کامپایلر iar بسته به تنظیم ما می‌تواند فایل bin یا hex باشد. سیمولاتور کامپایلر ارم به صورت کاملا رجیستری هست و برای مثال اگه شما بخواین بفهمید که پایه‌های میکرو توی چه وضعیتی هست باید با توجه به رجیسترهای میکرو و عدد هگز اون رجیستر که توی سیمولاتور هست، نتیجه‌گیری کنید. کامپایلر keil هیدرهای (کتابخانه) بیشتری برایش نوشته شده به همین خاطر استفاده از Keil راحت تر است. سیمولاتور این کامپایلر کامل تر می‌باشد و وضعیت پایه‌های میکرو رو به تیکی که در مقابل آن‌ها قرار می‌دهید به راحتی در اختیار ما قرار میده. خروجی کامپایلر keil فقط فایل hex میتونه باشه و قادر به ساختن فایل bin نیست. در کل میتون گفت که اکثر برنامه‌هایی که در یکی از کامپایلرهای می‌توانید کامپایل کنید در دیگری هم میتونید (اکثر نه همه) و میشه گفت فرق کامپایر keil و iar مثل تفاوت کدویژن وwinavr هست. توی هر دو کامپایلر میتونید به زبان c,c++ و اسمبلی برنامه بنویسید. پروگرمرهای ارم مقایسه انها: پروگرم ویگلر و نرم‌افزار hjtag پروگرمر jlink و نرم‌افزار j-flash پروگرم ulink و نرم‌افزار keil استفاده از sam-ba پروگرم ویگلر یا jtag با استفاده از پورت پرینتر lpt و نرم‌افزار h-jtah میکرو رو پروگرم میکنه. در حقیقت فایل bin یا hex خروجی کامپایلرها از این طریق روی میکرو میکرو منتقل میشه. البته ورژن‌هایی از این پروگرم هستند که با usb هم کار میکننداین پروگرم با فایل‌های خروجی bin,hex کامپایلر iar,keil سازگاری کامل داره. پروگرم jlink یک پروگرمر با اینترفیس usb هست. درون این پروگرم حتما یک میکرو کنترلر ارم به کار رفته. توسط این پروگرم و نرم‌افزار j-flash متونید میکرو رو پروگرم کنید یا توسط نرم‌افزار keil با این میکرو دیباگ کنین.

    • (دیباگ کردن یعنی اینکه توی محیط سیمولاتور میتونید با اجرای خط به خط برنامه نتیجه را روی سخت‌افزار به صورت عملی مشاهده کنید.)

پروگرم ulink یک پروگرم مخصوص شرکت keil هست و متاسفانه این پروگرمر توی ایران موجود نیست. Sam-ba یکی از امکانات میکروهای شرکت اتمل هست که مستقیم با usb میتونید میکرو رو پروگرم کنید. توسط این روش فقط میتونید فایل bin پروگرم کنید. لازم به ذکر هست که اگه از نرم‌افزار keil استفاده کردید باید فایل خروجی هگز رو با نرم‌افزار h-jtag convertor که یک قسمت از نرم‌افزار h-jtag هست به bin تبدیل کنید تا بتونید پروگرم کردن رو انجام بدهید. مزیت‌های میکرو کنترلرهای ARM: ۱- میکرو کنترلرهای ارم ۳۲ بیتی هستند اما میکرو کنترلرهای avr ۸ بیتی. این بدان معنی است که سرعت میکرو کنترلر ارم ۴ برابر است و علاوه بر ان پورت‌های ان ۳۲ پینه و رجیسترهای ان نیز ۳۲ بیتی هستند. شما در یک پالس کلاک می‌تواند وضعست ۳۲ پبن ارم را مشخص کنید اما این درحالی است که با avr فقط ۸ پایه (یک پورت) را می‌توانید مقدار دهی کنید ۲- فرکانس کاری میکرو کنترلرهای ارم در arm۷ نزدیک به ۵۵ مگا هرتز در cortex m۰-m۴ تغریبا تا ۱۱۰ مگا هرت. برای arm ۹ تا ۵۴۰ مگا هرتز.arm ۱۱ نزدیک به یک گیگا هرتز cortex a۸-a۱۵ به چند گیگا هرتز می‌تواند برسد این درحالی است که avr و pic تا ۲۴ مگا هرتز بیشتر نمی‌توان استفاده کرد ۳- تنوع میکرو کنترلرهای ارم بسیار زیاد است. این میکرو کنترلرها از ۶۴ پایه تا چند صد پایه موجود می‌باشند. به دلیل پر کاربرد بودن این میکرو شرکت‌های زیادی در رغابت با یکدیگر میکروکنترلرهای ارم متنوعی تولید میکنندوامرئزه بیش از ۹۰ شرکت این میکرو را تولید می‌کنند که هر کدام چند ده محصول دارند. برای اطلاعات بیشتر می‌توانید به سایت زیر مراجعه کنید http://www.keil.com/arm/chips.asp ۴- امکانات جانبی این میکرو کنترلر با avr , pic قابل مقایسه نیست. این میکروها معمولا دارای امکاناتی چون usb,can,emac,mmc در پروتکل‌های ارتباطی. همچنین دارای امکانات دیگری چون pwm 6 phase,dac,rtx,… می‌باشند. در باره انتخاب ارم هم باید نکاتی را بیان کنم. ارم‌های توی بازار ایران فقط از شرکت اتمل و شرکت فیلیپس (nxp) هستند. باید بگم که امکانات جانبی فیلیپس از اتمل بیشته اما قیمتش کمتره! در عوض اتمل منابع اموزشی بیشتر داره و خود سایت اتمل مثال‌ها و اموزش‌ها و کتابخانه‌های متعددی برای تراشه هاش گذاشته. که در مقابل با فیلیپس بیشتره. من برای کسانی که میخوان با اتمل کار کنن at91sam7x۲۵۶ رو پیشنهاد می‌کنم. که arm۷ هست. برای کسانی هم که میخوان با فیلیپس کار کنن lpc۲۳۶۸ که arm۷ هست و lpc۱۷۶۸ که cortex m۳ هستو پیشنهاد می‌کنم. 



منابع

وب سایت elmicro
سایت کانون
مرجع کاربردی میکرو کنترلرهای ARM تالیف مهندس سهرابی

و جمع آوری شده توسط اینجانب (حسین محمودی) و بلاگ آقای مجتبی ستوده