Вграден софтуер

от Уикипедия, свободната енциклопедия

Вграденият софтуер (на английски: embedded software) е компютърен софтуер, написан за управление на машини или устройства, и се използва за вградени системи. Обикновено той е специализиран за конкретния хардуер, на който работи, и има ограничения по отношение на времето и паметта. Понякога този термин се използва взаимозаменяемо с фърмуер.[1]

Характерна особеност е, че нито една или не всички функции на вградения софтуер не се инициират/контролират чрез интерфейс човек-машина, а чрез машинни интерфейси.

Производителите вграждат такъв софтуер например в електрониката на автомобили, телефони, модеми, роботи, уреди, играчки, системи за сигурност, пейсмейкъри, телевизори и декодери, цифрови часовници.

Най-често вграденият софтуер все пак е предназначен за хардуера на компютъра, като неговият процесор [2].

Други несложни функции, които могат да бъдат програмирани за хардуера на компютъра, като например управление на светещи лампички на кутията (или осветлението на кутията), работещо с 8-битов микроконтролер с няколко килобайта памет, като подходящото ниво на сложност на обработката се определя с рамката Probably Approximately Correct Computation[3] (методология, базирана на рандомизирани алгоритми). Вграденият софтуер обаче може да стане много сложен в приложения като маршрутизатори, елементи на оптични мрежи, самолети, ракети и системи за управление на процеси.[4]

Операционни системи[редактиране | редактиране на кода]

За разлика от стандартните компютри, които обикновено използват операционни системи като macOS, Windows или Linux, вграденият софтуер може да не използва операционна система. Когато използват такава, могат да се избират най-различни операционни системи, обикновено операционна система за реално време. Кодът на вградения софтуер обикновено се пише на C или C++, но различни езици за програмиране от високо ниво, като Java, Python и JavaScript, вече се използват често и за насочване към микроконтролери и вградени системи. [5] Често се използват и асемблерни езици, особено при зареждане и обработка на прекъсвания. В някои военни и авиационни проекти се използва Ada.

Разлика с приложния софтуер[редактиране | редактиране на кода]

Повечето потребители познават приложния софтуер, който осигурява функционалност на компютъра. Вграденият софтуер обаче често е по-малко видим, но не по-малко сложен. За разлика от приложния софтуер, вграденият софтуер има фиксирани хардуерни изисквания и възможности, а добавянето на хардуер или софтуер от трети страни е строго контролирано.

Софтуерът за вграждане трябва да включва всички необходими драйвери за устройства по време на производството, а драйверите за устройства се пишат за различните хардуерни устройства. Тези драйвери за устройства, наречени BSP (на английски: Board support package), образуват слой от софтуер, съдържащ специфични за хардуера драйвери и други процедури, които позволяват на определена операционна система (традиционно операционна система за реално време, или 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 микроконтролери.[6]

Комуникационни протоколи[редактиране | редактиране на кода]

Съществена е комуникацията с процесора и с другите компоненти. Използва се директно адресиране на паметта, както и популярни хардуерни протоколи като I²C, SPI, сериен порт, 1-Wires, Ethernet и USB. Съществуват и специфични комуникационни протоколи, собственост на компаниите, например InterNiche Technologies и CMX Systems. Протоколи с отворен код се правят от uIP, lwip и др.

Източници[редактиране | редактиране на кода]

  1. Emilio, Maurizio Di Paolo. Embedded systems design for high-speed data acquisition and control. Cham, 2014. ISBN 978-3-319-06865-7. OCLC 890646530.
  2. Radhakrishnan, Essentials of Assembly Language Programming for the IBM PC , PHI Learning Pvt. ltd. - 2004 ( ISBN 9788120314252 ) .
  3. Alippi, Cesare. Intelligence for embedded systems : a methodological approach. Berlin, 2014. ISBN 978-3-319-05278-6. OCLC 878424116.
  4. Lee, Edward. Embedded Software. Advances in Computers, Academic Press, 2002.
  5. Mazzei, Daniele. Changing the programming paradigm for the embedded in the IoT domain // 2015 IEEE 2nd World Forum on Internet of Things (WF-IoT). IEEE, 2015 – 12. ISBN 978-1-5090-0366-2. DOI:10.1109/WF-IoT.2015.7389059. с. 239 – 244. Посетен на 2022-01-27.
  6. Microcontrollers: An Integral Part of Embedded Hardware // December 10, 2021.
  Тази страница частично или изцяло представлява превод на страницата Embedded software в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс – Признание – Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година – от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница, за да видите списъка на съавторите. ​

ВАЖНО: Този шаблон се отнася единствено до авторските права върху съдържанието на статията. Добавянето му не отменя изискването да се посочват конкретни източници на твърденията, които да бъдат благонадеждни.​