DomovRevijaNova številkaKako premagati težave pri razvoju v Linux sistemih z omejenimi viri

Kako premagati težave pri razvoju v Linux sistemih z omejenimi viri

DigiKey
Avtor: Rolf Horn

Odprtokodna tehnologija razvijalcem elektronskih sistemov omogoča znižanje stroškov, hitrejše uvajanje izdelkov na trg in podaljšanje življenjskega cikla izdelkov, saj odpravlja ovire, povezane z lastniškimi pravicami, in spodbuja sodelovanje.

Danes odprtokodne rešitve zajemajo celoten sistemski niz, od operacijskih sistemov do strojne opreme enoploščnih računalnikov (SBC) in intelektualne lastnine na področju polprevodnikov.

Vendar pa pri uporabi sistema Linux na napravah z omejenimi viri, kot so sistemi industrijskega interneta stvari (IIoT) in robotski sistemi, ostajajo velike zahteve po računalniški zmogljivosti, varnostna tveganja in izzivi v zvezi z deterministično zakasnitvijo.

Ta članek na kratko obravnava izzive, s katerimi se soočajo razvijalci pri uvajanju sistema Linux v sisteme z omejenimi viri. Nato predstavi enoploščni računalnik (SBC) BeagleV-Fire [1] spletne strani BeagleBoard.org v kombinaciji z Linuxom ter opisuje, kako lahko ta rešitev poveča prihodnjo fleksibilnost pri razvoju. Vključena je tudi predstavitev, kako uporabiti odprtokodne pakete za podporo ploščam (BSP) podjetja Microchip Technology [2] za vzpostavitev začetne konfiguracije sistema Linux.

Izzivi razvoja odprtokodnih rešitev v ugnezdenih sistemih
Uporaba odprtokodnih tehnologij v razvoju ugnezdenih sistemov je že dobro uveljavljena. Tako načrtovanje strojne opreme kot integracija programske opreme sta pospešena z uporabo takoj uporabnih virov, ki jih ustvarja širok ekosistem proizvajalcev in posameznih inženirjev. Zlasti zaradi svoje prilagodljivosti je Linux postal vodilna programska rešitev za sisteme, ki zahtevajo omrežno povezljivost, visokokakovostne aplikacijske okvire in integracijo umetne inteligence (AI).

Vendar pa namestitev sistema Linux na naprave z omejenimi viri prinaša dodatne vidike, ki jih je treba upoštevati:
Računske zahteve: Tradicionalni mikrokontrolerji (MCU) težko izpolnjujejo zahteve po pomnilniku in shranjevanju celo pri najmanjših distribucijah Linuxa. Ko razvijalci dodajajo storitve v ozadju za podporo aplikacijam, podsistemom in okvirom v uporabniškem prostoru (USF), ti podsistemi porabijo več virov, zaradi česar so obsežni programski sklopi neizvedljivi.
Zakasnitev: Aplikacije, ki zahtevajo visoko natančnost, kot sta robotika in industrijska avtomatizacija, potrebujejo predvidljivo časovno usklajevanje za koordinacijo sistema in varnost delovanja. Čeprav funkcija PREEMPT_RT jedra Linux izboljšuje determinizem, namenski operacijski sistemi v realnem času (RTOS) zagotavljajo manjšo zakasnitev in manjšo obremenitev za strojno opremo z omejenimi viri.
Varnost: Ugnezdeni sistemi, nameščeni v javnih okoljih, so izpostavljeni tveganju nepooblaščenega dostopa, zato so standardni varnostni ukrepi, kot so varen zagon, zaščita pred nedovoljenim poseganjem in strojna osnova zaupanja (Root of Trust, RoT), ključnega pomena. Poleg tega predpisi, kot je Zakon EU o kibernetski odpornosti (CRA), zahtevajo, da morajo biti izdelki z digitalnimi elementi varni že v fazi načrtovanja.
Poraba energije: Naprave na robu omrežja pogosto delujejo v oddaljenih okoljih z omejenimi viri energije. Večja energetska učinkovitost lahko podaljša življenjsko dobo baterije ali omogoči delovanje z uporabo virov energije iz okolja. Podobno lahko večja energetska učinkovitost poenostavi upravljanje s toploto in poveča zmogljivost na vat, kar omogoča napredno obdelavo podatkov na robu omrežja.
Upravljanje življenjskega cikla: CRA zahteva, da se digitalne naprave podpirajo vsaj pet let, čeprav številne industrijske aplikacije zahtevajo 10 do 15 let razpoložljivosti izdelka. Da bi tako zagotovili dosledno podporo jedra Linux, morajo razvijalci upoštevati možnost nadgradnje in razpoložljivost strojne opreme.

Da bi premagali te izzive, lahko razvijalci izkoristijo dodatna sredstva iz odprtokodnih in ugnezdenih Linuxovih ekosistemov ter izkoristijo poenostavljene kombinacije strojne in programske opreme sistema Linux za hitro razvijajoče se aplikacije na robu.

Linux implementacija z uporabo odprtih enoploščnih računalnikov in RISC-V
Čeprav splošne distribucije Linuxa omogočajo hiter dostop do pripravljenih aplikacij, pogosto vsebujejo pakete in storitve, ki za zadevni projekt niso potrebni. Nasprotno pa projekt Yocto [3], ki temelji na OpenEmbedded, razvijalcem omogoča izdelavo prilagojenih slik Linuxa, prilagojenih konkretnim primerom uporabe. S tem se odpravijo nepotrebne funkcije, kar omogoča delovanje lahkih distribucij na strojih z omejenimi viri, hkrati pa se ohranijo napredne zmogljivosti, kot so računalniški vid na podlagi umetne inteligence ali predvidljivo vzdrževanje s pomočjo standardnih orodij.

Poleg tega projekt Yocto razvijalcem ponuja:
Ponovljive različice sistema Linux za dolgoročno vzdrževanje
Prilagojena konfiguracija jedra za izboljšanje zmogljivosti, varnosti in odzivnosti
Integracija plasti, prilagojena posamezni plošči, za zagotovitev združljivosti strojne in programske opreme ter skrajšanje časa razvoja

Enostavna integracija z mehanizmi za posodobitve prek brezžičnega omrežja (OTA), kot so SWUpdate, RAUC in Mender, razvijalcem omogoča tudi redno izboljševanje zmogljivosti in varnosti naprav skozi celoten dolg življenjski cikel izdelka. Zaradi tega je Yocto Project danes standard za ugnezdene Linux sisteme.

Podobno se odprtokodni enoploščni računalniki (SBC) že dolgo uporabljajo za pospeševanje razvoja aplikacij za Linux, saj ponujajo takoj uporabno referenčno platformo, ki v samostojni obliki združuje zmogljivosti za obdelavo podatkov, pomnilnik, shranjevanje in vmesnike za vhodno-izhodne operacije. Z odprtokodnimi SBC-ji lahko razvijalci hitro izdelajo prototip sistema, preverijo delovanje svojega programskega sklada in nato z minimalnim dodatnim delom preidejo na prilagojeno strojno opremo.

Arhitektura naborov ukazov (ISA) odprtega standarda RISC-V gre še korak dlje, saj razvijalcem sistemov omogoča da ustvarjajo prilagojene procesne platforme brez dragih licenčnih pristojbin. Z RISC-V lahko razvijalci izbirajo, katere dele nabora ukazov bodo vključili, in jih celo razširijo, da bi ustrezali njihovim specifičnim primerom uporabe. Ker so bili prvotni projekti ustvarjeni pod licenco Berkeley Software Distribution (BSD), so lahko izpeljani izdelki bodisi odprti in brezplačni bodisi zaprti in lastniški.

Za razvijalce in arhitekte projekt Yocto, odprti enoprocesorski računalniki (SBC) in RISC-V zmanjšujejo odvisnost od razvojnih načrtov posameznih ponudnikov, s čimer povečujejo dolgoročno prožnost pri načrtovanju. Poleg tega naraščajoča podpora za RISC-V v Linuxu na višji ravni ter platinasto članstvo RISC-V v projektu Yocto poudarjata zanimanje skupnosti za ugnezden Linux.

Visoko zmogljiv enoploščni RISC-V računalnik za kompaktno integracijo sistema Linux
Odprtokodni enoploščni računalnik (SBC) BeagleV-Fire s spletne strani BeagleBoard.org (slika 1) ponuja kompaktno platformo z obsežnimi vhodno-izhodnimi zmogljivostmi za reševanje teh izzivov. S sistemom na čipu (SoC) FPGA Microchip PolarFire [4] zagotavlja energetsko učinkovito delovanje, varnostne funkcije na ravni strojne opreme ter usklajen grozd RISC-V procesorjev, ki podpira Linux aplikacije za izvajanje delovnih obremenitev v realnem času. Razvijalci lahko SBC uporabijo za izdelavo prototipov krmilnikov za robotiko, industrijskih vrat, AI pospeševalnikov na robu omrežja in prilagojenih I/O platform, ki temeljijo na ugnezdenem Linuxu.

Kompaktna platforma meri 86,38 × 54,61 × 18,8 milimetrov (mm) in temelji na energetsko učinkovitem sistemu na čipu (SoC) MPFS025T-FCVG484E [5] PolarFire. Ima koherentno večjedrno arhitekturo s štirimi aplikacijskimi jedri RV64GC za izvajanje Linux sistema in nadzornim jedrom RV64IMAC za upravljanje funkcij na nizki ravni.

Za doseganje največje zmogljivosti in zagotavljanje natančnosti podatkov med jedri sistem na čipu (SoC) PolarFire ponuja skupni predpomnilnik L2, koherenten pomnilniški podsistem ter vgrajen krmilnik DDR pomnilnika, ki podpira 2 gigabajta (GB) vgrajenega pomnilnika LPDDR4. Zahtevne aplikacije dodatno podpira 16 GB pomnilnika eMMC in 128 megabitni (Mbit) SPI Flash pomnilnik v napravi BeagleV-Fire.

Poleg podsistema RISC-V procesorja sistem na čipu PolarFire vključuje tudi FPGA strukturo (slika 2), ki razvijalcem omogoča oblikovanje determinističnih poti obdelave za aplikacije v realnem času z nizko zakasnitvijo ter implementacijo prilagojene strojne pospešitve za poteke sklepanja umetne inteligence. Kot del celotnega sistema ta struktura vsebuje 23.000 logičnih elementov in lastne dodatne vire, kar ji omogoča delovanje neodvisno od glavnih procesnih jeder.

Z več možnostmi varnega zagona vgrajene strojne varnostne funkcije sistemskega čipa PolarFire razvijalcem omogočajo uvedbo celovitega varnostnega modela, zaradi česar je ta platforma primerna za izpolnjevanje sodobnih zahtev na področju kibernetske varnosti. Te funkcije vključujejo:
Nespremenljiv koren zaupanja v strojni opremi prek funkcije, ki jo je fizično nemogoče klonirati (PUF).
Varno shranjevanje ključev z enkratno programirljivim pomnilnikom (OTP) ali varno trajno shranjevanje s pomočjo tehnologije Unique Device Secrets (UDS) in strojne kontrole dostopa do ključev.
Modul za zaščito pred nedovoljenim posegom.

Poleg tega BeagleV-Fire ponuja več vgrajenih fizičnih vrat za sestavo sistema, pripravljenega za uporabo, v katerem je mogoče preverjati in testirati prilagojene distribucije Linuxa (slika 3). Ti vključujejo RJ45 Gigabit Ethernet vmesnik, USB Type-C vmesnik za napajanje in povezljivost, M.2 Key E vtičnico, dva 46-pinska BeagleBone-združljiva Cape [6] priključka za večjo razširitev ekosistema ter Camera Serial Interface (CSI) za neposredno integracijo. Za razhroščevanje je na voljo JTAG TAG-CONNECT, BeagleV-Fire pa podpira tudi razširitev, združljivo s SYZYGY, za periferno opremo, usmerjeno v FPGA.

Kako nastaviti začetno konfiguracijo sistema Linux na enoploščnem računalniku BeagleV-Fire
Pri razvoju lahke distribucije Linuxa za BeagleV-Fire morajo razvijalci najprej pridobiti ustrezen sloj BSP iz projekta Yocto. Ta zagotavlja konfiguracijo U-Boot, privzeto konfiguracijo jedra Linux, drevesa naprav za podporo plošči ter opredelitve podpore za periferno opremo. Repozitorij GitHub [7] podpira vse BSP-je za razvojne komplete SoC PolarFire, vključno z BeagleV-Fire.

Po namestitvi vseh potrebnih odvisnosti projekta Yocto Project naslednje plasti predstavljajo osnovo za sestavo in jih je treba klonirati:

bitbake
meta-openembedded-core
meta-yocto (za Poky referenčno distribucijo)
meta-mchp-common
meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-bsp
meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-community
Dodatne plasti, kot jih zahteva projekt

Ko je to storjeno, je mogoče sestaviti minimalno sliko z uporabo cilja MACHINE = „beaglev-fire“ in konfiguracijske datoteke kas [8]. V seznamu 1 je prikazan primer konfiguracije:

header:
version: 19

repos:
openembedded-core:
url: git://git.openembedded.org/openembedded-core.git

yocto-5.0.15

commit: 6988157ad983978ffd6b12bcefedd4deaffdbbd1
layers:
meta:

bitbake:
url: git://git.openembedded.org/bitbake.git

yocto-5.0.15

commit: 8dcf084522b9c66a6639b5f117f554fde9b6b45a
layers:
bitbake: disabled

meta-yocto:
url: git://git.yoctoproject.org/git/meta-yocto.git

yocto-5.0.15

commit: 9bb6e6e8b016a0c9dfe290369a6ed91ef4020535
layers:
meta-poky:
meta-yocto-bsp:

meta-mchp:
url: https://github.com/linux4microchip/meta-mchp.git
branch: scarthgap
path: layers/third-party/meta-mchp
layers:
meta-mchp-common:
meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-bsp:
meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-community:

machine: beaglev-fire

local_conf_header:
Users: |
EXTRA_IMAGE_FEATURES = »allow-empty-password empty-root-password \
allow-root-login«

Z izvedbo ukaza »kas build core-image-minimal« se nato ustvarijo vsi potrebni artefakti, potrebni za zagon BeagleV-Fire naprave v preprostem lupinskem okolju, vključno z binarnimi datotekami U-Boot ter sliko FIT, ki vsebuje jedro Linux in module, drevo naprav ter korenski datotečni sistem.

Ko z uporabo Yocto Projecta ustvarimo minimalno sliko sistema Linux za BeagleV-Fire, lahko nato sledimo standardnim postopkom za izdelavo prilagojene slike in prilagodimo sestavo natančnim zahtevam projekta. V robotiki in industrijskih sistemih se na primer Linux pogosto uporablja skupaj z bolj tradicionalnimi RTOS, kot sta FreeRTOS ali Zephyr, da se omogoči napredno obdelavo ob operacijah, pri katerih je čas ključnega pomena. To funkcionalnost dobro podpira PolarFire SoC naprave BeagleV-Fire, ki se lahko konfigurira za sočasno izvajanje več operacijskih sistemov ali aplikacij na goli strojni opremi.

Glede na to, da mnoge vgrajene naprave zahtevajo življenjsko dobo 10 let ali več, kombinacija odprte arhitekture RISC-V, operacijskega sistema Linux in ponovljivosti na podlagi Yocto omogoča platformam na osnovi PolarFire SoC, da se prilagajajo nastajajočim varnostnim grožnjam in novim zahtevam aplikacij prek rednih lokalnih ali OTA posodobitev. Na ta način enoploščni računalnik BeagleV-Fire predstavlja odlično izhodišče za prehod na odprtokodne rešitve, s čimer povečuje prilagodljivost in dolgo življenjsko dobo inteligentnih sistemov na robu omrežja.

Zaključek
Računske omejitve, zahteve po deterministični zakasnitvi, varnostna tveganja in zahteve po dolgem življenjskem ciklu lahko predstavljajo resne izzive pri uporabi sistema Linux v ugnezdenih sistemih z omejenimi viri. SBC BeagleV-Fire podjetja BeagleBoard.org ponuja hibridno arhitekturo, ki združuje zmogljivosti RISC-V Linuxa z deterministično logiko na osnovi FPGA in varnostnimi funkcijami strojne opreme, da bi premagala te izzive.

V kombinaciji z Yocto Projectom in odprtokodnimi BSP-plastmi podjetja Microchip lahko razvijalci to platformo uporabijo za razvoj prilagojenih, sledljivih distribucij Linuxa, optimiziranih za robotiko z daljšo življenjsko dobo, IIoT in aplikacije za računalništvo na robu.

Viri:
1: https://www.digikey.com/en/product-highlight/b/beagleboard/beaglev-fire

  1. https://www.digikey.com/en/supplier-centers/microchip-technology
  2. https://www.yoctoproject.org/
    4: https://www.digikey.com/en/product-highlight/m/microchip-technology/polarfire-soc-fpgas
    5: https://www.digikey.com/en/products/detail/microchip-technology/MPFS025T-FCVG484E/16028828
    6: https://www.digikey.com/en/products/filter/expansion-boards-daughter-cards/797?s=N4IgjCBcoLQExVAYygFwE4FcCmAaEA9lANogCcIAugL7X4KSlICGADtldUA
    7: https://github.com/linux4microchip/meta-mchp
    8: https://kas.readthedocs.io/en/latest/intro.html

https://www.digikey.com