Témakör:
Az MCU-evolúció újabb „kis lépése”
Megjelent: 2019. május 07.
Pillantás az NXP LPC5569 MCU-családjára
A mikrovezérlők kezdetben szinte csak a logikai célhardverek programozható alternatívájaként szerepeltek a tervezők eszköztárában. Ma azonban az architektúrák „szabványosodásával”, az eszközök számítási teljesítményének növekedésével, valamint a feladatkörhöz célszerűen megválasztott perifériakészlettel egyre nagyobb súlyú feladatokat bízhatunk egy-egy mikrovezérlőre. Ennek jó példája az NXP termékpalettáján „frissen” megjelent LPC55S69 típus is, amely fokozott jelfeldolgozó képességeivel és az adatbiztonságot szolgáló hardverelemekkel különösen alkalmas az IoT-hálózatok végpontjának szerepére.
Kis és nagy lépések a „processzortörténelemben”
Nehezen vitatható, hogy a mikroprocesszorok majd öt évtizedének legnagyobb lépése az a pillanat, amikor „a semmiből valami” lett, azaz megjelent az első – kereskedelmi forgalomban beszerezhető – őstípus. Azóta számos gyártó számtalan típuscsaládját ismerhettük meg, és még ez is „felszorzódik” a típusváltozatok százas nagyságrendet közelítő számával. Ebben a bőségben alig van a kezdeti „nagy lépéshez” fogható innováció. A kivételek egyike mindenképpen a mikrovezérlők (MCU) megjelenése, amely az alapelveket ugyan nem „forgatta fel”, de a mérnöki gondolkodásmód, a tervezési módszerek, a megoldások gazdaságossága és rugalmassága lényegesen átalakult az ipari és beágyazott elektronikában. Ugyancsak „mérföldkőnek” tekinthetjük még a processzorarchitektúráknak – az ARM általános elterjedésével végbemenő – „mederbe terelését”, a szóhosszúság és a processzormagok számának növekedését. Ezeken belül azonban az új mikrovezérlő-családok megjelenésének ma már kevés a „hírértéke”. A fejlődést a biológiai evolúcióhoz hasonló apró lépések jellemzik, még akkor is, ha minden új termékcsaládban mégis csak kell lennie annyi újdonságnak, amely miatt azt megalkotni egyáltalán érdemes. Az evolúció abban is megnyilvánul, hogy a piacon a felhasználók érdeklődése dönti el, hogy egy típuscsalád (sőt, akár egy gyártó) „túlél vagy kihal”. Nem könnyű a piac értékítéletét előrejelezni, azonban mindenképpen nagy súllyal esnek latba azok az „apróságok”, amikkel egy-egy új – és egyre határozottabban körvonalazott alkalmazási szegmens igényeihez igazodó – típuscsalád tervezői megpróbálják felismerni a létező felhasználói igényeket és „elébe menni” az elvárásaiknak. Ezzel a szemlélettel vessünk egy pillantást az NXP egyik „hétköznapi” újdonságára, az LPC5560 típuscsalád egy tagjára. Ha „szenzációra” nem is számíthatunk, de egy rövid „rápillantás” mégis felfedhet néhány figyelemre méltó részletet.
1. ábra Az NXP LPC55S69 mikrovezérlő tömbvázlata
Új, hatékonyabb processzormag és utasításkészlet
Hogy az ARM-architektúrák „térképén” könnyebben elhelyezhessük; az általános célú mikroprocesszorok és mikrovezérlők az „ARM-világban” Cortex-M néven ismeretesek. A „belépő szintűnek” tekintett -M0, -M0+ és -M1 változatok az ARMv6, a nagyobb teljesítményű -M3 és -M4 magok pedig az ARMv7 utasításkészlet futtatására alkalmasak. Az NXP LPC556x-családja az első, amely a legfrissebb ARMv8-utasításkészlettel programozható, az alkalmazott processzormag pedig a számos tulajdonságában továbbfejlesztett ARM Cortex-M25, -M33, -M35P magok valamelyike köré épül. Ezek közül is az LPC55S69 típus (1. ábra) az első a piacon, amely a Cortex-M33 processzormagot használja, és az igényes ipari és IoT-alkalmazások piacát célozza meg. Egy processzormag hatékonyságát ma két mutatószámmal is mérhetjük: lényeges a processzor számítási teljesítőképessége, de – különösen a tápenergiával rendszerint szűkösen ellátott, elemes táplálású és elemcsere nélkül hosszú ideig működő – IoT-alkalmazásokban az energiaigény ugyanennyire fontos követelmény. Az LPC55S69 típus a beágyazott mikrovezérlők teljesítőképességének összehasonlítására általánosan használt CoreMarks tesztprogram (benchmark) futtatásakor 755-ös eredményt mérhet, ráadásul az energiafelvételt sem „viszi túlzásba”: az „egységnyi” órafrekvenciára vonatkoztatott áramfelvétele csupán 32 µA/MHz. Ezzel a teljesítőképességgel nagyjából tízszer jobb hasonló rendeltetésű versenytársainál a – különösen számításigényes – jelfeldolgozási és kriptográfiai alkalmazások körében. Bőséges és optimalizált belső perifériakészlettel rendelkezik a szenzorjelek érzékeléséhez, a beavatkozó „aktorok” vezérléséhez és a kommunikáció számos válfajához. Nézzük meg kicsit alaposabban, miből származik a hasonló kategóriájú korábbi típusokhoz viszonyítva jelentősen megnövelt teljesítőképesség:
-
már említettük az ARMv8 utasításkészlet első kereskedelmi reprezentációját,
-
feljavították a lebegőpontos processzort,
-
a korábbi Cortex-M4-es magban használt, és a processzormagok, valamint a mag és a cache közötti gyors adatcserét szolgáló belső perifériabusz (AHB Lite) mellett megjelenik az addig csak a Cortex-M7-ben megtalálható AHB slave (AHBS) is,
-
a Cortex-M4-ben még csak 240 megszakítás kezelésére alkalmas vektoros megszakításkezelő az LPC55S69-ben már 480 egymásba ágyazott megszakítást képes kezelni.
A fejlesztőmunkát jelentős továbbfejlesztések könnyítik:
-
új szolgáltatás az MTB végrehajtáskövetés beépítése,
-
hatékonyabb lett a programhibák keresésének támogatása,
-
megjelent a veremhatár túllépésének hardveres figyelése,
-
végül pedig az informatikai biztonság jelentős növelésével járó TrustZone-szolgáltatáscsomag is a processzor részévé vált.
A fejlesztések – az újratervezett utasításfeldolgozó „futószalag” (pipeline) – révén egy óraciklusra átlag két utasítás végrehajtása esik, aminek eredményeképpen a belépő szintű Cortex-M0 alaptípushoz képest 60%-kal nőtt a számítási teljesítmény. Az 1,8…3,6 V tápfeszültség- és 40…+105 °C hőmérséklet-tartományban használható eszköz néhány fontos adata:
-
akár 100 MHz-es órafrekvencia,
-
memória: 640 kbájt flash, 320 kbájt SRAM, 128 kbájt ROM,
-
időzítők: 5 × 32 bit, PWM-támogatás, „micro timer” (nagy felbontású időzítő), watchdog, valós idejű óra, elkülönített időzítő az operációs rendszer számára,
-
interfészek: USB High és Full Speed (PHY-réteggel), nagy sebességű SPI (<50 MHz), 8 db Flexcomm (UART, I2C és SPI) port,
-
analóg: 16 bites ADC (1 Mminta/s), analóg komparátor, hőmérséklet-érzékelő,
-
egyéb: DC/DC-konverter, programozható logikai egység (8 be- és 8 kimenet).
Hatékony DSP-egység
A „számításigényes” alkalmazások egyike a digitális jelfeldolgozás (Digital Signal Processing – DSP). Ennek a legelemibb típusa a „szorzás/összeadás” típusú műveletek gyors végrehajtása (pl. idő szerinti integrálok, lényegkiemelő és zajszűrő algoritmusok, továbbá jeltranszformációk számításánál). Az LPC55S69 PowerQuad fantázianevű jelfeldolgozó segédprocesszora (2. ábra) azonban még ennél bonyolultabb „sorozatszámítások” elvégzéséhez is ad hardvertámogatást. Ennek jelentősége különösen szembetűnő az IoT-alkalmazásokban, ahol a szenzorhoz közvetlenül kapcsolódó végpont processzoraként (részben vagy teljesen) önmaga végezheti el a digitális jelfeldolgozás feladatát. Ez különösképpen a – rendszerint korlátozott sávszélességű – kommunikációs csatorna tehermentesítésével takaríthat meg értékes erőforrásokat. Az eszköz az elemi DSP-funkciókhoz szükséges, optimalizált szorzó/összeadó művekből 4 db 32 bites, lebegőpontos egységet tartalmaz, de néhány gyakran előforduló művelettípus ennél erősebb hardvertámogatást is kap. Ilyenek a
-
spektrumszámításokhoz használt gyors Fourier-transzformáció (FFT) és inverze,
-
a – különösen képfeldolgozásnál és mintafelismerésnél alkalmazható – „diszkrét koszinusz transzformáció” (DCT) és inverze,
-
a véges impulzusválaszú (Finite Impulse Response – FIR) digitális szűrő,
-
a (másodrendű) végtelen impulzusválaszú (Infinite Impulse Response – IIR) szűrő,
-
a konvolúciószámítás,
-
bizonyos mátrixműveletek,
-
négyzetgyökvonás és trigonometriai függvények.
2. ábra Az NXP LPC55S69 PowerQuad digitális jelfeldolgozó egységének vázlata
Biztonság
Az informatikai biztonság problémáját nem lehet túlhangsúlyozni. Ma már nem csak az informatikai nagyrendszerek, hanem az IoT-végpontok is ki vannak téve azoknak a támadásoknak, amelyek részben az adatok bizalmasságát, részben az adatgyűjtő- és feldolgozórendszer integritását, működőképességét veszélyeztetik. Ma már egyetlen IoT-végpontról sem mondhatjuk el, hogy „ez olyan egyszerű és igénytelen rendszer, hogy nincs rajta mit védeni”. A tisztán szoftveralapú biztonsági rendszerek viszont ma már „tárva-nyitva állnak” az illetéktelen hozzáférési kísérletek előtt, ezért még egy egyszerű „helyezd ki és felejtsd el” súlycsoportú IoT-végpontnak is szüksége van bizonyos hardverelemekre, amelyek megakadályozzák (de legalább is alaposan megnehezítik) a rosszhiszemű beavakozást. Jelentős tervezési előny, ha ezek a processzormaggal szervesen egybeépülve, integráltan valósulnak meg. Foglaljuk össze, milyen biztonsági megfontolásokkal kell foglalkoznia egy mai IT-végpont tervezőjének:
-
Biztonságos elválasztás: határozottan el kell választani a biztonságkritikus alrendszereket azoktól, amelyek nem hordoznak biztonsági kockázatot.
-
Biztonságos rendszerbetöltés: a hálózati elemeket fenyegető támadások jelentős része azon az elven alapul, hogy a rendszerbetöltéskor a tervező szándékától eltérő, „idegen”, és rosszindulatú kódot tartalmazó operációsrendszer-kernel töltődik be. Gondoskodni kell tehát arról, hogy csak hitelesített forrásból származó alaprendszer töltődhessen be.
-
Biztonságos biztonsági rendszerfunkciók: az egyik jelentős támadási lehetőség a rendszer biztonsági „primitívjeinek” (hozzáférési hitelesítés, hash-függvények számítása, titkosítás, kódolt adat helyreállítása stb.) manipulálása.
-
Biztonságos tárolás: meg kell akadályozni a rendszer tárolóelemeiben található kódok, kulcsok, adatok illetéktelen elérését és megváltoztatását.
-
Biztonságos rendszerfrissítés: a hálózatra csatlakozó rendszerelemek (pl. IoT-végpontok) frissítése ma már jórészt magán a hálózaton átküldött frissítőkóddal történik. Meg kell akadályozni, hogy a szoftverfrissítő rendszeren keresztül kerüljön rosszhiszeműen megváltoztatott programkód a rendszerbe.
-
Biztonságos hibakeresés: a rendszerelemek „távszervizének” része a távoli diagnosztika és hibakeresés is. El kell érni, hogy ezt a műveletcsoportot csak megfelelő hozzáférési joggal rendelkező személy vagy rendszer kezelhesse. Ezeket a célokat szolgálják az LPC55S69 mikrovezérlőbe (is) beépített ARMv8-alapú TrustZone szolgáltatáscsomag elemei.
A TrustZone néhány érdekes részlete
A TrustZone védelmi funkciója gyakorlatilag az előző fejezetben felsorolt összes biztonsági kihívásra ad a jelenkor szintjén kielégítő választ. A terjedelmi korlátok miatt teljességre nem törekedhetünk, ezért csak néhány érdekességet emelünk ki. A biztonságot garantáló funkciók első helyen említett követelménye a biztonságos elválasztás. Az ARMv8 környezetben ezt egy olyan rendszer valósítja meg, amelyben elvileg akár minden egyes memória- vagy perifériacímet (gyakorlatiasabban megközelítve kijelölt címtartományokat) lehet – egymástól függetlenül – a „biztonságos” és „nem biztonságos” (azaz korlátozás nélkül elérhető) kategóriába sorolni. Erről egy – önmagában is „mikroprocesszor-bonyolultságú” – külön hardverblokk, a biztonsági minősítést kezelő egység (Security Attribution Unit – SAU) gondoskodik. Ez az utasításkód-elővétel során jelzést ad, ha az nem biztonságosnak minősített memóriacímről történik, és ezzel lehetővé teszi annak szűrését, hogy a „nem biztonságos” besorolású címen tárolt, esetleg rosszindulatú, „beinjektált” kód hajtódjon végre. Adathozzáférés (írás és olvasás) esetén a SAU a biztonsági attribútum értékét adja vissza. A biztonsági attribútummal történő elkülönítést – legalább – a szoftverfrissítésnél, a biztonsági kulcsok és tanúsítványok, továbbá a biztonsági szoftverkönyvtár kiemelten védett futtatható kódok, valamint a biztonságos rendszerbetöltési (secure boot) kódok tárolásánál ajánlott használni, de ez további biztonságkritikus szoftverelemekben egyéb funkciók fokozott védelmére is felhasználható. A rosszindulatú kód futtatásának megakadályozásán kívül a biztonságos elszigeteléssel elkerülhető – egyebek közt – a rendszernek a szándékosan előidézett puffertúlcsordulással, a megszakításkiszolgálás akadályozásával vagy kölcsönös kizárással, esetleg energiatúlfogyasztást okozó működési állapotba kényszerítésével megvalósítható támadása is. A biztonságos rendszerbetöltés nem egyszerűen a biztonságos működés észszerű feltétele, hanem rendszerint az IoT-felhasználók által a felhőszolgáltatóval kötött felhasználói szerződésben lefektetett követelmény is. Ezért a rendszerbetöltő kódnak hiteles forrásból származónak és illetéktelenek számára megváltoztathatatlannak kell lennie. Az LPC55S69 azzal válaszol erre a kihívásra, hogy a rendszerbetöltő (boot) kódot kívülről át nem írható ROM-ban tárolja. Ezenkívül RSA 2048, 3072 vagy 4096 szintű digitális aláírással is hitelesíthető, továbbá titkosított futtatható kód (image) használatára is alkalmas a beépített gyors működésű és kis fogyasztású, szimmetrikus kulcsú titkosítóhardver (PRINCE) felhasználásával. Az LPC55S69 hatásos választ ad a biztonságkritikus rendszerfunkciók sérülékenységének kihívására is: célhardverrel végeztethető a hash-kódok (SHA1, SHA2-256) számítása, amely nem csak nehezebben támadható, és ezért biztonságosabb, de gyorsabb is a szoftvermegoldásnál. Hasonló hardvergyorsító áll rendelkezésre az AES 128, 192 és 256 bites titkosításának megvalósítására. Ezenkívül a „nagy számokkal” végzett műveleteken alapuló titkosítási eljárásokat, a nyilvános kulcsú RSA és elliptikus (Elliptic Curve Cryptography – ECC) eljárást is a „tiszta” szoftvermegoldásnál 4…6-szor gyorsabb, és annál kevesebb energiát fogyasztó speciális hardvergyorsító (CASPER) támogatja. A biztonság témaköréből már csak egyetlen újszerű megoldást emelünk ki, amelynek talán az ad különös érdekességet, hogy a biztonságos tárolás és az egyedi kulcsgenerálás „határterületén” helyezkedik el. Eléggé közismert, hogy a pozitív visszacsatolással megvalósított, kétállapotú tárolócellákból felépített statikus RAM (SRAM) tartalma bekapcsoláskor lényegében véletlenszerűnek tekinthető. Azt talán már kevesebben tudják, hogy ez a véletlen tartalom csak az egyes processzorpéldányokat összehasonlítva különbözik, ugyanaz a példány – a gyakorlatilag reprodukálhatatlan – „nanoméretű” gyártási szórásnak köszönhetően minden bekapcsoláskor ugyanazzal a tartalomkombinációval „éled fel”. Ezt a példány „ujjlenyomatának” (silicon fingerprint) is szokás nevezni, és ez a tulajdonság éppen ezért alkalmas „nem klónozható”, példányfüggő egyedi biztonsági kód generálására (Physically Unclonable Funcion – PUF).
Összefoglalás
Az IoT-alkalmazások terjedésének fontos feltétele a hálózat többi elemével folytatott biztonságos kommunikáció. Ennek költségei jelentősen csökkenthetők, ha az IoT-végpont az adatok egyszerű „begyűjtésén” kívül önálló adat- és jelfeldolgozó képességekkel rendelkezik, valamint az adatbiztonság ki nem kerülhető feladataira is dedikált hardver áll rendelkezésre. Mindehhez társul az IoT-végpontok „örökzöld” problémája, az energiatakarékos működés. Az NXP új LPC55S69 mikrovezérlője hatékony kompromisszumot kínál a mikrovezérlőkre „terhelhető” feladatok megoldására – főként az IoT- és ipari alkalmazásokban.
Szerző: Tóth Ferenc
A cikk alapjául szolgáló terméket Magyarországon az NXP termékeit forgalmazó EBV Elektronik Kft. forgalmazza. A cikk témája iránt alaposabban érdeklődőknek javasoljuk: vegyék fel a kapcsolatot Nagy Krisztiánnal (Ez az e-mail-cím a szpemrobotok elleni védelem alatt áll. Megtekintéséhez engedélyeznie kell a JavaScript használatát. ), a cég támogatómérnökével.
EBV Elektronik Kft.
1117 Budapest, Budafoki út 91-93.
Tel.: +36 1 436 7220
E-mail: Ez az e-mail-cím a szpemrobotok elleni védelem alatt áll. Megtekintéséhez engedélyeznie kell a JavaScript használatát.
www.ebv.com
Még több EBV