نرم افزار تعبیه شده

**نرم‌افزار تعبیه‌شده** نرم‌افزار رایانه‌ای می باشد که به منظور مدیریت ماشین‌ها یا دستگاه‌هایی نوشته شده است که اغلب تحت عنوان رایانه در نظر گرفته نمی‌شوند و معمولاً به عنوان سیستم‌های جاسازی شده شناخته می‌شوند. معمولاً برای سخت افزار بخصوصی که روی آن اجرا می شود و دارای محدودیت های زمان و حافظه می باشد، تخصصی است. این اصطلاح بعضا به جای سیستم عامل استفاده می شود.
[بندانگشتی|نمای نزدیک از تراشه SMSC LAN91C110 (SMSC 91x)، یک تراشه [اترنت تعبیه شده]]

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

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

## سیستم های عامل
درتضاد رایانه‌های استاندارد که به طور معمول از سیستم‌عامل‌هایی مثل ویندوز، مک یا لینوکس استفاده می‌کنند، نرم‌افزارهای جاسازی شده امکان دارد از هیچ سیستم عاملی استفاده نکنند. هنگامی که آنها از یکی بهره میبرند، طیف وسیعی از سیستم عامل ها را می توان از میان آنها انتخاب کرد، معمولاً یک سیستم عامل بلادرنگ. کد نرم افزارهای جاسازی شده معمولاً به زبان C یا C++ نوشته می شود، اما زبان های برنامه نویسی سطح بالا مانند جاوا ، پایتون و جاوا اسکریپت درحال حاضر برای هدف قرار دادن میکروکنترلرها و سیستم های جاسازی شده رایج می باشند. زبان های اسمبلی نیز اغلب مورد استفاده قرار می گیرند، به ویژه در بوت کردن و مدیریت وقفه. Ada در بعضی از پروژه های نظامی و هوایی بکار می رود.

## تفاوت با نرم افزار های کاربردی
[بندانگشتی|[رابط کاربری متن بنیان|رابط کاربری متنی سیستم جاسازی شده با استفاده از MicroVGA ]]

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

نرم افزار جاسازی شده ملزم به شامل شدن تمام درایورهای دستگاه مورد نیاز در هنگام تولید و درایورهای دستگاه برای دستگاه های سخت افزاری گوناگون نوشته شده می باشد. این درایورهای دستگاه که BSP ( بسته پشتیبانی برد ) نامیده می‌شوند، لایه نرم‌افزاری را متشکل می شوند که درایورهای مخصوص سخت‌افزار و سایر روال‌ها را دربرمی گیرد که به یک سیستم عامل بخصوص (به صورت سنتی یک سیستم عامل بلادرنگ یا RTOS) این دسترسی را می‌دهد تا در یک محیط سخت‌افزاری خاص کار کند. (یک رایانه یا کارت CPU)، که با خود RTOS یکپارچه شده است. این نرم افزار بسیار به CPU و تراشه های خاص منتخب وابسته می باشد. بیشتر مهندسان نرم افزار جاسازی شده حداقل دانش گذرا از خواندن شماتیک ها و خواندن برگه های داده، برای اجزاء به منظور تعیین استفاده از ثبات ها و سیستم های ارتباطی دارند. تبدیل بین دسیمال, هگزادسیمال و باینری و همینطور استفاده از دستکاری بیت مفید می باشد.

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

توسعه نرم‌افزار نیازمند استفاده از یک کامپایلر متقابل می باشد که در رایانه اجرا می‌شود با این حال کدهای اجرایی را برای دستگاه مورد نظر می سازد. اشکال زدایی به استفاده از شبیه ساز درون مدار و سخت افزار اشکال زدایی مانند JTAG یا اشکال زدایی SWD نیاز دارد. توسعه دهندگان نرم افزار اکثرا به کد منبع کامل هسته (OS) دسترسی دارند.

اندازه حافظه مموری و RAM می تواند به طور چشمگیری تفاوت داشته باشد. بعضی از سیستم ها در فلش 16 کیلوبایت و رم 4&nbsp;کیلوبایت با پردازنده مرکزی 8&nbsp;مگاهرتز اجرا می شوند، درشرایطی که دیگر سیستم‌ها می‌توانند با رایانه‌های امروزی در رقابت باشند. این فواصل مورد نیاز منجر به وقوع کارهای بیشتر در C یا C++ جاسازی شده به جای C++ می شود. زبان های مفسری مثل BASIC (در حالی که Parallax Propeller می تواند از BASIC کامپایل شده بهره ببرد) و جاوا (Java ME Embedded 8.3  برای نمونه میکروکنترلرهای ARM Cortex-M4 ، Cortex-M7 و ARM11 قدیمی تر مورد استفاده در Raspberry Pi و Intel Galileo Gen در دسترس قرار دارند.) اغلب استفاده نمی شوند. در صورتی که پیاده سازی زبان مفسری پایتون 3میکروپایتونصریحا برای استفاده از میکروکنترلر در دسترس می باشد ، برای مثال میکروکنترلرهای بر مبنای ARM 32 بیتی (مثل میکروکنترلرهای BBC micro:bit ) و 16 بیتی PIC .

## پروتکل های ارتباطی
ارتباطات بین پردازنده ها و بین یک پردازنده و سایر اجزا ضروری است. علاوه بر آدرس دهی مستقیم حافظه، پروتکل های رایج سطح سخت افزار شامل I²C، SPI، پورت های سریال، 1-Wires، Ethernets و USB است.

پروتکل های ارتباطی طراحی شده به منظور استفاده در سیستم های جاسازی شده تحت عنوان منبع بسته از شرکت هایی مانند InterNiche Technologies و CMX Systems در دسترس قرار دارند. درحالی که پروتکل های منبع باز از uIP، lwip و دیگران سرچشمه می گیرند.

خاک برسرتون

## یادداشت
For more details of MicroVGA see this PDF.

## منابع

* Edward A. Lee, "Embedded Software", *Advances in Computers* (Marvin Victor Zelkowitz, editor) **56**, Academic Press, London, 2002

# 
# 
# 
# 
# .
# 
# 
# 
# 

رده:واژگان رایانه
رده:سامانه‌های توکار