انواع روش های برنامه نویسی میکروکنترلرها

انواع روش های برنامه نویسی میکروکنترلرها
برنامه نویسی میکروکنترلر به صورت کلی به سه دسته اصلی تقسیم می شود.
- Bare metal
- RTOS
- OS
دانستن انواع روش ها از این جهت برای ما اهمیت پیدا می کند، که قبل از شروع پروژه، انتخاب پردازنده و روش برنامه نویسی، با شناخت بهتری که از ابزار پیدا می کنیم، انتخاب بهتر و موثرتری داشته باشیم و در روند پروژه و پایان کار با حداقل میزان مشکلات مواجه بشویم، به عبارت دیگر هر روشی را که انتخاب می کنیم، در حقیقت مشکلاتی را انتخاب می کنیم. زمانی که از مشکلات هر کدام از روش ها باخبر باشیم، انتخاب بهتری خواهیم داشت و به نتایج بهتری خواهیم رسید. از این رو دانستن انواع روش های برنامه نویسی میکروکنترلرها به خصوص برای پردازنده های ARM اهمیت زیادی پیدا می کند.
روش Bare metal
اولین سبک برنامه نویسی ای که علاقه مندان برای یادگیری برنامه نویسی میکروکنترلر از آن بهره می برند، روش Bare metal هست. این روش شامل یک تابع main به عنوان تنه ی اصلی برنامه، همینطور یک ابر حلقه (Super Loop) درون تابع main می باشد. عملکردهایی که از پردازنده انتظار می رود عموما یک به یک پشت سر هم در این حلقه ی بینهایت نوشته می شوند. مادامی که پردازنده روشن است، یک به یک این دستورات را خوانده و پردازش می کند.
در این روش مسئولیت پیاده سازی تمام کارها، مدیریت وقفه ها، اولویت وقفه ها، مدیریت حافظه و … به عهده ی خود برنامه نویس می باشد. پس روش پیشفرض برنامه نویسی میکروکنترلرها که از آن استفاده می کنیم، روش Bare metal است و خیلی از پروژه ها بر این مبنا پیاده سازی شده اند.
منابع پیشنهادی جهت یادگیری برنامه نویسی برمتال
می توانید در دوره آموزشی برنامه نویسی روش برمتال در لینک زیر شرکت کنید.
روش RTOS
این روش به سیستم عامل بلادرنگ ترجمه شده است و سر نام کلمات Real Time Operating System است. در این روش، عملکردهای پروژه به تعدادی تسک (وظیفه) تقسیم می شود و هر تسک (Task) مشابه تابع main که در روش Bare metal تنه ی اصلی برنامه بود و شامل یک ابر حلقه (Super Loop) بود، می تواند یک روند کاملا مستقل از سایر تسک ها داشته باشد. به این صورت هر تسک شامل یک حلقه ی بینهایت (ابر حلقه) می باشد و صرفا شامل عملیات تعیین شده برای آن تسک مشخص می باشد. البته تسک ها می توانند به یکدیگر نیز وابسته باشند.
RTOS شامل یک کرنل (Kernel) و یک واحد زمان بندی کننده (Scheduler) است. به این صورت به هر تسک یک تکه زمان (Time Slice) اختصاص می دهد و تسک ها از این طریق توسط پردازنده اجرا می شوند. اجرا شدن تسک ها به گونه ای هماهنگ می شود که کاربردها از چشم ناظر بیرونی همزمان در حال اجرا شدن هستند. زمانی که کاربردهایی داشته باشیم که بخواهیم به صورت همزمان اجرا شوند، از این روش استفاده می کنیم. این روش مزایای بسیار زیادی دارد که ارائه ی تمام این موارد در قالب این مطلب نمی گنجد، اما یکی از روش های محبوب برای برنامه نویسی میکروکنترلرهای ARM است و برای پروژه های پیچیده ی امروزی انتخاب اکثر توسعه دهندگان حوزه امبدد سیستم است.
منابع پیشنهادی جهت یادگیری بیشتر RTOS
می توانید در دوره آموزش FreeRTOS در لینک زیر شرکت کنید.
روش OS
نام بهتری که برای این روش می توان پیشنهاد داد GPOS است به مفهوم سیستم عامل همه منظوره که سر نام کلمات General Purpose Operating System است. به این دلیل که OS و RTOS از نظر ماهیت عملکردی کاملا با یکدیگر متفاوت هستند و گاها دیده می شود که این دو عبارت به اشتباه به جای یکدیگر به کار می روند، با رعایت این نام گذاری از این اشتباه می توانیم دوری کنیم. لینوکس، ویندوز و … ها جزء دسته بندی GPOS قرار می گیرند. این روش برنامه نویسی برای همه ی میکروکنترلرها در دسترس نیست و تنها برای پردازنده هایی که دارای معماری خاص برای اجرای سیستم عامل همه منظوره دارند امکان پذیر است. نمونه ی این پردازنده ها در بردهای SBC (کامپیوترهای تک بردی) (Single Board Computer) نظیر Raspberry Pi, Orange Pi, Beagle Bone و … قابل مشاهده است.
توجه داشته باشید که این سبک برنامه نویسی با RTOS کاملا متفاوت است و این دو نباید با یکدیگر اشتباه گرفته بشوند. در مقالات آینده به بررسی تفاوت های این دو روش می پردازم.
اگر سوال، پیشنهاد و یا نظری دارید، از قسمت نظرات در پایین همین صفحه، می توانید اقدام کنید.
جهت مطلع شدن از آموزش های جدید به خبرنامه ی EasyMCU بپیوندید.
درباره مرتضی زندی
خلق کردن شماره 1 علاقه مندی های من هست. برنامه نویسی بهترین ابزاری بوده که تا الان برای این کار پیدا کردم. بیس الکترونیک دارم و دستی بر آتش در دنیای رشته های مجاور. تجربه سال ها فعالیت در تیم های R&D رو دارم، در این بین در حوزه ی امبدد سیستم ها فعالیتم پررنگ تر هست. عاشق یادگیری و یاد دادن هستم و تلاش می کنم تجربیاتم رو به زبانی ساده از طریق EasyMCU.org به نحوی کاربردی و موثر با علاقه مندان این حوزه به اشتراک بذارم.
نوشته های بیشتر از مرتضی زندیمطالب زیر را حتما مطالعه کنید
آموزش نصب و راه اندازی سیستم عامل Free RTOS برای آردوینو Arduino
آموزش نصب و راه اندازی سیستم عامل Free RTOS روی STM32
آموزش FreeRTOS نحوه استفاده از میوتکس Mutex
آموزش Free RTOS نحوه استفاده از سمافور Semaphore
آموزش STM32 راه اندازی وقفه خارجی EXTI
معرفی کتاب ARM
این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش میشوند.
دیدگاهتان را بنویسید