استفاده از RTOS در میکروکنترلرها
میکروکنترلرها عمدتا پردازنده های تک هسته ای هستند که در هر لحظه قادرند تنها یک دستور را اجرا کنند. حتما سبک کار کامپیوتر و سیستم عامل را دیده اید که قادر هستند در آن واحد چندین و چند کار را همزمان اجرا کنند. اما چطوری این کار را انجام می دهند؟ سیستم عامل با چه روش و منطقی کارها رو می تونه همزمان پردازش کنه؟
این تیپ سوالات چند سال پیش خیلی ذهنم رو مشغول کرده بود، و باعث شد زمان خوبی رو برای پیدا کردن جواب ها به این داستان اختصاص بدم. سبک سیستم عامل دید برنامه نویسیم رو به کلی متحول کرد و اثراتش فقط محدود به برنامه نویسی هم نبود!
خیلی جالبه که با استفاده از این روش، می تونیم پردازش های همزمان حتی روی میکروکنترلرها داشته باشیم. نکته ی جالب تر اینکه اکثر پروژه های امروزی بر پایه ی سیستم عامل های بلادرنگ نوشته می شوند!
اگر شما هم قصد دارید این لذت رو تجربه کنید و خودتون رو قدری آپدیت کنید در قالب یک کتاب الکترونیکی مطالبی رو برپایه سیستم عامل بلادرنگ freeRTOS و میکروکنترلر STM32 ارائه کردم. پس منتظر چی هستی؟!
پردازش همزمان
در نظر بگیرید که قصد داریم برنامه ای بنویسیم که کارهای ذیل را به صورت همزمان اجرا کند.
دریافت و ارسال اطلاعات بر روی باس USB و پردازش اطلاعات آن.
دریافت اطلاعات ورودی از طریق کیبرد متصل به دستگاه.
نمایش اطلاعات بدست آمده و پردازش شده بر روی LCD.
کنترل و پخش یک فایل صوتی.
کنترل پایه های ورودی/خروجی به صورت آنی جهت عملیات کنترلی.
ارتباط با انواع حافظه ها و سنسورها
و …
بنظر شما با استفاده از چه روشی می توانیم تمام این کارها را به صورت همزمان انجام دهیم؟
محدودیت های سبک کد زنی معمولی
روش معمولی یا bare metal ، پایه ای ترین روش برنامه نویسی میکروکنترلر هست، روشی که باهاش وارد دنیای برنامه نویسی میکروکنترلرها شدیم! اما یک مشکلی وجود داره و اون هم اینه که پروژه های امروزی پیچیده تر شدند و زمان ارائه ی محصول به بازار فاکتور خیلی مهمی در پروژه های استارتاپی هست!
پر واضح است که هر قفلی رو، کلیدی باز می کنه و کلید برنامه نویسی پروژه های امروزی، استفاده از روش RTOS و سیستم عامل است. وقتی با روش معمولی و غیر اصولی شروع به برنامه نویسی کنیم، پروژه بزرگ می شه ، بزرگ می شه، بزرگ می شه و درنهایت تبدیل به کلاف سر درگم می شه!
پروژه ای که دیگر خوانا نیست، قابل نگه داری نیست، قابل ارتقاء نیست! و اما راه حل چیست؟!
استفاده از سیستم عامل و درک روش کار سیستم عامل نوید بخش یک پایان موفق است.
بخشی از کتاب به قلم مرتضی زندی

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