سیستم عامل تعبیه شده یا سیستم عامل امبدد (embedded operating system) سیستم عاملی برای سیستم های امبدد یا سیستم های نهفته و یا به عبارتی سیستم های جاسازی شده است.

این نوع سیستم عامل معمولاً حداکثر کارآمدی و بازده را دارد و قابل اتکا نیز هست. داشتن حداکثر کارآمدی و بازده به قیمت از دست دادن بخشی از عملکرد و جزئیات که سیستم عامل‌های بزرگ‌تر ارائه می‌کنند تمام می‌شود؛ مانند عملکردهایی که ممکن است توسط برنامه‌های تخصصی استفاده نشود. این نوع سیستم عامل ممکن است بسته به روش استفاده شده برای انجام چند کار همزمان، اغلب به عنوان یک سیستم عامل بی درنگ یا RTOS در نظر گرفته شود.

در یک سیستم عامل تعبیه شده، دسترسی سخت افزار مورد استفاده به منابع مانند RAM و ROM را می‌توان بسیار محدود کرد. بنابراین طراحی توکار این سیستم عامل‌ها ممکن است که دامنه‌ای باریک به یک برنامه‌ی خاص بدهد تا تحت این محدودیت‌ها، کارکرد دلخواهی به دست آید. در راستای کسب منفعت بیشتر از قدرت پردازش CPU ، توسعه دهندگان (دِوِلوپرها) می‌توانند کدهای حیاتی و مهم را به زبان اسمبلی بنویسند. این زبان که روی ماشین کارایی بالایی دارد، به طور بالقوه می‌تواند به قیمت قابل حمل بودن و تداوم عمر موجب سرعت و از بین بردن وقایع تصادفی شود. در اغلب موارد، کل یک سیستم عامل تعبیه شده با یک زبان جا به جایی پذیر مانند C نوشته شده است.

تفاوت مهمی که میان اکثر سیستم عامل‌های تعبیه شده و سیستم عامل‌های رومیزی (دسکتاپ) وجود دارد این است که برنامه، از جمله سیستم عامل، معمولاً به طور یکپارچه به یک تصویر اجرایی مرتبط می‌شوند. یک سیستم عامل تعبیه شده بر خلاف یک سیستم عامل دسکتاپ، نمی‌تواند برنامه‌ها را لود و اجرا کند. این بدان معناست که سیستم فقط قابلیت اجرای یک برنامه یا برنامه های خاص از قبل تعیین شده را دارد.

امبدد سیستم (Embedded system) یا سامانه های نهفته و یا به عبارتی سیستم های تعبیه شده، سیستم های کامپیوتری با عملکردی مخصوص و هدفی مشخص هستند که در داخل یک سیستم مکانیکی یا الکتریکی بزرگ تر قرار می گیرند و اغلب دارای قیدهای رایانش بی درنگ (Real time Computing) می باشند.

این سیستم های تعبیه شده به عنوان بخشی از یک دستگاه کامل که شامل سخت افزار و قطعات مکانیکی می باشد عمل می کنند. سامانه های نهفته بسیاری از دستگاه هایی را که امروزه به طور متداول مورد استفاده قرار می گیرند کنترل می کنند. ۹۸درصد تمام ریزپردازنده ها به عنوان اجزایی از سامانه های نهفته تولید می شوند.

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

سامانه های نهفته مدرن، اغلب بر مبنای میکروکنترلر ها( CPU هایی با حافظه یکپارچه یا ارتباط های جانبی) ساخته می شوند اما استفاده از ریزپردازنده های معمولی ( با استفاده از چیپ های بیرونی برای حافظه و مدار های ارتباط جانبی) نیز به خصوص در سیستم های پیچیده تر متداول است. در هر دو حالت، پردازنده مورد استفاده ممکن است انواع مختلفی داشته باشد. پردازنده می تواند در دسته پردازنده های با کاربرد معمولی یا حتی در دسته  پردازنده هایی که از آن ها برای مقاصد خاص در دسته های خاصی از کارهای کامپیوتری استفاده می شود قرا ر بگیرد و یا حتی به صورت سفارشی برای کاربرد مورد نظر طراحی شود. یه دسته استاندارد متداول از پردازنده های اختصاصی، پردازشگر های سیگنال های دیجیتال(DSL) هستند.

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

سامانه های نهفته در طیف گسترده ای از وسایل، شامل ساعت های دیجیتالی و MP3 Player ها، سیستم های بزرگ و ایستا مانند چراغ های راهنمایی، کنترلر های کارخانه ها و سیستم های بسیار پیچیده مانند اتومبیل های هیبریدی، MRI و الکترونیک هوانوردی مورد استفاده قرار می گیرند. میزان پیچیدگی از مقداری بسیار کم، با یک چیپ میکروکنترلر تا بسیار پیچیده با چندین واحد نهفته، دستگاه های جانبی و شبکه هایی که در داخل یک شاسی یا محفظه بزرگ سوار می شوند، تغییر می کند.

تاریخچه سامانه های نهفته یا Embedded systems

یکی از اولین سامانه های نهفته شناخته شده،​ سیستم هدایت برنامه فضایی آپولو است که توسط Charles Stark Draper در آزمایشگاه ابزاربندی دانشگاه MIT طراحی شد. در شروع پروژه، سیستم  هدایت آپولو به عنوان خطرناک ترین قسمت در برنامه فضایی آپولو شناخته می شد زیرا در آن  از مدار های مجتمع که در آن زمان به تازگی  ساخته شده بودند استفاده شده بود تا با این کار بتوانند اندازه و وزن سیستم را کاهش دهند. یکی از اولین سامانه های نهفته ای که به صورت عمده تولید شد، سامانه هدایت خودکار D17 ساخت شرکت Autonetics بود که در سال ۱۹۶۱ در موشک  قاره پیمای Minuteman مورد استفاده قرار گرفت. زمانی که  موشک قاره پیمای  Minuteman II  در سال ۱۹۶۶ وارد مرحله تولید شد، سامانه D-17 توسط سامانه ای جدید جایگزین شد که در آن برای اولین بار، از تعداد بسیار زیادی مدار های مجتمع استفاده شده بود.

از آن زمان تا کنون، هزینه سامانه های نهفته کاهش پیدا کرده و توان پردازشی و کاربرد آن ها به طرز چشمگیری  افزایش یافته است. یک ریزپردازنده اولیه، به طور مثال Intel 4004، برای استفاده در ماشین حساب ها و دیگر سیستم های کوچک طراحی شده بود اما با این وجود، هنوزهم به حافظه خارجی و چیپ های پشتیبان نیاز داشت. در سال ۱۹۷۸، اتحادیه ملی تولید کنندگان محصولات مهندسی  استانداردی را برای میکروکنترلر های قابل برنامه ریزی- شامل هر نوع کنترلر کامپیوتری مانند کامپیوتر های تک بردی، کنترلر های عددی و رویداد محور – منتشر کرد.

با کاهش قیمت ریزپردازنده ها، جایگزین کردن آن ها به جای اجزای گران قیمت آنالوگ مانند پتانسیومترها و خازن های متغیر که دارای دکمه های بالا و پایین  و یا گیج قرائت بودند، حتی در کالاهای مصرفی نیز مقرون به صرفه شد. تا اوایل دهه ۸۰ میلادی، اجزای ورودی و خروجی سیستم نیز در همان چیپی که پردازنده در آن قرار گرفته بود تجمیع شدند و به این ترتیب میکروکنترلر ها به وجود آمدند. از میکرو کنترلر های در کارهایی استفاده می شود که در آن ها استفاده از یک کامپیوتر با کاربرد کلی بسیار پرهزینه باشد.

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

کاربردهای سامانه های نهفته یا Embedded systems

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

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

کالاهای الکترونیکی مصرفی شامل MP3 پلیر ها، تلفن های همراه، کنسول های بازی، دوربین های دیجیتال، GPS، گیرنده های دیجیتال و پرینتر ها هستند. لوازم خانگی مانند مایکروویو ها، ماشین های ظرف شویی و لباس شویی نیز دارای سامانه های نهفته ای هستند که باعث انعطاف پذیری و بازده بیشتر می شود و ویژگی های مختلفی را ارائه می کنند. سیستم های HVAC(گرمایش و تهویه هوا) پیشرفته نیز از ترموستات های تحت شبکه استفاده می کنند تا بتوانند دما را با دقت و بازده بیشتری کنترل کنند. در این حالت دما به صورت خودکار با توجه به زمان در طی یک روز و همچنین فصل مورد نظر تنظیم می شود. سیستم های اتوماسیون خانگی از شبکه های با سیم یا بدون سیمی(وایرلس) استفاده می کنند که از آن ها برای کنترل چراغ ها، دمای اتاق،  تجهیزات امنیتی خانه و دوربین های نظارتی و تجهیزات صوتی و تصویری استفاده می شود. در همه این تجهیزات از سامانه های نهفته ای استفاده شده که امکان تشخیص و کنترل پارامتر های مختلف را فراهم می کند.

سیستم های حمل و نقل  نیز، از حمل و نقل هوایی گرفته تا خودرو ها، به طور گسترده ای از سامانه های نهفته استفاده می کنند. هواپیما های جدید دارای تجهیزات الکترونیکی پیشرفته ای مانند سیستم های ناوبری اینرسیایی (IGS) و گیرنده های GPS هستند که خود این سیستم ها نیز به ملزومات ایمنی زیادی نیاز دارند. چندین نوع از موتور های الکترونیکی، شامل موتور بدون جاروبک دی سی، موتور های القایی و موتور های دی سی، از کنترل کننده های موتور الکترونیکی استفاده می کنند. خودرو های معمولی، برقی و یا هیبریدی نیز به طور روزافزون از سامانه های نهفته مختلفی استفاده می کنند تا بازده را به حداکثر رسانده و آلودگی را کم کنند. سایر سیستم های ایمنی خودرو شامل ترمز های ABS، سیستم کنترل پایداری الکترونیکی(ESC/ESP) ، سیستم کنترل رانش(TCS) و سیستم خودکار چهار چرخ متحرک  هستند.

از سامانه های نهفته  (امبدد سیستم) در تجهیزات پزشکی برای تحت نظر گرفتن علائم حیاتی- در گوشی های پزشکی الکترونیکی برای تقویت صدا ها- و در سیستم های تصویربرداری پزشکی مختلف(PET,SPECT,CT,MRI) برای بررسی قسمت های داخلی بدن بدون نیاز به وارد کردن تجهیزاتی خاص به داخل آن استفاده می شود. توان سامانه های نهفته ای که در داخل تجهیزات پزشکی قرار می گیرند اغلب توسط کامپیوتر های صنعتی تامین می شود.

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

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

ماژول های Wi-Fi نهفته، راهی ساده را برای برقراری ارتباط بی سیم با هر دستگاهی که از درگاه سریال استفاده می کند فراهم کرده اند.

مشخصات سامانه های نهفته (Embedded systems)

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

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

رابط کاربری در سامانه های نهفته

سامانه های نهفته دارای انواع مختلفی هستند. بعضی از این سامانه ها هیچگونه رابط کاربری ندارند و تنها به انجام یک وظیفه مشخص اختصاص داده شده اند؛ دسته ای دیگر دارای رابط های کاربری تصویری پیچیده ای هستند که بی شباهت به کامپیوتر های مدرن رومیزی و سیستم عامل آن ها نیست. سامانه های نهفته ساده از دکمه ها، چراغ های LED، LCD های گرافیکی یا کاراکتری(برای مثال HD44780 LCD) و منویی ساده استفاده می کنند.

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

برخی از سیستم ها می توانند رابط کاربری را از راه دور و با استفاده از یک درگاه سریال(مانند RS-232، USB، I²C و …) و یا اتصال شبکه (مانند Ethernet) ارائه دهند. این حالت چندین ویژگی در بر دارد: این کار باعث گسترش توانایی های سامانه نهفته می گردد، از هزینه های یک صفحه نمایش اختصاصی اجتناب می شود، BSP ( بسته پشتیبانی از برد) را ساده تر می کند و امکان ساخت رابط های کاربری غنی تر و بهتری را بر روی کامپیوتر های شخصی فراهم می کند. مثال خوبی از این حالت، ترکیب یک وب سرور نهفته در حال اجرا بر روی یک سامانه نهفته ( مثلا یک دوربین امنیتی IP Camera)  و یا یک روتر شبکه است. در این حالت رابط کاربری بر روی یک مرورگر بر روی یک کامپیوتر که به دستگاه متصل شده است نمایش داده می شود و به این ترتیب، نیازی به نصب هیچ گونه نرم افزار اضافی نیست.

پردازنده ها در سامانه های نهفته یا امبدد سیستم

پردازنده های نهفته را می توان در دو دسته کلی طبقه بندی کرد. ریزپردازنده های معمولی (μP) ابرای حافظه  و بخش های جانبی از مدار های مجتمع جدا استفاده می کنند. در میکروکنترلر ها (μC)  بخش های جانبی بر روی خود چیپ قرار گرفته اند و در نتیجه میزان مصرف توان و اندازه و هزینه آن ها کمتر است. بر خلاف بازار کامپیوتر های شخصی، در سامانه های نهفته از معماری های پردازنده متفاوت و مختلفی استفاده می شود زیرا در این حالت، نرم افزار به طور سفارشی برای یک کاربرد مشخص طراحی می شود و محصولی به شمار نمی رود که خود کاربر بتواند آن را نصب کند. در این پردازنده ها از هر دو معماری فون نویمان و هاروارد استفاده می شود و  پردازنده های RISC (کامپیوتر های کم دستور) و غیر RISC نیز در این سامانه ها دیده شده اند. طول کلمات از ۴ بیت تا ۶۴ بیت و فراتر از آن نیز تغییر می کند البته نوع بسیار متداول آن همان ۸ یا ۱۶ بیتی است. بیشتر معماری ها دارای متغیر ها و شکل های مختلفی هستند و بسیاری از آن ها توسط چند شرکت مختلف تولید می شوند.

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

بردهای کامپیوتری آماده

PC/104 و  +۱۰۴/PC نمونه هایی از استاندارد های فعلی برای برد های کامپیوتری آماده هستند که برای سامانه های نهفته کوچک و با حجم کم طراحی شده اند و اغلب دارای معماری x86 هستند. این برد ها اغلب نسبت به یک کامپیوتر شخصی معمولی از نظر فیزیکی کوچک هستند با این وجود نسبت به ساده ترین سامانه های نهفته(۸ یا ۱۶ بیتی) بسیار بزرگ به شمار می روند. آن ها اغلب از سیستم عامل های DOS، لینوکس، NetBSD و یا از یک سیستم عامل نهفته بی درنگ(Real Time) مانند MicroC/OS-II ، QNX یا VxWorks استفاده می کنند. در بعضی موارد این برد ها از پردازنده های  با معماری متفاوت نسبت به x86 استفاده می کنند.

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

با این وجود، بیشتر برد های نهفته از پیش ساخته شده،  بر مینای کامپیوتر های شخصی ساخته نشده اند و از گذرگاه(باس) های ISA یا PCI استفاده نمی کنند. زمانی که از یک پردازنده از نوع سیستم بر روی تراشه (system-on-a-chip) استفاده می شود، استفاده از گذرگاه های استاندارد که برای متصل کردن اجزای مجزا به کار می روند، مزیت خاصی ندارد و محیط ابزار های سخت افزاری و نرم افزاری  ممکن است بسیار متفاوت باشد.

یکی از طرح های متداول از یک ماژول کوچک سیستمی (به اندازه یک کارت ویزیت) با تراکم بالایی از چیپ های BGA مانند پردازنده های سیستم بر روی تراشه بر مبنای معماری ARM ،  بخش های جانبی، حافظه فلش خارجی برای ذخیره و حافظه دسترسی تصادفی پویا(DRAM) برای پردازش های در حال اجرا، استفاده می کند. تولید کننده چنین ماژولی معمولا نرم افزار بوت را نیز ارائه خواهد کرد و امکان انتخاب سیستم عامل از بین گزینه های مختلف( این گزینه ها معمولا شامل لینوکس نیز هست) و برخی انتخاب های دیگر را فراهم خواهد کرد. این ماژول ها می توانند توسط سازمان هایی که با مسائل تخصصی آزمایش کردن آن ها آشنا هستند، به صورت انبوه تولید شوند و در کنار مادربرد های سفارشی و قسمت های جانبی مخصوص به نوع کاربرد قرار بگیرند.

اجرا و پیاده سازی سامانه های نهفته نیز پیشرفت کرده و می توان آن ها را بر روی برد های آماده که بر مبنای پلتفرم هایی جهانی ساخته می شوند نصب کرد. این پلتفرم ها شامل Arduino و Raspberry Pi هستند اما به این دو محدود نمی شوند.

مدارهای مجتمع با کاربرد خاص (ASIC ) و مدار  های مجتمع دیجیتال برنامه‌پذیر (FPGA)
یکی از حالت های متداول برای سامانه های نهفته با حجم مدار های بالا، استفاده از سیستم بر روی تراشه (SoC) هایی است که دارای یک سیستم کامل شامل چندین پردازنده، کش و رابط های مختلف بر روی یک تراشه می باشد. از SoC ها می توان به صورت مدارهای مجتمع با کاربرد خاص (ASIC ) یا مدارهای مجتمع دیجیتال برنامه‌پذیر(FPGA) استفاده کرد.

بخش های جانبی امبدد سیستم یا سامانه های نهفته

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

  • رابط های ارتباط سریال(SCI) مانند RS-232، RS-422، RS-485 و غیره
  • رابط های ارتباط سریالی هماهنگ مانند I2C، SPI، SSC و ESSI
  • کارت های حافظه ( SD Cardها، Compact Flash ها و…)
  • شبکه ها مانند Ethernet و LonWorks
  • فیلدباس ها مانند CAN-Bus،  LIN-Bus، PROFIBUS
  • تایمر ها مانند حلقه گمشده فاز،  دریافت و مقایسه و واحد های پردازش زمان
  • ماژول های گسسته ورودی/خروجی یا  ورودی/خروجی های عمومی
  • مبدل های آنالوگ به دیجیتال و دیجیتال به آنالوگ
  • اشکال زدایی (debugging) مانند JTAG، ISP، ICSP، BDM، Port، BITP و  پورت های DB9

ابزار ها

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

  • در اشکال یاب ها و شبیه ساز های مدار
  • ابزار هایی برای افزودن checksum و یا کد های CRC به یک برنامه، تا سامانه نهفته بتواند صحت برنامه را بررسی کند.
  • توسعه دهندگان ممکن است برای سامانه هایی که از پردازش سیگنال های دیجیتال استفاده می کنند، از یک کارگاه ریاضی برای شبیه سازی قسمت های ریاضی آن استفاده کنند.
  • مدل سازی در سطح سیستم و ابزار های شبیه سازی به طراحان کمک می کنند تا بتوانند  مدل های شبیه سازی شده ای را از یک سیستم با اجزای سخت افزاری آن مانند پردازنده ها، حافظه ها، DMA ها، رابط ها ، باس ها و همچنین رفتار نرم افزاری آن در غالب یک نمودار حالت و یا نمودار جریان ارائه دهند. این کار  با کمک بلوک های کتابخانه ای قابل تنظیم صورت می گیرد. علت استفاده از شبیه سازی،  انتخاب اجزای مناسب با ایجاد مصالحه بین توان و عملکرد، انجام تحلیل اطمینان پذیری و تحلیل تنگنا است. گزار ش هایی که به طراح کمک می کنند تا  در مورد معماری سیستم تصمیم بگیرد شامل زمان تاخیر نرم افزار، توان عملیاتی دستگاه، نرخ کارکرد دستگاه،  توان مصرفی کل سیستم و همچنین توان مصرفی در سطح دستگاه هستند.
  • ابزار توسعه ای که بر مبنای مدل طراحی شده، می تواند نمودار های جریان داده  و نمودار های حالت اجزایی مانند فیلتر های دیجیتال، کنترلر های موتور، رمزگشایی پروتکل های ارتباطی  را شبیه سازی کرده و تولید کند.
  • ممکن است از کامپایلر ها و مرتبط کننده های سفارشی نیز برای بهینه سازی سخت افزار های تخصصی استفاده شود.
  • یک سامانه نهفته ممکن است زبان یا ابزار طراحی مخصوص به خود را داشته باشد یا افزونه هایی را به زبان های موجود مانند Forth یا Basic  اضافه کند.
  • راه حل دیگر افزودن یک سیستم عامل بی درنگ و یا یک سیستم عامل نهفته است.
  • ابزار های مدل سازی و  ایجاد کد که اغلب بر مبنای ماشین های حالت ایجاد می شوند

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

  • شرکت های نرم افزاری که تخصص آن ها بازار سامانه های نهفته است
  • پورت کردن ابزار های برنامه نویسی گنو
  • گاهی اوقات، در صورتی که پردازنده سامانه نهفته از خانواده پردازنده های سیستم های خانگی معمولی باشد، می توان از ابزار های توسعه ای کامپیوتر های شخصی نیز استفاده کرد.

با پیچیده تر شدن سامانه های نهفته، ابزار ها و سیستم عامل های سطح بالاتر نیز وارد ماشین آلات و ابزار می شوند. برای مثال، گوشی های تلفن همراه، دستیار های شخصی دیجیتالی و سایر کامپیوتر های مصرفی اغلب به نرم افزار های مهمی نیاز دارند که توسط  شخصی غیر از تولید کننده خریداری یا ارائه می شود . در چنین سامانه هایی، به یک محیط برنامه نویسی باز مانند لینوکس، NetBSD، OSGi یا Embedded Java نیاز است تا ارائه دهنده شخص ثالث نرم افزار بتواند محصول خود را برای بازاری بزرگ به فروش برساند.

سامانه های نهفته سامانه های نهفته اغلب در کاربرد های مصرفی، آشپزی، صنعتی، خودروسازی و پزشکی مورد استفاده قرار می گیرند. مثال هایی از سامانه های نهفته شامل mp3 پلیر ها،  گوشی های تلفن همراه،  کنسول های بازی های کامپیوتری، دوربین های دیجیتال، دی وی دی پلیر ها و GPS هستند. لوازم خانگی مانند مایکروویو ها، ماشین های ظرف شویی و لباس شویی نیز دارای سامانه های نهفته ای هستند که باعث انعطاف پذیری و بازده بیشتر می شود و ویژگی های مختلفی را ارائه می کنند.

اشکال زدایی (debugging) سامانه های نهفته

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

معیار های مختلفی که شکل های مختلف اشکال زدایی در سامانه های نهفته را شامل می شوند عبارتند از: آیا باعث کند شدن فرآیند اصلی سیستم می شود؟ سامانه رفع اشکال شده با سامانه فعلی چقدر نزدیکی دارد؟ عواملی که میتوانم برای اشکال زدایی تنظیم کنم چقدر معنی دار هستند؟ ( مثلا می خواهم وقتی شمارنده برنامه به مقدار مشخصی رسید، حافظه را مورد بررسی قرار دهم) و این که چه چیز هایی را می توانم در فرآیند اشکال زدایی مورد بررسی قرار دهم؟( مثلا فقط حافظه، حافظه و فهرست ها و…)

این روش ها را می توان به طور تقریبی از پیچیده ترین به ساده ترین و به صورت زیر طبقه بندی کرد:

  • اشکال زدایی تعاملی مقیم، با استفاده از یک پوسته ساده که توسط سیستم عامل سامانه نهفته ارائه می شود
  • اشکال زدایی خارجی با استفاده از لاگینگ یا خروجی پورت سریال برای ردیابی عملیات با استفاده از یک مانیتور شبکه یا یک سرور اشکال زدایی مانند Remedy Debugger که حجتی برای سیستم های ناهمگن چند هسته ای نیز کار می کند
  • اشکال یاب درون مداری(ICD)، یک دستگاه سخت افزاری که با استفاده از رابط های JTAG یا Nexus به ریز پردازنده متصل می شود این کار باعث می شود تا بتوان عملیات ریزپردازنده را به طور خارجی کنترل کرد. این روش  تنها قابلیت اشکال زدایی محدودی را در داخل پردازنده دارد.
  • یک شبیه ساز اشکال یاب داخل مداری(ICE) یک معادل شبیه سازی شده را جایگزین ریزپردازنده می کند و کنترلی کامل بر روی تمام جنبه های ریزپردازنده خواهد داشت.
  • یک شبیه ساز کامل، تمام جنبه های سخت افزار را شبیه سازی می کند و امکان کنترل و اصلاح همه آن ها را فراهم می کند. این کار باعث می شود تا بتوان اشکال زدایی را از طریق یک کامپیوتر شخصی معمولی نیز انجام داد. نقاط ضعف این روش، هزینه ی بالا و سرعت پایین عملیات است که در بعضی موارد می تواند تا ۱۰۰ برابر کند تر از سیستم نهایی باشد.
  • برای طراحی سیستم های بر روی تراشه (SoC)، رویکرد متداول، بررسی و اشکال زدایی طرح بر روی یک برد اولیه FPGA است. از ابزار هایی مانند Certus برای وارد کردن کاوشگر هایی FPGA RTL استفاده می شود. این کاوشگر ها امکان مشاهده سیگنال ها را فراهم می کنند. از این کار برای اشکال زدایی بر هم کنش های سخت افزار، فرمور و نرم افزار، بر روی چند FPGA با قابلیت هایی مشابه با تحلیل گر منطقی استفاده می شود.
  • مزیت اشکال یاب های نرم افزاری در این است که آن ها به هیچ گونه اصلاحات سخت افزاری نیاز ندارند اما باید چیز هایی را که ثبت می کنند به طور دقیق کنترل کنند تا بتوانند در زمان و فضای ذخیره سازی صرفه جویی کنند.

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

به دلیل این که یک سامانه نهفته اغلب از اجزای متنوعی تشکیل شده است، استراتژی اشکال زدایی ممکن است برای هر قسمت متفاوت باشد. برای مثال، اشکال زدایی یک سامانه نهفته نرم افزار ( و ریزپردازنده) محور، با اشکال زدایی یک سامانه نهفته که بیشتر پردازش ها در آن توسط قسمت های جانبی اتفاق می افتد ( DSP، FPGA و یک کمک پردازنده) متفاوت است.

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

ردیابی

سیستم عامل های بی درنگ (Real Time Operating Systems) اغلب از قابلیت ردیابی رویداد های سیستم عامل پشتیبانی می کنند. نمایی تصویری از این قابلیت توسط ابزاری در کامپیوتر میزبان و بر اساس رفتار های ثبت شده سیستم ارائه می شود. ردیابی رویداد ها  را می توان با کمک نرم افزار( توسط سیستم عامل بی درنگ) و یا با کمک سخت افزار های مخصوص انجام داد. ردیابی نرم افزاری به توسعه دهندگان اجازه می دهد تا مشکلات زمان بندی و عملکرد سیستم نرم افزاری را پیدا کنند و درک خوبی از رفتار های سطح بالای سیستم پیدا کنند. ابزار های تجاری مانند RTXC، Quadros یا IAR Systems نیز در این زمینه وجود دارند.

اطمینان پذیری سامانه های نهفته (امبدد سیستم)

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

مشکلات اطمینان پذیری می تواند شامل موارد زیر باشد:

  • سیستم نمی تواند به صورت ایمن خاموش شده تا تعمیر شود،  یا برای تعمیر آن  دسترسی وجود ندارد. مثال هایی از این حالت شامل سیستم های فضایی، کابل های زیر اقیانوسی،  علائم ناوبری، سیستم های گمانه ای و خودرو ها هستند.
  • سیستم به دلایل ایمنی باید همواره در حال اجرا باشد حالت هایی مانند Limp Mode  قابل تحمل نیستند.  اغلب نسخه های پشتیبان توسط اپراتور انتخاب می شوند مثال های این حالت شامل ناوبری هواپیما ها، سیستم های کنترل راکتور ها، کنترل های کارخانه های شیمیایی که ایمنی آن ها از اهمیت فوق العاده ای برخوردار است و علائم قطار ها می باشد.
  • اگر سیستم قطع شود، مقادیر زیادی پول از دست خواهد رفت: مانند سوییچ های تلفن، کنترل های کارخانه ها، کنترل های پل ها و آسانسور ها، خدمات انتقال وجه، فرو ش خودکار و…

از روش های مختلفی، گاهی اوقات به صورت ترکیبی، استفاده می شود تا پس از خطا سیستم بتواند خودش را بازیابی کند. این خطاها هم به صورت اشکال های نرم افزاری مانند نشت های حافظه و هم به صورت سخت افزاری مانند خطا های نرم  رخ می دهند:

  • تایمرهای نگهبان که در حالتی که نرم افزار به صورت دوره ای زیرسیستم نگهبان را از وجود منابع اضافی مطلع نکند، سیستم را مجددا راه اندازی می کنند.
  • طراحی سیستم با استفاده از معماری TCB یک محیط سیستمی با امنیت بالا و اطمینان پذیر را تضمین خواهد کرد.
  • یک هایپروایزر که برای سامانه های نهفته طراحی شده است می تواند لایه جانبی ایمنی را برای هرکدام از اجزا زیرسیستم ها فراهم کند، تا جز نرم افزاری که به مشکل خورده، نتواند باعث اختلال در سایر زیرسیستم ها یا در نرم افزار کل سیستم شود. این محافظ سازی، از انتشار عیب ها از یک زیر سیستم به زیرسیستمی دیگر جلوگیری می کند و قابلیت اطمبنان پذیری سیستم را افزایش می دهد. این کار ممکن است به زیرسیستم اجازه دهد تا با تشخیص عیب،  به صورت خودکار خاموش شده و مجددا راه اندازی شود.
  • برنامه نویسی مصونیت آگاه (Immunity Aware Programming)

تولید انبوه در برابر تولید با حجم کم

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

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

معماری نرم افزار های سامانه های نهفته

به طور کلی، چندین نوع معماری نرم افزار مختلف به طور گسترده مورد استفاده قرار می گیرند:

حلقه کنترلی ساده

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

سیستم های کنترل وقفه ای یا Interrupt-controlled system

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

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

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

چند وظیفه ای اشتراکی (Cooperative MultiTasking)

سیستم چند وظیفه ای بدون قبضه ای شباهت بسیاری به مفهوم حلقه کنترلی ساده دارد و تنها تفاوت آن این است که این حلقه در یک رابط کاربردی برنامه نویسی (API) پنهان شده است.  در این حالت، برنامه نویس مجموعه ای از وظایف را تعریف می کند و هر وظیفه، محیط خاص خود را دریافت می کند که می تواند در آن انجام شود. وقتی وظیفه در حالت غیرفعال قرار می گیرد، یک روال  مخصوص به حالت بیکاری را فرا می خواند که اغلب به آن توقف، انتظار، تسلیم یا nop( مخفف no operation) گفته می شود.

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

چند وظیفه ای قبضه ای  یا چند نخی

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

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

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

نیاز به  به یک سیستم عامل بی درنگ RTOS  خودش نیز باعث ایجاد مشکلاتی می شود، چون باید قبل از شروع توسعه کاربرد دستگاه، این سیستم عامل انتخاب شود. این زمان بندی باعث می شود تا توسعه دهندگان سیستم عامل سامانه نهفته را برا مبنای الزامات فعلی انتخاب کنند. این کار باعث می شود تا گزینه های آتی برای سال های آینده تا حد بسیار زیادی محدود شوند. به علاوه، سطح پیچیدگی به طور پیوسته در حال افزایش است زیرا دستگاه ها باید بتوانند چندین متغیر مانند پورت های سریال، USB، TCP/IP، بلوتوث، LAN بی سیم،  رادیو ترانک، چندین کانال، داده و صدا، گرافیک بهبود یافته، چندین حالت، چندین نخ، چندین حالت انتظار و … را مدیریت کنند. این روند ها منجر به جذب میان افزار های نهفته در کنار سیستم عامل های بی درنگ شده است.

ریزهسته ها و اگزوکرنل ها

یک ریز هسته (میکروکرنل) یک مرحله بالاتر از یک سیستم عامل بی درنگ است. آرایش متداول به این ترتیب است که هسته سیستم عامل مقدار حافظه را تعیین می کند و CPU را برای اجرای نخ های مختلف تنظیم می کند. پردازش های حالت کاربر از توابع اصلی مانند سیستم های فایلی، رابط های شبکه و … استفاده می کنند.

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

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

هسته های مونولیتیک

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

نمونه های متداول از هسته های مونولیتیک نهفته، لینوکس نهفته (Embedded Linux) و ویندوز CE هستند.

با وجود هزینه بیشتر سخت افزار، این نوع سامانه نهفته روز به روز محبوبیت بیشتری می یابد. این محبوبیت به خصوص در دستگاه های نهفته قوی تر مانند روتر های بی سیم و سیستم های ناوبری GPS ملاحظه می شود. برخی از این دلایل عبارتند از:

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

اجزای نرم افزاری اضافی

علاوه بر سیستم عامل مرکزی، بسیاری از سامانه های نهفته دارای اجزای نرم افزاری  اضافی لایه بالایی هستند. این اجزا شامل پشته های پروتکل های شبکه مانند CAN، TCP/IP،  FTP، HTTP و HTTPS هستند و همچنین شامل قابلیت های ذخیره ای مانند FAT و سیستم های مدیریت حافظه فلش هستند. اگر دستگاه نهفته دارای قابلیت های صوتی و تصویری باشد، درایور ها و کدک های مناسب در سیستم موجود خواهند بود. در هسته های مونولیتیکی نیز بسیاری از این لایه های نرم افزاری  موجود هستند. در دسته سیستم عامل های بی درنگ، موجود بودن اجزای نرم افزاری اضافی به پیشنهاد های تجاری بستگی دارد.