Ammattilaisten opas IoT-laitteiden debuggaustyökaluihin ja -tekniikoihin
Julkaisija DigiKeyn kirjoittajat Pohjois-Amerikassa
2021-03-23
Sulautetuissa järjestelmissä ohjelmiston ja laitteiston täytyy pelata hyvin yhteen ja niiden kehittämisestä on tullut erittäin kompleksista ja haastavaa jopa yksinkertaisimmille IoT (Internet of Things) -laitteille. Jopa niin hankalaa, että kun jokin menee pieleen – kuten väistämättä käy – debuggaus ei yleensä kestä vain muutamaa tuntia, vaan voi kestää jopa viikkoja tai kuukausia. Nämä viivästykset nostavat kehityskustannuksia, estävät tuotteen pääsyn markkinoille ajoissa, viivästyttävät valmistusaikatauluja sekä pilaavat toimitusketjut ja liiketoimintasuunnitelmat.
Paras tapa vähentää debuggaukseen kuluvaa aikaa ja pitää projekti raiteillaan on käyttää apuna laitteiston debuggaustyökalujen ja vapaasti saatavilla olevien ohjelmistojen yhdistelmää. Näillä voidaan saada tietoa siitä miten järjestelmä toimii ja missä esiintyy ongelmia. Sekä ammattilaisille että harrastajille on tärkeää, että heillä on oikeat työkalut tehtävään, jotta se saadaan suoritettua nopeasti ja oikein.
Tässä artikkelissa käsitellään kehitystyökaluja ja -ohjelmistoja, joita voidaan käyttää IoT-laitteen suorituskyvyn debuggaukseen ja analysointiin. Siinä käytetään STMicroelectronics-kehitysalustaa IoT-esimerkkilaitteena ja SEGGER Microcontroller Systems -työkaluja ja -ohjelmistoja järjestelmän ymmärtämiseen ja debuggaukseen. Artikkelissa annetaan myös useita vinkkejä siitä, miten vianmääritykseen kuluva aika voidaan minimoida ja toimittaa IoT-projekti aikataulussa.
Tyypillinen debugattava IoT-laite
IoT-laitteet ovat yleistyneet lähes kaikilla toimialoilla älykodeista teollisuuden monitoroinnin ohjaukseen. Sovellusten moninaisuudesta huolimatta IoT-laitteisiin sisältyy useita tyypillisiä komponentteja: Niihin kuuluvat:
- mikroprosessori
- radio tiedonsiirtoa varten
- anturit.
Kehittäjä ei halua muokata omaa piirilevyään tutkiakseen debuggaustekniikoita tai testatakseen sovelluskoodinsa osia. Se on yksinkertaisesti liian aikaa vievää. Sen sijaan on viisaampaa käyttää edullista kehitysalustaa, kuten STMicroelectronics B-L4S5I-IOT01A Discovery Kit for IoT Node. Siinä on lähes kaikki tyypillisestä IoT-laitteesta löytyvät komponentit (kuva 1).
Kuva 1: STMicroelectronics B-L4S5I-IOT01A Discovery Kit for IoT Node sisältää kaikki IoT-laitteessa tyypillisesti tarvittavat komponentit. (Kuvan lähde: STMicroelectronics)
Piirilevy sisältää STM32L4S5VIT6-piirin, Arm® Cortex®-M4 -mikrokontrollerin, joka toimii 120 megahertsin (MHz) taajuudella. Tätä tukee jopa 2 megatavua flash-muistia ja 640 kilotavua RAM-muistia. Tämän harjoituksen kannalta on tärkeää, että alusta sisältää Wi-Fi-yhteyden ja lukuisia antureita, joiden avulla voidaan rakentaa nopeasti IoT-testilaite.
Ammattimaiset laitteistotyökalut debuggaukseen
Lähes jokaisessa kehitysalustassa on valmiina JTAG/SWD-liitäntä, joten kehittäjien ei tarvitse hankkia omaa ohjelmointilaitetta. Sen sijaan he voivat työskennellä käyttövalmiin kehitysalustan kanssa. Vaikka tämä on suurenmoista markkinointitarkoituksissa, se ei ole sitä todellisessa suunnittelutyössä: piirilevyillä sijaitsevat debuggerit ovat usein huomattavasti pienennettyjä versioita, joilla on merkittäviä rajoituksia, kuten käytettävissä olevien pysäytyskohtien määrä ja liitännän tiedonsiirtonopeus. Asiaan perehtymättömälle nämä rajoitukset eivät ehkä vaikuta suurelta asialta, mutta jos pysäytyskohtia on käytettävissä rajoittamaton määrä, niitä ei tarvitse jatkuvasti ottaa käyttöön ja poistaa käytöstä. Lisäksi sovelluksen seurantaan tarvitaan nopeita tiedonsiirtonopeuksia (lisää seurannasta ohjelmistotyökaluja käsittelevässä osassa).
Saatavilla on useita erilaisia työkaluja, jotka sopivat ammattimaiseen debuggaukseen, mutta työkalut itsessään ovat vain puolet ratkaisusta. Työkaluja on tuettava hyvillä ohjelmistoilla. SEGGER J-Link -sarja on yksi työkaluista, joka erottuu edukseen sekä laitteiston että ohjelmiston suhteen. Tästä sarjasta löytyy debuggeriversio lähes kaikenlaisille kehittäjille opiskelijoista ja harrastajista kovaksi keitettyihin ammattilaisiin.
On kaksi mallia, jotka ovat käytännössä osoittaneet kaikkein hyödyllisimmiksi tavallisille kehittäjälle: J-Link Base ja J-Link Ultra+ (kuva 2). Ulkomuodoltaan nämä kaksi yksikköä ovat identtiset, mutta J-Link Ultra+ tarjoaa kehittäjälle nopeammat latausnopeudet RAM-muistiin (3 Mb/s versus 1,0 Mb/s) ja nopeamman SWD-liitäntänopeuden (100 MHz versus 30 MHz). Suuremmat nopeudet ovat ratkaisevia, kun kehittäjä haluaa seurata sovellustaan saadakseen tietoa sen suorituskyvystä, RTOS-käyttöjärjestelmän toiminnasta sekä debugatakseen järjestelmää.
Kuva 2: SEGGER J-Link Ultra+ tarjoaa kehittäjille parempaa debuggausta 50 MHz:n kohdeliitännän ansiosta. (Kuvan lähde: SEGGER Microcontroller Systems)
J-Linkissä ja B-L4S5I-IOT01A-kehitysalustassa on se hyvä puoli, että ne voidaan liittää toisiinsa Tag-Connect TC2050-IC-NL -kaapelilla ja TC2050-CLIP-3PACK-pidikkeellä. Nämä mahdollistavat debuggerin kytkemisen kehitysalustaan ”piikkimaton” avulla (kuva 3). Voi olla, että J-Linkin 20-nastainen täytyy sovittaa TC-2050-kaapelin 10-nastaiseen liittimeen. Yksi vaihtoehto, jota voidaan käyttää tähän, on 8.06.04 J-Link, 10-nastainen neulasovitin.
Kuva 3: Tag-Connect-kaapelikokoonpano voidaan liittää B-L4S5I-IOT01A-kehitysalustaan piirilevyllä olevan piikkimaton avulla (oikealla). (Kuvan lähde: STMicroelectronics)
Kun kehittäjällä on tämä valmiina laitteistopuolella, hän voi käyttää ohjelmistotyökaluja sovelluksensa analysointiin ja debuggaukseen.
Ammattimaiset ohjelmistotyökalut debuggaukseen
On olemassa useita ohjelmistotyökaluja, jotka toimivat varsin hyvin SEGGER J-Link -työkalujen kanssa ja jotka yllättäen eivät olekaan SEGGER-yrityksen tekemiä. Seuraavassa tarkastellaan useita näistä ilmaisista työkaluista ja kerrotaan, miten kehittäjät voivat käyttää kutakin niistä ohjelmistojensa debuggaamiseen.
Ensimmäinen on J-Scope. J-Scope on oskilloskoopin kaltainen työkalu, joka näyttää muuttujien senhetkiset arvot. Kehittäjät voivat valvoa yhtä muuttujaa tai useita kymmeniä muuttujia. Huomaa kuitenkin, että mitä useampia muuttujia valvotaan, sitä vähemmän näytteitä voidaan ottaa, ennen kuin näytepuskuri menee ylitse ja tietoja menetetään.
Muuttujat valitaan siirtämällä J-Scopeen kääntäjän generoima elf-tiedosto. Näin saadaan luettavat muistipaikat, ja kehittäjä voi sitten asettaa näytteenottotaajuudet ja seurata, miten muuttujat muuttuvat ajan myötä. Kuvassa 4 on yksinkertainen esimerkki kolmen muuttujan seurannasta.
Kuva 4: J-Scopea voidaan käyttää muuttujien seuraamiseen J-Linkin kautta sovelluksen reaaliaikaisen suorituksen aikana. (Kuvan lähde: SEGGER Microcontroller Systems)
Seuraava työkalu on Ozone. Ozone on debuggausrajapinta ja suorituskykyanalysaattori. Kehittäjät voivat ladata elf-tiedoston työkaluun ja debugata lähdekooditasolla. He voivat asettaa pysäytyskohtia ja päivittää koodia. Erityisen hyödyllinen ominaisuus kehittäjille on se, että he voivat myös seurata komentoja (jos laitteisto tukee sitä) ja tunnistaa, mitä assembly- ja C-koodilausekkeita on suoritettu. Tämä on erityisen hyödyllistä tarkistettaessa koodikattavuutta HiL (hardware-in-loop) -testauksessa.
Ozone voi myös auttaa kehittäjiä analysoimaan järjestelmän suorituskykyä (kuva 5) ja visualisoimaan muutoksia muuttujien arvoissa. Se tarjoaa J-Scopen kaltaiset ominaisuudet, mutta integroituneemmassa muodossa. Sitä voidaan käyttää jopa virrankulutuksen valvontaan ja kaikkien näiden tapahtumien synkronointiin yhdessä paikassa.
Kuva 5: Ozone-työkalua voidaan käyttää muuttujien seurantaan J-Linkin kautta samalla kun sovellusta suoritetaan reaaliajassa. Lisäksi sitä voidaan käyttää koodikattavuustestaukseen ja debuggaukseen RTOS-käyttöjärjestelmätuella. (Kuvan lähde: SEGGER Microcontroller Systems)
Kolmas työkalu on SystemView. SystemView-työkalun avulla kehittäjät voivat analysoida RTOS-käyttöjärjestelmän ajonaikaista käyttäytymistä. Tehtävän vaihto tallentuu seurantapuskuriin ja raportoidaan sitten debuggerin kautta SystemView-työkalulle (kuva 5). SystemView näyttää sitten nämä tiedot siten, että kehittäjä voi nähdä kontekstin vaihdot ja mitata järjestelmän suorituskykyä. Tämä on myös hyvä tapa visualisoida järjestelmä ja löytää virheitä ja muita ongelmia.
Kuva 6: SystemView tarjoaa linkin RTOS-käyttöjärjestelmään, jonka avulla kehittäjät voivat mitata tehtävien suorituskykyä ja visualisoida, mitä RTOS tekee ja milloin. (Kuvan lähde: SEGGER Microcontroller Systems)
Vinkkejä sulautetun järjestelmän debuggaukseen
IoT-laitteen debuggaus edellyttää, että kehittäjillä on käytössään sekä laitteiston että ohjelmiston kannalta oikeat työkalut. Molempien osien on oltava kunnossa, jos kehittäjät aikovat minimoida debuggaukseen käyttämänsä ajan. Tässä on kehittäjille joitakin vinkkejä tehokkaaseen debuggaukseen:
- Käytä ammattimaista debuggeria, joka tarjoaa mahdollisimman korkean tiedonsiirtonopeuden. Järjestelmästä saatavien hyödyllisten tietojen määrä riippuu siitä, kuinka nopeasti kyseiset tiedot voidaan ottaa vastaan. Hitaammalla nopeudella debuggaus kestää kauemmin.
- Asenna debuggausohjelmisto valmiiksi kehityssyklin alkuvaiheessa. Kehittäjien ei pidä odottaa, kunnes ilmenee ongelmia ja asentaa debuggaustyökalua vasta sitten.
- Käytä seurantatyökaluja kehitystyön alusta alkaen. Näin kehittäjät voivat seurata järjestelmän suorituskykyä ja ymmärtää välittömästi, miten ohjelmistoon tehdyt muutokset vaikuttavat siihen.
- Hyödynnä komentojen seurantaa tai ohjelmalaskurin näytteenottoa järjestelmän koodikattavuuden ymmärtämiseksi testauksen aikana. Testaamattomissa ehdollisissa haaroissa ja testaamattomassa koodissa on virheitä.
- Hyödynnä nopeita tiedonsiirtoprotokollia, kuten reaaliaikaisia RTT (Real-time Transfer) -kirjastoja, tietojen siirtämiseen sirun ulkopuolelle.
Kehittäjät, jotka noudattavat näitä vinkkejä, säästävät melkoisesti aikaa ja vaivaa yrittäessään kehittää IoT-laitteita.
Yhteenveto
IoT-laitteiden ohjelmistoista on tullut kompleksisia, mutta se ei tarkoita, että ammatti- tai harrastajakehittäjien tarvitsisi jatkuvasti jäädä jumiin järjestelmien debuggaukseen. Ammattimaisten kehitystyökalujen ja -ohjelmistojen avulla kehittäjät saavat tietoa, jota he tarvitsevat paitsi järjestelmän debuggaukseen, myös järjestelmien suorituskyvyn analysointiin ja parantamiseen. Investoimalla näihin työkaluihin käyttäjät voivat vähentää huomattavasti debuggaukseen kuluvaa aikaa ja saada projektinsa toimimaan ja markkinoille kohtuullisessa ajassa.
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.




