- 1. Desenvolupament de requisits de producte
- 2. Disseny de sistemes i desenvolupament d’algorismes
- 3. Codificació per al firmware incrustat
- Prova del firmware incrustat
El desenvolupament de programari és generalment difícil, però per a un sistema incrustat té un nivell de dificultat completament nou. Els desenvolupadors de firmware han de tenir un bon coneixement sobre el desenvolupament de maquinari i entendre el funcionament intern d’un processador incrustat. Per a l'article d'avui, compartiré eines i consells que es podrien utilitzar per aconseguir un alt nivell d'eficiència i eliminar algunes de les coses que fan que el desenvolupament del firmware sigui tediós.
El desenvolupament de programari incrustat passa per un procés de desenvolupament similar amb el desenvolupament de programari "normal". Independentment del model de desenvolupament / gestió adoptat, el desenvolupament de programari incrustat sol incloure els passos següents:
- Desenvolupament de requisits de producte
- Disseny de sistemes i desenvolupament d’algoritmes
- Codificació
- Proves
Examinarem algunes de les dificultats que comporten aquestes etapes i algunes de les eines que podrien augmentar l’eficiència i la productivitat.
1. Desenvolupament de requisits de producte
Les especificacions del producte es fan sovint tenint en compte els dissenyadors de taulers. Normalment conté poca informació que pugui ajudar al desenvolupament del microprogramari, per la qual cosa el desenvolupador de programari incrustat acaba amb un document defectuós de 250 pàgines (mitjà) que no es pot utilitzar per a referències i, si no es considera atentament, pot conduir a desconsideracions en el disseny, que al seu torn, conduirà a ampliar el període de temps del projecte si no al fracàs general del projecte. Els documents rarament contenen informació sobre registres o els seus camps de bitsentre altres coses, això costa als desenvolupadors de microprogramari diverses hores laborals mentre cerquen a través del document per identificar coses com quin registre pertany a quin grup i quin camp de bits pertany a quin registre. A continuació es presenten alguns consells que es poden considerar per assegurar el desenvolupament de documents d’especificació de projecte més útils.
Ús de les descripcions del registre
Com s’ha comentat anteriorment, els desenvolupadors de microprogramaris han d’entendre les complexitats de tots els registres, memòries, etc. de tots els elements de control (CPU, MCU, etc.) d’un projecte per poder controlar de manera efectiva totes les parts del sistema. Per posar-ho en pràctica, els desenvolupadors de firmware poden assegurar-se que el document d'especificacions contingui una descripció adequada dels registres juntament amb els mapes de memòria. A tots els registres de l’element de control se’ls pot assignar un nom distintiu que els facilita la identificació a través del document i tots podrien estar enllaçats de manera que portin a una llista dins del document on consti el nom, la ubicació, el bloc i l’adreça de cada registre.
Descripcions de tasques
Una altra forma a través de la qual els documents d’especificació es poden fer útils per als desenvolupadors de programari incrustat és descrivint què se suposa que fa cada bloc i com ho hauria de fer. També en aquesta etapa, hi hauria d’haver plans per a la gestió d’errors a cada bloc. Bàsicament, sembla que diu el desenvolupador del firmware; "Quan arribi aquí, he de fer això, això i això, assegurant que això, això i allò no es produeixin". Això ajuda a guiar el treball del desenvolupador i ajuda a avaluar el projecte fins i tot abans que el disseny comenci a identificar possibles errors i errors, estalviant temps i diners preciosos.
Hi ha altres factors, com ara l’estructura de documents, l’ús de tipus de lletra fàcils de llegir (cosa que els desenvolupadors poden treballar fins i tot quan estan fatigats), gràfics i imatges, sempre que sigui possible, que podrien augmentar l’eficiència de l’equip de microprogramari després d’aquesta etapa.
2. Disseny de sistemes i desenvolupament d’algorismes

Aquesta etapa implica el desenvolupament de pseudocodis, diagrames de flux, màquines d'estat i tot allò relacionat amb el disseny del que és el firmware. En aquesta etapa, es poden fer servir moltes eines per ajudar a organitzar pensaments, explorar programes antics / escrits prèviament al voltant del projecte i desenvolupar el vostre propi diagrama de flux, màquina d'estats, etc. Algunes d'aquestes eines es descriuen a continuació.
PIM
En aquestes fases del desenvolupament del producte, els desenvolupadors solen gargotejar a mesura que recopilen recursos del projecte des d’enllaços web fins a fórmules, etc. Una de les millors maneres de fer un seguiment d’aquesta informació perquè siguin útils més endavant és mitjançant l’ús de PIM eines (gestió de la informació del producte). Hi ha un bon nombre de PIM, però n’esmentaré alguns amb algunes característiques destacades.
1. Evernote

Evernote us ajuda a prendre notes que estiguin disponibles a qualsevol plataforma perquè pugueu comprovar la nota que heu fet al vostre PC mentre us trobeu a l'autobús de casa. Les notes estan ben organitzades i són completament consultables, de manera que sempre trobareu el que necessiteu.
2. TrunkNote
La nota de tronc és una aplicació per prendre notes de tipus Wiki. Aporta tot el poder organitzatiu dels wikis a la presa de notes. És una aplicació basada en telèfons mòbils, però es pot sincronitzar fàcilment amb un PC mitjançant WIFI.
Altres tipus de PIMs, com ara Tiddlywiki, etc. Cadascun d'ells inclou funcions que el poden fer més atractiu per a persones específiques i que poden prendre mostres abans de definir-ne un.
Comprensió del codi heretat
Un altre grup d’eines molt útils durant l’etapa de disseny són les eines per entendre els codis heretats. En situacions en què el producte que es dissenya és una versió millorada d’un producte anterior, el desenvolupador pot trobar útil revisar el treball que ja s’ha fet per obtenir algunes idees i potser bits de codi per a aquest nou projecte. Pot ser un camí força llarg, sobretot si no formeu part de l'equip que va construir el programari anterior. Hi ha un bon nombre de programes que ajuden a construir arbres, crear documentació i diagrames de flux a partir de codi ja escrit.
1. Oxigen

Doxygen és una eina força potent que ajuda a crear documentació a partir de codis font. Va ser dissenyat principalment per treballar amb C ++, però també funciona amb C, Python i alguns altres llenguatges. Té la possibilitat d’extreure l’estructura de codi de qualsevol codi, proporcionant gràfics de dependències generats automàticament i diagrames d’herència per ajudar a visualitzar el codi.
2. Graphviz

Segons el seu lloc web, graphviz ajuda a presentar informació estructural com a diagrames de gràfics abstractes i xarxes. Es pot utilitzar al costat de Doxygen per entendre millor els gràfics que produeix.
3. Srecord
Srecord és una potent eina per manipular imatges de firmware i convertir entre diferents formats de fitxer. Es pot utilitzar per calcular i fer CRC i sumes de comprovació en blocs de bytes, corregir fitxers d'errors creats a causa de cadenes d'eines de buggy i filtrar o moure seccions de fitxers, entre altres coses. Podeu trobar més informació sobre el seu ús a la pàgina de SourceForge.
Algunes altres eines que pertanyen a aquesta categoria són CrystalRev i Hexplorer, entre d'altres.
Desenvolupament d’algorismes
Tota la investigació i agregats de presa de notes per al desenvolupament d’algoritmes derivats en pseudocodis i diagrames de flux per al projecte. Existeixen diverses eines per desenvolupar diagrames de flux i, tot i que la majoria no són exclusives del desenvolupament de microprogramari, proporcionen funcions útils i importants que simplement fan la feina i també ajuden a mantenir els gràfics durant tot el cicle de desenvolupament de productes. A continuació es mostren algunes de les millors eines disponibles per al diagrama de flux.
1. QFSM

QFSM és una eina gràfica per dissenyar i simular màquines d'estat finit. La seva capacitat per simular els dissenys el fa molt millor que la majoria dels altres programes d’aquest grup. És particularment útil quan esteu dissenyant màquines d'estat per a FPGA i maquinari objectiu similar.
2. Gràfic lúcid

El gràfic lúcid és, sens dubte, el millor i més flexible programari de diagrama de flux que hi ha. Es basa en la web i té funcions d’equip que us permeten treballar entre diversos dispositius i col·laborar en temps real amb companys d’equip.
3. Microsoft Visio

Visio és una de les millors eines gràfiques actualment. Té un conjunt d’objectes de diferents camps que facilita la descripció de qualsevol cosa. Tanmateix, no inclou funcions que milloren la col·laboració entre equips i només es pot utilitzar en una màquina Windows en què està instal·lat.
4. Presentacions de Google

Una de les coses clau en el desenvolupament de productes al món actual és l’ús d’eines que permeten als equips col·laborar eficaçment des d’on siguin i això és una cosa que Google slides inclou. Es pot utilitzar per desenvolupar tot tipus de diagrames, des de diagrames de flux de programari fins a organigrames i mapes mentals. Es basa en el núvol i funciona a gairebé tots els navegadors populars.
Existeixen diverses altres eines per a la creació de diagrames de flux i el desenvolupament d’algoritmes generals, com és habitual, cadascuna amb els seus pro i contres.
3. Codificació per al firmware incrustat

Tot el que s’ha esmentat fins aquí condueix aquí. El món dels SDK i els IDE, l'elecció de les eines en aquesta etapa depèn del dispositiu de destinació i de les funcions que es vulguin integrar al dispositiu. Per aquest motiu, exclouré de la discussió els SDK i els IDE populars, com ara MPLAB, etc. a eines de naturalesa més complementària.
1. QT (desenvolupament de la GUI)

Les pantalles (interactives o no) són els mitjans més populars per proporcionar comentaris als usuaris actualment i l’SDK de QT és un dels millors que hi ha i probablement no és desconegut per a ningú del cercle incrustat. Proporciona funcions d'arrossegar i deixar anar que faciliten el desenvolupament d'aplicacions complexes basades en GUI per a dispositius incrustats, independentment de la plataforma de destinació o del llenguatge de programació que s'utilitzi per al desenvolupament general del projecte. Bàsicament elimina l'estrès associat a l'ús de codi per crear interfícies d'usuari.
2. (Prototipat ràpid)
Un dels majors colls d'ampolla en el desenvolupament de programari incrustat és el fet que el maquinari no sol estar disponible per provar coses sobre la marxa mentre es desenvolupa el programari. Sovint, quan està disponible, els desenvolupadors de microprogramari haurien d’esperar tot el temps que trigava a estar preparat el maquinari fent poc o res. Això augmenta el temps de lliurament i no crea espai per al tipus de sincronització entre els enginyers de maquinari i els desenvolupadors de microprogramari que haurien augmentat la qualitat del producte. Per ajudar a resoldre aquest problema, els nois del VaST van crear una plataforma de prototipatge virtual a nivell de sistemes electrònics que es podria utilitzar per crear un prototip de maquinari virtual en què es pot executar programari incrustat per determinar el rendiment dels sistemes abans que el maquinari estigui a punt.
3. Oxigen (Documentació)
Una de les parts més importants per escriure qualsevol codi és la documentació i una de les eines més populars per a això és Doxygen. A part del seu ús per entendre el programari heretat, Doxygen té la capacitat d’extreure automàticament comentaris d’un codi i crear documentació que l’inclogui. Les estructures de oxigen inclouen fitxers gràficament i creen referències per a cada funció, variable i macro utilitzades al vostre codi. Els diagrames de flux i els diagrames de flux de dades també es poden incrustar a la documentació combinant Doxygen amb graphviz.
4. GIT (sistemes de control de versions)

És difícil creure que algú desenvolupi programari de qualsevol tipus sense cap tipus de sistema de control de versions en aquests dies, però per si ho feu, és una mala idea que pugui comportar errors que us costin temps i diners. Git destaca entre totes les eines de control de versions que hi ha per diverses raons. És de codi obert, ràpid, eficient i majoritàriament local. A part de Git, també cal destacar eines com la subversió.
Prova del firmware incrustat
Les proves són una part important del procés de desenvolupament per a qualsevol cosa. Les empreses perden milers de dòlars quan es recuperen els dispositius a causa d’errors de firmware, de manera que és una part del desenvolupament que s’hauria de prendre molt seriosament. Sovint es fa, de la mà, amb la codificació i el primer conjunt d’eines per a la prova de codi, probablement són els depuradors de l’IDE o l’SDK que s’utilitzen per al projecte. Les proves es presenten en diferents formes i es realitzen en diferents etapes, ja que impliquen diversos tipus d’eines. Les eines de prova formen un desenvolupament de microprogramari que atura la validació del disseny a eines d’anàlisi estàtica i de prova d’execució. A continuació es mostren algunes eines que em semblen realment útils.
1. Crystal REV
Crystal revs és una eina per estudiar el codi. Es pot utilitzar per generar diagrames de flux a partir del codi C / C ++, cosa que el converteix en una eina fantàstica per revisar el vostre propi codi i veure si el disseny preliminar és el que s’ha implementat. Amb Crystal Rev, podreu veure ràpidament la diferència entre el disseny i la implementació. La seva capacitat per generar diagrames de flux, dades i flux de trucades a partir de codis també el converteix en una eina útil per analitzar el codi heretat.
2. PC- Lint
PC-lint és una de les eines de prova de microprogramari més antigues. És capaç d’analitzar programari per identificar errors, vulnerabilitats de seguretat i assegurar-se que el codi s’ha escrit de conformitat amb els estàndards de la indústria. Eines similars inclouen polyspace i LRDA, Eggplant i Tessy, entre d’altres.
3. Wireshark

Això és útil quan es construeixen dispositius de xarxa. Es tracta essencialment d’un sniffer de paquets i pot ajudar a visualitzar les dades que transmet el dispositiu. Això pot ajudar a protegir el dispositiu.
4. Controlador de port sèrie virtual
El programari VSPD per eltima és una eina que recentment he introduït també per un amic. És molt útil quan es treballa amb controladors de dispositiu i altres desenvolupaments relacionats amb el port de comunicacions. El port de com serial virtual us permet provar el comportament dels ports de com sense el dispositiu de destinació. Podeu crear un nombre il·limitat de ports que siguin capaços d’emular tots els paràmetres dels ports de comunicació reals. El programari també inclou funcions com la divisió de ports sèrie, la fusió de ports Com, l’ús de connexions de ports com de paquets entre altres funcions interessants.
Això és tot per a aquest article, gràcies per dedicar-vos temps a llegir. Tot i que probablement és impossible enumerar totes les eines que hi ha, espero que trobeu útils algunes d’aquestes eines.
