- 1. Dezvoltarea cerinței de produs
- 2. Proiectarea sistemului și dezvoltarea algoritmului
- 3. Codificare pentru firmware încorporat
- Testarea firmware-ului încorporat
Dezvoltarea software-ului este, în general, dificilă, dar pentru un sistem încorporat are un nivel cu totul nou de dificultate. Dezvoltatorii de firmware trebuie să aibă cunoștințe bune despre dezvoltarea hardware-ului și să înțeleagă funcționarea internă a unui procesor încorporat. Pentru articolul de astăzi, voi împărtăși instrumente și sfaturi care ar putea fi folosite pentru a atinge un nivel ridicat de eficiență și pentru a elimina unele dintre lucrurile care fac ca dezvoltarea firmware-ului să fie plictisitoare.
Dezvoltarea software-ului încorporat trece prin procesul de dezvoltare similar cu dezvoltarea software-ului „obișnuit”. Indiferent de modelul de dezvoltare / management adoptat, dezvoltarea software-ului încorporat implică, în general, pașii de mai jos:
- Dezvoltarea cerințelor produsului
- Proiectarea sistemului și dezvoltarea algoritmului
- Codificare
- Testarea
Vom examina unele dintre dificultățile care vin cu aceste etape și unele dintre instrumentele care ar putea crește eficiența și productivitatea.
1. Dezvoltarea cerinței de produs
Specificațiile produsului sunt adesea făcute având în vedere proiectanții plăcilor. De obicei, conține puține informații care ar putea ajuta la dezvoltarea firmware-ului, astfel, dezvoltatorul de software încorporat ajunge la un document defect de 250 de pagini (mediu) care nu poate fi utilizat pentru referințe și, dacă nu este luat în considerare cu atenție, ar putea duce cu ușurință la neglijări în ceea ce privește proiectarea, care la rândul său, duce la extinderea intervalului de timp al proiectului dacă nu eșecul general al proiectului. Documentele conțin rareori informații despre registre sau câmpurile lor de bițiprintre altele, acest lucru costă dezvoltatorii de firmware câteva ore de lucru în timp ce caută prin document pentru a identifica lucruri precum registrul care aparține grupului și câmpul de biți aparține registrului. Mai jos sunt câteva sfaturi care ar putea fi luate în considerare pentru a asigura dezvoltarea unor documente de specificații de proiect mai utile.
Utilizarea descrierilor registrului
După cum sa discutat mai sus, dezvoltatorii de firmware trebuie să înțeleagă complexitatea tuturor registrelor, amintirilor etc. ale tuturor elementelor de control (CPU, MCU etc.) dintr-un proiect pentru a putea controla în mod eficient toate părțile sistemului. Pentru a pune acest lucru în aplicare, dezvoltatorii de firmware se pot asigura că documentul cu specificații are o descriere corectă a registrelor, împreună cu hărțile de memorie. Toate registrele din elementul de control ar putea primi un nume distinctiv care le face ușor de identificat în document și ar putea fi conectate la cald astfel încât să conducă la o listă din document care să indice numele, locația, blocul și adresa fiecare registru.
Descrierea sarcinilor
O altă modalitate prin care documentele de specificații pot fi utile dezvoltatorilor de software încorporate este prin descrierea a ceea ce ar trebui să facă fiecare bloc și cum ar trebui să o facă. De asemenea, în această etapă, ar trebui să existe planuri pentru gestionarea erorilor sub fiecare bloc. În esență, acest lucru pare a fi spus de dezvoltatorul de firmware; „Când ajung aici, trebuie să fac asta, asta și asta, asigurându-mă că acest lucru, acesta și celălalt nu se vor produce”. Acest lucru ajută la ghidarea activității dezvoltatorului și ajută la evaluarea proiectului chiar înainte ca proiectarea să înceapă să identifice erori și erori potențiale, economisind timp și bani prețioși.
Există alți factori, inclusiv structura documentelor, utilizarea fonturilor ușor de citit (lucru cu care dezvoltatorii pot lucra chiar și atunci când sunt obosiți), diagrame și imagini acolo unde este posibil, care ar putea crește eficiența echipei de firmware după această etapă.
2. Proiectarea sistemului și dezvoltarea algoritmului
Această etapă implică dezvoltarea pseudocodurilor, diagramelor de flux, mașinilor de stat și tot ceea ce implică proiectarea a ceea ce firmware-ul. Pentru această etapă, un număr destul de mare de instrumente pot fi folosite pentru a ajuta la organizarea gândurilor, explorarea software-urilor vechi / scrise anterior în jurul proiectului și dezvoltarea propriei diagrame, a mașinii de stare etc. Unele dintre aceste instrumente sunt discutate mai jos.
PIM-uri
La aceste etape de dezvoltare a produsului, dezvoltatorii tind să mâzgălească o mulțime ca acestea să adune resurse pe proiect de link - uri web la una formule, etc dintre cele mai bune moduri de a ține evidența acestor informații, astfel încât acestea sunt utile mai târziu, este prin utilizarea de PIM instrumente (gestionarea informațiilor despre produs). Există destul de multe PIM-uri acolo, dar voi menționa câteva cu câteva caracteristici remarcabile.
1. Evernote
Evernote vă ajută să luați note care sunt disponibile pe orice platformă, astfel încât să puteți verifica nota pe care ați făcut-o pe computer în timp ce vă aflați în autobuzul de acasă. Notele sunt bine organizate și sunt complet căutabile, astfel încât veți găsi întotdeauna ceea ce aveți nevoie.
2. TrunkNote
Nota portbagaj este o aplicație de preluare a notelor asemănătoare Wiki. Aduce toată puterea organizațională a wiki-urilor la luarea notelor. Este o aplicație bazată pe telefonul mobil, dar poate fi ușor sincronizată cu un PC prin WIFI.
Alte tipuri de PIM-uri, cum ar fi Tiddlywiki etc. Fiecare dintre ele vine cu caracteristici care îl pot face mai atractiv pentru anumiți indivizi și pot lua unele eșantionări înainte de a vă stabili în cele din urmă pe unul.
Înțelegerea Codului vechi
Un alt grup de instrumente care sunt foarte utile în etapa de proiectare sunt instrumentele pentru înțelegerea codurilor vechi. În situațiile în care produsul proiectat este o versiune îmbunătățită a unui produs anterior, dezvoltatorul ar putea fi util să revizuiască munca care a fost făcută deja pentru a obține câteva idei și poate bucăți de cod pentru acest nou proiect. Acesta ar putea fi un drum destul de lung, mai ales dacă nu ați făcut parte din echipa care a construit software-ul anterior. Există un număr destul de mare de software care ajută la construirea copacilor, la crearea documentației și a diagramelor de flux din codul deja scris.
1. Oxigen
Doxygen este un instrument destul de puternic care ajută la crearea documentației din codurile sursă. A fost conceput în principal pentru a funcționa cu C ++, dar funcționează și cu C, Python și alte limbi. Are capacitatea de a extrage structura codului oricărui cod, oferind grafice de dependență generate automat și diagrame de moștenire pentru a ajuta la vizualizarea codului.
2. Graphviz
Potrivit site-ului lor web, graphviz ajută la prezentarea informațiilor structurale ca diagrame ale graficelor și rețelelor abstracte. Poate fi folosit alături de Doxygen pentru a înțelege mai bine grafica produsă de acesta.
3. Srecord
Srecord este un instrument puternic pentru manipularea imaginilor firmware și conversia între diferite formate de fișiere. Poate fi folosit pentru a calcula și realiza CRC-uri și sume de verificare pe blocuri de octeți, pentru a corecta fișierele de eroare create datorită lanțurilor de instrumente buggy și pentru a filtra sau muta secțiuni de fișiere, printre altele. Mai multe informații despre utilizarea sa pot fi găsite pe pagina SourceForge.
Unele alte instrumente care se încadrează în această categorie sunt CrystalRev și Hexplorer, printre altele.
Dezvoltarea algoritmilor
Toate cercetările și agregatele de luare a notelor pentru dezvoltarea algoritmilor care se învârt în pseudocoduri și diagrame pentru proiect. Există mai multe instrumente pentru dezvoltarea diagramelor de flux și, deși cele mai multe dintre ele nu sunt exclusiv dezvoltării firmware-ului, acestea oferă caracteristici utile și importante care pur și simplu își fac treaba și, de asemenea, ajută la menținerea diagramelor pe tot parcursul ciclului de dezvoltare a produsului. Mai jos sunt câteva dintre cele mai bune instrumente disponibile pentru diagrama de flux.
1. QFSM
QFSM este un instrument grafic pentru proiectarea și simularea mașinilor cu stare finită. Capacitatea sa de a simula design-urile o face mult mai bună decât majoritatea celorlalte programe din acest grup. Este deosebit de util atunci când proiectați mașini de stat pentru FPGA și hardware țintă similar.
2. Diagrama lucidă
Diagrama lucidă este, fără îndoială, cel mai bun și mai flexibil software de diagramă de flux existent. Este bazat pe web și are funcții de echipă care vă permit să lucrați între mai multe dispozitive și să colaborați în timp real cu colegii de echipă.
3. Microsoft Visio
Visio este unul dintre cele mai bune instrumente grafice în prezent. Are o serie de obiecte din diferite domenii, ceea ce face mai ușor să descrie orice. Cu toate acestea, nu vine cu caracteristici care îmbunătățesc colaborarea între echipe și poate fi utilizat doar pe un aparat Windows pe care este instalat.
4. Prezentări Google
Unul dintre lucrurile cheie în dezvoltarea produselor în lumea de astăzi este utilizarea instrumentelor care permit echipelor să colaboreze eficient de oriunde s-ar afla și acesta este un lucru pe care îl aduce diapozitivele Google. Poate fi folosit pentru a dezvolta tot felul de diagrame, de la diagrame de flux software la diagrame organizatorice și hărți mentale. Este bazat pe cloud și funcționează în aproape toate browserele populare.
Există mai multe alte instrumente pentru crearea diagramelor de flux și dezvoltarea algoritmului general, ca de obicei, fiecare cu propriile sale pro și contra.
3. Codificare pentru firmware încorporat
Tot ceea ce a fost menționat până în acest moment duce aici. Lumea SDK-urilor și IDE-urilor, alegerea instrumentelor în această etapă depinde de dispozitivul țintă și de caracteristicile care urmează să fie încorporate în dispozitiv, din acest motiv, voi exclude din discuție SDK-urile și IDE-urile populare, cum ar fi MPLAB, etc. la instrumente care sunt mai complementare în natură.
1. QT (Dezvoltare GUI)
Afișajele (interactive sau nu) sunt cele mai populare medii pentru a oferi feedback utilizatorilor în aceste zile, iar SDK-ul QT este unul dintre cele mai bune de acolo și probabil că nu este străin de nimeni din cercul încorporat. Oferă funcții de „drag and drop” care facilitează dezvoltarea de aplicații complexe bazate pe GUI pentru dispozitive încorporate, indiferent de platforma țintă sau de limbajul de programare utilizat pentru dezvoltarea generală a proiectului. Practic elimină stresul asociat cu utilizarea codului pentru a crea interfețe utilizator.
2. (Prototipare rapidă)
Unul dintre cele mai mari blocaje în dezvoltarea de software încorporat este faptul că hardware - ul nu este de obicei disponibil pentru a testa lucrurile din mers în timp ce software-ul este dezvoltat. De multe ori când este disponibil, dezvoltatorii de firmware ar fi trebuit să aștepte tot timpul necesar hardware-ului pentru a fi gata făcând puțin sau nimic. Acest lucru mărește timpul de plumb și nu creează loc pentru tipul de sincronizare între inginerii hardware și dezvoltatorii de firmware care ar fi sporit calitatea produsului. Pentru a ajuta la rezolvarea acestei probleme, băieții de la VaST au creat o platformă de prototipare virtuală la nivel de sisteme electronice care ar putea fi utilizată pentru a crea un prototip hardware virtual pe care se poate executa software încorporat pentru a determina performanța sistemelor înainte ca hardware-ul să fie gata.
3. Oxigen (Documentare)
Una dintre cele mai importante părți ale scrierii oricărui cod este documentarea și unul dintre cele mai populare instrumente pentru acest lucru este Doxygen. În afară de utilizarea sa pentru a înțelege software-ul vechi, Doxygen are capacitatea de a extrage automat comentarii dintr-un cod și de a crea documentație care îl include. Structurile oxigen includ fișiere grafic și creează referințe pentru fiecare funcție, variabilă și macro folosită în codul dvs. Diagramele de flux și diagramele de flux de date pot fi, de asemenea, încorporate în documentație prin combinarea Doxygen cu graphviz.
4. GIT (sisteme de control al versiunilor)
Este dificil să crezi că cineva dezvoltă software de orice tip fără un fel de sistem de control al versiunilor în zilele noastre, dar doar în caz că o faci, este o idee destul de proastă care ar putea duce la greșeli care te vor costa timp și bani. Git se remarcă printre toate instrumentele de control al versiunilor disponibile din mai multe motive. Este open source, rapid, eficient și mai ales local. În afară de Git, merită menționate și instrumente precum subversiunea.
Testarea firmware-ului încorporat
Testarea este o parte importantă a procesului de dezvoltare pentru orice. Firmele pierd mii de dolari când dispozitivele sunt recuperate din cauza erorilor de firmware, deci este o parte a dezvoltării care ar trebui luată foarte în serios. De multe ori se face, mână în mână, cu codificare și primul set de instrumente pentru testarea codului, sunt probabil depanatorii din IDE sau SDK folosite pentru proiect. Testarea vine sub diferite forme și se efectuează în etape diferite, ca atare, implică diverse tipuri de instrumente. Instrumentele de testare formează dezvoltarea firmware-ului, întreaga validare a proiectării la analize statice și instrumente de testare în timpul rulării. Mai jos sunt câteva instrumente pe care le consider cu adevărat utile.
1. Crystal REV
Crystal revs este un instrument pentru studierea codului. Poate fi folosit pentru a genera diagrama de flux din codul C / C ++, ceea ce îl face un instrument excelent pentru a vă revizui propriul cod și a vedea dacă proiectul preliminar este ceea ce a fost implementat. Cu Crystal Rev, veți putea vedea rapid diferența dintre proiectare și implementare. Capacitatea sa de a genera diagrame, date și fluxuri de apeluri din coduri îl face, de asemenea, un instrument, util pentru analiza codului vechi.
2. PC- Lint
PC-lint este unul dintre cele mai vechi instrumente de testare a firmware-ului din jur. Este capabil să analizeze software pentru a identifica erori, vulnerabilități de securitate și pentru a se asigura că codul a fost scris în conformitate cu standardele din industrie. Instrumentele similare includ polyspace și LRDA, Vinetă și Tessy, printre altele.
3. Wireshark
Acest lucru este util atunci când construiți dispozitive de rețea. Este în esență un sniffer de pachete și ar putea ajuta la vizualizarea datelor pe care le transmite dispozitivul dvs. Acest lucru ar putea ajuta la securizarea dispozitivului.
4. Driver de port serial virtual
Software-ul VSPD de eltima este un instrument pe care l-am introdus recent și de un prieten. Este foarte util atunci când lucrați la driverele de dispozitiv și la alte dezvoltări legate de port. Portul serial virtual virtual vă oferă posibilitatea de a testa comportamentul porturilor com fără dispozitivul țintă. Puteți crea un număr nelimitat de porturi, care poate emula toate setările porturilor com reale. Software-ul vine, de asemenea, cu funcții precum divizarea porturilor seriale, fuziunea porturilor Com, utilizarea conexiunilor de port com pachet, printre alte caracteristici interesante.
Asta e tot pentru acest articol, mulțumesc că ați luat timp să citiți. Deși este imposibil să enumerați probabil toate instrumentele de acolo, sper că veți găsi utile unele dintre aceste instrumente.