Manussüsteem

Manussüsteem ehk sardsüsteem (ka liitsüsteem) on juhtfunktsioonidega arvuti suurema süsteemi osana. Manussüsteemidel on tihti reaalajalised nõuded. Manussüsteemid erinevad üldkasutuses olevatest arvutitest, näiteks personaalarvutist selle poolest, et on ette nähtud täitma ühte kindlat eesmärki, mitte paljusid kasutaja nõudmisi. Manussüsteeme kasutatakse paljudes tänapäevastes seadmetes, näiteks auto elektrisüsteemis, fotoaparaatides ja robotites.

Manussüsteemid sisaldavad arvutustuumasid; nendeks võivad olla mikrokontrollerid, signaaliprotsessorid või väravamassiivid. Paljudes manussüsteemides kasutatakse ka reaalaja operatsioonisüsteeme.

Manussüsteemi peamine eripära on keskendumine kindlale ülesandele, mistõttu saavad insenerid seda optimeerida. Võimalik on saavutada väiksemat suurust ja hinda ning parandada töökindlust ja jõudlust. Mõned manussüsteemid on masstootmises, lõigates kasu mastaabisäästust.

Füüsiliselt ulatuvad manussüsteemid kaasaskantavatest seadmetest nagu käekellad ja MP3-mängijad kuni hiiglaslike statsionaarsete seadmeteni, näiteks foorid ja tööstuskontrollerid. Keerukus varieerub madalast ühe mikrokontrolleriga disainist kuni ülikeerukate, võrgu kaudu suhtlevate struktuurideni.

Ajalugu
Üks esimesi äratuntavalt kaasaegseid manussüsteeme oli Apollo navigatsiooniarvuti. Projekti alguses peeti Apollo juhtimise arvutit kõige riskantsemaks elemendiks Apollo projekti, sest see kasutas tollal äsja väljatöötatud monoliitseid integraallülitusi, et vähendada suurust ja kaalu. Varajase masstoodanguna manussüsteemi oli Autonetics D-17 juhiarvuti Minuteman raketi jaoks, mis ilmus 1961. aastal. Kui Minuteman II hakati tootma 1966. aastal, siis D-17 asendati uue arvutiga, mis oli esimene suuremahuline integreerituid skeemide kasutus.

Alates nendest varajastest rakendustest 1960-ndatel, on manussüsteemide hinnad langenud ning järsult suurenenud töötlemise võimsus ja funktsionaalsus. Varajane mikroprotsessor, näiteks Intel 4004, oli mõeldud kalkulaatorite ja muude väikeste süsteemide jaoks, kuid vajas siiski välist mälu ja toetavaid kiipe. National Engineering Manufacturers Association avaldas aastal 1978 standardi programmeeritavate mikrokontrollerite jaoks, sealhulgas peaaegu iga arvutipõhise kontrolleri, nagu numbrilised ja sündmuse baasil töötavad kontrollerid.

Mikroprotsessorite ja mikrokontrollerite hinna langemise tõttu muutus võimalikuks asendada kallid nuppudel põhinevad analoogkomponendid nagu potentsiomeetrid ja muutkondensaatorid üles/alla lülititega ja nuppudega, mida loeb mikroprotsessor isegi tarbekaupades. 1980-ndate algul olid mälu, sisend- ja väljundsüsteemi komponendid integreeritud protsessoriga samasse kiipi, moodustades mikrokontrolleri. Mikrokontrollerid leiavad rakendust kohtades, kus üldotstarbeline arvuti oleks liiga kulukas või liiga suur.

Suhteliselt madalahinnalise mikrokontrolleri võib programmeerida sama ülesannet täitma nagu suur hulk eraldi komponente. Kuigi selles kontekstis manussüsteem on tavaliselt keerulisem kui tavapärane lahendus, enamik keerukust sisaldub mikrokontrolleris endas. Väga väheseid lisakomponente võib vaja minna ja enamik disaini raskusest peitub tarkvaras. Tarkvara prototüüpimine ja testimine võib osutuda kiiremaks võrreldes uue skeemi projekteerimise ja ehitamisega, mis ei kasuta sees olevat protsessorit.

Mitmekesisus
Manussüsteeme kasutatakse näiteks kodu- ja köögitehnikas, autotööstuses, tarbeelektroonikas, tööstuslikes ja meditsiinilistes seadmetes, ärimajanduslikes ja sõjaväelistes lahenduses.

Telekommunikatsioonisüsteemides kasutatakse rohkesti manussüsteeme, alates telefonikeskustest ja lõpetades mobiiltelefonidega. Arvutite sidesüsteemides on kasutusel alalised ruuterid ja võrgusillad.

Tarbeelektroonikast kuuluvad siia näiteks pihuarvutid, MP3-mängijad, mobiiltelefonid, videomängukonsoolid, digitaalsed kaamerad ja fotoaparaadid, DVD-mängijad, GPS-vastuvõtjad ja printerid. Ka kodutehnika, näiteks pesumasinad, mikrolaineahjud ja nõudepesumasinad kasutavad manussüsteeme, selleks, et suurendada süsteemide paindlikkust ja efektiivsust ning selleks, et anda seadmetele lisafunktsioone. Keerulisemad kliimaseadmed kasutavad võrgupõhiseid termostaate selleks, et tagada pidevalt muutuvates temperatuuri ja niiskuse oludes parim võimalik efektiivsus ja täpsus. Koduautomaatikasüsteemidest võime leida juhtmega ja juhtmevabu sidesüsteeme tulede lülituseks, audiovisuaal-, kliima-, turva- ja seireseadmetes. Nende seadmete töös tagavad manussüsteemid sensorliku ja seadmete kontrollitavuse funktsionaalsuse.

Autotööstus ja lennundus kasutavad manussüsteeme järjest enam. Uutes lennukites kasutatakse keerulisi avioonikasüsteeme, näiteks inertsnavigatsioonisüsteemid ja GPS-vastuvõtjad. Kõrgete ohutusnõuete tõttu on need süsteemid lennukites eriti keerukad ja alasektsioonidena eraldatud. Erinevates alalisvoolu-elektrimootorites kasutatakse elektriajameid. Nii autodes, elektri- kui ka hübriidsõidukites kasutatakse manussüsteeme järjest enam, tagades maksimaalse efektiivsuse ja vähendades keskkonna saastamist. Teised autodes leiduvad manussüsteeme kasutavad seadmed on näiteks ABS-pidurisüsteemid, elektrooniline stabiilsuskontroll, veojõukontroll ja automaatne nelikveosüsteem.

Meditsiinilistes seadmetes kasutatakse manussüsteeme eluliste näitajate jälgimiseks, heli võimenduseks elektroonilistes stetoskoopides ja mitteinvasiivsetes piltdiagnostikaseadmetes, sealhulgas kompuutertomotograafis ja magnetresonantstomograafis.

Manussüsteeme kasutatakse tihti transpordis, tuleohutuses, ohutusseadmetes ja turvaseadmetes. Tuleohutuses aitab see tagada parema temperatuuritaluvuse, turvaseadmetes aga seadme iseseisva töötamise ja töö jätkumise läbilõigatud elektri- ja sidejuhtmete korral.

Kasutusel on ka uus klass traadita seadmeid, mida nimetatakse sensorisõlmedeks. Need on piiratud andmekogumise ja analüüsi võimekusega juhtmevabalt võrku koondatud väikesed seadmed, mis suhtlevad omavahel kauge vahemaa tagant ja kasutavad võimalikult vähe energiat. Läbi keerulise integraalskeemi disaini luuakse nõnda väga võimekad sensorid, millega saab mõõta väga erinevaid suuremastaabilisi ümbritseva maailma nähtusi. Sensorisõlmed ei vaja toimimiseks lisasüsteeme ning võivad ühe laadimisega kesta aastaid, enne kui on vaja toiteallikas välja vahetada või laadida. 
Sisemisi WiFi-seadmeid kasutatakse infosillana jadaporti kasutavates seadmetes.

Tunnused
Manussüsteemid on kavandatud mingi konkreetse ülesande tegemiseks, pigem kui üldotstarbeline arvuti mitmesuguste ülesannete jaoks. Osadel on ka reaalaja toimimise piirangud, mis peavad olema täidetud, põhjustel, nagu näiteks ohutus ja kasutatavus; teistel võivad olla madalad tehnilised nõuded või isegi täiesti puududa. See võimaldab süsteemi riistvara lihtsustamist, et vähendada kulusid.

Manussüsteemid ei ole alati iseseisvad seadmed. Paljud manussüsteemid koosnevad väikestest osadest, mis on osa suuremast seadmest, mis teenib üldisemat eesmärki. Näiteks manussüsteem autos annab konkreetse funktsiooni, olles ise auto alamsüsteem.

Programmi juhiseid kirjutatud manussüsteemide jaoks nimetatakse püsivaraks ja salvestatakse püsimälu või välkmälu. Nad töötavad piiratud arvuti riistvara ressurssidega: vähe mälu, väike või olematu klaviatuur või ekraan.

Kasutajaliides
Manussüsteemide kasutajaliidesed ulatuvad alates selle puudumisest, süsteemid pühendatud ainult ühele ülesandele, kuni keerulise graafilise kasutajaliidesteni, mis meenutavad kaasaegse arvuti operatsioonisüsteemi töölauda. Lihtsad manussüsteemid kasutavad nuppe, LED-e või graafilist LCD-d.

Vahendid (tööriistad)
Nagu ka teiste tarkvaradega, kasutavad manussüsteemide disainerid kompilaatoreid, assemblereid ja silureid (inglise keeles debuggers), et välja töötada manussüsteemide tarkvara. Siiski võivad nad kasutada ka mõningaid konkreetsemaid vahendeid:
 Ahelasilujad või emulaatorid (vaata järgmist lõiku)
 Utiliidid, et lisada programmile kontrollsumma või CRC (inglise keeles syclic redundancy check), et manussüsteem saaks kontrollida, kas rakendus on kehtiv.
 Süsteemide jaoks, mis kasutavad digitaalset signaalitöötlust, võivad arendajad kasutada töölaudu, nagu näiteks Scilab/Scicos/MATLAB/Simulink, EICASLAB, MathCad, Mathematica või Flowstone DSP, et simuleerida matemaatikat. Nad võivad ka kasutada nii sihtotstarbelisi kui peateeke, mis välistab DSP režiimide väljatöötamise, nagu seda tehakse DSPnano RTOS-s.
 Süsteemi taseme modelleerimise ja simuleerimise vahendid, nagu näiteks VisualSim, aitavad disaineritel konstrueerida simulatsioonimudeleid riistvarakomponentidega süsteemidele, nagu näiteks protsessorid, mälud, DMA, liidesed, siinid ja tarkvara käitumise suund olekudiagrammina või vooluskeemina, kasutades seadistatavaid teegiplokke. Simulatsiooni viiakse läbi, et valida õiged komponendid, teostades võimsuse ja jõudluse kompromisse, töökindluse analüüse ja pudelikaela analüüse. tüüpilised aruanded, mis aitavad disaineril teha arhitektuuri otsuseid, sisaldavad rakenduse latentsust, seadme läbilaskevõimet, seadme ärakasutamise taset, terve süsteemi energiatarvet ning ka seadme tasemel energiatarvet.
 Mudelipõhine arendusvahend nagu näiteks VisSim lubab sul luua ja simuleerida graafilist andmevoogu ja UML olekudiagramme komponentidele, milleks on näiteks digitaalsed filtrid, mootori kontrollerid, sideprotokolli dekodeerimine ja mitmekiiruselised ülesanded. Katkestusetöötleja (inglise keeles interrupt handler) võib ka luua graafiliselt. Pärast simulatsiooni saad sa automaatselt genereerida C-koodi VisSim RTOS-le, mis tegeleb peamise kontrollülesandega ja taustategevustega, ja ka välisseadmete automaatse häälestuse ja programmeerimisega.
 Spetsiaalseid kompilaatoreid võidakse kasutada spetsialiseeritud riistvara optimeerimiseks.
 Manussüsteemil võib olla oma spetsiaalne keel või disainivahend, või võib juurde anda lisasid olemasolevale keelele nagu näiteks Forth või Basic.
 Veel üheks alternatiiviks on lisada reaalajas opereeriv süsteem või manus-operatsioonisüsteem, millel võivad olla DSP võimekused, näiteks DSPnano RTOS.
 Modelleerimise ja koodi genereerimise vahendid, mis sageli põhinevad olekumasinatel.

Tarkvaravahendid võivad pärineda mitmesugustest allikatest:
 Tarkvara ettevõtted, mis on spetsialiseerunud manussüsteemi turule.
 Porditud GNU tarkvaraarenduse tööriistadest.
 Mõnikord on võimalik kasutada personaalarvuti arendusvahendeid, kui manussüsteemi protsessor on lähedas suguluses tavalise personaalarvuti protsessoriga.

Nagu manussüsteemide keerukus kasvab, siirdub kõrgema taseme vahendeid ja operatsioonisüsteeme masinatesse, kus see on mõistlik. Näiteks telefonid, personaalsed digitaalsed assistendid ja muud olmearvutid vajavad tihti märkimisväärset tarkvara, mis on ostetud ja varustatud kolmanda isiku poolt, kes ei ole selle elektroonikaseadme valmistaja.

Silumine 
Manusüsteemi silumist (inglise keeles debugging) võib teostada eri tasemetel, sõltuvalt saadaolevatest töövahenditest. Alates lihtsaimast kuni kõige keerukamani võib neid laias laastus jagada järgmistesse valdkondadesse:
 Interaktiivne kohalasuv silumine, kasutades lihtsat raamistikku, mis on manussüsteemi poolt varustatud (näiteks Forth ja Basic)
 Väline silumine, kasutades logi või jadapordi väljundit, et jälgida operatsiooni, kasutades silumise serverit, nagu Remedy Debugger, mis töötab isegi heterogeensetes mitmetuumaliste süsteemide puhul.
 Skeemisisene siluja (inglise keeles In-circuit debugger), mis on riistvaraline seade, mis ühendatakse mikroprotsessoriga JTAG või Nexuse liidese kaudu. See võimaldab mikroprotsessori tööd kontrollida väliselt, mis on aga tavaliselt piiratud spetsiifiliste silumise võimekusega protsessoris.
 In-circuit emulaator (ICE) asendab mikroprotsessori simuleeritud ekvivalendiga, pakkudes täielikku kontrolli mikroprotsessori kõigi aspektide üle.
 Täielik emulaator pakub riistvara kõikide aspektide kohta simulatsiooni, võimaldades kõike seda kontrollida ja muuta ning võimaldades silumise tavalistel personaalarvutitel. Selle negatiivseteks külgedeks on kulud ja aeglane opereerimine, mõnedel juhtumitel kuni 100 korda aeglasem kui lõplik süsteem.
 SoC disainidele on tüüpiliseks lähenemiseks kinnitada ja siluda see disain FPGA prototüüplaual. Vahendeid nagu Certus kasutatakse sondide sisestamiseks FPGA RTL-i, muudavad signaalid vaadeldavateks. Seda kasutatakse riistvara, püsivara ja tarkvara interaktsioonide silumiseks üle mitme FPGA, millel on loogikaanalüsaatori võimekusega sarnane võimekus.
Tavaliselt saab programmeerija laadida ja käivitada tarkvara läbi nende vahendite, vaadata koodi, mis töötab protsessoris ning alustada või peatada selle operatsiooni, kui seda ei ole piiratud välise silumisega. Koodi vaade võib olla kas HLL-i lähtekood, assembly kood või mõlema segu.
Kuna manussüsteem koosneb tihtipeale paljudest elementidest, siis võib silumise strateegia erineda. Näiteks tarkvara- (ja mikroprotsessori-) keskse manussüsteemi silumine  erineb manussüsteemi silumisest, kus enamik töötlusest tehakse väliste lisaseadmetega (DSP, FPGA, kaasprotsessor). Üha suurem arv manussüsteeme kasutab tänapäeval rohkem kui ühte protsessori tuuma. Tavaline probleem mitmetuumalise arendamise juures on tarkvara teostuse õige sünkroonimine. Sel juhul võib manussüsteemi disain tahta kontrollida andmeedastust protsessori tuumade vahelistel siinidel, mis nõuab näiteks väga madalatasemelist silumist, signaal/siini tasemel, koos loogikaanalüsaatoriga

Logimine
Reaalajas töötavad operatsioonisüsteemid (inglise keeles real-time operating systems, RTOS) võimaldavad sageli süsteemisündmusi logida (inglise keeles tracing). Logitud sündmusi saab kuvada graafiliselt peaarvutis. Logid annavad hea ülevaate süsteemi kõrgematasemeslikust käitumisest ning lubavad arendajatel paremini mõista ajastust ja jõudlust puudutavaid probleeme. Kommertsiaalselt on kättesaadavad programmid RTXC Quadros ja IAR Systems.

Töökindlus
Manussüsteeme kasutatakse rohkelt sellistes seadmetes, mis peavad ilma vigadeta järjest töötama aastaid. Seetõttu testitakse nendes seadmetes kasutatavat tarkvara tavaliselt põhjalikumalt kui personaalarvutite korral. Ühtlasi hoidutakse kõikvõimalikest mittetöökindlatest mehaanilistest lahendustest nagu kõvakettad, kohtvõrgu kommutaatorid (inglise keeles network switch) ja nupud.

Töökindlust võivad pärssida järgmised probleemid: 
 Süsteemi pole võimalik paranduseks ohutult välja lülitada, või on süsteem raskesti ligipääsetav. Probleem on aktuaalne näiteks kosmoseseadmetes, veealustes kaablites, navigatsiooni-majakates, puuraugu-süsteemides ja autodes. 
 Süsteemi tuleb hoida töös ohutuse tagamiseks. Probleem on päevakohane näiteks lennunavigatsioonis, reaktori kontrolli süsteemides, keemiatehase ohutuse eest vastutavates seadmetes, raudteede ohutussignaalide korral. 
 Valdaja kaotab palju raha, kui süsteem välja lülitada. Probleem on aktuaalne näiteks telefonikeskustes, tehase halduspaneelides, sildade ja liftide kontrollseadmetes, rahaülekandes, automatiseeritud äritsemise seadmetes.

Vigadest taastumiseks on loodud süsteeme, mis tarkavaraliste ja kergemate riistvaraliste vigade korral võimaldavad süsteemi normaalse töö operatiivselt taastada:
 "Valvekoer-taimer"-alasüsteem peab süsteemilt saama regulaarselt tagasisidet selle toimimise kohta. Kui tagasiside ei ole piisav, tehakse tarkvaraline reset.
 TCB (inglise keeles Trusted Computing Base) kasutamine disainis. TCB eraldab probleemialtid süsteemi osad ülejäänud süsteemist nõnda, vigade ilmnemise korral jääb suurem osa süsteemist toimima. 
 Virtuaalmasin-monitoride kasutamine disainis lubab isoleerida teineteisest tarkvaralisi komponente, et vältida ohustatud tarkvara suhtlemist ülejäänud alamsüsteemidega. See võib ka lubada alamsüsteemil automaatselt taaskäivituda vigade otsimise režiimis.

Andmemaht
Suureandmemahulistes seadmetes, nagu MP3-mängijad ja mobiiltelefonid, põhineb disain tavaliselt seadme tootmiskulude minimeerimisel. Insenerid valivad tavaliselt täpselt nii hea seadme, kui hädapärast tarvis läheb.

Väiksema andmemahuga seadmetes ja prototüüp-manusseadmetes, kus programmide piiramise võimekus ja süsteemi töökindlus on olulisem või taskukohasem, eelistatakse sageli kasutada universaalset arvutit, mis on eesmärgi jaoks kohandatud, ning operatsioonisüsteem asendada reaalajas toimiva operatsioonisüsteemiga.

Vaata ka 
 Tööstusautomaatika

Viited

Välislingid
 Sardsüsteemid – I loeng

Arvutid