سبد خرید 0

هیچ محصولی در سبد خرید نیست.

سبد خرید 0

هیچ محصولی در سبد خرید نیست.

استفاده از سیستم عامل RTOS در میکروکنترلرها

استفاده از سیستم عامل RTOS در میکروکنترلرها - کافه میکرو

استفاده از سیستم عامل RTOS در میکروکنترلرها

سلام خدمت شما همراهان عزیز و کاربران کافه میکرو خیلی خوشحالیم که با یک مقاله دیگر در خدمت شما دوستان عزیز هستیم. با یک مقاله مفید ذرباره سیستم عامل RTOS در میکروکنترلرها همراه کافه میکرو باشید.

در هر لحظه هر پردازنده قادر است یک خط دستور را خوانده و اجرا کند و در سبک برنامه نویسی معمول، خطوط برنامه پشت سر هم قرار می گیرند و به ترتیب یکی پس از دیگری اجرا می شوند. یک حلقه بینهایت در تنه اصلی برنامه قرار می گیرد که با نام آشنای while(1) آن را می شناسیم.

مادامی که پردازنده روشن است دستوراتی که باید پشت سر هم و به صورت مداوم اجرا شوند درون این حلقه قرار می گیرند. به این روش برنامه نویسی ابر حلقه ، super loop و یا bare metal گفته می شود.

در چنین سبک برنامه نویسیی دستورات پشت سر هم و به صورت سریالی اجرا می شوند و تا یکی به اتمام نرسد ، دستور بعدی اجرا نمی شود و مدت زمان اجرای هر وظیفه تعیین نشده است و ثابت نیست و … همین موارد موجب می شوند که در برنامه های بزرگ، چند کار به صورت همزمان نتوانند با همدیگر اجرا شوند.

ماشین حالت سیستم عامل

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

تصویر پایین یک دیاگرام ساده از وضعیت تسک ها یا Thread های تعریف شده در زمان اجرای سیستم عامل را نشان می دهد.

Running : در هر لحظه فقط و فقط یک تسک در حالت Running می تواند قرار گیرد. تسک در حال اجرا.
Waiting : تسک هایی که در انتظار دریافت سیگنال هستند در حالت انتظار Waiting قرار دارند و زمانی از پردازنده نمی گیرند.
Ready : تسک هایی که آماده اجرا هستند، اما در حال حاضر اولویت اجرا پیدا نکرده اند و در آستانه ی ورود به حالت اجرا هستند در این وضعیت قرار می گیریند و زمانی از پردازنده نمی گیرند.
InActive : تسک هایی که توسط واحد زمان بندی شده، به طور موقت غیر فعال شده اند در این وضعیت قرار می گیرند و زمانی از پردازنده نمی گیرند.

استفاده از سیستم عامل RTOS در میکروکنترلرها - کافه میکرو
استفاده از سیستم عامل RTOS در میکروکنترلرها – کافه میکرو

پردازش همزمان

در نظر بگیرید که قصد داریم برنامه ای بنویسیم که کارهای ذیل را به صورت همزمان اجرا کند.

دریافت و ارسال اطلاعات بر روی باس USB و پردازش اطلاعات آن.
دریافت اطلاعات ورودی از طریق کیبرد متصل به دستگاه.
نمایش اطلاعات بدست آمده و پردازش شده بر روی LCD.
کنترل و پخش یک فایل صوتی.
کنترل پایه های ورودی/خروجی به صورت آنی جهت عملیات کنترلی.
ارتباط با انواع حافظه ها و سنسورها
و …

بنظر شما با استفاده از چه روشی می توانیم تمام این کارها را به صورت همزمان انجام دهیم؟

محدودیت های سبک برنامه نویسی معمولی
همینطور که می بینید روش برنامه نویسی یاد شده در بالا جوابگوی چنین خواسته و عملکردی نیست و به هر میزان که این وظایف تعیین شده افزایش پیدا کنند و برنامه پیچیده تر شود ، روش یاد شده در بالا کاملا غیر قابل استفاده خواهد بود. همینطور امکان نگهداری برنامه و ارتقاء آن در آینده بسیار پیچیده و مشکل خواهد بود و در بعضی مواقع کاملا غیر ممکن! و اما راه حل چیست؟!

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

RTOS کوتاه شده ی عبارت Real Time Operating System به مفهوم سیستم عامل بلادرنگ می باشد. برنامه نویسی به سبک سیستم عامل، به برنامه نویس این امکان را می دهد که پروژه خود را به تعدادی Task (وظیفه) تقسیم و دسته بندی کند و هر وظیفه را در یک Task مجزا و اختصاصی پیاده سازی کند. هر Task شامل یک حلقه ی بینهایت مجزا می باشد و دخالتی در Task های دیگر ندارد.

همینطور می توان برای هر Task اولویت اجرا در نظر گرفت که به این ترتیب عملیات های مهم می توانند در اولویت بالاتری برای نوبت دهی و اجرا توسط پردازنده قرار بگیرند! همچنین با استفاده از سیستم عامل زمان پردازنده با دستورات تاخیر و در انتظار ماندن به هدر نمی رود و بجای تاخیر، Task به خواب (sleep) می رود و فرصت اجرا شدن را به Task بعدی می دهد و به این ترتیب از ماکسیمم توان پردازنده می توان بهره برد و بهینه ترین برنامه ها و عملکردها را می توان نوشت.

اجرای همزمان کارها

همینطور که دیده می شود، با استفاده از سیستم عامل RTOS در میکروکنترلرها ، هم امکان درک پروژه پیاده سازی شده بیشتر می شود و هم در دراز مدت می توان پروژه را به راحتی تحلیل کرد و در قالب Task های جدید ارتقاء داد. همینطور می توان اولویت اجرا برای هر وظیفه قائل شد. مورد قابل توجه در دید ما، اجرا شدن تمام Task ها به صورت همزمان در کنار همدیگر است! این گفته صحبت قبلی را رد نمی کند، همچنان پردازنده توانایی اجرای یک دستور در هر لحظه را دارد و نه بیشتر، و اما توسط سیستم عامل چطور این اتفاق به صورت همزمان نمود می کند؟!

پشت پرده سیستم عامل

در واقع سیستم عامل در پشت پرده، یک هسته با برنامه نویسی پیچیده دارد که به آن کرنل (Kernel) می گویند. بخش کرنل در کنار بخش مکمل آن که Scheduler (زمان بندی کننده) نام دارد، در کنار یکدیگر عملکرد سیستم عامل را تشکیل می دهند. به این ترتیب زمان اجرای Task ها ، وقفه های حین اجرا ، اولویت ها و … همه و همه توسط این بخش کنترل می شود. Scheduler زمان های محدودی در حد چند میلی ثانیه برای اجرای هر Task قائل می شود که به آن Time Slice گفته می شود.

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

به این ترتیب با اجرای اولویت دار سریالی از هر Task به اندازه ی چند میلی ثانیه باعث می شود که در یک ثانیه، همه Task ها چند بار به صورت مکرر اجرا شوند و این امر موجب می شود که عملیات اجرای Task ها همزمان نمود کنند و این مزیت RTOS است که به طراح این اطمینان را می دهد که نیازمندی های Hard Real-time برآورده می شود و از قلم نمی افتد.

معروفترین سیستم عامل های بلادرنگ در سال 2020

از بین لیست زیر، بعضی از سیستم عامل ها برپایه ی امبدد لینوکس هستند و برخی بر روی میکروکنترلرهای معمولی قابلیت اجرا دارند. در جلوی هر سیستم عامل، نام شرکت ارائه دهنده نوشته شده است.

FreeRTOS (Amazon)
Keil RTX (ARM)
LynxOS (Lynx Software Technologies)
MQX (Philips NXP / Freescale)
SafeRTOS (Wittenstein)
ThreadX (Microsoft Express Logic)
µC/OS (Micrium)
VxWorks (Wind River)
Zephyr (Linux Foundation)

در بخش وبلاگ و میکرومگ همراه باشید تا مقالات و مطالب مفید این حوزه را برای شما اماده کنیم.

نظر خودتان را درباره استفاده از سیستم عامل RTOS در میکروکنترلرها برای ما و دیگر همراهان کافه میگرو در پایین همین صفحه بنویسید.

ممنون از همراهی شما

دیدگاه شما
محصول با موفقیت به سبد خرید اضافه شد.