ARM, AVR, RTOS, STM, STM32, STM8, توصیه شده, معرفی, مقاله

آموزش RTOS قسمت اول : کشف ناشناخته ها

آموزش RTOS

قبل از این که آموزش RTOS را شروع کنیم لازمه یکم در مورد RTOS توضیح بدیم ، چون هیچ بعید نیست که خیلی ها حتی اسم RTOS را تا حالا نشنیده باشید (البته بعید میدونم اونم توی قرن 21 !) خواهی نخواهی دیگه باید از سبک و شیوه های قدیمی فاصله گرفت و با تکنولوژی های جدید آشتی کرد. البته این به این معنی نیست که RTOS موجود جدیدی است ؛ به این معنیه که خیلی از ما داریم از شیوه های قدیمی توی کدنویسی استفاده می‌کنیم که اگر از شیوه های جدید استفاده کنیم ، قادر خواهیم بود که بهره وری رو افزایش بدیم. برای آموزش های بیشتر با سیسوگ همراه باشید.

چرا آموزش RTOS

ممکن است با خودتون فکر کنید که الان من بدون سیستم عامل هم دارم به خوبی کار خودم رو پیش می برم و چه نیازی هست که خودم رو درگیر پیچیدگی های سیستم عامل کنم ؛ یا این که RTOS چه کاری میتونه برای من بکنه که خودم قادر نیستم انجامش بدم ؟ ؛ اینها دقیقا تصورات خود من بوده ! البته مربوط به 7 سال پیش وقتی که هنوز کار با سیستم عامل رو شروع نکرده بودم ! اون موقع برنامه نویسی رو به شکل سنتی Super Loop انجام می‌دادم و تقریبا هر کاری رو میخواستم قادر بودم انجام بدم ! تا این که یک روز کنجکاو شدم که این سیستم عامل چی هست و به چه دردی میخوره !

از وقتی که با سیستم عامل آشنا شدم دیگه برنامه نویسی بدون RTOS برام بی معنی شده ؛ پروژه ای که ساختش بدون سیستم عامل ممکن بود یک ماه زمان ببره با سیستم عامل زمان اجراش به 15 روز کاهش پیدا کرد ، اینو واقعا تجربه کردم ؛ گاهی با خودم فکر می‌کنم چطور من بدون سیستم عامل کدنویسی می‌کردم ؟ چرا زودتر سراغ سیستم عامل نرفتم !

تاثیر استفاده از سیستم عامل برای من اینقدر زیاد بود که دوست دارم همه دوستان رو با سیستم عامل و قابلیت های اون آشنا کنم ولی متاسفانه مثل همیشه منبع خوب فارسی در این خصوص پیدا نکردم :/ واقعا جای تاسف داره ؛ برای همین تصمیم گرفتم این آموزش رو تهیه کنم تا همه دوستان و همراهان سیسوگ بتونن از اون استفاده کنند.

 

رای گیری در کانال تلگرام سیسوگ

قبل از شروع آموزش ها توی کانال تلگرام سیسوگ نظر سنجی گذاشتیم تا بتونیم مسیر حرکت رو مشخص کنیم ؛ 60 درصد شرکت کننده ها توی نظر سنجی نظرشون این بود که یک سیستم عامل رو از اول باز نویسی کنیم ! خوب جای خوشحالی داره که دوستان و همراهان سیسوگ اینقدر علاقه به یادگیری از پایه و بیس دارند (بین خودمون باشه نظر خودمم همین گزینه بود).

RTOS چیست ؟

زمان بندی اجرای تسک ها در RTOS

 

فکر می‌کنم اولین سوالی که لازمه جواب داده بشه این سوال باشه که اصلا RTOS چیست و به چه دردی می‌خوره ؛ همونطور که حدس میزنید و از اسمش هم پیداست OS مخفف operating system و معادل فارسی اون هم سیستم عامل است. امروزه بالغ بر 90 درصد جمعیت زمین با یکی از انواع سیستم عامل کار کرده اند؛ سیستم عامل در واقع یک نرم افزار است که منابع سخت افزاری رو مدیریت می کند.

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

عموما سیستم عامل ها در دو دسته سیستم عامل های بلادرنگ یا همان RTOS که مخفف Real Time operating system است و سیستم عامل های با درنگ که Non RTOS خوانده می‌شوند. تمام سیستم عامل هایی که قبلا معرفی کردیم ؛ سیستم عامل های بادرنگ هستند. در ادامه بیشتر در خصوص RTOS توضیح می‌دهیم و بررسی می‌کنیم چرا وجود چنین سیستم عاملی لازم و حیاتی است. پس آموزش RTOS سیسوگ را از دست ندهید.

چرا RTOS تافته جدا بافته است ؟

ماموریت آپلو 11

فرض کنید آپلو 11  از سیستم عامل ویندوز استفاده می کرد ؛ قطعا پای بشر به ماه نمی رسید ؛ یا قبل از خروج از جو زمین موتور ها خاموش می‌شد و سقوط می کرد یا از مدار ماه خارج می شد و در کهکشان سرگردان می گشت. اما آیا فکر کرده اید که چرا این اتفاقات ناگوار نیفتاد ؟ و بشر موفق شد که به کره ماه برود ! خیلی ساده است چون آپلو 11 از ویندوز استفاده نمیکرد 🙂

حالا که حرف آپلو 11 شد بد نیست بدونید که کامپیوتر آپلو 11 تنها 2 کیلو بایت Ram داشته و حدود 30 کیلوبایت Rom یعنی چیزی در حدود میکروکنترلر Atmega32 نه بیشتر !

اما چرا سیستم عامل ویندوز باعث شکست پروژه می‌شد؟ دقیقا به این دلیل که ویندوز یک سیستم عامل بلادرنگ نیست ! RTOS با مدیریت زمان باعث می‌شود که پردازنده قادر باشد ورودی های سیستم را بدون کوچکترین تاخیری پردازش کند و عکس العمل مناسب رو در زمان مناسب از خود نشان دهد. دقیقا تنها برتری مهم RTOS نسبت به دیگر سیستم عامل ها همین قابلیت Real Time بودن است.

در واقع Real Time Os تضمین میکند که یک کار در زمان معین برای یک زمان مشخص اجرا شود.

و همین مهم ترین خصیصه یک سیستم عامل بلادرنگ است. در مقابل، سیستم عامل های بادرنگ چنین تضمینی را ارائه نمی دهند !

چرا باید از RTOS استفاده کنیم ؟

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

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

سیستم عامل همچنین کمک می‌کند برنامه با ساختار بهتری نوشته شود ؛ این خود به تنهایی فرایند خطا یابی را ساده تر می کند و به توسعه سریع برنامه کمک زیادی می‌کند همچنین قابلیت حمل کد را بالا می‌برد و برای اجرای یک برنامه بر روی سخت افزار جدید تنها نیاز خواهید داشت که سیستم عامل را روی آن اجرا کنید (البته این در صورتی است که برنامه را با ساختار مناسب نوشته باشید) .

وقتی از سیستم عامل استفاده می کنید به سادگی می‌توانید برنامه های بزرگ و پیچیده را به بخش های کوچک و ساده تبدیل کنید و هر بخش را در یک Task اجرا کنید ؛ این فرایند باعث می‌شود قادر باشید برنامه های پیجیده را در کوتاه ترین زمان ممکن پیاده سازی کنید.

در پست بعد آموزش RTOS قسمت دوم ؛ قابلیت های یک سیستم عامل بلادرنگ رو بررسی می‌کنیم و بررسی می‌کنیم که چه سیستم عامل های بلادرنگی وجود دارند. پس با سیسوگ همراه باشد.

 

 



انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.  همکاری با سیسوگ

 

نوشته های مشابه

یک دیدگاه در “22”

  1. Avatar هادی گفت:

    سلام.
    دمت گرم

    1. N H N H گفت:

      سلام
      خواهش میکنیم دوست عزیز

  2. Avatar راوندی گفت:

    سلام.خدا قوت
    ممنون که به این موضوع پرداختید.

    1. N H N H گفت:

      سلام
      خواهش میکنیم دوست عزیز

  3. Avatar آیدین گفت:

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

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز ؛ اصلا اینطور که فکر میکنید نیست ؛ سیستم عامل هیچ کاری به سخت افزار میکرو نداره و سخت افزار میکرو به صورت کامل در اختیار شماست ؛ در واقع سیستم عامل کار مدیریت زمان رو انجام میده در مواردی که لازم داشته باشید مدیریت منابع سخت افزاری رو انجام میده ؛ پیشنهاد میکنم این سری مقالات رو دنبال کنید ؛ قضیه روشن خواهد شد و خواهید دید که سیستم عامل چقدر میتونه به شما کمک کنه !
      البته حق با شماست شاید روی میکروکنترلر های AVR که منابع سخت افزاری کمی داشته باشند زیاد کاربردی نباشه ولی خوب خالی از لطف هم نیست.

  4. Avatar علی گفت:

    مطلب خوبیه اما ادامه دار باشه بهتره

    1. زئوس Zeus زئوس Zeus گفت:

      متشکرم ؛ حتما ادامه دار هست ، ولی احتمالا مقداری کند پیش بره

  5. تیرداد صدری نژاد تیرداد گفت:

    سیستم های بی درنگ، به بیان ساده، بخش کامل مشخص نمیکنن. شما به یه کارگر، میگید سر ساعت 1 تو اتاق اول میری فلان کارو میکنی، سر ساعت 2 تو اتاق بعدی میری کار مربوط به اونو انجام میدی و … . این چیزیه که توی نوشته بهش اشاره شده. اما نقطه ی ضعفشون گفته نشد. و اون اینکه نمیتونن به اندازه ی سیستم های بادرنگ انعطاف پذیر باشن. یه سیستم بادرنگ، ممکنه 3 دقیقه بیشتر توی اتاق اول بمونه در عوض کارشو تو اون اتاق تموم کنه. اما سیستم بی درنگ انتهای کار هم که باشه ولش میکنه میره بعدی. ممکنه تو این زمان، داده های اتاق اول منقضی بشن، یا اصن بیخودی معطل یه پردازش نهایی ساده بمونن. چرا؟ چون سیستم های بی درنگ برای تعریف “کار” محدودیت دارن.

    1. زئوس Zeus زئوس Zeus گفت:

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

  6. Avatar محمد گفت:

    درود
    بحث سیستم عامل بلادرنگ موقعی بیشترین کاربرد رو داره که پردازنده هم real time باشه . مثل پردازنده imxrt1052 که real time هستش یا پردازنده های cortex R . وگرنه فکر نکنم روی پردازنده های معمولی بشه خاصیت real time بودن رو بدرستی اجرا کرد و ازش جواب گرفت. مخصوصا برای سیستم هایی که نیاز به دقت بالا در پردازش دارن.

    1. زئوس Zeus زئوس Zeus گفت:

      سلام و ممنون برای کامنتتون ؛ ببینید بدون این پردازنده ها هم سیستم عامل های بلادرنگ به خوبی بلادرنگ هستند و اصلا جای نگرانی نیست ؛ تنها تفاوت این پردازنده ها با باقی پردازنده ها اینه که به شکل سخت افزاری بلادرنگ رو پشتیبانی می کنند البته خودم مطالعه دقیقی نداشتم که بتونم اظهار نظر دقیقی انجام بدم ولی فکر میکنم مثل قابلیت MPU باشه که توی سری Cortexm بشکل سخت افزاری پشتیبانی میشه ولی متد نرم افزاریش به خوبی در انواع دیگر هم کار میکنه
      احتمالا باعث کاهش تاخیر بشه این قابلیت ها

  7. Avatar علی گفت:

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

    1. زئوس Zeus زئوس Zeus گفت:

      سلام و درود ؛ خواهش میکنم دوست گرامی
      واقعا یادگیری سیستم عامل ؛ سخت نیست تنها منبع میخواد که انشالله بتونیم به خوبی ایجادش بکنیم.

  8. Avatar علی گفت:

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

    1. زئوس Zeus زئوس Zeus گفت:

      خواهش میکنم دوست عزیز ؛ این حداقل کاری هست که میتونیم انجام بدیم ؛ امیدوارم که تونسته باشم حداقل کمکی کرده باشم
      متشکرم از لطف شما دوست عزیز 🙂

  9. Avatar حیدری گفت:

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

    1. زئوس Zeus زئوس Zeus گفت:

      خواهش میکنم دوست عزیز
      انشالله به زودی منتشر خواهد شد.

  10. Avatar akam گفت:

    خسته نباشید زئوس جان عالی بود
    عجب چیزیه این?? RTOS
    منتظر قسمت بعدی آموزش هستیم

    1. زئوس Zeus زئوس Zeus گفت:

      خواهش میکنم دوست عزیز
      انشالله به زودی قسمت جدید هم منتشر میشه 🙂

  11. Avatar سهیل گفت:

    مثل همیشه عالی

    برای قسمت های بعدی لحظه شماری میکنم.

    1. زئوس Zeus زئوس Zeus گفت:

      خواهش میکنم – باعث خوشحالیه که خوشتون اومده از این مقاله 🙂

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *