- 1. Termékigény fejlesztése
- 2. Rendszertervezés és algoritmus fejlesztés
- 3. A beágyazott firmware kódolása
- Beágyazott firmware tesztelése
A szoftverfejlesztés általában nehéz, de egy beágyazott rendszer számára ez egy teljesen új nehézségi fokot jelent. A firmware-fejlesztőknek jól ismerniük kell a hardver fejlesztését és meg kell érteniük a beágyazott processzor belső működését. A mai cikkhez olyan eszközöket és tippeket osztok meg, amelyek felhasználhatók a magas szintű hatékonyság eléréséhez és a firmware-fejlesztést unalmassá tevő néhány dolog kiküszöböléséhez.
A beágyazott szoftverek fejlesztése hasonló fejlesztési folyamaton megy keresztül, mint a "szokásos" szoftverek fejlesztése. Az elfogadott fejlesztési / irányítási modelltől függetlenül a beágyazott szoftverfejlesztés általában az alábbi lépéseket foglalja magában:
- Termékigény fejlesztése
- Rendszertervezés és algoritmusfejlesztés
- Kódolás
- Tesztelés
Megvizsgáljuk az e szakaszokkal járó nehézségeket, valamint néhány eszközt, amelyek növelhetik a hatékonyságot és a termelékenységet.
1. Termékigény fejlesztése
A termékleírásokat gyakran a tábla tervezőinek szem előtt tartásával készítik el. Általában kevés információt tartalmaz, amely elősegítheti a firmware fejlesztését, így a beágyazott szoftverfejlesztő egy hibás, 250 oldalas (átlag) dokumentummal rendelkezik, amelyet nem lehet hivatkozásokra használni, és ha alaposan nem veszik figyelembe, könnyen tévedésekhez vezethet a tervezés során, ami viszont, vezethet a projekt időkeretének meghosszabbításához, ha nem a projekt teljes kudarcához. A dokumentumok ritkán tartalmaznak információkat a regiszterekről vagy azok bitmezejérőlegyebek mellett, és ez több órás költséget jelent a firmware-fejlesztőknek, miközben a dokumentumban keresgélve azonosítják a dolgokat, például, hogy melyik regiszter melyik csoporthoz tartozik, és melyik bitmező melyik regiszterhez tartozik. Az alábbiakban bemutatunk néhány tippet, amelyek figyelembe vehetők egy hasznosabb projektleírási dokumentum kidolgozásának biztosítása érdekében.
Regisztrációs leírások használata
Amint fentebb említettük, a firmware-fejlesztőknek meg kell érteniük a projekt összes vezérlőelemének (CPU, MCU stb.) Összes regiszterének, memóriájának stb. Bonyolultságát, hogy képesek legyenek hatékonyan irányítani a rendszer minden részét. Ennek megvalósításához a firmware-fejlesztők biztosíthatják, hogy a specifikációs dokumentum a nyilvántartások megfelelő leírását és memóriatérképeit tartalmazza. A vezérlőelem összes regisztrációjához meg lehet rendelni egy megkülönböztető nevet, amely megkönnyíti az azonosítást a dokumentumban, és mind összekapcsolhatók olyan módon, hogy a dokumentumon belül egy listához vezetnek, amely megadja a fájl nevét, helyét, blokkját és címét. minden regiszter.
Feladatleírások
Egy másik módja annak, hogy a specifikációs dokumentumok hasznossá válhassanak a beágyazott szoftverfejlesztők számára, az, hogy leírják, hogy az egyes blokkoknak mit kell csinálniuk, és hogyan kell ezt tenniük. Ebben a szakaszban is meg kell tervezni a hibakezelést az egyes blokkok alatt. Lényegében ez úgy néz ki, mint a firmware-fejlesztő mondása; „Amikor ideérek, meg kell tennem ezt, ezt és ezt, biztosítva, hogy ez, ez és ez ne forduljon elő”. Ez segít irányítani a fejlesztő munkáját, és segít a projekt értékelésében még a tervezés megkezdése előtt, hogy felismerje a lehetséges hibákat és hibákat, ezzel értékes időt és pénzt megtakarítva.
Vannak más tényezők, beleértve a dokumentum felépítését, a könnyen olvasható betűtípusok használatát (amellyel a fejlesztők fáradt állapotban is dolgozhatnak), diagramokat és képeket, ahol lehetséges, amelyek mind növelhetik a firmware csapat hatékonyságát ebben a szakaszban.
2. Rendszertervezés és algoritmus fejlesztés
Ez a szakasz magában foglalja az álkódok, folyamatábra, állapotgépek és minden, ami a firmware tervezésével jár. Ebben a szakaszban nagyon sok eszköz használható a gondolatok rendszerezéséhez, a régi / korábban írt szoftverek felfedezéséhez a projekt körül, valamint saját folyamatábra, állami gép stb. Kidolgozásához. Ezen eszközök közül néhányat az alábbiakban tárgyalunk.
PIM-ek
A termékfejlesztés ezen szakaszában a fejlesztők hajlamosak sokat firkálni, miközben erőforrásokat gyűjtenek a projektre a weblinkektől a képletekig stb. Az egyik legjobb módja annak, hogy nyomon kövessük ezeket az információkat, hogy később hasznosak legyenek, a PIM használata. (termékinformáció-kezelő) eszközök. Elég sok PIM létezik, de megemlítek néhányat néhány kiemelkedő tulajdonsággal.
1. Evernote
Az Evernote segít bármilyen platformon elérhető jegyzetek készítésében, így ellenőrizheti a számítógépén készített jegyzetet a buszon. A jegyzetek jól szervezettek és teljesen kereshetők, így mindig megtalálhatja, amire szüksége van.
2. TrunkNote
A Trunk note egy Wiki-szerű jegyzetkészítő alkalmazás. Ez a wikik összes szervezeti erejét hozza a jegyzeteléshez. Ez egy mobiltelefon alapú alkalmazás, de WIFI-n keresztül könnyen szinkronizálható a számítógéppel.
Más típusú PIM-ek, mint például a Tiddlywiki stb. Mindegyik olyan funkcióval rendelkezik, amelyek vonzóbbá tehetik az adott személyek számára, és némi mintavételt vehetnek, mielőtt végre rátalálna az egyikre.
Az örökölt kód megértése
Az eszközök másik csoportja, amelyek nagyon hasznosak a tervezés során, a régi kódok megértésének eszközei. Olyan helyzetekben, amikor a tervezett termék egy korábbi termék továbbfejlesztett változata, a fejlesztő hasznosnak találhatja a már elvégzett munka áttekintését, hogy ötleteket és esetleg kóddarabokat kapjon ehhez az új projekthez. Ez meglehetősen hosszú út lehet, különösen, ha nem voltál része annak a csapatnak, amely az előző szoftvert készítette. Elég sok olyan szoftver létezik, amely segíti a fák építését, a dokumentumok és a folyamatábra elkészítését a már megírt kódból.
1. Oxigén
A Doxygen egy meglehetősen hatékony eszköz, amely segít forráskódokból dokumentációt készíteni. Főként a C ++ - val való együttműködésre tervezték, de C, Python és néhány más nyelvvel is működik. Képes kivonni bármelyik kód struktúráját, automatikusan generált függőségi grafikonokat és öröklődési diagramokat biztosítva a kód vizualizálásához.
2. Graphviz
Weboldaluk szerint a graphviz segít bemutatni a strukturális információkat absztrakt grafikonok és hálózatok diagramjaként. A Doxygen mellett használható az általa készített grafika jobb megértésére.
3. Nyilvántartás
A Srecord egy hatékony eszköz a firmware képek kezelésére és a különböző fájlformátumok közötti átalakításra. Használható CRC-k és ellenőrző összegek számításához és elvégzéséhez a bájtblokkokon, a hibás eszközláncok miatt létrehozott hibafájlok kijavításához, és többek között a fájlrészek szűréséhez vagy áthelyezéséhez. További információ a használatáról a SourceForge oldalán található.
Néhány egyéb eszköz, amely ebbe a kategóriába tartozik, többek között a CrystalRev és a Hexplorer .
Algoritmusok fejlesztése
Az összes kutatás és jegyzetelés összesíti az algoritmusok kifejlesztését, amelyek pszeudokódokká és folyamatábraivá alakulnak a projekt számára. Számos eszköz létezik a folyamatábra fejlesztésére, és bár ezek többsége nem kizárólag a firmware-fejlesztés része, hasznos és fontos szolgáltatásokat nyújt, amelyek egyszerűen elvégzik a munkát, és segítenek a diagramok karbantartásában is a termékfejlesztési ciklus alatt. Az alábbiakban bemutatjuk a folyamatábrák legjobb eszközeit.
1. QFSM
A QFSM egy grafikus eszköz a véges állapotú gépek tervezéséhez és szimulálásához. Képes szimulálni a terveket, így sokkal jobb, mint a csoport többi szoftvere. Különösen akkor hasznos, ha állapotgépeket tervez FPGA és hasonló célhardverekhez.
2. Lucid diagram
A Lucid diagram vitathatatlanul a legjobb és legrugalmasabb folyamatábra-szoftver. Ez webalapú, és olyan csapatfunkciókkal rendelkezik, amelyek lehetővé teszik, hogy több eszköz között dolgozzon, és valós időben működjön együtt a csapattársaival.
3. Microsoft Visio
A Visio jelenleg az egyik legjobb grafikus eszköz. Különböző mezőkből álló objektumok tömbje van, amely megkönnyíti bármi leírását. Ugyanakkor nem jár olyan funkciókkal, amelyek fokozzák a csapatok közötti együttműködést, és csak egy Windows gépen használható, amelyre telepítve van.
4. Google Diák
A termékek fejlesztésének egyik kulcsfontosságú dolga a mai világban az olyan eszközök használata, amelyek lehetővé teszik a csapatok számára a hatékony együttműködést, bárhonnan is érkezzenek, és ez az egyetlen dolog, amelyet a Google diák beemel. Fel lehet használni mindenféle diagramok kidolgozására a szoftveres folyamatábráktól kezdve a szervezeti és gondolattérképekig. Felhőalapú és szinte az összes népszerű böngészőben működik.
Számos más eszköz létezik a folyamatábra létrehozásához és az általános algoritmus-fejlesztéshez, mint általában, mindegyiknek megvan a maga előnye és hátránya.
3. A beágyazott firmware kódolása
Minden, ami idáig említésre került, ide vezet. Az SDK-k és az IDE-k világa, az eszközválasztás ebben a szakaszban a céleszköztől és az eszközbe beépítendő jellemzőktől függ, ezért kizárom a beszélgetésből a népszerű SDK-kat és IDE-ket, mint például az MPLAB stb. a kiegészítő jellegű eszközökhöz.
1. QT (GUI fejlesztés)
A kijelzők (interaktívak vagy nem) a legnépszerűbb médiumok, amelyek manapság visszajelzést adnak a felhasználóknak, és a QT SDK-ja az egyik legjobb, és valószínűleg senki számára nem idegen a beágyazott körön belül. "Fogd és vidd" funkciókat kínál, amelyek megkönnyítik a beágyazott eszközök komplex, GUI-alapú alkalmazásainak fejlesztését, függetlenül a célplatformtól vagy a teljes projektfejlesztéshez használt programozási nyelvtől. Alapvetően kiküszöböli a felhasználói interfészek létrehozásához használt kód használatával járó stresszt.
2. (Gyors prototípus készítés)
A beágyazott szoftverek fejlesztésének egyik legnagyobb szűk keresztmetszete, hogy a hardver általában nem áll rendelkezésre a dolgok teszteléséhez menet közben, miközben a szoftvert fejlesztik. Gyakran, amikor elérhető, a firmware-fejlesztőket arra kellett volna várni, hogy várják az egész időt, amíg a hardver készen áll arra, hogy keveset vagy semmit se csináljon. Ez növeli az átfutási időt, és nem teremt teret a hardvermérnökök és a firmware-fejlesztők közötti szinkronnak, amely növelte volna a termék minőségét. A probléma megoldása érdekében a VaST srácai létrehoztak egy elektronikus rendszerek szintű virtuális prototípus-platformot, amely felhasználható virtuális hardver prototípus létrehozására amelyen beágyazott szoftver futtatható a rendszer teljesítményének meghatározása érdekében, mielőtt a hardver készen állna.
3. Doxigen (Dokumentáció)
A kódok írásának egyik legfontosabb része a dokumentáció, és ennek egyik legnépszerűbb eszköze a Doxygen. A régi szoftverek megértése mellett a Doxygen képes automatikusan kivonni a megjegyzéseket egy kódból és létrehozni azt tartalmazó dokumentációt. A oxigén struktúrák grafikusan tartalmazzák a fájlokat, és referenciákat hoznak létre a kódban használt összes függvényre, változóra és makróra. Folyamatábra és adatfolyam-diagram is beágyazható a dokumentációba a Doxygen és a graphviz kombinálásával.
4. GIT (verziókezelő rendszerek)
Nehéz elhinni, hogy manapság bárki bármilyen szoftvert fejleszt valamilyen verziókezelő rendszer nélkül, de csak arra az esetre, ha mégis megtenné, ez egy nagyon rossz ötlet, amely hibákhoz vezethet, amelyekbe idő és pénz kerül. A Git több okból is kiemelkedik az összes verziókezelő eszköz közül. Nyílt forráskódú, gyors, hatékony és többnyire helyi. A Git mellett olyan eszközöket is érdemes megemlíteni, mint a felforgatás.
Beágyazott firmware tesztelése
A tesztelés bármi fontos része a fejlesztési folyamatnak. A cégek dollárok ezreit veszítik el, amikor az eszközöket firmware-hibák miatt visszahívják, így a fejlesztés egyik részét nagyon komolyan kell venni. Ez gyakran kéz a kézben történik, a kódolással, és a kódtesztelés első eszközkészlete valószínűleg a projekthez használt IDE vagy SDK hibakeresője. A tesztelés különböző formákban történik, és különböző szakaszokban történik, mint ilyen, különféle eszközöket tartalmaz. A tesztelő eszközök a firmware-fejlesztésből átvágják a terv validálását a statikus elemzés és a futásidejű teszt eszközök felé. Az alábbiakban néhány olyan eszközt találok, amelyet igazán hasznosnak találok.
1. Crystal REV
A Crystal revs a kód tanulmányozásának eszköze. Használható folyamatábrák előállítására C / C ++ kódokból, ami nagyszerű eszköz a saját kódjának áttekintésére és arra, hogy az előzetes tervezés megvalósult-e. A kristályfordulat segítségével gyorsan láthatja a különbséget a tervezés és a megvalósítás között. Folyamatábrák, adatok és hívásfolyamok generálása kódokból szintén eszközzé teszi, hasznos a régi kódok elemzéséhez.
2. PC- Lint
A PC-lint az egyik legrégebbi firmware-tesztelő eszköz. Képes elemezni a szoftvereket a hibák, a biztonsági rések azonosítására és annak biztosítására, hogy a kódot az ipari szabványoknak megfelelően írják. Hasonló eszközök közé tartozik a polyspace, valamint az LRDA, a Padlizsán és a Tessy.
3. Wireshark
Ez jól jön hálózati eszközök építésekor. Lényegében csomagszippantó és segíthet az eszköz által továbbított adatok megtekintésében. Ez segíthet az eszköz rögzítésében.
4. Virtuális soros port meghajtó
A VSPD by eltima szoftver egy olyan eszköz, amelyet nemrégiben egy barátom is bemutatott. Nagyon hasznos, ha eszközillesztőkön és más, a porttal kapcsolatos fejlesztéseken dolgozunk. A virtuális soros com port lehetővé teszi a társport viselkedésének tesztelését a céleszköz nélkül. Korlátlan számú portot hozhat létre, amely képes a valós portok összes beállításának emulálására. A szoftver olyan funkciókat is tartalmaz, mint a soros portok felosztása, a Com-portok egyesülése, a többi jó funkció mellett a csomagban lévő com-portok használata.
Ennyi a cikkért, köszönöm, hogy időt szánt az olvasásra. Bár lehetetlen felsorolni az összes eszközt ott, remélem, hogy hasznosnak találja ezeket az eszközöket.