- 1. Udvikling af produktkrav
- 2. Systemdesign og algoritmeudvikling
- 3. Kodning til indbygget firmware
- Test af integreret firmware
Softwareudvikling er generelt vanskelig, men for et integreret system er det på et helt nyt vanskelighedsniveau. Firmwareudviklere skal have god viden om hardwareudvikling og forstå den interne funktion i en integreret processor. Til dagens artikel deler jeg værktøjer og tip, der kan bruges til at opnå et højt effektivitetsniveau og eliminere nogle af de ting, der gør firmwareudvikling kedelig.
Integreret softwareudvikling gennemgår den samme udviklingsproces med "almindelig" softwareudvikling. Uanset den vedtagne udviklings- / ledelsesmodel involverer Embedded Software Development generelt nedenstående trin:
- Udvikling af produktkrav
- Systemdesign og algoritmeudvikling
- Kodning
- Testning
Vi vil undersøge nogle af de vanskeligheder, der følger med disse faser, og nogle af de værktøjer, der kan øge effektiviteten og produktiviteten.
1. Udvikling af produktkrav
Produktspecifikationer udføres ofte med tanke på bestyrelsesdesignerne. Det indeholder normalt kun lidt information, der kan hjælpe firmwareudvikling, og den indlejrede softwareudvikler ender med et fejlbehæftet 250-siders (gennemsnit) dokument, som ikke kan bruges til referencer, og hvis det ikke nøje overvejes let kan føre til oversights i design, som igen, føre til, at projektets tidsramme forlænges, hvis ikke den samlede projektfejl. Dokumenterne indeholder sjældent oplysninger om registre eller deres bitfelterblandt andet, og dette koster firmwareudviklere flere mandetimer, når de søger gennem dokumentet for at identificere ting som hvilket register der tilhører hvilken gruppe og hvilket bitfelt tilhører hvilket register. Nedenfor er nogle tip, som kan overvejes for at sikre udviklingen af mere brugbare projektspecifikationsdokumenter.
Brug af registerbeskrivelser
Som diskuteret ovenfor er firmwareudviklere nødt til at forstå indviklingen i alle registre, minder osv. Af alle kontrolelementer (CPU, MCU osv.) I et projekt for effektivt at kunne kontrollere alle dele af systemet. For at få dette på plads kan firmwareudviklere sikre, at specifikationsdokumentet indeholder en korrekt beskrivelse af registre sammen med hukommelseskort. Alle registre i kontrolelementet kunne tildeles et særpræg, der gør dem lette at identificere på tværs af dokumentet, og de kan alle være hot-linket, så de fører til en liste i dokumentet, der angiver navn, placering, blok og adresse på hvert register.
Opgavebeskrivelser
En anden måde, hvorpå specifikationsdokumenter kan gøres nyttige for integrerede softwareudviklere, er ved at beskrive, hvad hver blok skal gøre, og hvordan den skal gøre det. Også på dette tidspunkt skal der være planer for fejlhåndtering under hver blok. I det væsentlige ligner dette firmwareudvikleren, der siger; "Når jeg kommer her, skal jeg gøre dette, dette og dette for at sikre, at dette, det og det ikke sker". Dette hjælper med at guide udviklerens arbejde og hjælper med at evaluere projektet, selv før design begynder at identificere potentielle fejl og fejl, hvilket sparer dyrebar tid og penge.
Der er andre faktorer, herunder dokumentstruktur, brugen af letlæsede skrifttyper (noget udviklerne kan arbejde med, selv når de er trætte), diagrammer og billeder, hvor det er muligt, hvilket alle kunne øge effektiviteten af firmwareteamet efter dette trin.
2. Systemdesign og algoritmeudvikling
Dette trin involverer udvikling af pseudokoder, flowcharts, tilstandsmaskiner og alt, hvad der er involveret i designet af, hvad firmwaren har. I denne fase kan et stort antal værktøjer bruges til at hjælpe med at organisere tanker, udforske ældre / tidligere skrevet software omkring projektet og udvikle dit eget flowchart, tilstandsmaskine osv. Nogle af disse værktøjer diskuteres nedenfor.
PIM'er
På dette stadium af produktudviklingen har udviklere tendens til at skrive meget, når de samler ressourcer på projektet fra weblinks til formler osv. En af de bedste måder at holde styr på denne information, så de er nyttige senere, er ved hjælp af PIM (produktinformationsstyring) værktøjer. Der er et stort antal PIM'er derude, men jeg vil nævne nogle få med nogle fremragende funktioner.
1. Evernote
Evernote hjælper dig med at tage noter, der er tilgængelige på alle platforme, så du kan kontrollere den note, du lavede på din pc, mens du var i bussen hjem. Noterne er velorganiserede og er fuldstændig søgbare, så du altid finder det, du har brug for.
2. TrunkNote
Trunk note er en Wiki-lignende noteoptagelsesapplikation. Det bringer al organisationskraft fra wikier til notering. Det er en mobiltelefonbaseret applikation, men kan nemt synkroniseres med en pc via WIFI.
Andre slags PIM'er som Tiddlywiki osv. Hver af dem leveres med funktioner, der kan gøre det mere attraktivt for bestemte individer og kan tage nogle prøver, før du endelig afregner på en.
Forståelse af ældre kode
En anden gruppe værktøjer, som er meget nyttige i designfasen, er værktøjer til forståelse af ældre koder. I situationer, hvor det designede produkt er en forbedret version af et tidligere produkt, kan udvikleren måske finde det nyttigt at gennemgå det arbejde, der allerede er udført for at få nogle ideer og måske bit af kode til dette nye projekt. Dette kan være en ganske lang vej, især hvis du ikke var en del af det team, der byggede den tidligere software. Der er et stort antal software, der hjælper med at bygge træer, oprette dokumentation og rutediagrammer fra allerede skrevet kode.
1. Doxygen
Doxygen er et ret stærkt værktøj, der hjælper med at oprette dokumentation fra kildekoder. Det var hovedsageligt designet til at arbejde med C ++, men fungerer også med C, Python og nogle andre sprog. Det har evnen til at udtrække kodestrukturen for en hvilken som helst kode, der giver automatisk genererede afhængighedsgrafer og arvediagrammer for at hjælpe med at visualisere koden.
2. Graphviz
Ifølge deres hjemmeside hjælper graphviz med at præsentere strukturelle oplysninger som diagrammer over abstrakte grafer og netværk. Det kan bruges sammen med Doxygen for bedre at forstå den grafik, der produceres af den.
3. Srecord
Srecord er et kraftfuldt værktøj til manipulation af firmwarebilleder og konvertering mellem forskellige filformater. Det kan bruges til at beregne og udføre CRC'er og kontrolsummer på byteblokke, rette fejlfiler oprettet på grund af buggy-værktøjskæder og filtrere eller flytte sektioner af filer blandt andet. Flere oplysninger om dets anvendelse kan findes på dens SourceForge-side.
Nogle andre værktøjer, der falder ind under denne kategori er CrystalRev og Hexplorer blandt andre.
Udvikling af algoritmer
Al forskning og noteringsaggregater til udviklingen af algoritmer, der spinder ud i pseudokoder og rutediagrammer til projektet. Der findes flere værktøjer til udvikling af flowcharts, og selvom de fleste af dem ikke er eksklusive til firmwareudvikling, giver de nyttige og vigtige funktioner, der simpelthen får arbejdet gjort og hjælper også med at vedligeholde diagrammerne gennem produktudviklingscyklussen. Nedenfor er nogle af de bedste værktøjer derude til flowcharting.
1. QFSM
QFSM er et grafisk værktøj til design og simulering af finite state-maskiner. Dens evne til at simulere designene gør det langt bedre end de fleste andre software i denne gruppe. Det er især nyttigt, når du designer statsmaskiner til FPGA og lignende målhardware.
2. Lucid Chart
Lucid-diagram er uden tvivl den bedste og mest fleksible flowchart-software derude. Det er webbaseret og har holdfunktioner, der giver dig mulighed for at arbejde mellem flere enheder og samarbejde i realtid med holdkammerater.
3. Microsoft Visio
Visio er et af de bedste grafiske værktøjer i øjeblikket. Det har en række objekter fra forskellige felter, der gør det let at beskrive noget. Det kommer dog ikke med funktioner, der forbedrer samarbejdet mellem teams og kan kun bruges på en Windows-maskine, som den er installeret på.
4. Google Slides
En af de vigtigste ting i udviklingen af produkter i dagens verden er brugen af værktøjer, der gør det muligt for teams at samarbejde effektivt, uanset hvor de er, og det er en ting, som Google-slides bringer om bord. Det kan bruges til at udvikle alle slags diagrammer fra softwarestrømskort til organisationskort og mindskort. Det er skybaseret og fungerer i næsten alle de populære browsere.
Der findes adskillige andre værktøjer til oprettelse af flowcharts og generel algoritmeudvikling, som sædvanlig, hver med sine egne fordele og ulemper.
3. Kodning til indbygget firmware
Alt der er nævnt indtil dette punkt fører her. Verden af SDK'er og IDE'er, valg af værktøjer på dette stadium afhænger af målenheden og de funktioner, der skal indbygges i enheden, af denne grund vil jeg udelukke populære SDK'er og IDE'er som MPLAB osv fra diskussionen og bare holde fast til værktøjer, der er mere komplementære.
1. QT (GUI-udvikling)
Skærme (interaktive eller ej) er de mest populære medier til at give feedback til brugerne i disse dage, og QT's SDK er en af de bedste derude og sandsynligvis ikke fremmed for nogen inden for den indlejrede cirkel. Det giver "træk og slip" -funktioner, der gør det let at udvikle komplekse, GUI-baserede applikationer til indlejrede enheder, uanset målplatformen eller det programmeringssprog, der bruges til den samlede projektudvikling. Det eliminerer dybest set stress forbundet med at bruge kode til at oprette brugergrænseflader.
2. (hurtig prototyping)
En af de største flaskehalse i udviklingen af integreret software er det faktum, at hardwaren normalt ikke er tilgængelig til at teste ting på farten, mens softwaren udvikles. Ofte når den er tilgængelig, ville firmwareudviklerne have fået den til at vente hele tiden, det tog, før hardwaren var klar til at gøre lidt eller intet. Dette øger ledetiden og skaber ikke plads til den slags synkronisering mellem hardwareingeniørerne og firmwareudviklerne, der ville have øget produktets kvalitet. For at hjælpe med at løse dette problem skabte fyrene på VaST en elektronisk virtuel prototypeplatform på systemniveau, der kunne bruges til at oprette en virtuel hardwareprototype hvor integreret software kan udføres for at bestemme systemets ydeevne, før hardwaren er klar.
3. Doxygen (dokumentation)
En af de vigtigste dele af at skrive en hvilken som helst kode er dokumentation, og et af de mest populære værktøjer til det er Doxygen. Bortset fra dets anvendelse til at forstå ældre software, har Doxygen evnen til automatisk at udtrække kommentarer fra en kode og oprette dokumentation, der inkluderer den. Doxygen-strukturer inkluderer filer grafisk og opretter referencer til hver funktion, variabel og makro, der bruges i din kode. Flowcharts og dataflowdiagrammer kan også integreres i dokumentationen ved at kombinere Doxygen med graphviz.
4. GIT (versionskontrolsystemer)
Det er svært at tro, at nogen udvikler software af enhver art uden et slags versionskontrolsystem i disse dage, men bare hvis du gør det, er det en ret dårlig idé, der kan føre til fejl, der koster dig tid og penge. Git skiller sig ud blandt alle versionskontrolværktøjerne derude af flere grunde. Det er open source, hurtigt, effektivt og for det meste lokalt. Bortset fra Git er værktøjer som subversion også værd at nævne.
Test af integreret firmware
Test er en vigtig del af udviklingsprocessen for alt. Virksomheder mister tusinder af dollars, når enheder tilbagekaldes på grund af firmwarefejl, så det er en del af udviklingen, der skal tages meget alvorligt. Det gøres ofte, hånd i hånd, med kodning og det første sæt værktøjer til kodetest, er sandsynligvis debuggere inden for IDE eller SDK, der bruges til projektet. Test kommer i forskellige former og udføres på forskellige stadier, som sådan involverer det forskellige slags værktøjer. Testværktøjer danner firmwareudvikling på tværs af designvalidering til statisk analyse og runtime testværktøjer. Nedenfor er få værktøjer, som jeg finder rigtig nyttige.
1. Crystal REV
Crystal revs er et værktøj til at studere kode. Det kan bruges til at generere rutediagram fra C / C ++ - kode, hvilket gør det til et godt værktøj til at gennemgå din egen kode og se om det foreløbige design er det, der blev implementeret. Med crystal rev vil du hurtigt kunne se forskellen mellem design og implementering. Dens evne til at generere flowdiagrammer, data og opkaldsflow fra koder gør det også til et værktøj, der er nyttigt til analyse af ældre kode.
2. PC-fnug
PC-lint er et af de ældste firmwaretestværktøjer rundt. Det er i stand til at analysere software til at identificere fejl, sikkerhedssårbarheder og sikre, at kode blev skrevet i overensstemmelse med industristandarder. Lignende værktøjer inkluderer polyspace og LRDA, aubergine og Tessy blandt andre.
3. Wireshark
Dette er praktisk, når du bygger netværksenheder. Det er i det væsentlige en pakkesniffer og kan hjælpe med at se de data, din enhed sender. Dette kan hjælpe med at sikre enheden.
4. Virtuel seriel portdriver
VSPD af eltima software er et værktøj, som jeg for nylig også blev introduceret af en ven. Det kommer virkelig praktisk, når du arbejder på enhedsdrivere og anden udviklingsrelateret udviklingsport. Den virtuelle serielle com-port giver dig mulighed for at teste comports-opførsel uden målenheden. Du kan oprette et ubegrænset antal porte, som er i stand til at efterligne alle indstillingerne for rigtige porte. Softwaren leveres også med funktioner som Seriel port opdeling, Com porte fusion, brug bundt com port forbindelser blandt andre seje funktioner.
Det er det til denne artikel, tak fordi du tog dig tid til at læse. Selvom det er umuligt at sandsynligvis liste alle værktøjerne derude, håber jeg, at du finder nogle af disse værktøjer nyttige.