آموزش RTOS با STM32 قسمت 0: مقدمه

blog
۱۴۰۲-۰۱-۰۹
8 دقیقه

!RTOS In Microcontrollers!

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

قبل از هر چیز باید به یک سوال مهم جواب بدیم تا تکلیفمون با این مجموعه آموزش روشن بشه و بدونیم تو این آموزش قراره چی بدست بیاریم:

?سوال:یک سیستم عامل اصلا چیکار میکنه و چرا ما به اون نیاز داریم؟

یک سیستم عامل مانند ویندوز ، لینوکس ، Free RTOS یا … وظیفه مدیریت حافظه و مدیریت فرایندها(Process) را برعهده دارد.برخی سیستم عامل ها دارای فایل سیستم هستند که در واقع یک ساختار داده است که داده ها و اطلاعات را روی دستگاه های ذخیره سازی(مانند هارد دیسک، فلاپی دیسک و …) ذخیره می کند.همچنین برخی سیستم عامل ها دارای امکاناتی برای ارسال داده ها بین فرایندها و Thread ها هستند.خب از اونجا که میدونم خیلی از شما گوشتون از این تعریف ها پره اما بدنبال درک از این موضوع میگردید،پس من میخوام با تمرکز بر روی “ایجاد تعامل بین فرایندها(مدیریت فرایندها)” که یکی از مهمترین وظایف سیستم عامل هست،موضوع رو برای شما با چند تا مثال روشن کنم.

شاید برای شما مفید باشد: آموزش STM32

مثال 1:

فرض کنید پروژه ای در رابطه با مانیتورینگ آب یک استخر به ما واگذار شده که قراره با میکروکنترلر انجام بشه. در این پروژه دو فرایند اساسی وجود داره : فرایند اول خوانش مقدار یک سنسور تشخیص سطح آب است که باید هر 5000 میلی ثانیه یک بار اتفاق بیفته و اما فرایند دوم خوانش مقدار یک سنسور دما است که باید هر 1000 میلی ثانیه اتفاق بیفته.خب بریم سراغ برنامه نویسی. یکی از کدهایی که میشه نوشت به صورت زیر هست:

تا اینجای کار یک کد ساده داریم که میخوایم تحلیلش کنیم:

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

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

حالا یه سوال : به نظر شما اگه به جای دو فرایند ، 3 یا 4 یا n تا فرایند داشته باشیم،برای مثال:کنترل پمپ آب،کنترل المان های حرارتی گرمکن آب،کنترل میزان کلر آب و … که تاخیر زمانی هر کدوم از اونها هم یه جور باشه، کدی که به روش بالا نوشته بشه،خیلی کد شلوغی نیس . به نظرتون تغییر یا دیباگینگ چنین کدی سخت نیس.(به این روش برنامه نویسی که همه برنامه در یک حلقه(Loop) نوشته بشه روش سوپرلوپ میگن)

مثال 2:

حالا میخوام یه مثال کلی تر بزنم که به ظاهر ساده است!فرض کنید دو پروسه داریم که فرایند شماره 1 باید هر 100 میلی ثانیه اجرا بشه و خود فرایند 50 میلی ثانیه اجراش طول میکشه و فرایند شماره 2 نیز باید هر 100 میلی ثانیه اجرا بشه و زمان اجراش تقریبا صفر میلی ثانیه طول میکشه ولی اجراش هر 100 میلی ثانیه ضروری هست که برنامش به صورت زیر میشه:

بریم سراغ تحلیل کد:

> وقتی حلقه شروع میشه، ما فرض رو بر این میزاریم که زمان سپری شده صفره.بنابراین Process1 در t=0ms اجرا میشه و Process2 در t=50ms اجرا میشه.

>> در بار دوم اجرای حلقه Process1 در t=150ms اجرا میشه و Process2 در t=200ms اجرا میشه.

به خوبی در این مثال واضحه که پروسه شماره 2 که انجامش هر 100 میلی ثانیه ضرورری بود، هر صد میلی ثانیه اجرا نمیشه در صورتی که در RTOS به سادگی میتوان این کار را انجام داد.

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

خب یه همچنین دلیلی میتونه انگیزه خوبی باشه تا ملت برن سراغ کانفیگ یه سیستم عامل کوچیک و جمع و جور برای مدیریت برنامشون روی میکروکنترلر😊😊

شاید برای شما مفید باشد:

تا اینجا کار فهمیدیم چرا میکرو به سیستم عامل نیاز داره اما کجاها میشه که این سیستم عامل باید RealTime یا به عبارت دیگه بلادرنگ باشه؟برای درک بهتر این مطلب میخوام یه مثال دیگه براتون بزنم:

مثال 3:

فرض کنید پروژه ای به ما پیشنهاد شده که به طور کلی میتوان گفت سیستم مانیتورینگ وضعیت یک خودرو میباشد که به قرار زیر است:

  1. پایش دمای موتور خودرو و هشدار دادن به موقع افزایش بیش ار حد دما
  2. خوانش سرعت خودرو و نمایش آن
  3. خوانش بنزین باقی مانده در باک خودرو

خب همین طور که کارفرما داره توضیح میده و ما هم داریم تو ذهنمون تجزیه و تحلیل میکنیم که چه آشی برای این پروژه بپزیم،به یک باره کارفرما با بیانی شیوا و رسا می فرمایند: “میخوام این کارا به صورت همزمان( بخوانیم موازی(Paraller) ) انجام بشه”

به شخصه خودم تا قبل این مفهوم ، همزمان انجام شدن کارها رو فقط صفر و یک میدیدم یعنی یا پروسه ها به صورت همزمان اتفاق میفته یا نه؟ پس به کارفرما پیشنهاد میدادم که بره سراغ یک گزینه خاص به نام FPGA😒

شاید برای شما مفید باشد: آموزش FPGA

اما باید خدمتتون عرض کنم که RTOS به ما یاد میده که اینطور سوال کنیم که “اجرای فرایند ها به چه میزان همزمانی نیاز داره؟” و با پاسخ به این سوال میفهمیم که برای انجام این پروژه STM32 یا میکروکنترلرهای دیگه هم میتونن ایفای نقش کنن اما چطور میشه CPU که در واحد زمان بیشتر از یک کار رو نمیتونه انجا بده،چند تا فرایند رو به صورت همزمان یا تقریبا همزمان پیش ببره؟برای پاسخ به این سوال با ما در قسمت های بعدی همراه باشید.

به طور خلاصه میتوان گفت که مجموع کارهایی که یک سیستم عامل Free RTOS انجام میده به قرار زیر است:

 

آموزش RTOS با STM32 قسمت 0: مقدمه

خب حالا که ضرورت RTOS رو فهمیدیم باید در کنارش بگم قطعا برنامه نویس هایی هستند که میتونن با تکنیکهایی که بلدن پروژه های زیادی را بدون مشکلی پیش ببرن اما برای پروژه های بزرگ روش سوپرلوپ که در مثال های یک و دو نمونه کدهاش رو دیدیم اولین گزینه روی میز هست اما بهترین گزینه نیس.

 

پاسخ به سوالات شما در رابطه با دوره آموزشی RTOS

خب در انتها میخوام به برخی از سوال های احتمالی شما در رابطه با روند این سری آموزشی پاسخ بدم:

سرفصل های آموزش چیا هست و آموزش به چه صورتی پیش میره؟

هر قسمت از این آموزش با یک یا چند سوال و یک یا چند سرنخ شروع میشه و ما تلاش میکنیم تا پاسخ این سوالات رو به کمک سرنخ ها پیدا کنیم. این آموزش به طور کلی به دو بخش تقسیم میشه:

  1. هر آن چیزی که باید برای شروع RTOS یاد بگیرید؟؟؟!!!
  2. آموزش نوشتن یک سیستم عامل RTOS به صورت پایه ای

در این آموزش کدوم سری از میکروکنترلرهای stm32 استفاده میشه؟

باید گفت که از تمامی سری های میکروکنترلرهای stm32 تقریبا میشه استفاده کرد اما در برخی از اونها ممکنه یکم کار سخت بشه اما شما میتونید یکی از بردهای رایج در بازار مثل Bluepill که معرف حضور خیلی از دوستان هست رو تهیه کنید.

آموزش RTOS با STM32 قسمت 0: مقدمه

این آموزش تحت ویندوزه دیگه؟

این آموزش تحت سیستم عامل لینوکس(یکی از توزیع های debian base مانند Ubuntu) انجام میشه اما کسایی که نمیتونن از ویندوز دل بکنن هم نگران نباشن.مایکروسافت قابلیتی به نام WSL(Windows Subsystem for Linux) به ویندوز اضافه کرده که میتونه محیط ترمینال توزیع های مختلف سیستم عامل لینوکس رو در ویندوز شبیه سازی کنه که در ادامه نصب و راه اندازی اون رو میگم.

آموزش RTOS با STM32 قسمت 0: مقدمه

 

آموزش نصب و راه اندازی WSL

 

مرحله 1: در ابتدا باید نسخه ویندوز را اگر در ویندوز 11 هستید بررسی کنید.نسخه ویندوز شما باید از 22000.0 بالاتر باشد.

آموزش RTOS با STM32 قسمت 0: مقدمه

مرحله 2:خب حالا که از ورژن ویندوز مطمئن شدیم باید ویژگی های Virtual Machine Platform و Windows Hypervisor Platform و Windows Subsystem for linux را از Windows Feature فعال کنیم.برای این کار مراحل زیر را دنبال کنید:

    1. ابتدا وارد Control Panel می شویم.
    2. سپس وارد قسمت Program و سپس Program & Feature میشویم.
    3. حالا از قسمت سمت چپ این صفحه وارد گزینه ی Turn Windows features on or off میشویم.
    4. حالا با اسکرول کردن به سمت پایین گزینه های گفته شده در بالا رو انتخاب می کنیم و سپس تغییرات رو OK میکنیم.

آموزش RTOS با STM32 قسمت 0: مقدمه

مرحله 3:حالا باید وارد Microsoft Store شویم و نرم افزار Windows Subsystem for Linux Preview را دانلود و نصب کنیم یا میتونید در منوی استارت ویندوز PowerShell Windows را به صورت Run as Administrator باز کرده و در آن از دستور زیر استفاده کنید:

مرحله 4:خب حالا با نصب wsl  میتونید یکی از نسخه های لینوکسی که در لیست آن وجود دارد را نصب و اجرا کنید.برای دریافت لیست لینوکس های قابل پشتیبانی از دستور زیر استفاده کنید:

مرحله 5:در این مرحله باید از Microsoft Store یکی از توزیع های لینوکس مانند Ubuntu را دانلود و نصب کنید یا در ترمینال یکی از توزیع های نمایش داده شده در لیست دستور مرحله 4 را با دستور زیر استفاده کنید:

 آموزش RTOS با STM32 قسمت 0: مقدمه

مرحله 6: حالا پس از نصب میتونید توزیع نصب شده رو از منوی استارت ویندوز باز کنید که در این صورت از شما نام کاربری جدید و رمز عبور میخواد و پس از وارد کردن آنها ترمینال لینوکس شما آماده است😊

آموزش RTOS با STM32 قسمت 0: مقدمه

سوال 4: این آموزش با چه کامپایلری انجام میشه؟

در این آموزش از کامپایلر GNU GCC استفاده میکنیم و برای ادیت کدهامون هم از یکی از ادیتورهای معروف مانند VScode یا eclipse استفاده میکنیم.حالا چرا ؟ دلیلش رو در اینجا میتونید ببینید که به طور مفصل توضیح داده شده.

آموزش RTOS با STM32 قسمت 0: مقدمه

در پایان حال و روز خوشی را برای شما آرزومندم و امیدوارم که تا پایان این مجموعه آموزشی همراه ما باشید.

اطلاعات
10
0
لینک و اشتراک
profile

Metech

متخصص الکترونیک

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

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

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

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

ارسال مقاله
become a writer

نویسنده شو !

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

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

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

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

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

دیدگاه ها

profile
امیر مح گفت :
۱۴۰۳-۰۸-۰۳ ۱۰:۵۸

آیا نمیشه wsl رو روی ویندوز 10 نصب کرد؟

profile
Mahdi.h   گفت :
۱۴۰۳-۰۸-۰۷ ۱۰:۱۲

سلام. میشه

profile
مصطفی گفت :
۱۴۰۲-۰۵-۰۳ ۱۵:۲۱

خیلی عالی. منتظر ادامه هستیم.

profile
حسین رزمجویی گفت :
۱۴۰۲-۰۱-۲۲ ۲۲:۳۰

سلام
اول از همه تشکر ویژه از مهندس Metech بابط شروع این اموزش عالی و کار بردی
شتکر ویژه تر از سایت و رسانه سیسوگ برای اموزش های عالی و درجه یکشون
به عنوان فردی که عاشق یاد گیری هست و منابع فارسی زیادی رو دنبال می کنه سیسوگ به جرات یک سرو گردن بالاتر از رسانه های دیگر اموزشی تا الان برای بنده بوده .
امیدوارم این اموزش ادامه دار باشید.

profile
مجید گفت :
۱۴۰۲-۰۱-۱۵ ۰۰:۰۹

سلام
اگه بخواهیم لینوکس نصب کنیم برای این منظور، شما چه توزیعی رو پیشنهاد میدید؟

profile
Metech گفت :
۱۴۰۲-۰۲-۰۹ ۱۰:۵۳

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

profile
داستایوفسکی گفت :
۱۴۰۲-۰۱-۱۴ ۲۰:۱۵

یا ابر فرض
here comes sisoog!
مرسی

profile
Metech گفت :
۱۴۰۲-۰۱-۱۸ ۱۴:۳۶

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

profile
محمد گفت :
۱۴۰۲-۰۱-۱۲ ۱۶:۰۵

آخ جون!!… چه کیفی بکنیم!

profile
Sisoog Admin گفت :
۱۴۰۲-۰۱-۱۴ ۰۹:۲۸

به زودی منتظر قسمت های جدید این آموزش باشید

become a writer

نویسنده شو !

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

ارسال مقاله
become a writer

نویسنده شو !

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

ارسال مقاله