آردوینو آموزش آردوینو سیستم عامل FreeRTOS

سیستم عامل free RTOS در بردهای آردوینو قسمت اول: معرفی RTOS

getting-started-with-free-rtos-in-arduino-part-one-introduce-digispark
نوشته شده توسط معین صابری

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

همانطور که اطلاع دارید، سیستم عامل ها نقش بسیار کلیدی و پررنگی در رایانه های شخصی و محاسباتی دارند. این نقش به قدری موثر است که یک سیستم پیشرفته چند منظوره را نمی توان بدون سیستم عامل تصور نمود. اما سیستم عامل تنها مختص به رایانه های پیشرفته نیست! بلکه بسیاری از میکروکنترلرها نظیر ARM، ESP32 و…. از سیستم عامل جهت اجرای چندین برنامه پشتیبانی می کنند. بردهای آردوینو با معماری AVR نیز از این قاعده خارج نبوده و می توانند سیستم عامل را بر روی خود اجرا کنند. در این سلسله آموزش قصد به معرفی، بررسی و تحلیل سیستم عامل برای بردهای آردوینو داریم. بنابراین در ادامه با مرجع تخصصی سیستم عامل FreeRTOS به زبان فارسی، دیجی اسپارک همراه باشید.

 


سیستم عامل، تعریف و کاربرد


یکی از مهم ترین مفاهیم، فهم سیستم عامل و نحوه عملکرد آن است. احتمالا تعریفی از سیستم عامل در ذهن داشته باشید. سیستم عامل وظیفه مدیریت منابع را بر عهده دارد. این تعریف درست و جامع است، حتی اصلا آن را عالی می دانیم! اما آیا واقعا سیستم با همین یک خط تعریف، فهمیده می شود؟ من که موافق نیستم!

سیستم عامل، تعریف و کاربرد - دیجی اسپارک

 

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

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

 


انقلاب سیستم عامل در علوم رایانه


همانطور که پیشتر گفته شد، سیستم عامل سبب ایجاد پیشرفتی شگرف در زمینه توسعه علوم رایانه ای گردید. این پیشرفت را می توان سبب ساز کاهش هزینه ها دانست. در رابطه با سیستم عامل، بیایید موضوع را ساده کنیم. فرض کنید یک برد آردوینو دارید. این برد آردوینو دارای پردازنده ATMEGA328P است. شما تنها می توانید یک برنامه روی برد آپلود کنید. هیچ گاه شما نمی توانید دو یا چندین برنامه روی برد آپلود نمایید که به صورت همزمان کار کنند. اگر بخواهید ۱۰ برنامه اجرا کنید، نیاز به ۱۰ برد آردوینو خواهید داشت.

انقلاب سیستم عامل در علوم رایانه و بردهای میکروکنترلر - دیجی اسپارک

 

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

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

 

همانطور که گفته شد، برنامه ها توسط سیستم عامل به صورت چرخشی اجرا می شوند. به عنوان مثال در صورتیکه یک برنامه ۱۰ ثانیه برای اجرای نیاز داشته باشد، سیستم عامل برای یک زمان کوتاه، به عنوان مثال ۱ ثانیه فرصت اجرا به برنامه می دهد. سپس به برنامه بعدی مراجعه کرده و به آن برنامه زمان تخصیص داده می شود. این رویه ادامه می یابد تا به برنامه اول برسد. سپس با اختصاص دادن یک ثانیه دیگر، برنامه شماره یک فرصت تکمیل کردن پروسه خود را دارد. این رویه تا زمانیکه تمام برنامه ها از لحاظ اجرا تکمیل شوند، ادامه خواهد یافت. به این الگوریتم در اصطلاح الگوریتم راند رابین (Round Robin)گفته می شود.

 


تعریف سیستم عامل RTOS


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

تعریف سیستم عامل RTOS - دیجی اسپارک

 

برای اجرای سیستم عامل، یبک سیستم عامل کاملا رایگان با نام FREE RTOS توسعه یافته است. به کمک این سیستم عامل به صورت رایگان و با سورس در اختیار و متن باز، می توان بسته به نیاز آن را تغییر داده و کار کرد. پردازنده های بسیاری نظیر ESP32 و تراشه های ARM ساخت شرکت ST از این سیستم عامل استفاده می کنند. جهت اطلاعات بیشتر می توانید به وب سایت رسمی سیستم عامل به آدرس freertos.org مراجعه نمایید.

 


لوازم مورد نیاز


لینک خرید انواع برد آردوینو، کلیک کنید

 


جمع بندی


سیستم عامل ها یکی از مهم ترین ابزارهای نرم افزاری جهت مدیریت اجرای برنامه ها به شمار می روند. به کمک سیستم عامل می توان چندین برنامه را تنها بر روی یک برنامه اجرا نمود. در این حالت دیگر نیازی نیست تا به ازای هر برنامه یک پردازنده تهییه شود. سیستم عامل ها تنها مختص به رایانه ها و یا پردازنده های پردقدرت نیستند؛ پردازنده های میکروکنترلری نیز جهت اجرای بسیار از فرایندهای همزمان، نیاز به سیستم عامل دارند. یکی از مهم ترین و در دسترس ترین سیستم عامل ها برای میکروکنترلرها، سیستم عامل FreeRTOS است. این سیستم عامل که به صورت رایگان در دسترس عموم است، می تواند بر روی میکروکنترلرهای مختلف نظیر ESP32 و یا ARM اجرا گردد. در این سلسله آموزش به این سیستم عامل و نحوه اجرای آن بر روی بردهای آردوینو نظیر UNO و MEGA می پردازیم. در قسمت های بعد نحوه نصب و مفایهم سیستم عامل را به صورت برنامه های عملی، خواهیم دید.

 

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

درباره نویسنده

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۰ دیدگاه

  • سلام وقت بخیر آقای مهندس. من روی یه برد آردوینو یه کدی رو نوشتم که با ماژول sim800 یه سری دیتا رو میفرسته یه مشکلی دارم اینه که بعد یه مدت هنگ میکنه و نمیفرسته درحالیکه اینترنت هست. اما وقتی کابل رو وصل میکنم سریال مانیتور میکنم درست میشه دوباره شروع میکنه به کار! در ضمن از wdt هم استفاده کردم بعد ۸ ثانیه ریست کنه. ممنون میشم راهنمایی بفرمایید. تشکر

    • سلام و متشکرم از لطف شما
      بهتر است کد شما بررسی شود. لطفا کد خود را روی یک یاز سرویس های اشتراک فایل آپلود ولینک آن را در کامنت بعد قرار دهید. اگر هم معذوراتی از این بابت دارید، لطفا بیشتر راجع به روال های کد خود توضیح دهید تا مورد بررسی گردد.

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

          • سلام مجدد و ممنون از اینکه بررسی کردید. البته این کد قبل اینکه wdt رو بزارم هم بعد چند ساعت کار هنگ میکرد. یعنی بخاطر همین مجبور شدم از wdt استفاده کنم. ریست واچ داگ رو هم مجبور شدم اونطوری تکرار کنم. چون از millis نتونستم استفاده کنم. البته این کد تقریبا تا چند روز بدون هنگ کار کرد بعد هنگ کرد. ولی سوالم اینه که چرا وقتی سریال مانیتور کردم درست شد مگه واچ داگ ریست نمیکنه؟
            بنظر من شما بر اساس تجربه ای که در این زمینه دارید لطفا اگه زحمتی نیست کد رو ویرایش بفرمایید تا احتمال هنگ از بین بره. مبلغ رو هم بفرمایید و یک شماره کارت بدید تا واریز کنم.
            در ضمن اگه صلاح بدونید لینک فایل کد رو از نظرات حذف بفرمایید. سپاسگزارم

        • سلام و عرض ادب آقای مهندس. در مورد اصلاح کد میتونید کمک کنید؟ چون سریعتر نیاز دارم

            • باشه ممنون از لطف شما و زمانی که برای بررسی گذاشتید. لطفا اگر نکته ای هست که درباره رفع مشکل میتونم استفاده کنم بفرمایید لطف میکنید. تشکر