ARM, RTOS, STM32, توصیه شده, دوره آموزشی RTOS, معرفی, مقاله های سیسوگ

آموزش 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 قسمت دوم ؛ قابلیت های یک سیستم عامل بلادرنگ رو بررسی می‌کنیم و بررسی می‌کنیم که چه سیستم عامل های بلادرنگی وجود دارند. پس با سیسوگ همراه باشد.

 

 

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

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

30 دیدگاه در “آموزش RTOS قسمت اول : کشف ناشناخته ها

  1. Avatar for Ali Ali گفت:

    سلام و احترام برادر. خداقوت.
    واقعاً ممنون بابت زحماتی که میکشید همگی و صبر و حوصله و متانتی که دارید. خداوند پشت و پناهتون

    1. Avatar for Zeus Zeus گفت:

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

  2. Avatar for محمد رضا محمد رضا گفت:

    سلام
    خسته نباشید ، مقاله خوبی بود و به زبان ساده و روان توضیح دادید
    موفق و پیروز باشید

  3. Avatar for keyvan keyvan گفت:

    با سلام
    من سوالی داشتم.
    ایا می شود روی میکروکنترلرها یا میکروپروسسورها سیستم عامل نصب کرد.
    اگر می شود از چه خانواده های هستند.
    و چه نوع سیستم عاملی می شود نصب کرد.
    اندروید- لینوکس- ویندوز10 سپاس گذارم.

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

      با این که سوالتون کلی هست ولی باید بگم بله میشه !
      اغلب میکروکنترلرهای مدرن این قابلیت رو دارن که بتونید روی اونها سیستم عامل نصب کرد و چند کار رو با هم انجام بدهند ولی اشتباه نکنید – سیستم عاملی که میشه نصب کرد اندروید لینوکس و…. نیست بلکه rtos هست.
      اگه میخواید روی یه آیسی چیزی مثل لینوکس یا اندروید نصب کنید باید سراغ soc ها برید، برای جزببات بیشتر سری مقالات eLinux رو دنبال کنید.

  4. Avatar for روح اله روح اله گفت:

    با سلام و تشکر از به اشتراک گذاری دانشتون
    زبان ساده و روونی دارین و این برای آموزش فوق العاده ست
    خیلی خوبه که از مفاهیم شروع کردین
    امیدوارم زمانتون بهتون اجازه بده این مبحث رو به انتها برسونین
    بسیار مشتاقیم
    تشکر از سایت خوب Sisoog

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

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

  5. بازتاب: آموزش RTOS قسمت دوم : آشنایی با مفهوم چند وظیفه‌گی - سیسوگ - Sisoog
  6. Avatar for هادی هادی گفت:

    سلام.
    دمت گرم

    1. Avatar photo electronic girl گفت:

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

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

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

    1. Avatar photo electronic girl گفت:

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

  8. Avatar for آیدین آیدین گفت:

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

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

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

  9. Avatar for علی علی گفت:

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

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

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

  10. Avatar for تیرداد تیرداد گفت:

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

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

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

  11. Avatar for محمد محمد گفت:

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

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

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

  12. Avatar for علی علی گفت:

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

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

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

  13. Avatar for علی علی گفت:

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

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

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

  14. Avatar for حیدری حیدری گفت:

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

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

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

  15. Avatar for akam akam گفت:

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

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

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

  16. Avatar for سهیل سهیل گفت:

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

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

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

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

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

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