- 1. Tuotevaatimuksen kehittäminen
- 2. Järjestelmän suunnittelu ja algoritmin kehittäminen
- 3. Upotetun laiteohjelmiston koodaus
- Upotetun laiteohjelmiston testaus
Ohjelmistokehitys on yleensä vaikeaa, mutta sulautetulle järjestelmälle se on aivan uudella vaikeustasolla. Laiteohjelmistokehittäjillä on oltava hyvät tiedot laitteistokehityksestä ja ymmärrettävä sulautetun prosessorin sisäinen toiminta. Tämänpäiväisessä artikkelissa jaan työkaluja ja vinkkejä, joita voidaan käyttää korkean tehokkuustason saavuttamiseen ja joidenkin sellaisten asioiden poistamiseen, jotka tekevät laiteohjelmistokehityksestä ikävä.
Sulautettujen ohjelmistojen kehittäminen käy läpi samanlaisen kehitysprosessin kuin "tavallinen" ohjelmistokehitys. Riippumatta käytetystä kehitys- / hallintamallista, sulautettujen ohjelmistojen kehittäminen sisältää yleensä seuraavat vaiheet:
- Tuotevaatimusten kehittäminen
- Järjestelmän suunnittelu ja algoritmien kehittäminen
- Koodaus
- Testaus
Tutkimme joitain näiden vaiheiden vaikeuksia ja joitain työkaluja, jotka voivat lisätä tehokkuutta ja tuottavuutta.
1. Tuotevaatimuksen kehittäminen
Tuotespesifikaatiot tehdään usein piirilevyn suunnittelijoita ajatellen. Se sisältää yleensä vain vähän tietoa, joka voisi auttaa laiteohjelmistokehitystä, joten sulautetun ohjelmistokehittäjän tuloksena on viallinen 250 sivun (keskimääräinen) asiakirja, jota ei voida käyttää viitteinä, ja jos sitä ei harkita huolellisesti, se voi helposti johtaa suunnittelun ylikuormituksiin, mikä puolestaan johtaa, johtaa projektin aikataulun jatkamiseen, ellei projektin yleinen epäonnistuminen. Asiakirjat sisältävät harvoin tietoa rekistereistä tai niiden bittikentistämuun muassa, ja tämä maksaa laiteohjelmistokehittäjille useita tunteja, kun he etsivät asiakirjaa tunnistamaan asioita, kuten mikä rekisteri kuuluu mihin ryhmään ja mikä bittikenttä mihin rekisteriin. Seuraavassa on joitain vinkkejä, joita voidaan harkita hyödyllisempien hankespesifikaatioasiakirjojen kehittämisen varmistamiseksi.
Rekisterikuvausten käyttö
Kuten edellä keskusteltiin, laiteohjelmistokehittäjien on ymmärrettävä projektin kaikkien ohjauselementtien (CPU, MCU jne.) Kaikkien rekistereiden, muistien jne. Monimutkaisuudet voidakseen hallita tehokkaasti järjestelmän kaikkia osia. Tämän asentamiseksi laiteohjelmistokehittäjät voivat varmistaa, että määritysasiakirjassa on asianmukainen kuvaus rekistereistä muistikarttojen kanssa. Kaikille ohjauselementin rekistereille voitaisiin antaa erottuva nimi, jonka avulla ne on helppo tunnistaa asiakirjassa, ja ne kaikki voidaan linkittää pikaviestillä siten, että ne johtavat asiakirjassa olevaan luetteloon, jossa ilmoitetaan asiakirjan nimi, sijainti, lohko ja osoite. jokaisessa rekisterissä.
Tehtävän kuvaukset
Toinen tapa, jolla erittelyasiakirjat voidaan tehdä hyödyllisiksi sulautettujen ohjelmistojen kehittäjille, on kuvaamalla, mitä jokaisen lohkon on tarkoitus tehdä ja miten sen pitäisi tehdä se. Myös tässä vaiheessa jokaisen lohkon alla pitäisi olla suunnitelmia virheen käsittelemiseksi. Pohjimmiltaan tämä näyttää firmware-kehittäjän sanomalta; "Kun pääsen tänne, minun on tehtävä tämä, tämä ja tämä, varmistaen, että tätä, tätä ja sitä ei tapahdu". Tämä auttaa ohjaamaan kehittäjän työtä ja auttaa arvioimaan projektia jo ennen suunnittelun alkua tunnistaa mahdolliset virheet ja virheet, mikä säästää arvokasta aikaa ja rahaa.
On muita tekijöitä, kuten asiakirjan rakenne, helposti luettavien fonttien käyttö (joiden kanssa kehittäjät voivat työskennellä myös väsyneenä), kaaviot ja kuvat mahdollisuuksien mukaan, mikä kaikki voi lisätä laiteohjelmistotiimin tehokkuutta tämän vaiheen jälkeen.
2. Järjestelmän suunnittelu ja algoritmin kehittäminen
Tässä vaiheessa kehitetään pseudokoodeja, vuokaavioita, tilakoneita ja kaikkea, mikä liittyy laiteohjelmiston suunnitteluun. Tässä vaiheessa voidaan käyttää lukuisia työkaluja ajatusten järjestämiseen, vanhojen / aiemmin kirjoitettujen ohjelmistojen tutkimiseen projektin ympärillä ja oman vuokaavion, tilakoneen jne. Kehittämiseen. Joitakin näistä työkaluista käsitellään jäljempänä.
PIM: t
Tässä tuotekehityksen vaiheessa kehittäjät pyrkivät piirtämään paljon, kun he keräävät resursseja projektiin web-linkeistä kaavoihin jne. Yksi parhaista tavoista seurata näitä tietoja, jotta ne ovat hyödyllisiä myöhemmin, on PIM: n käyttö (tuotetietojen hallinta) -työkalut. PIM-laitteita on melko paljon, mutta mainitsen muutamia, joilla on joitain erinomaisia ominaisuuksia.
1. Evernote
Evernote auttaa sinua tekemään muistiinpanoja, jotka ovat käytettävissä kaikilla alustoilla, jotta voit tarkistaa tietokoneellesi tekemäsi muistiinpanon bussissa. Muistiinpanot ovat hyvin järjestettyjä ja ne ovat täysin haettavissa, joten löydät aina tarvitsemasi.
2. TrunkNote
Trunk note on Wiki-tyyppinen muistiinpanosovellus. Se tuo kaiken wikien organisatorisen voiman muistiinpanoon. Se on matkapuhelinpohjainen sovellus, mutta se voidaan helposti synkronoida tietokoneen kanssa WIFI: n kautta.
Muunlaiset PIM: t, kuten Tiddlywiki jne. Jokaisessa niistä on ominaisuuksia, jotka saattavat tehdä siitä houkuttelevamman tietyille henkilöille ja saattavat ottaa näytteitä, ennen kuin lopulta asettuit yhteen.
Perintökoodin ymmärtäminen
Toinen työkaluryhmä, joka on erittäin hyödyllinen suunnitteluvaiheessa, on työkalut vanhojen koodien ymmärtämiseen. Tilanteissa, joissa suunniteltu tuote on parannettu versio edellisestä tuotteesta, kehittäjä voi pitää hyödyllisenä tarkastella jo tehtyä työtä saadakseen ideoita ja ehkä koodikappaleita uudelle projektille. Tämä voi olla melko pitkä tie, varsinkin jos et ollut osa tiimiä, joka rakensi edellisen ohjelmiston. On olemassa useita ohjelmistoja, jotka auttavat rakentamaan puita, luomaan dokumentaatiota ja vuokaavioita jo kirjoitetusta koodista.
1. Happea
Doxygen on melko tehokas työkalu, joka auttaa luomaan dokumentaatiota lähdekoodeista. Se on suunniteltu pääasiassa toimimaan C ++: n kanssa, mutta se toimii myös C: n, Pythonin ja joidenkin muiden kielten kanssa. Sillä on kyky purkaa minkä tahansa koodin koodirakenne, joka tarjoaa automaattisesti luodut riippuvuuskaaviot ja perintökaaviot koodin visualisoimiseksi.
2. Graphviz
Verkkosivustonsa mukaan graphviz auttaa esittämään rakennetietoja abstraktien kaavioiden ja verkkojen kaavioina. Sitä voidaan käyttää Doxygenin rinnalla ymmärtämään paremmin sen tuottamaa grafiikkaa.
3. Tallennus
Srecord on tehokas työkalu laiteohjelmakuvien käsittelyyn ja muuntamiseen eri tiedostomuotojen välillä. Sitä voidaan käyttää CRC- ja tarkistussummien laskemiseen ja tekemiseen tavulohkoissa, viallisten työkaluketjujen vuoksi luotujen virhetiedostojen korjaamiseen ja tiedostojen osien suodattamiseen tai siirtämiseen muun muassa. Lisätietoja sen käytöstä löytyy sen SourceForge-sivulta.
Joitakin muita työkaluja, jotka kuuluvat tähän luokkaan ovat CrystalRev ja Hexplorer mm.
Algoritmien kehittäminen
Kaikki tutkimus ja muistiinpanojen yhdistäminen algoritmien kehittämiseen, joka pyörii pseudokoodeiksi ja vuokaavioiksi projektille. Vuokaavioiden kehittämiseen on olemassa useita työkaluja, ja vaikka suurin osa niistä ei ole yksinomaan laiteohjelmistokehityksen kannalta, ne tarjoavat hyödyllisiä ja tärkeitä ominaisuuksia, jotka yksinkertaisesti saavat työn aikaan ja auttavat ylläpitämään kaavioita koko tuotekehitysjakson ajan. Alla on joitain parhaita työkaluja vuokaavioon.
1. QFSM
QFSM on graafinen työkalu äärellisten tilakoneiden suunnitteluun ja simulointiin. Sen kyky simuloida malleja tekee siitä paremman kuin useimmat muut tämän ryhmän ohjelmistot. Se on erityisen hyödyllinen, kun suunnittelet tilakoneita FPGA: lle ja vastaaville kohdelaitteille.
2. Selkeä kaavio
Lucid-kaavio on epäilemättä paras ja joustavin vuokaavio-ohjelmisto siellä. Se on verkkopohjainen ja sillä on tiimin ominaisuuksia, joiden avulla voit työskennellä useiden laitteiden välillä ja tehdä reaaliaikaista yhteistyötä joukkuetovereiden kanssa.
3. Microsoft Visio
Visio on yksi parhaista graafisista työkaluista tällä hetkellä. Siinä on joukko objekteja eri kentiltä, mikä helpottaa mitä tahansa kuvaamista. Siinä ei kuitenkaan ole ominaisuuksia, jotka parantavat tiimien välistä yhteistyötä, ja sitä voidaan käyttää vain Windows-koneessa, johon se on asennettu.
4. Google Slides
Yksi tärkeimmistä asioista tuotekehityksessä nykymaailmassa on sellaisten työkalujen käyttö, jotka antavat tiimille mahdollisuuden työskennellä tehokkaasti missä tahansa ja se on yksi asia, jonka Google Slides tuo mukaan. Sitä voidaan käyttää kaikenlaisten kaavioiden kehittämiseen ohjelmistokaavioista organisaatiokaavioihin ja miellekarttoihin. Se on pilvipohjainen ja toimii melkein kaikissa suosituissa selaimissa.
On olemassa useita muita työkaluja vuokaavioiden luomiseen ja yleiseen algoritmikehitykseen, kuten tavalliseen tapaan, jokaisella on omat edut ja haitat.
3. Upotetun laiteohjelmiston koodaus
Kaikki, mitä on mainittu tähän asti, johtaa tähän. SDK: n ja IDE: n maailma, työkalujen valinta tässä vaiheessa riippuu kohdelaitteesta ja laitteeseen rakennettavista ominaisuuksista, tästä syystä aion sulkea keskustelusta suositut SDK: t ja IDE: t, kuten MPLAB jne. työkaluille, jotka ovat luonteeltaan täydentävämpiä.
1. QT (GUI-kehitys)
Näytöt (vuorovaikutteiset tai eivät) ovat suosituimpia välineitä, jotka tarjoavat palautetta käyttäjille näinä päivinä, ja QT: n SDK on yksi parhaista siellä eikä luultavasti ole muukalainen kenellekään upotetussa piirissä. Se tarjoaa "vedä ja pudota" -ominaisuuksia, jotka helpottavat monimutkaisten, käyttöliittymäpohjaisten sovellusten kehittämistä upotetuille laitteille, riippumatta kohdealustasta tai ohjelmointikielestä, jota käytetään projektin yleisessä kehittämisessä. Se eliminoi periaatteessa stressin, joka liittyy koodin käyttöön käyttöliittymien luomisessa.
2. (Nopea prototyyppi)
Yksi suurimmista pullonkauloista sulautettujen ohjelmistojen kehittämisessä on se, että laitteistoa ei yleensä ole saatavana testaamaan asioita tien päällä, kun ohjelmistoa kehitetään. Usein silloin, kun laiteohjelmisto on käytettävissä, laiteohjelmistokehittäjät olisivat joutuneet odottamaan koko aikaa, jonka laitteisto oli valmis tekemään vähän tai ei mitään. Tämä pidentää läpimenoaikaa eikä luo tilaa sellaiselle synkronoinnille laitteistoinsinöörien ja laiteohjelmistokehittäjien välillä, jotka olisivat parantaneet tuotteen laatua. Tämän ongelman ratkaisemiseksi VaST: n kaverit loivat elektronisen järjestelmän tason virtuaalisen prototyyppialustan, jota voitiin käyttää virtuaalisen laitteistoprototyypin luomiseen johon sulautettu ohjelmisto voidaan suorittaa järjestelmän suorituskyvyn määrittämiseksi ennen laitteiston valmistumista.
3. Doxygen (dokumentaatio)
Yksi tärkeimmistä koodin kirjoittamisen osista on dokumentaatio ja yksi sen suosituimmista työkaluista on Doxygen. Sen lisäksi, että Doxygen käyttää vanhojen ohjelmistojen ymmärtämistä, sillä on kyky poimia kommentit koodista automaattisesti ja luoda siihen sisältyvät asiakirjat. Happirakenteet sisältävät tiedostot graafisesti ja luovat viitteitä jokaiselle koodissasi käytetylle toiminnolle, muuttujalle ja makrolle. Vuokaaviot ja datavuokaaviot voidaan myös upottaa dokumentaatioon yhdistämällä Doxygen ja graphviz.
4. GIT (versionhallintajärjestelmät)
On vaikea uskoa, että kukaan kehittää minkään tyyppistä ohjelmistoa ilman jonkinlaista versionhallintajärjestelmää näinä päivinä, mutta siinä tapauksessa, että teet niin, se on melko huono idea, joka voi johtaa virheisiin, jotka maksavat sinulle aikaa ja rahaa. Git erottuu kaikista versiohallintatyökaluista useista syistä. Se on avoimen lähdekoodin, nopea, tehokas ja enimmäkseen paikallinen. Gitin ohella työkalut, kuten kumoaminen, ovat myös mainitsemisen arvoisia.
Upotetun laiteohjelmiston testaus
Testaus on tärkeä osa minkä tahansa kehitysprosessia. Yritykset menettävät tuhansia dollareita, kun laitteet kutsutaan takaisin laiteohjelmistovirheiden takia, joten se on yksi osa kehitystä, joka on otettava erittäin vakavasti. Se tehdään usein käsin, koodaamalla ja ensimmäinen työkalu kooditestausta varten, ovat todennäköisesti projektissa käytetyn IDE: n tai SDK: n virheenkorjaajia. Testaus tapahtuu eri muodoissa ja suoritetaan eri vaiheissa, sinänsä se sisältää monenlaisia työkaluja. Laiteohjelmistokehityksen testaustyökalut leikkaavat suunnittelun validoinnin staattisiin analyyseihin ja ajonaikaisiin testityökaluihin. Alla on muutama työkalu, jotka ovat mielestäni todella hyödyllisiä.
1. Crystal REV
Crystal revs on työkalu koodin tutkimiseen. Sitä voidaan käyttää vuokaavion luomiseen C / C ++ -koodista, mikä tekee siitä loistavan työkalun oman koodisi tarkistamiseen ja nähdäksesi, onko alustava suunnittelu toteutettu. Kristallikierroksella näet nopeasti eron suunnittelun ja toteutuksen välillä. Sen kyky tuottaa vuokaavioita, tietoja ja puheluvirta koodeista tekee siitä myös työkalun, joka on hyödyllinen vanhojen koodien analysoinnissa.
2. PC- nukka
PC-lint on yksi vanhimmista laiteohjelmistojen testaustyökaluista. Se pystyy analysoimaan ohjelmistoja virheiden, tietoturva-aukkojen tunnistamiseksi ja sen varmistamiseksi, että koodi kirjoitettiin alan standardien mukaisesti. Samanlaisia työkaluja ovat muun muassa polyspace ja LRDA, munakoiso ja Tessy.
3. Langallinen hai
Tämä on kätevää, kun rakennetaan verkkolaitteita. Se on pohjimmiltaan pakettien nuuskija ja voi auttaa tarkastelemaan laitteesi lähettämiä tietoja. Tämä voi auttaa laitteen kiinnittämisessä.
4. Virtuaalinen sarjaporttiohjain
Eltima-ohjelmiston VSPD on työkalu, jonka sain äskettäin käyttöön myös ystäväni. Se on todella kätevä, kun työskentelet laiteajureiden ja muiden porttiin liittyvien kehitysten parissa. Virtuaalinen sarjaportti antaa sinulle mahdollisuuden testata porttikäyttäytymistä ilman kohdelaitetta. Voit luoda rajoittamattoman määrän portteja, jotka pystyvät jäljittelemään kaikki todellisten com-porttien asetukset. Ohjelmistossa on myös ominaisuuksia, kuten sarjaporttien jakaminen, Com-porttien fuusiointi, pakettien com-porttiliitäntöjen käyttö muiden hienojen ominaisuuksien joukossa.
Siinä se tässä artikkelissa, kiitos, että otit aikaa lukemiseen. Vaikka on mahdotonta luetella kaikkia työkaluja siellä, toivon, että jotkut näistä työkaluista ovat hyödyllisiä.