فری‌آرتوس

سیستم عامل فری آرتی‌اواس  یک هسته سیستم‌عامل بی‌درنگ برای سامانه‌های نهفته است و از ۳۵ نوع معماری پلت‌فرم میکروکنترلر پشتیبانی می‌کند.  این سیستم‌عامل تحت پروانه MIT توزیع شده‌است.

پیاده‌سازی 
FreeRTOS طراحی شده‌است تا ساده و کوچک باشد. هسته اصلی تنها از ۳ فایل با فرمت c تشکیل شده‌است. به منظور سادگی و سهولت در تغییر عمدتاً به زبان c نوشته شده‌است، اما تعداد کمی توابع به زبان ماشین (اسمبلی) نیز در نقاطی از برنامه که مورد نیاز بوده استفاده شده‌است. (عمدتاً در روال‌های زمانبند معماری‌محور)

فری‌آر‌تی‌او‌اس روش‌هایی را برای چندریسه‌ای (رشته‌های اجرایی همزمان)، چندوظیفگی، نشان‌برها (سمافورها) و شمارنده‌های نرم‌افزاری فراهم می‌آورد. یک حالت بدون تیک (بدون وقفه شمارنده) نیز برای کاربردهایی با مصرف انرژی کم تهیه شده‌است. اولویت‌بندی نخ‌ها (رشته‌های پردازشی) نیز پشتیبانی می‌شود. کاربردهای FreeRTOS می‌توانند به‌صورت کاملاً ایستا تخصیص یابند.

از سوی دیگر، اجزای RTOS می‌توانند به‌صورت پویا با ۵ روش تخصیص حافظه فراهم شده اختصاص یابند:
 فقط اختصاص بده
 با یک الگوریتم ساده و سریع اختصاص بده و آزاد کن
 یک الگوریتم اختصاص و رهاسازی با پیچیدگی بیشتر اما سریع‌تر با هماهنگی حافظه
 یک روش جایگزین برای روش پیچیده‌تر که شامل هماهنگی حافظه می‌شود و همچنین به یک هیپ اجازه تجزیه و ذخیره شدن در چند مکان حافظه را می‌دهد
 کتابخانه تخصیص و رهاسازی c با برخی محافظت‌های طرد متقابل

هیچ ویژگی پیچیده‌تر دیگری که معمولاً در سیستم‌های عامل مانند لینوکس و ویندوز مثل درایورهای دستگاه‌های متصل مدیریت حافظه پیشرفته، حساب‌های کاربری و شبکه دیده می‌شوند، وجود ندارند. تأکید روی فشرده (خلاصه و سبک) بودن و سرعت اجرا است. FreeRTOS را می‌توان به عنوان یک کتابخانه نخ (رشته پردازشی) تصور کرد، بیشتر از آنکه یک سیستم عامل باشد، اگر چه رابط خط دستور (command line) و POSIX-like افزونه‌های مربوط به ورودی/خروجی موجود هستند. همچنین توسط کتابخانه‌های مشهوری مانند SSL/TLS نیز مثل WolfSSL پشتیبانی می‌شود.

FreeRTOS روش چند نخی (چند رشتهٔ پردازشی) را با فراخوانی رویه تیک نخ (رشته پردازشی) در زمان‌های کوتاه منظم توسط برنامه میزبان پیاده‌سازی می‌کند. رویه تیک نخ (رشتهٔ پردازشی) وظیفه‌ها را بر اساس اولویت و روش زمانبندی Round-Robin تغییر می‌دهد (یا بین آن‌ها جابه‌جا می‌شود). این زمان دوره‌ای منظم معمولاً از ۱/۱۰۰۰ ثانیه تا ۱/۱۰۰ ثانیه است که توسط وقفه یک شمارنده سخت‌افزاری انجام می‌شود، اما این زمان دوره‌ای معمولاً با توجه به کاربرد مورد نظر تغییر می‌کند.

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

ویژگی‌های کلیدی 
 کتاب و دستورالعمل‌های مرجع
 اشغال کم حافظه، سرریز کم و سرعت اجرای بالا
 امکان بدون تیک (بدون وقفه) برای کاربردهای با مصرف انرژی کم
 ایجاد شده هم برای توسعه‌دهندگان متخصص و توسعه‌دهندگان تازه‌کار برای اهداف تجاری
 زمانبند هم برای عملیات انحصاری و هم عملیات شراکتی می‌تواند پیکربندی شود
 پشتیبانی از روال‌های عادی همکاری‌ها (coroutine) در FreeRTOS (عملیات‌های ساده و سبک با استفادهٔ محدود از فراخوانی پشته هستند)
 پشتیبانی از پیگیری عملیات از طریق روش‌های کلی ردگیری. ابزارهای مانند tracealyzer که توسط شریک تجاری FreeRTOS، یعنی Percepio ارائه شده، می‌توانند رفتار زمان اجرا سیستم‌های بر اساس FreeRTOS را ضبط و نمایش دهد. این شامل زمانبندی وظایف و فراخوانی هسته سیستم برای عملیات‌های سمافورها و صف می‌شود. traceatyzer یک نسخه رایگان نیز ارائه می‌دهد که ویژگی‌های محدودی را در اختیار قرار می‌دهد.

معماری‌های پشتیبانی شده 

 Altera Nios II
 ARM architecture
 ARM7
 ARM9
 ARM Cortex-M
 ARM Cortex-A
 Atmel
 Atmel AVR
 AVR32
 SAM3 / SAM4
 SAM7 / SAM9
 SAMD20 / SAML21
 Cortus
 APS1
 APS3
 APS3R
 APS5
 FPS6
 FPS8
 Cypress
 PSoC
 Energy micro
 EFM32
 Espressif
 ESP8266ex
 ESP32
 Fujitsu
 FM3
 MB91460
 MB96340
 Freescale
 Coldfire V1 / V2
 HCS12
 Kinetis
 IBM
 PPC404 / PPC405
 Infineon
 TriCore
 Infineon XMC4000
 Intel
 x86
 8052
 Microchip Technology
 PIC18 / PIC24 / dsPIC
 PIC32
 Microsemi
 SmartFusion
 Multiclet
 Multiclet P1
 NXP
 LPC1000
 LPC2000
 LPC4300
 Renesas
 78K0R
 RL78
 H8/S
 RX600
 RX200
 SuperH
 V850
 Silicon Labs
 Gecko (ARM Cortex)
 STMicroelectronics
 STM32
 STR7
 Texas Instruments
 MSP430
 Stellaris
 Hercules (TMS570LS04 & RM42)
 Xilinx
 MicroBlaze
 Zynq-7000

مشتقات

Amazon FreeRTOS 
آمازون یک تعمیم از FreeRTOS را فراهم کرده‌است که با عنوان a:FreeRTOS مورد ارجاع قرار می‌گیرد. این یک FreeRTOS با کتابخانه‌هایی برای پشتیبانی از اینترنت اشیاء است. مخصوصاً برای سرویس‌های وب آمازون. از نسخه ۱۰٫۰٫۰ در ۲۰۱۷، آمازون نظارت بر کد FreeRTOS را بر عهده گرفته‌است. که شامل هرگونه بروزرسانی در هسته نیز می‌شود.

SAFERTOS 
SAFERTOS به عنوان نسخه تکمیل‌کننده FreeRTOS توسعه داده شد، با عملکرد مشابه اما طراحی شده به‌طور خاص برای پیاده‌سازی‌های با امنیت حیاتی. FreeRTOS تحت پوشش HAZOP قرار گرفت و نقاط ضعف آن شناسایی و برطرف شد. نتیجه در دورهٔ حیات توسعه کامل IEC 61508 منتشر شد که بالاترین سطح برای یک بخش فقط سخت‌افزاری محسوب می‌شود.

SAFERTOS توسط سیستم‌های بسیار یکپارچه WITTENSTEIN توسعه داده شد، با همکاری توسعه‌دهندگان اصلی بخش مهندسان بی‌درنگ در پروژه FreeRTOS. هر دوی FreeRTOS و SAFERTOS الگوریتم زمانبندی مشابه‌ای را استفاده می‌کنند، رابط کاربری مشابه‌ای دارند و در نتیجه بسیار مشابه هستند اما با اهداف متفاوتی توسعه داده شده‌اند. SAFERTOS فقط در زبان c توسعه داده شده تا ملزومات گواهی IEC61508 را تأمین کند.

SAFERTOS برای مطابقت با استانداردها می‌تواند به تنهایی در حافظه فقط خواندنی میکروکنترلر قرار گیرد. زمانی که در حافظه سخت‌افزاری پیاده می‌شود، که SAFERTOS فقط با پیکربندی اصلی و مورد تأیید قابل استفاده است. این به این معنی است که گواهی تأیید سیستم نیازی به بررسی مجدد هسته خروجی طراحی‌شان ندارند. SAFERTOS در حافظه فقط خواندنی بعضی از میکروکنترلر Stellaris از شرکت Texas وجود دارد. کد منبع SAFERTOS نیازی نیست تا به‌طور جداگانه سفارش داده شود. در این سناریوی مصرف یک فایل هدر c استفاده می‌شود تا توابع و واسط کاربری SAFERTOS به مکان‌هایشان در حافظه فقط خواندنی مرتبط شوند.

OPENRTOS 
OPENRTOS یک نسخه با مجوز تجاری از Amazon FreeRTOS است که توسط شرکت سیستم‌های بسیار یکپارچه WITTENSTEIN فروخته می‌شود. این محصول یک پشتیبانی را فراهم می‌آورد و به شرکت‌ها اجازه می‌دهد که از هسته و کتابخانه‌های Amazon FreeRTOS بدون گواهی a:FreeRTOS MIT استفاده کنند.

جستارهای وابسته 
 Embedded operating system

منابع

پیوند به بیرون 

ریزهسته‌ها
سرویس‌های وب آمازون
سیستم‌عامل‌های آرم
سیستم‌عامل‌های آزاد
سیستم‌عامل‌های بی‌درنگ
سیستم‌عامل‌های توکار
سیستم‌عامل‌های مبتنی بر ریزهسته