تا همین شش یا هفت سال گذشته یکی از عمده دغدغه های طراحان میکروکنترلر استفاده از ARM7 یا ARM9 بعنوان هسته مرکزی ( CPU ) برای میکروکنترلرها بود. امروز حدودا ۲۴۰ میکروکنترلر با هسته ARM از طرف سازندگان مختلف در بازار در دسترس هستند. اخیرا ST Microelectronics سری میکرو های خودش با عنوان STM32 رو ارائه کرده ( که تا زمان انتشار این مقاله سری STM32F7xx هم عرضه شده ) که جزء اولین میکرو هاشون با هسته ARM Cortex-M3 هستند. این قطعه استانداردهای جدیدی در کارایی و قیمت و همچنین قابلیت های عملکرد در حالت کم توان و Hard real-time control ارائه کرده که تا زمان خودش بی رقیب بوده است.
خب حالا Cortex چی هست؟
خانواده ARM Cortex نسل جدیدی از پردازنده ها هستن که پاسخگوی تقاضای طیف وسیعی از نیازهای تکنولوژی امروز اند. برعکس بقیه پردازنده های ARM، خانواده Cortex یک هسته کامل پردازنده اس که متشکل از یک CPU استاندارد و معماری سیستم (System Architecture) میشه. خانواده Cortex به سه دسته اصلی تقسیم میشه:
- سری A برای مصارف پرهزینه و کاربردهای تجاری (مثلا در موبایل ها و تبلت ها و …)
- سری R برای مصارف real-time
- سری M برای موارد کم هزینه و کاربردهای میکروکنترلری
STM32 بر پایه سری Cortex-M3 شروع بکار کرده که این سری مخصوصا برای تلفیق کارایی بالا و مصرف توان پایین طراحی شده. قیمت بسیار پایین باعث شده بتونه با میکروکنترلرهای ۸ و ۱۶ بیتی سنتی رقابت کنه!
شایان ذکره که میکروی جدید و بسیار ارزون قیمتی که اخیرا وارد بازار کشور شده STM32F030F4P با قیمت تقریبا برابر با attiny13 ولی با فرکانس کلاک ۴۸ مگاهرتز و حافظه ۱۶kb فلش و ۲kb رم واقعا مجالی به ما برای استفاده دوباره از attiny تو پروژه های ساده و کم هزینه نداد!
وقتی پردازنده های ARM7 و ARM9 راهشون رو با موفقیت برای رسیدن به میکروکنترلرهای استاندارد باز کردن، هر کدوم میراث SoC (سیستم روی چیپ) خودشون رو عرضه کردن. این موضوع بیشتر در حوزه ی رسیدگی به وقفه ها و رد خطاها ( Exception and Interrupt Handling ) بیشتر حائز اهمیت شد، چونکه هر تولید کننده میکروکنترلر راه حل خودش رو ارائه کرد. ولی Cortex-M3 هسته میکروکنترلر استانداردی رو عرضه کرد که خیلی بیشتر از یه پردازنده اس تا تمام قلب یک میکروکنترلر رو اعم از سیستم وقفه، تایمر SysTick، سیستم دیباگ – عیب یابی – و نقشه حافظه شامل بشه و سیستم یکپارچه ای رو ارائه کنه. فضای ۴ گیگابایتی آدرس دهی Cortex-M3 به بخش های کاملا مشخص شده و جدا شده که شامل بخش کد، SRAM، تجهیزات داخلی میکرو ( Peripherals ) و تجهیزات سیستمی میکرو تقسیم شده اند. برخلاف ARM7، هسته Cortex-M3 بر مبنای معماری هاروارد ساخته شده و به همین خاطر چندین باس دیتا داره که اجازه میده پردازش هارو بطور موازی انجام بده(!) و عملکرد کلی رو بشدت افزایش بده. برخلاف معماری های قبلی ARM، خانواده Cortex اجازه دسترسی بدون صف ( unaligned data access ) به دیتا رو میده که این موضوع باعث میشه دسترسی به حافظه داخلی SRAM بسیار موثرتر باشه. خانواده Cortex همچنین قابلیت ست و ریست کردن ( ۱ و ۰ کردن بیت های حافظه ) بیتها رو تو دو محدوده ۱ مگابایتی از حافظه با عنوان متد بیت-بندینگ ( bit banding ) میده که اجازه میده دسترسی موثری به رجیسترهای ابزارهای جانبی و پرچم ها ( flags ) روی حافظه SRAM داشته باشیم بدون اینکه به پردازنده تمام باینری – دودویی ( binary ) – نیازی باشه.