Vytvoření skvěle odladěného firmwaru je cílem každého vývojáře. Nedostatky a chyby se však bohužel mnohdy odhalí až ve chvíli, kdy je zařízení již uvedené na trh. Možnost nápravy je pak značně komplikovaná a často i finančně náročná. Řešením je vzdálená aktualizace pomocí bootloaderu, který umožní rychlý a uživatelsky přívětivý upgrade. Přináší i možnost soustavného vylepšování zařízení a získání náskoku před konkurencí.
Snadná aktualizace firmwaru na dálku výrobcům a dodavatelům ve výsledku ušetří spoustu peněz. Eliminuje potřebu stahování výrobků od zákazníků i problémy s reklamací. Pomáhá tak předejít potenciálnímu poškození pověsti výrobce na trhu. Navíc umožňuje vzdáleně přidávat nové funkce a vylepšení, což přináší konkurenční výhodu. Na příkladu zařízení Leviathan, který vyvíjela společnost ASN Plus, si ukažme konkrétní postup implementace bootloaderu v praxi.
Jedním ze způsobů, jak umožnit snadnou aktualizaci firmwaru elektronických zařízení, je použít dva samostatné programy. Prvním je hlavní program, který zajišťuje řízení hardwaru, druhým pak bootloader neboli boot manager. Ten v sobě nese informaci o umístění hlavního programu, stará se o jeho spouštění a případnou aktualizaci.
Díky bootloaderu lze jednoduše aktualizovat hlavní program, a to nejen z pevného úložiště, ale také z cloudu. To přináší možnost hromadného upgradu i velkého počtu zařízení. Aktualizace však nemusí být nutně vyžadována – podobně jako v případě mobilních telefonů je rozhodnutí na samotném uživateli. Je také namístě zmínit, že při aktualizaci firmwaru nedochází k upgradu obou programů, ale pouze toho hlavního. Bootloader zůstává po prvotním naprogramování neměnný a neaktualizuje se.
Ať už patříte mezi vývojáře, nebo výrobce elektroniky či jiných zařízení vybavených elektronikou, možnost snadné aktualizace rozhodně zvažte. Říkáte si, jestli se vám vyplatí investovat čas a finanční prostředky do implementace bootloaderu? Přehled výhod vám rozhodování usnadní:
Pro pochopení všech možností bootloaderu a jeho specifik přejděme od teorie k praxi. Řešením snadné vzdálené aktualizace firmwaru se zabývala společnost ASN Plus, která se dlouhodobě věnuje kompletnímu vývoji elektroniky od návrhu desek plošných spojů po vývoj firmwaru a mobilních aplikací. Pro firmu JeffTron zaměřenou na prodej elektroniky do airsoftových zbraní vyvinula zařízení Leviathan, které umožňuje propojení zbraně s mobilní aplikací.
Uživatel má možnost sledovat statistiky střelby, případně si nastavit různé parametry (kadence, virtuální zásobník, přednatažení, kalibrace optických senzorů ad.). Protože je řídící jednotka airsoftové zbraně vyráběna ve velkých sériích a využívá ji spousta uživatelů, byla funkce snadného a rychlého upgradu firmware jedním ze stěžejních požadavků.
Součástí firmware je hlavní program a bootloader. Pokud tým vývojářů z ASN Plus vytvoří novou verzi hlavního programu s opravami či novými funkcemi, umístí ji na server. Mobilní aplikace po zapnutí a spárování s jednotkou Leviathan ověří aktuální verzi firmwaru a porovná ji s verzí dostupnou na serveru. Je-li k dispozici upgrade hlavního programu, vyskočí uživateli možnost aktualizaci potvrdit, nebo odmítnout.
Při potvrzení aktualizace dojde ke stažení datového souboru ze serveru do paměti telefonu. Aplikace vyšle přes Bluetooth hlavnímu programu informaci o nadcházející aktualizaci. Ten na zprávu zareaguje ukončením a spuštěním bootloaderu (pokud již není spuštěný, viz dále). Aplikace zahájí přesun dat, bootloader je přijímá a zapisuje na místo původního hlavního programu. Po dokončení nahrávání nového firmwaru bootloader provede kontrolu a nejsou-li data poškozená, ukončí se a spustí hlavní (již aktualizovaný) program.
Může se stát, že aktualizace firmwaru neproběhne podle plánu a dojde k jejímu selhání. Důvodů může být řada – pokles napětí ve zbrani, ztráta signálu mezi telefonem a zbraní, poškození dat hlavního programu apod. Po přepnutí na poškozený program by byla airsoftová zbraň nepoužitelná. Na tato rizika však při vývoji v ASN Plus nezapomněli.
Součástí hlavního programu je CRC kód, díky kterému dokáže bootovací program odhalit jeho nefunkčnost a zabránit případnému spuštění. Bootloader se neukončí, a tak bude možné proces aktualizace opakovat. Mobilní aplikace znovu zkontroluje verzi hlavního programu a bootloader odpoví, že je program poškozený. Jakákoliv verze dostupná na serveru bude uživateli nabídnuta k instalaci. Po úspěšném dokončení upgradu bude airsoftová zbraň opět v plně funkčním stavu a s nejnovější verzí firmwaru.
Při vývoji elektroniky je častým požadavkem zadavatele vytvoření několika typů hardware. Tak je tomu i v případě Leviathanu, který existuje v různých variantách (pro odlišné typy zbraní, pro modely s optickým spínačem místo mechanického apod.). Každý typ hardwaru pak vyžaduje vlastní individuálně řešený firmware.
Pro úspěšnou aktualizaci pomocí bootloaderu je nezbytné, aby na serveru existoval datový soubor přizpůsobený danému typu zařízení. Proto si aplikace po spárování se zařízením nejprve zjistí, o jakou variantu hardwaru se jedná. Až v dalším kroku ověřuje verzi hlavního programu a srovnává ji s kompatibilní verzí dostupnou na serveru. Díky tomu je možné inovovat firmware jen pro určité typy zařízení, ostatním uživatelům možnost aktualizace nabídnuta nebude.
I když bootloader slouží primárně pro spouštění a aktualizaci hlavního programu, může ovlivňovat i funkčnost zařízení. Konkrétně v případě airsoftové jednotky Leviathan se museli vývojáři z ASN Plus vypořádat s požadavkem na omezení funkčnosti jednotek určených k prodeji v některých státech. Tamní zákony totiž zakazují automatickou střelbu, eventuálně střelbu v dávkách.
Z hlediska hardwaru i firmwaru se jedná o naprosto totožné jednotky, jen funkce automatické střelby je u modelů určených pro část trhu zablokovaná. Firmware musel být navržený tak, aby se požadované omezení nedalo obejít stažením verze hlavního programu pro státy s benevolentnějšími pravidly. Z toho důvodu je u vybraných modelů omezení funkčnosti zahrnuté přímo v bootloaderu, který nelze aktualizovat.
Oba typy bootloaderu fungují identicky. Ovšem jednotky, které mají omezený („semi only“) bootloader, po dokončení aktualizace zapíší do paměti informaci o tom, že je automatická střelba zakázaná. Hlavní program si tuto informaci po spuštění přečte a automatickou střelbu neprovádí.
Povolení či zákaz automatické střelby je určen již při výrobě, respektive při prvotním nahrání firmwaru. Uživatel nemá žádnou možnost tuto funkčnost ovlivnit – hlavní program zůstává pro všechny varianty hardware stejný, omezení je v bootloaderu, který nelze měnit uživatelem. Současně tím odpadá nutnost vývoje odlišných verzí firmwaru, které by musely být určené pro zařízení s omezením.
Možnost vzdálené aktualizace firmware pomocí bootloaderu je uživatelsky přívětivá a přináší řadu výhod i samotným výrobcům elektroniky. Při vývoji firmware je však nezbytné překonat řadu překážek, ať už jde o různé varianty hardware, neúspěšné načtení dat, či požadavek na omezení funkcionalit. Potřebujete-li zajistit vývoj elektroniky s možností bezproblémového upgradu, obraťte se na vývojáře, kteří mají s touto oblastí zkušenosti.
Marek Poborský, Senior programátor