**Programmaparatūra** (angļu: *firmware*) ir īpaša datora programmatūras klase, kas nodrošina ierīces specifiskās aparatūras zema līmeņa vadību. Programmatūra, piemēram, personālā datora *BIOS*, var saturēt ierīces pamatfunkcijas un var nodrošināt aparatūras abstrakcijas pakalpojumus augstāka līmeņa programmatūrai, piemēram, operētājsistēmām. Mazāk sarežģītās ierīcēs programmaparatūra var darboties kā pilnīga ierīces operētājsistēma, kas veic visas vadības, uzraudzības un datu apstrādes funkcijas. Tipiski tādu ierīču piemēri, kurās ir programmaparatūra, ir iegultās sistēmas (kurās darbojas iegultā programmatūra), sadzīves un personālās lietošanas ierīces, datori un datoru perifērijas ierīces.

Programmatūru glabā tādās negaistošās atmiņas ierīcēs kā *ROM, EPROM, EEPROM* un zibatmiņa. Lai atjauninātu programmaparatūru, ir fiziski jānomaina ROM integrālās shēmas vai jāpārprogrammē *EPROM* vai zibatmiņa, izmantojot īpašu procedūru. Dažas programmaparatūras atmiņas ierīces ir uzstādītas pastāvīgi, un pēc ražošanas tās nevar mainīt. Biežākie programmaparatūras atjaunināšanas iemesli ir kļūdu novēršana vai ierīces funkciju pievienošana.

Vēsture un etimoloģija
----------------------

Ašers Oplers (*Ascher Opler*) 1967. gadā Datamation rakstā lietoja terminu *firmware* (programmaparatūra) kā starpposma terminu starp "aparatūru" un "programmatūru". Šajā rakstā Oplers runāja par jauna veida datorprogrammu, kurai, raugoties no lietotāja perspektīvas, bija atšķirīgs praktiskais un psiholoģiskais mērķis no tradicionālajām programmām.

Sākoties datoru sarežģītības pieaugumam, kļuva skaidrs, ka dažādas programmas vispirms ir jāiniciē un jāpalaiž, lai nodrošinātu konsekventu vidi, kas nepieciešama sarežģītāku programmu palaišanai pēc lietotāja ieskatiem. Tādēļ bija nepieciešams programmēt datoru, lai šīs programmas darbotos automātiski. Turklāt, tā kā uzņēmumi, universitātes un tirgotāji vēlējās pārdot datorus nespeciālistiem ar nelielām tehniskām zināšanām, kļuva nepieciešama lielāka automatizācija, lai neprofesionāls lietotājs varētu viegli palaist programmas praktiskiem mērķiem. Tā radās tāda veida programmatūra, ko lietotājs apzināti neizpildītu, un tā radās programmatūra, par kuru neprofesionāls lietotājs pat nezinātu.

Sākotnēji tas nozīmēja rakstāmās vadības atmiņas (neliela specializēta ātrdarbīga atmiņa) saturu, kurā bija mikrokods, kas definēja un īstenoja datora instrukciju kopumu un ko varēja atkārtoti ielādēt, lai specializētu vai modificētu instrukcijas, kuras varēja izpildīt centrālais procesors (CPU). Sākotnējā lietojumā programmaparatūra ir pretstats aparatūrai (pašam centrālajam procesoram) un programmatūrai (parastām instrukcijām, ko izpilda centrālajā procesorā). To veidoja nevis CPU mašīninstrukcijas, bet gan zemāka līmeņa mikrokods, kas bija iesaistīts mašīninstrukciju īstenošanā. Tā pastāvēja uz robežas starp aparatūru un programmatūru; no tā arī cēlies programmaparatūras nosaukums. Laika gaitā vārds "firmware" tika plaši lietots, lai apzīmētu jebkuru datorprogrammu, kas ir cieši saistīta ar aparatūru, tostarp BIOS personālajos datoros, bootstrap ielādētājus telefonos vai vienkāršu elektronisko ierīču, piemēram, mikroviļņu krāsns, tālvadības pults vai datora perifērijas ierīču, vadības sistēmas.

Programmaparatūras izstrāde
---------------------------

Iegultās programmaparatūras izstrādes vide būtiski atšķiras no testēšanas un ražošanas vides. Programmatūras izstrādes inženieri var izmantot specializētus programmatūras kopumus, dažādas mikroshēmu arhitektūras un pat operētājsistēmas. Iegultā sistēma ļauj ievērojami atvieglot shēmas un tādējādi samazināt projekta izmaksas un aparatūras izmēru.

Tomēr īsumā iebūvētās programmaparatūras izstrāde nemaz tik ļoti neatšķiras no "standarta" programmatūras izstrādes procesa. Neatkarīgi no izmantotā izstrādes/vadības modeļa tā sastāv no šādiem posmiem:

1. prasību analīze;
2. projektēšana un algoritmu sastādīšana;
3. programmaparatūras kodēšana;
4. sistēmas testēšana.

Pieteikumi
----------

### Datori

Dažos aspektos dažādas programmaparatūras sastāvdaļas ir tikpat svarīgas kā operētājsistēma darba datorā. Tomēr atšķirībā no vairuma moderno operētājsistēmu programmaparatūrai reti kad ir labi attīstīts automātisks atjaunināšanas mehānisms, lai novērstu jebkādas funkcionalitātes problēmas, kas konstatētas pēc ierīces nosūtīšanas.

BIOS var atjaunināt "manuāli" lietotājs, izmantojot nelielu palīgprogrammu. Turpretī programmaparatūra masveida atmiņas ierīcēs (cietajos diskdziņos, optisko disku diskdziņos, zibatmiņas atmiņas krātuvēs, piemēram, cietvielu diskdziņā) reti tiek atjaunināta, pat ja programmaparatūrai tiek izmantota zibatmiņa (nevis ROM, EEPROM).

Lielākā daļa datoru perifēro ierīču pašas par sevi ir īpašas nozīmes datori. Tādās ierīcēs kā printeri, skeneri, tīmekļa kameras un USB zibatmiņas ir iekšēji saglabāta programmaparatūra; dažās ierīcēs programmaparatūru var atjaunināt arī uz vietas.

Dažās lētās perifērijas ierīcēs vairs nav gaistošās atmiņas programmaparatūrai, un tā vietā tās paļaujas uz to, ka galvenā sistēma pārnes ierīces vadības programmu no diska faila vai kompaktdiska.

### Mājsaimniecības un personiskās lietošanas produkti

No 2010. gada lielākā daļa portatīvo mūzikas atskaņotāju atbalsta programmaparatūras atjauninājumus. Daži uzņēmumi izmanto programmaparatūras atjauninājumus, lai pievienotu jaunus atskaņojamo failu formātus (kodekus). Citas funkcijas, kas var tikt mainītas ar programmaparatūras atjauninājumiem, ir grafiskā saskarne vai pat akumulatora darbības laiks. Lielākajai daļai mobilo tālruņu ir iespēja atjaunināt programmaparatūru pa gaisu tādu pašu iemeslu dēļ; dažus var pat atjaunināt, lai uzlabotu uztveršanas vai skaņas kvalitāti.

### Automobiļi

Kopš 1996. gada lielākajā daļā automobiļu mehānisko problēmu noteikšanai izmanto borta datoru un dažādus sensorus. Kopš 2010. gada mūsdienu transportlīdzekļos izmanto arī datora vadītas pretbloķēšanas bremžu sistēmas (ABS) un datorizētas transmisijas vadības ierīces (TCU). Šādā veidā autovadītājs braukšanas laikā var saņemt arī informāciju, kas iebūvēta panelī, piemēram, degvielas ekonomijas un riepu spiediena rādījumus reālajā laikā. Vietējie dīleri var atjaunināt lielāko daļu transportlīdzekļu programmaparatūras.

Pielāgota programmaparatūra
---------------------------

Pielāgota programmaparatūra tiek izstrādāta, ņemot vērā ražotāja un galalietotāja īpašās vajadzības. Programmatūra tiek ievietota gaistošajā atmiņā tikai lasīšanai. Tradicionāli programmaparatūra paliek atmiņā un nepieļauj lietotāju piekļuvi, kas nozīmē, ka programmaparatūru teorētiski nav iespējams modificēt. Tomēr ir iespējams atteikties no funkcijas "tikai lasīšanai", ļaujot veikt izmaiņas pēc ražošanas. Daudzos rūpnieciskos lietojumos tiek izmantota pielāgota rūpnieciskā programmaparatūra, lai nodrošinātu vislabāko atmiņas ierīces veiktspēju.

Atsauces
--------

1. ↑  «Embedded Firmware Development». *ADUK GmbH* (en-GB). Skatīts: 2023-03-20.
2. ↑  «What is firmware?». *incepator.pinzaru.ro*. 2013-01-23. Skatīts: 2022-02-04.
3. ↑  «Reading: Firmware | Introduction to Computer Applications and Concepts». *courses.lumenlearning.com*. Skatīts: 2022-02-04.
4. ↑  Jonathan Corbet. *Linux device drivers* (3rd ed izd.). Sebastopol : O'Reilly & Associates, 2005. ISBN 978-0-596-51743-4. OCLC 59670708.