سیستم های امبدد یا نهفته طیف گسترده ای از برنامه های کاربردی را در کلیه دستگاههای الکترونیکی اطراف ما دارند، نمونه بارز آن مینی لپ تاپ است که می توانیم آن را در همه ی زمان ها همراه خود حمل کنیم، بله من به تلفنهای همراهمون اشاره می کنم. در این جلسه به بررسی سیستمعامل بیدرنگ (RTOS) و استفاده از آن در امبدد سیستمها میپردازیم.
هنگامی که بخواهیم سیستم امبدد را به تصویر بکشیم، همیشه برای این کار از ترکیبی از سخت افزار مانند میکروکنترلر یا میکروپروسسور و نرم افزاری مانند سفت افزار(فریمور) یا سیستم عامل استفاده میکنیم. سیستم عامل پایه تمام دستگاه های الکترونیکی را تشکیل می دهد و بخش سخت افزار و نرم افزار را در هر دستگاه الکترونیکی مدیریت می کند. اصطلاح سیستم عامل فقط برای رایانه های یونیکس و ویندوز محدود نمی شود بلکه می تواند در مورد میکروکنترلرها نیز گسترش یابد. یکی از این سیستم عامل ها که می تواند در میکروکنترلرها به کار گرفته شود، سیستم عامل بی درنگ نامیده می شود. در اینجا با (Real time operating system(RTOS و برنامه های کاربردی سیستم عامل بی درنگ آشنا می شویم.
سیستمعامل بیدرنگ یا RTOS چیست؟
سیستم عامل بی درنگ که به طور گسترده ای با نام RTOS شناخته می شود، امکان پاسخگویی به کارهای ورودی و انجام کامل وظایفی که بر عهده دارد، در مدت زمانی خاص را براساس اولویت، در اختیار کنترل کننده قرار می دهد. در نگاه اول، یک RTOS ممکن است مثل هر برنامه امبدد یا فریمور به نظر برسد، اما بر اساس ساختار یک سیستم عامل ساخته شده است. از این رو، مانند همه ی سیستم عامل ها، RTOS می تواند چندین برنامه را همزمان با پشتیبانی از مالتی پلکسینگ اجرا و اداره کند. همانطور که می دانیم هسته پردازنده یا کنترلر فقط می تواند یک دستورالعمل واحد را در یک زمان انجام دهد، اما RTOS چیزی به نام برنامه زمانبندی دارد که تصمیم می گیرد کدام دستورالعمل را برای اولین بار اجرا کند، بنابراین سایر دستورالعمل های برنامه های مختلف را یکی پس از دیگری اجرا می کند. از لحاظ فنی، RTOS فقط با اجرای یک دستورالعمل موازی در یک زمان، توهم مالتی تسکینگ را ایجاد می کند.
این باعث می شود RTOS، برای برنامه های مختلف در دنیای واقعی مناسب باشد. در RTOS، هنگامیکه هر ورودی بصورت منطقی ارزیابی شد، خروجی مربوطه نمایش داده می دهد. این منطق نه تنها بر اساس خلاقیت منطقی بلکه در مدت زمانی که کار خاصی انجام میپذیرد، اندازه گیری می شود. اگر سیستم در آن زمان خاص از انجام وظیفه خودداری کند، این عمل به عنوان خطای سیستم شناخته می شود.
چرا RTOS ؟؟
- در دسترس بودن درایورها: درایورهای بسیاری در داخل RTOS وجود دارد که به ما امکان استفاده مستقیم از آنها را برای برنامه های مختلف می دهد.
- فایل های زمان بندی شده: RTOS از زمان بندی مراقبت می کند، بنابراین به جای تمرکز روی زمان بندی هر سیستمی می توانیم به سادگی روی برنامه توسعه یافته متمرکز شویم. به عنوان مثال، هنگامی که مجموعه ای از شرایط با یکدیگر برخورد داشته باشند، از فایل های زمانبندی کار برای تعریف اقدامات خاص استفاده می شود. RTOS از الگوریتم های پیشرفته خاصی برای زمان بندی حالت های معمولی در حال اجرا، آماده و بلاک شده برنامه استفاده می کند که با توجه به اینکه RTOS در حال اجرا است، تمرکز بیشتری بر روی توسعه برنامه به جای زمان بندی دارد.
- انعطاف پذیری RTOS در اضافه کردن ویژگی ها: در RTOS، حتی اگر مایل به اضافه کردن ویژگی های جدید باشید، می توانید به راحتی و بدون هیچگونه مزاحمتی آن را در ویژگی های موجود اضافه کنید.
تفاوت بین سیستم عامل بی درنگ (RTOS) و سیستم عاملهای دیگر
تفاوت های مختلفی بین سیستم عامل بی درنگ و سیستم عامل هایی مانند ویندوز، لینوکس و غیره وجود دارد. بیایید با کمک جدولی که تنظیم شده نگاهی به یک به یک آنها بیندازیم:
-
سیستم عامل بی درنگ
(RTOS)
سیستم عامل
شماره
فرآیندها بر اساس ترتیب اولویت آنها اجرا می شوند.
تقسیم بندی زمان اساس اجرای فرآیندها در سیستم عامل است.
1
سیستم بی درنگ به گونه ای طراحی شده است که اجرای آن برای مشکلات دنیای واقعی است.
سیستم عامل به عنوان واسط بین سخت افزار و نرم افزار یک سیستم عمل می کند.
2
مدیریت حافظه کاری دشوار است زیرا بر اساس حافظه مسئله بی درنگ، اختصاص داده شده، که خود مسئله بسیار مهمی است.
مدیریت حافظه هنگام اجرای سیستم عامل موضوعی مهم نیست.
3
برنامه های کاربردی: کنترل هواپیما یا راکتور هسته ای، تجهیزات تحقیقاتی علمی.
برنامه های کاربردی:ادارات، دیتا سنتر، سیستم خانه و غیره.
4
مثال: Vx Works ، Windows CE، QNX
مثال: ویندوز، لینوکس،os
5
انواع RTOS
ما می توانیم سیستم عامل بی درنگ را عمدتاً به سه قسمت تقسیم بندی کنیم:
- 1سیستم عامل بی درنگ سخت
- 2سیستم عامل بی درنگ نرم
- 3. سیستم عامل بی درنگ ثابت
1. سیستم عامل بی درنگ سخت
بیایید درک این نوع سیستم عامل را با استفاده از یک مثال شروع کنیم، مثال زنده آن سیستم کنترل پرواز است. در سیستم کنترل پرواز، وظایفی که توسط خلبان در قالب ورودی انجام می گیرد باید به موقع اجرا شود. در سیستم عامل بی درنگ سخت، خرابی های سیستم قابل تحمل است. ویژگی های RTOS سخت عبارتند از:
- اجرای به موقع کارها
- خطا در Deadline مهلک است.
- تضمین زمان پاسخ به مسئله بدتر
- میتواند به خطای سیستم منجر شود.
2. سیستم عامل بی درنگ نرم
ساده ترین مثال استفاده از RTOS نرم، بانک اطلاعاتی آنلاین است، زیرا در RTOS نرم پارامتری که بیشتر نگران آن هستیم سرعت است. از این رو، ویژگی های RTOS نرم عبارتند از:
- کارها باید هر چه سریعتر انجام شود.
- تاخیر دراتمام کارها نامطلوب است اما مهلک نیست.
- احتمال تخریب عملکرد وجود دارد.
- نمیتواند منجر به خطای سیستم شود.
3. سیستم عامل بی درنگ ثابت
بازوی روبات که برای انتخاب اشیاء استفاده می شود، می تواند یکی از نمونه های RTOS ثابت در نظر گرفته شود. در اینجا، در RTOS ثابت حتی اگر روند به تاخیر بیفتد، قابل تحمل است.
مزایای استفاده از RTOS
موارد زیر مزایای استفاده از RTOS در برنامه های شما است.
- ▪ مشکلی در زمینه فایر وال وجود ندارد.
- ▪ پهنای باند پائین برای عملکرد بهتر
- ▪ امنیت و حفظ حریم خصوصی بهبود یافته
- ▪ کم هزینه بودن، به دلیل کاهش قطعات سخت افزاری و نرم افزاری که برای توسعه و گسترش استفاده می شود.
برخی از موضوعات اصلی مربوط به RTOS
علیرغم داشتن مزایای زیاد RTOS در دنیای واقعی، معایب مختلفی نیز دارد. در اینجا برخی از موضوعات مرتبط با آن مورد بحث قرار گرفته است.
از وقفه ها معمولاً در برنامه ها برای متوقف کردن برنامه در حال اجرا استفاده می شود تا روند برنامه به قسمت مهم دیگری از کد تغییر یابد. از آنجا که در RTOS زمان پاسخ سریع مورد نیاز است توصیه می شود که وقفه ها را برای حداقل زمان ممکن غیرفعال کنید.
از آنجا که، کرنل نیز باید برای رویدادهای مختلف پاسخ دهد، لازم است که کرنل اندازه کمتری داشته باشد تا بتواند به درستی در رام جای بگیرد.
ویژگی های پیشرفته RTOS باید حذف شود زیرا مفهومی از حافظه مجازی در آن وجود ندارد.
نحوه استفاده از RTOS
اکنون که می دانید RTOS چیست و در کجا می توانید از آن استفاده کنید، برای شروع کار با RTOS، معمولاً باید از Tornado یا محیط توسعه FreeRTOS استفاده کنید. اجازه دهید نگاهی کوتاه به هر دو محیط توسعه بیندازیم.
Tornado – VxWorks
Tornado یک محیط یکپارچه برای توسعه برنامه های کاربردی RTOS امبدد مربوط به بی درنگ بر روی سیستم هدف است. Tornado از سه عنصر اساسی تشکیل شده است که در زیر ذکر شده است.
- 1. VxWorks
- 2. ابزارهای ساخت برنامه (کامپایلر و برنامه های مرتبط)
- 3. محیط توسعه یکپارچه، که می تواند برنامه VxWorks را مدیریت، اشکال زدایی و نظارت کند.
VxWorks یک سیستم عامل بی درنگ مبتنی بر شبکه است. برای شروع با VxWorks، باید یک کیت توسعه (هدف) و یک ورک استیشن داشته باشیم. در اینجا، کیت توسعه چیزی نیست جز هاست یا مؤلفه هدف که با سرور هدف در ورک استیشن ارتباط برقرار می کند. هدف در اینجا ابزارهای Tornado مانند shell و debugger را به هم متصل می کند. بنابراین، با استفاده از VxWorks، سیستم ها را پیکربندی و می سازیم، در حالی که Tornado یک رابط کاربری گرافیکی و ابزار خط فرمان برای پیکربندی و ساخت در اختیار ما قرار می دهد.
نکته بسیار مهمی که در اینجا مشاهده می شود این است که در حین نصب Tornado در سیستم شما، مسیر نصب باید از آدرس زیر استفاده کند:
installDir / target به عنوان مثال اگر می خواهید Tornado خود را در C: \ tornado روی ویندوز قرار دهید، نام کامل مسیر باید با این عنوان “installDir / target / h / vxworks.h” مشخص شود.
در اینجا، ما در مورد جزئیات آثار Vx به تفصیل بحث نخواهیم کرد اما در مورد چگونگی توسعه به وسیله ++C در Vxworks با استفاده از WindRiver GNU بحث خواهیم کرد.
WindRiver GNU به ما در ارائه تجزیه و تحلیل گرافیکی در مورد وقفه در حین اجرا و همچنین گزارش استفاده از حافظه کمک می کند.
به عنوان مثال، تصویر بالا در مورد WindRiver تعداد پردازنده مرتبط با اولویت تسک ها (tLowPri & tHighPri) را توضیح می دهد. حالت آماده به کار یعنی خط سبز رنگ مدت زمانی را نشان می دهد که پردازنده در حالت کار خود نباشد، که بعد از هر چند ثانیه مشاهده می شود.
t1، t7، t8 & t9 چیزی جز پردازنده های مختلف مورد استفاده نیست. در اینجا، ما فقط پردازنده t7 را انتخاب می کنیم.
از این رو، این Windriver قادر به فراخوانی هر دو زیر برنامه های VxWorks و ماژول برنامه است. می توانید برنامه Windriver را راه اندازی کنید و یا نوار ابزار Tornado را باز کرده (-> i button) و سپس روی منو کلیک کرده و در انتها روی shell کلیک کنید. در آخر، در خط فرمان این الگو را تایپ کنید “windsh target server<”. اکنون برای برنامه نویسی با استفاده از ++C، مهم است که INCLUDE_CPLUS_DEMANGLER را وارد کنید. این مؤلفه demangler به نمادهای Shell هدف اجازه می دهد تا اشکال قابل خواندن برای انسان از نام های نمادهای ++C را برگردانند. قبل از بارگیری ماژول ++C برای Vxworks، فرآیند معروف به munching را دنبال کنید. در اینجا، munching به مرحله اضافی پردازش هاست اشاره دارد.
برنامه ++C را کامپایل کنید و برای مثال فایل hello.cpp را دریافت کنید. بعداً آن را اجرا کنید تا بر روی .o تکمیل شود و فایل ctdt.c تولید شده را کامپایل کنید. علاوه بر این، برنامه را با ctdt.o پیوند دهید تا ماژول قابل دانلود، hello.out را در VxWorks تولید کنید. خروجی پس از اجرای این VxWorks یک پرونده خواهد ساخت که در برخی از هدف ها از آن استفاده خواهد کرد.
Free RTOS
به طور کلی، هر زمان که با RTOS شروع می کنیم، معمولاً Vx Works RTOS را ترجیح می دهیم. اما، در اینجا مختصراً در مورد Free RTOS بحث خواهیم کرد، که مبتدیان نیز می توانند از مفهوم سیستم عامل بی درنگ استفاده کنند. Free RTOS توسطRichard Barry و تیم FreeRTOS توسعه یافته است، همچنین به وسیله Real time engineers ltd شخصی سازی شده است اما استفاده از آن رایگان است و با کلیک روی لینک زیر می توانید به سادگی آن را دانلود کنید.
دانلود Free ROTS
خرین نسخه Free RTOS که در زمان استفاده از این مقاله استفاده می شود، نسخه 10 است که با عنوان FreeRTOS V10 شناخته شده است.
بزرگترین مزیت Free RTOS که از RTOS های دیگر آن را برتر می کند مستقل بودن پلتفرم آن از نظر سخت افزاری است یعنی کد c که ما برای اجرای یک سیستم عامل از آن استفاده خواهیم کرد می تواند بر روی پلتفرم های مختلف با معماری متفاوت اجرا شود. بنابراین صرف نظر از اینکه از 8051 میکروکنترلر استفاده می کنید یا جدیدترین میکروکنترلر ARM، کدی را که به همراه فرایند اجرای آن نوشتید برای هر دو مشابه خواهد بود.
بسیاری از مزایای دیگر استفاده از Free RTOS نسبت به Vx Works و سایر ابزارهای کاربردی RTOS وجود دارد. برخی از آنها می توانند چنین تعریف شوند:
- 1. امکان آزمایش آسانتر را می دهد
- 2. مفهوم قابلیت استفاده مجدد از کد را ترویج می کند
- 3. زمان بیکار کمتر
- 4. قابلیت نگهداری آسان
- 5. اطلاعات زمان بندی را خلاصه می کند
همچنین کرنل پایه، که در آن کرنل به مولفه اصلی یک سیستم عامل که در Free RTOS وجود دارد اشاره می کند، استفاده از آن را برای کاربردهای مختلف میسر می کند. از آنجا که پیوستن ماژول های توسعه یافته بر روی سیستم عامل ها آسان است، تا برنامه های کاربردی بیشتری را دریافت کنید پس RTOS قدرتمندتر می شود.
یکی از نمونه های استفاده از Free RTOS را می توان با استفاده از مفهوم ترکیب Free RTOS با Nabto توضیح داد. Nabto یک دیوایس وب رایگان است که از آن برای انتقال اطلاعات از دیوایس به مرورگر استفاده می شود.
بنابراین در ترکیب Free RTOS با Nabto، آن را به یک قطعه کوچک از کد C همانطور که در شکل a توضیح داده شده، تبدیل می کند. این روزها اینترنت اشیا (IOT) در حال فراگیر شدن است و هر دستگاه IOT که به آن دسترسی پیدا خواهیم کرد، یک URL منحصر به فرد از طریق اینترنت دارد و این فناوری به پهنای باند ایمن و بسیار کم امکان اتصال پوینت تو پوینت را می دهد. در صورت عدم اتصال به اینترنت، این ترکیب می تواند موثر باشد. بنابراین، Free RTOS هنگام پیاده سازی IOT یک گزینه محبوب است.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.
بسیار عالی و مفید بود
متشکرم بابت توضیحات تون