- 1. Razvoj zahtjeva za proizvodom
- 2. Dizajn sustava i razvoj algoritma
- 3. Kodiranje ugrađenog firmvera
- Testiranje ugrađenog firmvera
Razvoj softvera općenito je težak, ali za ugrađeni sustav na potpuno je novoj razini težine. Programeri firmvera moraju dobro poznavati razvoj hardvera i razumjeti unutarnji rad ugrađenog procesora. Za današnji ću članak dijeliti alate i savjete koji bi se mogli koristiti za postizanje visoke razine učinkovitosti i uklanjanje nekih stvari koje razvoj firmvera čine dosadnim.
Razvoj ugrađenog softvera prolazi kroz sličan proces razvoja s "običnim" razvojem softvera. Bez obzira na usvojeni model razvoja / upravljanja, ugrađeni razvoj softvera uglavnom uključuje sljedeće korake:
- Razvoj zahtjeva za proizvodom
- Dizajn sustava i razvoj algoritma
- Kodiranje
- Testiranje
Ispitat ćemo neke poteškoće koje dolaze s tim fazama i neke alate koji bi mogli povećati učinkovitost i produktivnost.
1. Razvoj zahtjeva za proizvodom
Specifikacije proizvoda često se rade s obzirom na dizajnere ploča. Obično sadrži malo informacija koje bi mogle pomoći razvoju firmvera, tako da ugrađeni razvijač softvera završava s manjkavim dokumentom od 250 stranica (prosjek) koji se ne može koristiti za reference, a ako se ne pažljivo razmotri, lako bi mogao dovesti do previda u dizajnu, što će zauzvrat, dovesti do produženja vremenskog okvira projekta, ako ne i ukupnog neuspjeha projekta. Dokumenti rijetko sadrže informacije o registrima ili njihovim bitnim poljimaIzmeđu ostalog, to košta programera firmvera nekoliko sati rada dok pretražuju dokument kako bi identificirali stvari poput toga koji registar pripada kojoj skupini i koje polje bitova pripada kojem registru. Ispod je nekoliko savjeta koje bismo mogli razmotriti kako bismo osigurali razvoj korisnijih dokumenata o projektnim specifikacijama.
Korištenje opisa registra
Kao što je gore spomenuto, programeri firmvera moraju razumjeti zamršenost svih registara, memorija itd. Svih upravljačkih elemenata (CPU, MCU itd.) U projektu kako bi mogli učinkovito kontrolirati sve dijelove sustava. Da bi to postavili na mjesto, programeri firmvera mogu osigurati da dokument sa specifikacijama sadrži odgovarajući opis registara zajedno s memorijskim kartama. Svim registrima u kontrolnom elementu može se dodijeliti prepoznatljiv naziv zbog kojeg ih je lako prepoznati u cijelom dokumentu, a svi mogu biti vruće povezani tako da vode do popisa u dokumentu koji navodi ime, mjesto, blok i adresu svaki registar.
Opisi zadataka
Drugi način na koji dokumenti specifikacija mogu biti korisni za ugrađene programere je opisivanjem što bi svaki blok trebao učiniti i kako to treba učiniti. Također u ovoj fazi trebali bi postojati planovi za postupanje s pogreškama ispod svakog bloka. U osnovi ovo izgleda kao da kaže programer firmwarea; "Kad dođem ovdje, moram učiniti ovo, to i to, osiguravajući da se ovo, to i ono ne dogodi". To pomaže u usmjeravanju rada programera i pomaže u procjeni projekta čak i prije nego što dizajn počne prepoznavati potencijalne pogreške i greške, štedeći dragocjeno vrijeme i novac.
Postoje i drugi čimbenici, uključujući strukturu dokumenata, upotrebu fontova koji se lako čitaju (nešto s čime programeri mogu raditi čak i kada su umorni), grafikone i slike, gdje je to moguće, što bi sve moglo povećati učinkovitost tima za firmware nakon ove faze.
2. Dizajn sustava i razvoj algoritma

Ova faza uključuje razvoj pseudokoda, dijagrama toka, državnih strojeva i svega što je povezano s dizajnom firmware-a. U ovoj se fazi može upotrijebiti popriličan broj alata koji će vam pomoći organizirati misli, istražiti naslijeđeni / prethodno napisani softver oko projekta i razviti vlastiti dijagram toka, državni stroj itd. Neki od ovih alata razmatrani su u nastavku.
PIM-ovi
U ovoj fazi razvoja proizvoda programeri imaju tendenciju da puno škrabaju jer prikupljaju resurse na projektu od web poveznica do formula itd. Jedan od najboljih načina za praćenje ovih podataka kako bi kasnije bili korisni je upotreba PIM-a alati (upravljanje informacijama o proizvodu). Postoji popriličan broj PIM-ova, ali spomenut ću nekoliko s nekim izvanrednim značajkama.
1. Evernote

Evernote vam pomaže da pravite bilješke dostupne na bilo kojoj platformi, tako da bilješku koju ste napravili na računalu možete provjeriti dok ste u autobusu kući. Bilješke su dobro organizirane i u potpunosti ih je moguće pretraživati, tako da ćete uvijek pronaći ono što vam treba.
2. TrunkNote
Trunk note je aplikacija za bilježenje nalik na Wiki. Donosi svu organizacijsku moć wikija u bilježenje. To je aplikacija temeljena na mobilnom telefonu, ali se može lako sinkronizirati s računalom putem WIFI-a.
Druge vrste PIM-ova poput Tiddlywikija itd. Svaki od njih dolazi sa značajkama koje ga mogu učiniti privlačnijim za određene pojedince i mogu uzeti neko uzorkovanje prije nego što se konačno odlučite za jedan.
Razumijevanje naslijeđenog kodeksa
Druga skupina alata koja je vrlo korisna tijekom faze dizajna su alati za razumijevanje naslijeđenih kodova. U situacijama kada je proizvod koji se dizajnira poboljšana verzija prethodnog proizvoda, programeru bi moglo biti korisno pregledati već obavljeni posao kako bi dobio neke ideje i možda dijelove koda za ovaj novi projekt. Ovo bi mogao biti prilično dug put, pogotovo ako niste dio tima koji je stvorio prethodni softver. Postoji popriličan broj softvera koji pomaže u gradnji stabala, izradi dokumentacije i dijagrama toka iz već napisanog koda.
1. Kisik

Doxygen je prilično moćan alat koji pomaže u stvaranju dokumentacije iz izvornih kodova. Uglavnom je dizajniran za rad sa C ++, ali također radi sa C, Python i nekim drugim jezicima. Ima sposobnost izdvajanja strukture koda bilo kojeg koda, pružajući automatski generirane grafikone ovisnosti i dijagram nasljeđivanja koji pomažu vizualizirati kôd.
2. Graphviz

Prema njihovoj web stranici, graphviz pomaže prikazati strukturne informacije kao dijagrame apstraktnih grafova i mreža. Može se koristiti uz Doxygen za bolje razumijevanje grafike koju proizvodi.
3. Srecord
Srecord je moćan alat za manipulaciju slikama firmvera i pretvorbu između različitih formata datoteka. Može se koristiti za izračunavanje i izvršavanje CRC-a i kontrolnih suma na bajt-blokovima, ispravljanje datoteka pogrešaka stvorenih zbog neispravnih alatnih lanaca i filtriranje ili premještanje odjeljaka datoteka između ostalog. Više informacija o njegovoj upotrebi možete pronaći na stranici SourceForge.
Neki drugi alati koji spadaju u ovu kategoriju su CrystalRev i Hexplorer, između ostalih.
Razvijanje algoritama
Sva istraživanja i bilježenje agregata za razvoj algoritama koji se završavaju u pseudokode i dijagrame toka za projekt. Postoji nekoliko alata za razvoj dijagrama toka i iako većina njih nije isključiva za razvoj firmvera, oni nude korisne i važne značajke koje jednostavno odrađuju posao, a pomažu i u održavanju ljestvica tijekom ciklusa razvoja proizvoda. Ispod su neki od najboljih alata za dijagram toka.
1. QFSM

QFSM je grafički alat za projektiranje i simulaciju strojeva s konačnim stanjima. Sposobnost simulacije dizajna čini ga boljim od većine ostalih programa u ovoj grupi. To je posebno korisno kada dizajnirate državne strojeve za FPGA i slični ciljani hardver.
2. Lucidna karta

Lucid chart je vjerojatno najbolji i najfleksibilniji softver za dijagram toka. Internet se temelji i ima značajke tima koje vam omogućuju rad između više uređaja i suradnju u stvarnom vremenu sa suigračima.
3. Microsoft Visio

Visio je jedan od najboljih grafičkih alata trenutno. Ima niz objekata iz različitih polja koji olakšavaju bilo što opisivanje. Međutim, ne dolazi sa značajkama koje poboljšavaju suradnju među timovima i može se koristiti samo na Windows računalu na kojem je instaliran.
4. Google prezentacije

Jedna od ključnih stvari u razvoju proizvoda u današnjem svijetu je upotreba alata koji timovima omogućuju učinkovitu suradnju gdje god se nalazili, a to je jedna stvar koju Google prezentacije donose na svoje mjesto. Može se koristiti za izradu svih vrsta karata, od dijagrama tijeka softvera do organizacijskih karata i mentalnih mapa. Temelji se na oblaku i radi u gotovo svim popularnim preglednicima.
Postoji nekoliko drugih alata za izradu dijagrama toka i razvoj općeg algoritma, kao i obično, svaki sa svojim za i protiv.
3. Kodiranje ugrađenog firmvera

Sve što je spomenuto do ove točke vodi ovdje. Svijet SDK-ova i IDE-a, izbor alata u ovoj fazi ovisi o ciljnom uređaju i značajkama koje će se ugraditi u uređaj, zbog čega ću iz rasprave izuzeti popularne SDK-ove i IDE-je poput MPLAB-a itd. I samo se pridržavati na alate koji se više nadopunjuju u prirodi.
1. QT (razvoj korisničkog sučelja)

Zasloni (interaktivni ili ne) najpopularniji su mediji za pružanje povratnih informacija korisnicima danas, a QT-ov SDK jedan je od najboljih i vjerojatno nije nepoznanica nikome iz ugrađenog kruga. Pruža značajke "povlačenja i ispuštanja" koje olakšavaju razvoj složenih aplikacija zasnovanih na GUI-ju za ugrađene uređaje, bez obzira na ciljnu platformu ili programski jezik koji se koristi za cjelokupni razvoj projekta. U osnovi uklanja stres povezan s korištenjem koda za stvaranje korisničkih sučelja.
2. (brzi prototipi)
Jedno od najvećih uskih grla u razvoju ugrađenog softvera je činjenica da hardver obično nije dostupan za testiranje stvari u pokretu dok se softver razvija. Često bi kad bi bio dostupan, programeri firmwarea morali bi čekati cijelo vrijeme potrebno da hardver bude spreman da radi malo ili ništa. To povećava vrijeme isporuke i ne stvara prostor za onu vrstu sinkronizacije između hardverskih inženjera i programera firmware-a koja bi povećala kvalitetu proizvoda. Kako bi pomogli u rješavanju ovog problema, momci iz VaST-a stvorili su virtualnu platformu za prototipiranje na razini elektroničkih sustava koja bi se mogla koristiti za stvaranje virtualnog hardverskog prototipa na kojem se ugrađeni softver može izvršiti za određivanje performansi sustava prije nego što hardver bude spreman.
3. Kisik (dokumentacija)
Jedan od najvažnijih dijelova pisanja bilo kojeg koda je dokumentacija, a jedan od najpopularnijih alata za to je Doxygen. Osim njegove upotrebe za razumijevanje starog softvera, Doxygen ima mogućnost automatskog izdvajanja komentara iz koda i stvaranja dokumentacije koja ga uključuje. Strukture kisika uključuju datoteke grafički i stvaraju reference za svaku funkciju, varijablu i makronaredbu korištenu u vašem kodu. Dijagrami toka i dijagrami toka podataka također se mogu ugraditi u dokumentaciju kombiniranjem Doxygena i graphviz-a.
4. GIT (sustavi za kontrolu verzija)

Teško je vjerovati da itko danas razvija softver bilo koje vrste bez nekakvog sustava za kontrolu verzija, no za svaki slučaj, prilično je loša ideja koja bi mogla dovesti do pogrešaka koje će vas koštati vremena i novca. Git se ističe iz svih alata za kontrolu verzija iz nekoliko razloga. Otvoreni je izvor, brz, učinkovit i uglavnom lokalni. Asides Git, alati poput subverzije također su vrijedni spomena.
Testiranje ugrađenog firmvera
Testiranje je važan dio razvojnog procesa za bilo što. Tvrtke gube tisuće dolara kad se uređaji opozovu zbog pogrešaka firmvera, tako da je to dio razvoja koji treba shvatiti vrlo ozbiljno. To se često radi, ruku pod ruku, s kodiranjem, a prvi set alata za testiranje koda, vjerojatno su otklanjači pogrešaka unutar IDE-a ili SDK-a koji se koriste za projekt. Testiranje dolazi u različitim oblicima i provodi se u različitim fazama, kao takvo, uključuje različite vrste alata. Alati za ispitivanje čine razvoj firmvera presjekom od validacije dizajna do statičke analize i runtime alata za testiranje. Ispod je nekoliko alata koje smatram doista korisnima.
1. Kristal REV
Crystal revs je alat za proučavanje koda. Može se koristiti za generiranje dijagrama toka iz C / C ++ koda što ga čini izvrsnim alatom za pregled vlastitog koda i provjeru je li preliminarni dizajn ono što je implementirano. Kristalnim obrtajem moći ćete brzo vidjeti razliku između dizajna i izvedbe. Njegova sposobnost generiranja dijagrama toka, podataka i protoka poziva iz kodova također ga čini alatom korisnim za analizu naslijeđenog koda.
2. PC- Lint
PC-lint jedan je od najstarijih alata za testiranje firmvera. Sposoban je analizirati softver za prepoznavanje grešaka, sigurnosnih ranjivosti i osigurati da je kôd napisan u skladu s industrijskim standardima. Slični alati uključuju polispace i LRDA, patlidžan i Tessy, između ostalih.
3. Wireshark

To dobro dođe prilikom izrade mrežnih uređaja. To je u osnovi njuškalo paketa i moglo bi vam pomoći u pregledavanju podataka koje vaš uređaj prenosi. To bi moglo pomoći u osiguranju uređaja.
4. Upravljački program virtualnog serijskog priključka
VSPD by eltima softver je alat koji sam nedavno upoznao i od prijatelja. Dolazi vrlo korisno kada radite na upravljačkim programima uređaja i ostalim razvojima vezanim uz com port. Virtualni serijski com priključak daje vam mogućnost testiranja ponašanja com portova bez ciljnog uređaja. Možete stvoriti neograničen broj portova koji može oponašati sve postavke stvarnih com portova. Softver također dolazi sa značajkama kao što su razdvajanje serijskih priključaka, spajanje Com portova, korištenje sveza com com port priključaka među ostalim sjajnim značajkama.
To je to za ovaj članak, hvala što ste odvojili vrijeme za čitanje. Iako je nemoguće navesti sve alate tamo, nadam se da će vam neki od ovih alata biti korisni.
