Вграденият софтуер () е компютърен софтуер, написан за управление на машини или устройства, и се използва за вградени системи. Обикновено той е специализиран за конкретния хардуер, на който работи, и има ограничения по отношение на времето и паметта. Понякога този термин се използва взаимозаменяемо с фърмуер.
Характерна особеност е, че нито една или не всички функции на вградения софтуер не се инициират/контролират чрез интерфейс човек-машина, а чрез машинни интерфейси.
Производителите вграждат такъв софтуер например в електрониката на автомобили, телефони, модеми, роботи, уреди, играчки, системи за сигурност, пейсмейкъри, телевизори и декодери, цифрови часовници.
Най-често вграденият софтуер все пак е предназначен за хардуера на компютъра, като неговият процесор Radhakrishnan, Essentials of Assembly Language Programming for the IBM PC , PHI Learning Pvt. ltd. - 2004 ( ISBN 9788120314252 ) ..
Други несложни функции, които могат да бъдат програмирани за хардуера на компютъра, като например управление на светещи лампички на кутията (или осветлението на кутията), работещо с 8-битов микроконтролер с няколко килобайта памет, като подходящото ниво на сложност на обработката се определя с рамката Probably Approximately Correct Computation (методология, базирана на рандомизирани алгоритми). Вграденият софтуер обаче може да стане много сложен в приложения като маршрутизатори, елементи на оптични мрежи, самолети, ракети и системи за управление на процеси.
Операционни системи За разлика от стандартните компютри, които обикновено използват операционни системи като macOS, Windows или Linux, вграденият софтуер може да не използва операционна система. Когато използват такава, могат да се избират най-различни операционни системи, обикновено операционна система за реално време. Кодът на вградения софтуер обикновено се пише на C или C++, но различни езици за програмиране от високо ниво, като Java, Python и JavaScript, вече се използват често и за насочване към микроконтролери и вградени системи. Често се използват и асемблерни езици, особено при зареждане и обработка на прекъсвания. В някои военни и авиационни проекти се използва Ada.
Разлика с приложния софтуер Повечето потребители познават приложния софтуер, който осигурява функционалност на компютъра. Вграденият софтуер обаче често е по-малко видим, но не по-малко сложен. За разлика от приложния софтуер, вграденият софтуер има фиксирани хардуерни изисквания и възможности, а добавянето на хардуер или софтуер от трети страни е строго контролирано.
Софтуерът за вграждане трябва да включва всички необходими драйвери за устройства по време на производството, а драйверите за устройства се пишат за различните хардуерни устройства. Тези драйвери за устройства, наречени BSP (), образуват слой от софтуер, съдържащ специфични за хардуера драйвери и други процедури, които позволяват на определена операционна система (традиционно операционна система за реално време, или RTOS) да функционира в определена хардуерна среда (компютър или процесорна карта), интегрирана със самата RTOS. Софтуерът е силно зависим от избрания процесор и специфични чипове. Повечето инженери по вграден софтуер имат поне бегли познания за разчитане на схеми и на информационни листове за компоненти, за да определят използването на регистрите и комуникационната система. Полезно е преобразуването между десетична, шестнадесетична и двоична бройна система, както и използването на манипулации с битове.
За управление на хардуера често се използват уеб приложения, въпреки че XML файловете и други изходни данни могат да бъдат предадени на компютър за показване. Обикновено се използват файлови системи с папки, но често липсват SQL бази данни.
Разработването на софтуер изисква използването на кръстосан компилатор, който работи на компютър, но създава изпълним код за целевото устройство. Отстраняването на грешки изисква използването на емулатор на веригата и хардуер за отстраняване на грешки, като например JTAG или SWD дебъгъри. Разработчиците на софтуер често имат достъп до пълния изходен код на ядрото (ОС).
Размерът на паметта за съхранение и оперативната памет може да варира значително. Някои системи работят с 16 KB флаш памет и 4 KB оперативна памет с процесор, работещ на 8 MHz, а други системи могат да съперничат на съвременните компютри. Тези изисквания за пространство водят до това, че повече работа се извършва на C или вграден C++, вместо на C++. Интерпретирани езици като BASIC (докато например Parallax Propeller може да използва компилиран BASIC) и Java (Java ME Embedded 8.3 е наличен например за микроконтролери ARM Cortex-M4, Cortex-M7 и по-стария ARM11, използван в Raspberry Pi и Intel Galileo Gen. 2), не се използват често; докато имплементация на интерпретирания език Python 3 – MicroPython – се предлага специално за микроконтролери, например 32-битови ARM-базирани (като BBC micro:bit) и 16-битови PIC микроконтролери.
Комуникационни протоколи Съществена е комуникацията с процесора и с другите компоненти. Използва се директно адресиране на паметта, както и популярни хардуерни протоколи като I²C, SPI, сериен порт, 1-Wires, Ethernet и USB. Съществуват и специфични комуникационни протоколи, собственост на компаниите, например InterNiche Technologies и CMX Systems. Протоколи с отворен код се правят от uIP, lwip и др.
Източници
Категория:Софтуер Категория:Вградени системи