- 1. Vývoj požadavku na produkt
- 2. Návrh systému a vývoj algoritmů
- 3. Kódování integrovaného firmwaru
- Testování vloženého firmwaru
Vývoj softwaru je obecně obtížný, ale pro vestavěný systém je na zcela nové úrovni obtížnosti. Vývojáři firmwaru musí mít dobré znalosti o vývoji hardwaru a rozumět internímu fungování integrovaného procesoru. U dnešního článku budu sdílet nástroje a tipy, které by mohly být použity k dosažení vysoké úrovně efektivity a odstranění některých věcí, díky nimž je vývoj firmwaru zdlouhavý.
Vývoj vestavěného softwaru prochází obdobným vývojovým procesem jako „běžný“ vývoj softwaru. Bez ohledu na přijatý model vývoje / správy zahrnuje Embedded Software Development obecně následující kroky:
- Vývoj požadavku na produkt
- Návrh systému a vývoj algoritmů
- Kódování
- Testování
Budeme zkoumat některé obtíže, které tyto fáze přinášejí, a některé nástroje, které by mohly zvýšit efektivitu a produktivitu.
1. Vývoj požadavku na produkt
Specifikace produktu se často dělají s ohledem na návrháře desek. Obvykle obsahuje málo informací, které by mohly pomoci při vývoji firmwaru, takže vývojář vestavěného softwaru končí chybným 250stránkovým (průměrným) dokumentem, který nelze použít pro reference, a pokud nebude pečlivě zvážen, může snadno vést k přehlédnutí designu, což zase, vést k prodloužení časového rámce projektu, pokud ne celkové selhání projektu. Dokumenty zřídka obsahují informace o registrech nebo jejich bitových políchmimo jiné to stojí vývojáře firmwaru několik pracovních hodin, když prohledávají dokument a identifikují věci, jako například který registr patří do které skupiny a které bitové pole patří do kterého registru. Níže uvádíme několik tipů, které lze zvážit, aby se zajistil vývoj užitečnějších dokumentů se specifikacemi projektu.
Použití popisů rejstříku
Jak již bylo uvedeno výše, vývojáři firmwaru musí porozumět složitosti všech registrů, pamětí atd. Všech řídicích prvků (CPU, MCU atd.) V projektu, aby mohli účinně ovládat všechny části systému. Aby to mohli dát na místo, mohou vývojáři firmwaru zajistit, aby dokument specifikace obsahoval správný popis registrů spolu s mapami paměti. Všem registrům v ovládacím prvku lze přiřadit rozlišovací název, který usnadňuje jejich identifikaci v celém dokumentu, a všechny by mohly být propojeny za provozu, takže by vedly k seznamu v dokumentu, který uvádí název, umístění, blok a adresu každý registr.
Popisy úkolů
Dalším způsobem, jak mohou být dokumenty se specifikacemi užitečné pro vývojáře vestavěného softwaru, je popis toho, co má každý blok dělat a jak by to měl dělat. V této fázi by také měly existovat plány pro zpracování chyb pod každým blokem. V podstatě to vypadá, jak říká vývojář firmwaru; "Když se sem dostanu, mám udělat toto, toto a toto, zajistit, aby nedocházelo k tomuto, tomuto a tomuto". To pomáhá řídit práci vývojáře a pomáhá vyhodnotit projekt ještě předtím, než design začne identifikovat potenciální chyby a chyby, což šetří drahocenný čas a peníze.
Existují další faktory, včetně struktury dokumentu, použití snadno čitelných písem (něco, s čím mohou vývojáři pracovat, i když jsou unavení), grafů a obrázků, kde je to možné, které by po této fázi mohly všechny zvýšit efektivitu týmu firmwaru.
2. Návrh systému a vývoj algoritmů
Tato fáze zahrnuje vývoj pseudokódů, vývojových diagramů, stavových strojů a všeho, co souvisí s návrhem firmwaru. V této fázi lze použít celou řadu nástrojů, které vám pomohou uspořádat myšlenky, prozkoumat starší / dříve napsaný software kolem projektu a vyvinout vlastní vývojový diagram, stavový stroj atd. Některé z těchto nástrojů jsou popsány níže.
PIM
V této fázi vývoje produktu mají vývojáři tendenci hodně čmárat, když shromažďují prostředky na projektu od webových odkazů po vzorce atd. Jedním z nejlepších způsobů, jak tyto informace sledovat, aby byly později užitečné, je použití PIM nástroje (správa informací o produktu). Existuje spousta PIM, ale zmíním několik s některými vynikajícími funkcemi.
1. Evernote
Evernote vám pomůže dělat si poznámky, které jsou k dispozici na jakékoli platformě, takže si můžete zkontrolovat poznámky, které jste si udělali na počítači, když jste v autobuse. Poznámky jsou dobře uspořádané a lze je kompletně prohledávat, takže vždy najdete to, co potřebujete.
2. TrunkNote
Trunk note je aplikace pro psaní poznámek podobná Wiki. Přináší veškerou organizační sílu wiki k psaní poznámek. Jedná se o aplikaci založenou na mobilním telefonu, ale lze ji snadno synchronizovat s počítačem přes WIFI.
Jiné druhy PIM, jako je Tiddlywiki atd. Každý z nich přichází s funkcemi, díky nimž může být pro konkrétní jednotlivce atraktivnější a může trvat několik vzorkování, než se konečně na jednom usadíte.
Porozumění staršímu kódu
Další skupinou nástrojů, které jsou velmi užitečné během fáze návrhu, jsou nástroje pro pochopení starších kódů. V situacích, kdy je navrhovaný produkt vylepšenou verzí předchozího produktu, může vývojář považovat za užitečné zkontrolovat práci, která již byla provedena, aby získal nějaké nápady a možná i kousky kódu pro tento nový projekt. Může to být docela dlouhá cesta, zvláště pokud jste nebyli součástí týmu, který vytvořil předchozí software. Existuje spousta softwaru, který pomáhá stavět stromy, vytvářet dokumentaci a vývojové diagramy z již napsaného kódu.
1. Doxygen
Doxygen je docela silný nástroj, který pomáhá vytvářet dokumentaci ze zdrojových kódů. Byl navržen hlavně pro práci s C ++, ale také pracuje s C, Python a některými dalšími jazyky. Má schopnost extrahovat strukturu kódu jakéhokoli kódu a poskytuje automaticky generované grafy závislostí a diagramy dědičnosti, které pomáhají vizualizovat kód.
2. Graphviz
Podle jejich webových stránek graphviz pomáhá prezentovat strukturální informace jako diagramy abstraktních grafů a sítí. Může být použit spolu s Doxygenem pro lepší pochopení grafiky, kterou produkuje.
3. Záznam
Srecord je výkonný nástroj pro manipulaci s obrázky firmwaru a převod mezi různými formáty souborů. Lze jej použít k výpočtu a provádění CRC a kontrolních součtů na bajtových blocích, k opravě chybových souborů vytvořených v důsledku chybných řetězců nástrojů a mimo jiné k filtrování nebo přesunu sekcí souborů. Více informací o jeho použití najdete na jeho stránce SourceForge.
Některé další nástroje, které spadají do této kategorie, jsou mimo jiné CrystalRev a Hexplorer .
Vývoj algoritmů
Veškerý výzkum a vytváření poznámek agreguje vývoj algoritmů, které se odvíjejí od pseudokódů a vývojových diagramů projektu. Pro vývojové diagramy existuje několik nástrojů, a přestože většina z nich není výlučná pro vývoj firmwaru, poskytuje užitečné a důležité funkce, které jednoduše provedou práci a také pomáhají udržovat grafy v celém vývojovém cyklu produktu. Níže jsou uvedeny některé z nejlepších nástrojů pro vývojový diagram.
1. QFSM
QFSM je grafický nástroj pro navrhování a simulaci strojů s konečným stavem. Díky jeho schopnosti simulovat návrhy je mnohem lepší než většina ostatních programů v této skupině. Je to zvláště užitečné, když navrhujete stavové automaty pro FPGA a podobný cílový hardware.
2. Přehledný graf
Lucid chart je pravděpodobně nejlepší a nejflexibilnější software pro vývojové diagramy. Je webový a má týmové funkce, které vám umožňují pracovat mezi více zařízeními a spolupracovat v reálném čase se spoluhráči.
3. Microsoft Visio
Visio je jedním z nejlepších grafických nástrojů v současnosti. Má řadu objektů z různých polí, díky nimž je snadné cokoli popsat. Nepřichází však s funkcemi, které zlepšují spolupráci mezi týmy, a lze jej použít pouze na počítači se systémem Windows, na kterém je nainstalován.
4. Prezentace Google
Jednou z klíčových věcí při vývoji produktů v dnešním světě je používání nástrojů, které umožňují týmům efektivně spolupracovat, ať jsou kdekoli, a to je jedna věc, kterou Google slides přináší. Může být použit k vývoji všech druhů grafů od vývojových diagramů softwaru po organizační diagramy a myšlenkové mapy. Je založen na cloudu a funguje téměř ve všech populárních prohlížečích.
Existuje několik dalších nástrojů pro vytváření vývojových diagramů a vývoj obecných algoritmů, jako obvykle, každý s vlastními pro a proti.
3. Kódování integrovaného firmwaru
Tady vede vše, o čem se mluví až do tohoto bodu. Svět SDK a IDE, výběr nástrojů v této fázi závisí na cílovém zařízení a funkcích, které mají být do zařízení zabudovány, z tohoto důvodu z diskuse vyřadím populární SDK a IDE jako MPLAB atd. A stačí se držet k nástrojům, které se v přírodě více doplňují.
1. QT (vývoj grafického uživatelského rozhraní)
Displeje (interaktivní nebo ne) jsou nejoblíbenějšími médii pro poskytování zpětné vazby uživatelům v dnešní době a SDK QT je jedním z nejlepších tam a pravděpodobně není nikomu cizí pro nikoho ve vloženém kruhu. Poskytuje funkce „drag and drop“, které usnadňují vývoj komplexních aplikací založených na GUI pro vestavěná zařízení, bez ohledu na cílovou platformu nebo programovací jazyk používaný pro celkový vývoj projektu. V podstatě eliminuje stres spojený s používáním kódu k vytváření uživatelských rozhraní.
2. (Rychlé vytváření prototypů)
Jedním z největších překážek ve vývoji integrovaného softwaru je skutečnost, že hardware obvykle není k dispozici pro testování věcí na cestách, zatímco se software vyvíjí. Často, když je k dispozici, by vývojáři firmwaru museli čekat celou dobu, než bude hardware připraven, dělat jen málo nebo nic. To zvyšuje dodací lhůtu a nevytváří prostor pro druh synchronizace mezi hardwarovými inženýry a vývojáři firmwaru, který by zvýšil kvalitu produktu. Aby pomohli vyřešit tento problém, vytvořili lidé z VaST platformu virtuálních prototypů na úrovni elektronických systémů, kterou lze použít k vytvoření prototypu virtuálního hardwaru. na kterém lze spustit vestavěný software k určení výkonu systémů, než bude hardware připraven.
3. Doxygen (dokumentace)
Jednou z nejdůležitějších částí psaní libovolného kódu je dokumentace a jedním z nejpopulárnějších nástrojů je Doxygen. Kromě jeho použití k pochopení staršího softwaru má Doxygen schopnost automaticky extrahovat komentáře z kódu a vytvářet dokumentaci, která jej obsahuje. Struktury doxygen zahrnují soubory graficky a vytvářejí odkazy na každou funkci, proměnnou a makro použité v kódu. Vývojové diagramy a datové vývojové diagramy lze také vložit do dokumentace kombinací Doxygen s graphviz.
4. GIT (systémy pro správu verzí)
Je těžké uvěřit, že dnes někdo vyvíjí software jakéhokoli typu bez jakéhokoli systému pro správu verzí, ale pro případ, že ano, je to docela špatný nápad, který by mohl vést k chybám, které vás budou stát čas a peníze. Git vyniká mezi všemi nástroji pro správu verzí z několika důvodů. Je to open source, rychlý, efektivní a většinou lokální. Asides Git, nástroje jako subversion také stojí za zmínku.
Testování vloženého firmwaru
Testování je důležitou součástí procesu vývoje čehokoli. Firmy ztrácejí tisíce dolarů, když jsou zařízení vyvolána kvůli chybám firmwaru, takže je to jedna část vývoje, kterou je třeba brát velmi vážně. Často se to děje ruku v ruce s kódováním a první sadou nástrojů pro testování kódu jsou pravděpodobně debuggery v IDE nebo SDK, které se pro projekt používají. Testování přichází v různých formách a provádí se v různých fázích, proto zahrnuje různé druhy nástrojů. Testovací nástroje vytvářejí vývoj firmwaru přes ověřování designu až po statické analýzy a testovací nástroje za běhu. Níže uvádíme několik nástrojů, které považuji za opravdu užitečné.
1. Krystalová REV
Crystal revs je nástroj pro studium kódu. Lze jej použít k vygenerování vývojového diagramu z kódu C / C ++, což z něj dělá skvělý nástroj pro kontrolu vlastního kódu a zjištění, zda byl implementován předběžný návrh. S Crystal rev budete rychle vidět rozdíl mezi designem a implementací. Jeho schopnost generovat vývojové diagramy, data a tok hovorů z kódů z něj také dělá nástroj užitečný pro analýzu staršího kódu.
2. PC - Lint
PC-lint je jedním z nejstarších nástrojů pro testování firmwaru. Je schopen analyzovat software, aby identifikoval chyby, chyby zabezpečení a zajistil, aby byl kód napsán v souladu s průmyslovými standardy. Podobné nástroje zahrnují polyspace a LRDA, lilek a Tessy.
3. Wireshark
To se hodí při vytváření síťových zařízení. Je to v zásadě sledovač paketů a mohl by vám pomoci zobrazit data, která vaše zařízení vysílá. To by mohlo pomoci při zabezpečení zařízení.
4. Ovladač virtuálního sériového portu
Software VSPD od eltima je nástroj, který jsem nedávno představil také příteli. Je to opravdu užitečné, když pracujete na ovladačích zařízení a dalším vývoji souvisejícím s komunikací. Virtuální sériový komunikační port vám umožňuje testovat chování komunikačních portů bez cílového zařízení. Můžete vytvořit neomezený počet portů, který je schopen emulovat všechna nastavení skutečných portů com. Tento software také přichází s funkcemi, jako je rozdělení sériového portu, slučování portů Com, kromě jiných skvělých funkcí také použití připojení portů com port.
To je pro tento článek vše, díky, že jste si udělali čas na čtení. I když je nemožné pravděpodobně vyjmenovat všechny nástroje, doufám, že vám některé z těchto nástrojů budou užitečné.