Vývoj embedded softwaru

Jsme profesionálové ve vývoji embedded softwaru. Rádi Vám embedded software vyvineme na klíč, pomůžeme Vašemu vývojovému týmu nebo doplníme Váš stávající software o nové funkce.

Kontaktujte nás
Vývoj embedded softwaru

Embedded software

Embedded software (firmware), tedy software pro elektroniku, je specifický: zařízení jako jsou mikrokontroléry, senzory nebo IoT zařízení mají omezený výpočetní výkon a oproti běžným IT projektům vyvstávají specifické požadavky na spolehlivost, bezpečnost a energetickou úspornost.

Podle použitého hardwaru volíme vhodné technologie, nejčastěji:

  • založené na embedded Linuxu,
  • na bázi mikrokontrolérů, kdy používáme operační systém FreeRTOS nebo pracujeme bez operačního systému (bare-metal).

Pro vysokorychlostní aplikace používáme FPGA (VHDL), pro průmyslové aplikace volíme osvědčené platformy PLC (Siemens, Omron, Fatek, Teco/Foxtrot) nebo stavíme PLC vlastní, s architekturou přizpůsobenou aplikaci.

Máme praktické know-how s vývojem firmwaru medicínských aplikací, průmyslové automatizace, systémů pro zpracování obrazu i jiných, obecných aplikací.

Pro medicínský software zpracujeme dokumentaci podle ČSN EN 62304 a procesní dokumentaci vývoje (například “V” – diagram).

Embedded Linux

Embedded Linux je operační systém založený na jádře Linuxu, který je optimalizován pro použití v vestavěných systémech. Tyto systémy jsou obvykle zdrojově omezené a specializované na konkrétní úlohy, jako jsou například lékařské a měřicí přístroje,, síťová zařízení, průmyslová automatizace, navigační zařízení a další.

Embedded Linux umožňuje vyvíjet složité, komunikující aplikace s rozumnými náklady a se zachováním relativně snadné přenositelnosti mezi platformami. Tyto aplikace jsou také podstatně flexibilnější z hlediska možnosti vzdálené správy, diagnostiky a upgradu.

Zabýváme se vývojem v embedded Linuxu od roku 2013. Naše aplikace řídí průmyslové linky, měří fyziologické funkce pacientů nebo ovládají silniční automatizaci. 

Rádi používáme platformy NXP (např.i.MX6, i.MX8), STM32MP1 a nVidia Jetson (TX2, Jetson Nano, Orin); více aplikací jsme vyvinuli i na low cost platformách s OpenWRT, například na bázi RT5350 nebo MT7688. Mnoho aplikací jsme vyvinuli i pro Raspberry Pi případně Raspberry Pi Compute Module a SOM moduly například Toradex, Variscite nebo Compulab.

Dovedeme i vyvinout vlastní procesorové desky pro linuxové řídicí systémy – typicky na platformě STM32MP1, NXP i.MX6, i.MX8, TI Sitara. V době čipové krize vyvíjíme i na méně známých, ale dobře dostupných platformách, máme například vyvinuty zařízení na platformách Rockchip nebo Allwinner (A64, A20, A13, Allwinner V3s a dalších).

Pracujeme zejména s frameworky Yocto/OpenEmbedded a Buildroot, které umožňují vytvářet celé image souborového systému zařízení ze zdrojového kódu a tím odstraňují rizika chyb při konfiguraci jednotlivých zařízení. Vlastní kód píšeme v jazycích C/C++, Python, případně PHP, Lua, C# .

Pro grafická uživatelská rozhraní používáme knihovny Qt, LVGL nebo webové technologie (např. Electron); s tím se pojí i stack webových technologií (JavaScript, NodeJS).

Firmware pro embedded Linux dodáváme v celém rozsahu: customizovaný operační systém (BSP – Board Support Package včetně vytvořených ovladačů pro specifický hardware) i uživatelské aplikace.

Vývoj firmware pro mikrokontroléry

Firmware pro mikrokontroléry vyvíjíme každý den. Od malých aplikací o desítkách řádků až po složité systémy s desítkami vzájemně spolupracujících mikrořadičů.

Nejčastěji používáme mikrořadiče ARM Cortex (nejčastěji STM32), PIC, Microchip resp. Atmel AVR, RP2040; jsme vybaveni např. i pro PSoC, TI MSP430, Kinetis, Renesas nebo HCS8.

Častými platformami jsou také mikrokontroléry s vestavěnou bezdrátovou (RF) částí a podporou Wi-Fi, Bluetooth a ZigBee – pracujeme běžně s platformou ESP32, Nordic nRF nebo Cypress/Infineon CyBLE.

Firmware pro mikrokontroléry tvoříme obvykle v jazyce C nebo C++. 

V oblasti zpracování signálů – signálové procesory DSP “umíme” Texas Instruments a Microchip dsPIC. Používáme i hradlová pole CPLD, FPGA Xilinx a Lattice.

Aplikace pro mobilní telefony a tablety

Mnoho u nás vyvíjených výrobků spolupracuje s mobilní aplikací: vývoj mobilní aplikace můžeme nabídnout pro operační systém Android nebo iOS (iPhone).

Nejčastěji pracujeme s frameworkem React Native, který umožňuje sdílet stejný kód aplikace pro obě konkurenční platformy Android a iOS a tím šetří náklady a zjednodušuje údržbu aplikace. Umíme i nativní vývoj v Kotlin/Swift.

PC software

Mnoho našich zařízení komunikuje s počítačem a nedílnou součástí vývojové práce se tak stává a zpracování aplikace pro počítač. Umíme dodat software pro OS Windows i Linux, který můžeme vytvořit v platformách C#, Electron, případně Delphi, C++ nebo jako webovou aplikaci (PHP, Python).

Cloud a serverové aplikace

Serverové aplikace komunikující s u nás vyvíjenými zařízeními provozujeme na vlastních virtuálních serverech (Linux) nebo na cloudovém serverless řešení Amazon AWS Cloud.
Naši zákazníci s těmito serverovými aplikacemi komunikují buď pomocí REST API nebo webovým rozhraním.

Dodáme spolehlivý software

Desetitisíce přístrojů s naším softwarem denně spolehlivě pracují.

Jak zajišťujeme spolehlivost softwaru při vývoji?

  • Správný návrh a výběr technologií: máme dostatek zkušeností a spálili jsme se už tolikrát, že víme, jak kterou technologii použít korektně.
  • Při vývoji důkladně testujeme a kontrolujeme si kód (code review). Testování nám umožňuje identifikovat chyby a nedostatky a reagovat na ně včas. Kromě manuálního, automatického a zátěžového testování používáme nástroje pro statickou analýzu (cppcheck) a kontrolu dodržení norem pro tvorbu kódu (např. MISRA-C). 
  • Dbáme na verzování a udržitelnost kódu. Tým je schopen pracovat na různých verzích softwaru (produkčních, experimentálních). Nejsme závislí na znalostech jediného člověka. Pro trasování změn používáme git/gitlab.

A jak zajišťujeme spolehlivost v poli?

  • Naše zařízení mají propracované hlídání provozu – watchdog časovače a hlídání provozu všech spuštěných úloh a komunikace.
  • Kde je to možné, nasazujeme telemetrii pro vzdálený dohled a ideálně i možnost vzdáleného updatu zařízení. Stav softwaru i hardwaru tak můžeme sledovat on-line a v případě chyby ihned zasáhnout. Používáme dohledové systémy Zabbix a Grafana.

Odolnost proti poškození souborového systému nebo nekorektnímu vypnutí zařízení zajišťujeme žurnálovacími souborovými systémy a read only připojením svazků.

Revize a doladění softwaru

Upravujeme software zákazníků, často z vývojových platforem Arduino a Raspberry, do profesionální podoby.

Provedeme code review nebo kompletní přepis kódu, pokusíme se vylepšit spolehlivost a odstranit známé chyby, doplníme vzdálenou diagnostiku, vzdálený update a podporu pro testování ve výrobě. 

Samozřejmostí je důkladné testování. Zkontrolujeme i legálnost použitých open source licencí.

FAQ

Často kladené dotazy

Máte zájem o vývoj či výrobu elektroniky pro vaši společnost?

Kontaktujte nás
Jak je vývoj softwaru organizován?

Embedded vývoj běžně nespadá do škatulky agilního ani klasického (waterfall) řízení vývojových akcí. Snažíme se pracovat s vhodným mixem obou metod: tam, kde jsou náklady na změny vysoké a doba pro zpracování změn dlouhá (typicky u významnějších změn hardwaru), pracujeme více systémem waterfall, tedy s přesnou specifikací a minimem iterací (“na první nebo druhý pokus dodat plně funkční komplex”). Naopak softwarové prvk na tento HW navazující se snadno mění a kouzlo agile přístupu, tedy možnost dodat velice brzy částečnou funkcionalitu (MVP), dostačující ke komercializaci výrobku, a tu postupně se zákazníkem ladit a doplňovat o další funkce, nám dává možnost pracovat rychleji a lépe se držet požadavků zákazníka, i když nejsou dopředu přesně definovány.

Nicméně každý projekt je jiný – máme mnoho zákazníků, kteří preferují dodávku “na klíč” podle přesného zadání. Často dostáváme i velice volnou ruku – zadání typu “udělejte to lepší než tento výrobek” jsou obvyklá a rádi se jich ujmeme.

Pro řízení vývojové práce, správu úkolů a bugtracking používáme software gitlab, interní dokumentaci – zejména výsledky analytické práce – vedeme ve vnitřní wiki.

Jaké používáte nástroje CI/CD?

Kde to je vhodné, používáme nástroje CI/CD. Primárním nástrojem je pro nás gitlab, často ale pracujeme i se systémy zákazníka, například Jira, bitbucket, Jenkins apod.

Systémy CI/CD nám zajišťují lepší kontrolu nad kvalitou kódu (statická analýza, MISRA-C apod.), dokumentací (Sphinx) a v neposlední řadě i nad korektním verzováním a vydáváním produkčních verzí.

Jak zajišťujete údržbu softwaru?

Zajišťujeme pomocí servisních smluv podporu provozu embedded softwaru a údržbu systému po celou dobu jeho životnosti – tedy potřebné updaty a modifikace funkcionality. 

Údržbu rozdělujeme na:

  • aktualizace pro rozšíření funkcionality,
  • aktualizace pro udržení kompatibility s okolím (například jiná připojovaná zařízení, jiné verze Windows apod.),
  • odstranění chyb,
  • průběžnou kontrolu bezpečnostních zranitelností, zejména u kritické infrastruktury a medicínské techniky.
Kolik času zabere vývoj firmwaru?

Softwarová část vývoje elektroniky je často ta časově nejnáročnější. Níže udáváme několik příkladů.

  • Analýza a oprava cizího kódu – zrychlení updatu přístroje na poloviční čas – 2 týdny
  • Zpracování BSP pro embedded Linux modul – 2 měsíce
  • Aplikace mikrokontroléru s LTE komunikací s cloudem, LCD displejem a vnitřní skriptovací logikou – 3 měsíce
  • Řízení a webové rozhraní pro ovládání medicínského přístroje včetně potřebných dokumentací pro certifikaci – 1 rok

Kontakt

Máte zájem o podobnou speciální elektroniku na zakázku?

Potřebujete moderní a spolehlivou elektroniku? Pro začlenění do Vašeho zařízení nebo kompletní nový výrobek či systém? Ozvěte se nám! Rádi Vám poradíme s drobnými i složitými aplikacemi.

Napište nám