- 1. Vývoj požiadaviek na produkt
- 2. Návrh systému a vývoj algoritmov
- 3. Kódovanie zabudovaného firmvéru
- Testovanie zabudovaného firmvéru
Vývoj softvéru je vo všeobecnosti zložitý, ale pre vstavaný systém má úplne novú úroveň obtiažnosti. Vývojári firmvéru musia mať dobré znalosti o vývoji hardvéru a rozumieť vnútornému fungovaniu zabudovaného procesora. V dnešnom článku budem zdieľať nástroje a tipy, ktoré by sa mohli použiť na dosiahnutie vysokej úrovne efektívnosti a vylúčenie niektorých vecí, ktoré spôsobujú, že vývoj firmvéru je zdĺhavý.
Vývoj zabudovaného softvéru prechádza podobným vývojovým procesom ako vývoj „bežného“ softvéru. Bez ohľadu na prijatý model vývoja a riadenia zahŕňa vývoj zabudovaného softvéru vo všeobecnosti nasledujúce kroky:
- Vývoj požiadavky na výrobok
- Návrh systému a vývoj algoritmov
- Kódovanie
- Testovanie
Preskúmame niektoré ťažkosti, ktoré prichádzajú s týmito fázami, a niektoré z nástrojov, ktoré by mohli zvýšiť efektivitu a produktivitu.
1. Vývoj požiadaviek na produkt
Špecifikácie produktu sa často robia s ohľadom na návrhárov dosiek. Zvyčajne obsahuje len málo informácií, ktoré by mohli pomôcť pri vývoji firmvéru, takže vývojár zabudovaného softvéru končí chybným 250-stranovým (priemerným) dokumentom, ktorý sa nedá použiť ako referencia, a ak nebude starostlivo zvážený, môže ľahko viesť k prehĺbeniu návrhu, čo následne, viesť k predĺženiu časového rámca projektu, ak nie k celkovému zlyhaniu projektu. Dokumenty zriedka obsahujú informácie o registroch alebo ich bitových poliachokrem iného to stojí vývojárov firmvéru niekoľko pracovných hodín, keď prehľadávajú dokument, aby zistili, ako napríklad ktorý register patrí do ktorej skupiny a ktoré bitové pole patrí do ktorého registra. Ďalej uvádzame niekoľko rád, ktoré je možné zvážiť, aby sa zabezpečil vývoj užitočnejších dokumentov so špecifikáciami projektu.
Používanie popisov registrov
Ako bolo uvedené vyššie, musia vývojári firmvéru porozumieť zložitosti všetkých registrov, pamätí atď. Všetkých riadiacich prvkov (CPU, MCU atď.) V projekte, aby mohli efektívne riadiť všetky časti systému. Za týmto účelom môžu vývojári firmvéru zabezpečiť, aby dokument so špecifikáciami obsahoval správny popis registrov spolu s mapami pamäte. Všetkým registrom v ovládacom prvku je možné priradiť rozlišujúci názov, ktorý uľahčuje ich identifikáciu v celom dokumente, a všetky môžu byť prepojené za horúca, takže vedú k zoznamu v dokumente, ktorý uvádza názov, umiestnenie, blok a adresu každý register.
Popisy úloh
Ďalším spôsobom, ako môžu byť dokumenty so špecifikáciami užitočné pre vývojárov zabudovaného softvéru, je popis toho, čo má každý blok robiť a ako by to mal robiť. Aj v tejto fáze by mali byť v rámci každého bloku plány na spracovanie chýb. V podstate to vyzerá tak, ako hovorí vývojár firmvéru; „Keď sa sem dostanem, musím urobiť toto, toto a toto, aby sa nestalo to, to a to“. To pomáha usmerňovať prácu vývojára a pomáha hodnotiť projekt ešte predtým, ako dizajn začne identifikovať potenciálne chyby a chyby, čo šetrí drahocenný čas a peniaze.
Existujú ďalšie faktory, ako napríklad štruktúra dokumentu, použitie ľahko čitateľného písma (s čím vývojári môžu pracovať, aj keď je unavený), grafy a obrázky, kde je to možné, ktoré by po tejto fáze mohli zvýšiť efektivitu tímu firmvéru.
2. Návrh systému a vývoj algoritmov
Táto fáza zahŕňa vývoj pseudokódov, vývojových diagramov, stavových automatov a všetkého, čo súvisí s návrhom firmvéru. V tejto fáze je možné použiť množstvo nástrojov, ktoré vám pomôžu usporiadať myšlienky, preskúmať starší / skôr napísaný softvér okolo projektu a vyvinúť vlastný vývojový diagram, stavový stroj atď. Niektoré z týchto nástrojov sú uvedené nižšie.
PIM
V tejto fáze vývoja produktu majú vývojári tendenciu veľa načmárať, keď zhromažďujú zdroje na projekt od webových odkazov po vzorce atď. Jedným z najlepších spôsobov, ako sledovať tieto informácie, aby boli užitočné neskôr, je použitie PIM nástroje (správa informácií o produkte). Existuje pomerne veľa PIM, ale spomeniem niekoľko s niektorými vynikajúcimi vlastnosťami.
1. Evernote
Evernote vám pomáha robiť si poznámky, ktoré sú k dispozícii na ľubovoľnej platforme, aby ste si mohli skontrolovať poznámky, ktoré ste si vytvorili v počítači, keď ste v autobuse. Poznámky sú dobre usporiadané a dajú sa úplne prehľadať, takže vždy nájdete to, čo hľadáte.
2. TrunkNote
Kmeňová poznámka je aplikácia na vytváranie poznámok podobná Wiki. Prináša všetku organizačnú silu wiki do vytvárania poznámok. Je to aplikácia založená na mobilnom telefóne, ale dá sa ľahko synchronizovať s PC cez WIFI.
Iné druhy súborov PIM, ako je Tiddlywiki atď. Každý z nich má funkcie, ktoré ho môžu zatraktívniť pre konkrétnych jednotlivcov, a môže sa stať, že mu predtým, ako sa na nejakom konečne usadíte, urobí niekoľko odberov.
Pochopenie pôvodného kódu
Ďalšou skupinou nástrojov, ktoré sú veľmi užitočné počas fázy návrhu, sú nástroje na pochopenie starších kódov. V situáciách, keď je navrhovaným produktom vylepšená verzia predchádzajúceho produktu, môže vývojár považovať za užitočné skontrolovať prácu, ktorá už bola vykonaná, aby získal nejaké nápady a možno aj kúsky kódu pre tento nový projekt. Môže to byť dosť dlhá cesta, najmä ak ste neboli členom tímu, ktorý vytvoril predchádzajúci softvér. Existuje veľké množstvo softvéru, ktorý pomáha vytvárať stromy, vytvárať dokumentáciu a vývojové diagramy z už napísaného kódu.
1. Doxygén
Doxygen je pomerne silný nástroj, ktorý pomáha vytvárať dokumentáciu zo zdrojových kódov. Bol hlavne navrhnutý pre prácu s C ++, ale funguje aj s C, Python a niektorými ďalšími jazykmi. Má schopnosť extrahovať štruktúru kódu z ľubovoľného kódu a poskytuje automaticky generované grafy závislostí a diagramy dedičnosti, ktoré uľahčujú vizualizáciu kódu.
2. Graphviz
Podľa ich webových stránok graphviz pomáha prezentovať štrukturálne informácie ako diagramy abstraktných grafov a sietí. Môže byť použitý spolu s Doxygenom na lepšie pochopenie grafiky, ktorú produkuje.
3. Srecord
Srecord je výkonný nástroj na prácu s obrázkami firmvéru a na konverziu medzi rôznymi formátmi súborov. Môže sa použiť na výpočet a vykonanie CRC a kontrolných súčtov na bajtových blokoch, na opravu chybových súborov vytvorených v dôsledku chybných reťazcov nástrojov a na filtrovanie alebo presun častí súborov okrem iného. Viac informácií o jeho použití nájdete na jeho stránke SourceForge.
Niektoré iné nástroje, ktoré spadajú do tejto kategórie sú CrystalRev a Hexplorer medzi ostatnými.
Tvorba algoritmov
Celý výskum a vytváranie poznámok agreguje vývoj algoritmov transformujúcich sa do pseudokódov a vývojových diagramov projektu. Na vývojové diagramy existuje niekoľko nástrojov, a hoci väčšina z nich nie je výhradne k vývoju firmvéru, poskytujú užitočné a dôležité funkcie, ktoré jednoducho vykonajú prácu, a tiež pomôžu udržiavať grafy počas celého cyklu vývoja produktu. Nižšie uvádzame niektoré z najlepších nástrojov na vývojové diagramy.
1. QFSM
QFSM je grafický nástroj na navrhovanie a simuláciu strojov s konečným stavom. Vďaka svojej schopnosti simulovať návrhy je oveľa lepšia ako väčšina ostatného softvéru v tejto skupine. Je to obzvlášť užitočné, keď navrhujete stavové automaty pre FPGA a podobný cieľový hardvér.
2. Lucidná schéma
Lucid chart je pravdepodobne najlepší a najflexibilnejší softvér na vývojové diagramy. Je webový a má tímové funkcie, ktoré vám umožňujú pracovať medzi viacerými zariadeniami a spolupracovať so spoluhráčmi v reálnom čase.
3. Microsoft Visio
Visio je jedným z najlepších grafických nástrojov v súčasnosti. Má rad objektov z rôznych polí, vďaka ktorým je ľahké čokoľvek opísať. Neprichádza však s funkciami, ktoré zlepšujú spoluprácu medzi tímami, a je možné ho použiť iba na počítači so systémom Windows, na ktorom je nainštalovaný.
4. Prezentácie Google
Jednou z kľúčových vecí pri vývoji produktov v dnešnom svete je použitie nástrojov, ktoré umožňujú tímom efektívne spolupracovať, nech sú kdekoľvek, a to je jedna vec, ktorú prezentácie Google prinesú. Môže sa použiť na vývoj všetkých druhov grafov od vývojových diagramov softvéru po organizačné diagramy a myšlienkové mapy. Je založený na cloude a funguje takmer vo všetkých populárnych prehliadačoch.
Na vytváranie vývojových diagramov a vývoj všeobecných algoritmov existuje ako obvykle niekoľko ďalších nástrojov, z ktorých každý má svoje vlastné výhody a nevýhody.
3. Kódovanie zabudovaného firmvéru
Sem vedie všetko, o čom sa až do tohto bodu hovorilo. Svet SDK a IDE, výber nástrojov v tejto fáze závisí od cieľového zariadenia a funkcií, ktoré majú byť do zariadenia zabudované, z tohto dôvodu vylúčim z diskusie populárne SDK a IDE ako MPLAB, atď. k nástrojom, ktoré sa svojou povahou viac dopĺňajú.
1. QT (vývoj grafického používateľského rozhrania)
Displeje (interaktívne alebo nie) sú v dnešnej dobe najpopulárnejším médiom na poskytovanie spätnej väzby používateľom a súprava QT SDK je jedným z najlepších na svete a pravdepodobne nie je pre nikoho vo vloženom kruhu cudzím. Poskytuje funkcie „drag and drop“, ktoré uľahčujú vývoj zložitých aplikácií založených na grafickom používateľskom rozhraní pre vstavané zariadenia bez ohľadu na cieľovú platformu alebo programovací jazyk, ktorý sa používa na celkový vývoj projektu. V podstate eliminuje stres spojený s používaním kódu na vytváranie používateľských rozhraní.
2. (rýchle vytváranie prototypov)
Jedným z najväčších prekážok vo vývoji zabudovaného softvéru je skutočnosť, že hardvér zvyčajne nie je k dispozícii na testovanie vecí na cestách počas vývoja softvéru. Vývojári firmvéru by boli často, keď je k dispozícii, nútení čakať po celú dobu, ktorú bude trvať, kým bude pripravený hardvér, robiť len málo alebo nič. Toto predlžuje dodaciu lehotu a nevytvára priestor na synchronizáciu medzi inžiniermi hardvéru a vývojármi firmvéru, ktorá by zvýšila kvalitu produktu. Aby pomohli vyriešiť tento problém, členovia tímu VaST vytvorili platformu virtuálnych prototypov na úrovni elektronických systémov, ktorá sa dala použiť na vytvorenie prototypu virtuálneho hardvéru. na ktorom je možné spustiť zabudovaný softvér na určenie výkonu systémov skôr, ako je pripravený hardvér.
3. Doxygen (dokumentácia)
Jednou z najdôležitejších častí písania ľubovoľného kódu je dokumentácia a jedným z najpopulárnejších nástrojov je Doxygen. Okrem použitia na pochopenie staršieho softvéru má Doxygen schopnosť automaticky extrahovať komentáre z kódu a vytvárať dokumentáciu, ktorá ich obsahuje. Štruktúry kyslíka zahŕňajú súbory graficky a vytvárajú odkazy na všetky funkcie, premenné a makra použité v kóde. Vývojové diagramy a dátové vývojové diagramy je tiež možné vložiť do dokumentácie kombináciou protokolu Doxygen s graphviz.
4. GIT (systémy riadenia verzií)
Je ťažké uveriť, že v súčasnosti niekto vyvíja softvér akéhokoľvek typu bez nejakého systému riadenia verzií, ale len pre prípad, že tak urobíte, je to dosť zlý nápad, ktorý by mohol viesť k chybám, ktoré vás budú stáť čas a peniaze. Git spomedzi všetkých nástrojov na správu verzií vyniká z niekoľkých dôvodov. Je to open source, rýchly, efektívny a väčšinou lokálny. Za zmienku stojí aj Asides Git, napríklad nástroje ako subverzia.
Testovanie zabudovaného firmvéru
Testovanie je dôležitou súčasťou procesu vývoja všetkého. Firmy prichádzajú o tisíce dolárov, keď sa zariadenia stiahnu z dôvodu chýb firmvéru, takže je to jedna časť vývoja, ktorú treba brať veľmi vážne. Často sa to deje ruka v ruke, s kódovaním a prvou sadou nástrojov na testovanie kódu, sú pravdepodobne debuggery v rámci IDE alebo SDK, ktoré sa používajú pre projekt. Testovanie má rôzne formy a vykonáva sa v rôznych fázach. Zahŕňa rôzne druhy nástrojov. Testovacie nástroje tvoria pri vývoji firmvéru strihy naprieč overovaním dizajnu až po statické analýzy a testovacie nástroje za behu. Nižšie uvádzam niekoľko nástrojov, ktoré považujem za skutočne užitočné.
1. Krištáľ REV
Crystal revs je nástroj na štúdium kódu. Môže sa použiť na generovanie vývojového diagramu z kódu C / C ++, čo z neho robí vynikajúci nástroj na kontrolu vášho vlastného kódu a zistenie, či bol implementovaný predbežný návrh. Vďaka Crystal rev budete rýchlo vidieť rozdiel medzi dizajnom a implementáciou. Jeho schopnosť generovať vývojové diagramy, dáta a tok hovorov z kódov z neho robí tiež nástroj vhodný na analýzu pôvodného kódu.
2. PC - žmolky
PC-lint je jedným z najstarších nástrojov na testovanie firmvéru v okolí. Je schopný analyzovať softvér na identifikáciu chýb, slabých miest zabezpečenia a zabezpečenie toho, aby bol kód napísaný v súlade s priemyselnými štandardmi. Podobné nástroje zahŕňajú polyspace a LRDA, baklažán a Tessy.
3. Wireshark
To sa hodí pri stavbe sieťových zariadení. Je to v podstate sledovač paketov a mohol by vám pomôcť zobraziť údaje, ktoré vaše zariadenie prenáša. To by mohlo pomôcť pri zabezpečení zariadenia.
4. Ovládač virtuálneho sériového portu
Softvér VSPD od eltima je nástroj, ktorý som nedávno predstavil aj svojmu priateľovi. Prichádza skutočne vhod pri práci na ovládačoch zariadení a ďalšom vývoji v oblasti komunikácií. Virtuálny sériový komunikačný port vám umožňuje testovať správanie komunikačných portov bez cieľového zariadenia. Môžete vytvoriť neobmedzený počet portov, ktorý dokáže emulovať všetky nastavenia skutočných portov. Softvér tiež prichádza s funkciami, ako je rozdelenie sériového portu, zlúčenie portov Com, použitie zväzkových pripojení portov okrem iných skvelých funkcií.
To je všetko pre tento článok, ďakujeme, že ste si našli čas na čítanie. Aj keď je nemožné pravdepodobne uviesť zoznam všetkých nástrojov, dúfam, že vám niektoré z týchto nástrojov budú užitočné.