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

مقدمه:

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

 

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

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

 

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

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

 

مزایای سبک کد زنی سیستم عامل

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

 

نتیجه

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

 

سبک سیستم عامل

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

به این ترتیب با اجرای اولویت دار سریالی از هر Task به اندازه ی چند میلی ثانیه باعث می شود که در یک ثانیه،  همه Task ها چند بار به صورت مکرر اجرا شوند و این امر موجب می شود که عملیات اجرای Task ها همزمان نمود کنند.

 

EasyMCU-OS

 

سبک کد زنی سیستم عامل را از کجا شروع کنم؟

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

لطفا هرگونه سوال و … راجع به این مطلب را در انجمن ایزی.ام.سی.یو مطرح نمایید.