Mikro-ohjaimiin perustuvien sulautettujen järjestelmien sovelluskoodien testaukseen tarkoitetut debuggerit ja niihin liittyvät työkalut ovat välttämättömiä järjestelmien kehittäjille. Ne auttavat löytämään ja korjaamaan virheitä, testaamaan koodin suoritusta ja optimoimaan järjestelmän suorituskykyä.
Artikkelin kirjoittaja Rodger Richey toimii Microchipin Development Systems -liiketoimintayksikön johtajana. Richeyllä on yli 20 vuoden kokemus alueelta, joka kattaa kaikki sulautettujen järjestelmien suunnittelun näkökohdat. Richeyllä on sähkötekniikan B.Sc.-tutkinto Arizonan yliopistosta ja hän aloitti uransa Planning Systems -yhtiössä suunnitellen elektroniikkaa tutkimustyössä ja sotilassovelluksissa käytettäviin vedenalaisiin telemetriajärjestelmiin. Tämä kokemus sai hänet liittymään vuonna 1994 Microchip Technology -yhtiöön, jossa hän on sittemmin toiminut eri sovellusalueiden johtotehtävissä. |
Kehittyneillä virheenkorjausominaisuuksilla on ollut merkittävä vaikutus kehitystyön tuottavuuteen ja ne voivat lyhentää siihen tarvittavaa aikaa. Saatavilla on lukuisia uusia työkaluja, jotka auttavat tekemään virheenkorjausprosessista entistä tehokkaamman ja käyttäjäystävällisemmän.
Yksi merkittävimmistä edistysaskelista mikro-ohjaimille tarkoitettujen virheenkorjausohjelmien kehityksessä on mahdollisuus edistyneiden debug-ominaisuuksien integrointiin. Tämä johtaa paljon pitemmälle kuin perinteinen tapa eli askel kerrallaan eteneminen ja keskeytyspisteiden asettaminen.
Nykyaikaiset debuggerit tarjoavat kehittäjille reaaliaikaista dataa koodin suorituskyvystä, jolloin virheitä voidaan helposti ja nopeasti tunnistaa sekä korjata. Ne voivat lisäksi tarjota hyvin yksityiskohtaisia tietoja järjestelmän suorituskyvystä ja energiatehokkuudesta.
Sovelluskoodin koon jatkuvasti kasvaessa kyky siepata ja analysoida koodin suorittamista reaaliajassa on erityisen hyödyllistä näiden monimutkaisten järjestelmien virheenkorjauksessa ja suorituskyvyn optimoinnissa. Tapahtumien valvonta antaa yksityiskohtaista tietoa järjestelmän toiminnasta ja suorituskyvystä. Kehittäjät voivat siepata ja analysoida koodin suorittamista kuvaavaa dataa, joka liittyy tehtävien ajoitukseen, keskeytysten käsittelyyn ja järjestelmän tapahtumiin.
Näitä tietoja voidaan käyttää suorituskyvyn pullonkaulojen tunnistamiseen sekä tehtävien ajoitukseen ja synkronointiin liittyvien virheiden korjaamiseen järjestelmän toiminnan optimoimiseksi. Kehittäjät voivat esimerkiksi käyttää jäljitystietoja tunnistaakseen tehtäviä, joiden suorittaminen kestää odotettua kauemmin, tai tunnistaakseen tehtäviä, joiden ajoitus on pielessä. Lisäksi jäljitystietojen avulla voidaan analysoida keskeytysten käyttäytymistä sekä tunnistaa siihen mahdollisesti liittyviä ongelmia.
Tehonkulutuksen optimointi ja etäkäyttö
Järjestelmän tehonkulutuksen optimointi ja akun käyttöiän maksimointi ovat tärkeitä monissa sovelluksissa. Kyky analysoida tehonkulutusta ja koodin suorittamista mahdollistaa sen, että kehittäjät voivat tunnistaa koodista ne osat, joissa kulutusta voidaan optimoida. Käyttämällä tehonkulutuksen korjaustyökaluja kehittäjät voivat tunnistaa eniten tehoa syövät koodiosat, optimoida tehonkulutustapoja ja vähentää kokonaistehonkulutusta, mikä mahdollistaa entistä energiatehokkaammat ja käytössä pitempään kestävät sovellukset.
Kyky korjata sovelluskoodia järjestelmän todellisessa ympäristössä, jossa se aiotaan ottaa käyttöön, on erittäin tärkeä ominaisuus. Usein nämä ympäristöt eivät kuitenkaan ole omiaan siihen, että tietokone tai debuggeria käyttävä kehittäjä voisivat fyysisesti olla samassa paikassa kuin sovelluspiirit. Verkkoon kytketyt virheenkorjaimet voivat tarjota monia etuja näille sovelluksille.
Mahdollisuus etäkäyttää ja ohjata mikro-ohjainpohjaista järjestelmää tarkoittaa, että kehittäjä voi työskennellä projektissa mukavasti pöytänsä ääressä, kun debuggeri ja sovellus sijaitsevat ympäristöltä suljetussa tilassa tai esimerkiksi ajoneuvon konepellin alla. WiFi-liitännät mahdollistavat virheenkorjauksen liittämisen itse järjestelmään esimerkiksi sovelluksissa, jotka sisältävät moottorinohjausta tai digitalisoitua tehonohjausta. Tämä estää tietokoneen ja muiden laitteiden vahingoittumisen sekä eliminoi kalliit korjaukset ja osien vaihdot.
Testaus tärkeällä sijalla
Testaus on tärkeä vaihe ennen järjestelmän luovuttamista eteenpäin. Silloin on varmistettava, että kaikki käyttötapaukset testataan perusteellisesti. On elintärkeää varmistaa, että käyttäjä saa positiivisen kokemuksen tuotteesta. Koodikattavuuden mittaus (code coverage) on usein vähätelty asia, mutta se on hyvin tärkeä mikro-ohjaimeen perustuvien sovellusten kehityksessä ja virheenkorjauksessa, koska sen avulla voidaan varmistaa, että sulautetun koodin kaikki osat käydään läpi testauksen aikana
Tämä on tärkeää, sillä se auttaa tunnistamaan koodista alueet, joita ei ehkä ole testattu, mikä taas voisi johtaa virheisiin tai muuhun epätoivottavaan toimintaan lopputuotteessa. Mittaamalla koodin kattavuutta kehittäjät voivat tunnistaa ne koodialueet, jotka tarvitsevat lisätestausta. Näin voidaan varmistaa, että koodi tulee perusteellisesti testatuksi ennen sen luovuttamista.
Jatkuva integrointi/käyttöönotto
Jatkuvaan integrointiin ja käyttöönottoon perustuvien CI/CD-järjestelmien (Continuous Integration/Continuous Deployment) käyttö on lisääntynyt merkittävästi koodin koon ja monimutkaisuuden jatkuvasti kasvaessa. Melko usein debuggeri on integroitu mikro-ohjainpohjaisen järjestelmän rakentamisen, testaamisen ja käyttöönoton automatisointiin.
CI/CD-järjestelmä voi auttaa varmistamaan, että kaikki koodikantaan tehdyt muutokset testataan perusteellisesti ja integroidaan sovellukseen oikea-aikaisesti ja tehokkaasti. Mikro-ohjainpohjaisten järjestelmien yhteydessä CI/CD-järjestelmät voivat automatisoida laiteohjelmiston luomisen ja testaamisen, mikä antaa kehittäjälle vakaan ja yhtenäisen ympäristön.
Tämä poistaa yksittäisen kehittäjän tietokoneessa mahdollisesti esiintyvät epäjohdonmukaisuudet, jotka saattavat vaikuttaa lopputuotteeseen. Käyttämällä Jenkins-ohjelmiston kaltaisia työkaluja muutokset lähdekoodivaraston koodikannassa voivat käynnistää automaattisesti laiteohjelmiston luomisen, testausjärjestelmän käyttöönoton, testikehyksen suorittamisen sekä tulosten kirjaamisen. CI/CD-järjestelmän käyttö mikro-ohjainpohjaisen järjestelmän testaamisessa voi auttaa parantamaan kehitysprosessin tehokkuutta ja laatua vähentäen samalla virheriskiä ja parantaen järjestelmän yleistä käyttökokemusta.
Staattinen koodianalyysi avuksi
Usein ylenkatsotaan staattisen koodianalyysin hyödyntämistä tapana auttaa kehittäjiä tunnistamaan mahdollisia ongelmia koodissa ennen sen suorittamista. Staattisen koodianalysaattorin käytön etuja ovat muun muassa koodin laadun parantaminen tunnistamalla koodausvirheitä, tietoturva-aukkoja ja muita ongelmia, jotka voivat vaikuttaa koodin laatuun.
Kehitysaikaa voidaan lyhentää tunnistamalla ongelmat jo kehitysprosessin varhaisessa vaiheessa. Näin vähennetään aikaa ja vaivaa, joka tarvittaisiin näiden ongelmien korjaamiseen myöhemmin. Staattinen koodianalyysi voi varmistaa, että koodi kirjoitetaan koodausstandardien ja parhaiden käytäntöjen mukaisesti, mikä auttaa parantamaan koodin ylläpidettävyyttä.
Microchip tarjoaa laajan valikoiman työkaluja sulautetun ohjelmiston kehitysprosessin tehokkuuden ja laadun parantamiseen, virheriskien vähentämiseen ja yleisen käyttökokemuksen parantamiseen. Vianhaun työkalut, kuten MPLAB ICE 4 ja ICD 5, tarjoavat edistyneitä jäljitysominaisuuksia tapahtumavalvonnan alijärjestelmien kautta ja antavat samalla mahdollisuuden vähentää järjestelmän tehonkulutusta.
Mukana ovat myös langalliset ja langattomat verkkoliitännät tukemaan kehitystyötä ja virheiden korjaamista missä tahansa ympäristössä. Kun käyttöön halutaan ohjelmiston automaattinen laadinta ja testaus, asennustyökalut kuten Jenkins ja Docker voivat olla hyödyllisiä. Jenkins on avoimen lähdekoodin automaatiopalvelin, jonka avulla kehittäjät voivat automatisoida ohjelmistojen laatimisen, testauksen ja käyttöönoton. Docker puolestaan auttaa luomaan yhtenäisen ja toistettavan suoritusympäristön tietovaraston kontteihin.
MPLAB X IDE -työkaluohjelmiston CI/CD Wizard voi luoda tarvittavan Docker-määritystiedoston sekä Jenkins-tiedoston nopeaan alkuun pääsemiseksi. Kun automaattisia koodin laadinta- ja testaustöitä suoritetaan Docker-konteissa, helpoin tapa on käyttää virheenkorjaustyökalua verkkoliitännän kautta, eikä USB-liitännän kautta. Kuten aiemmin mainittiin, MPLAB ICE 4 ja ICD 5 ovat joustavia työkaluja ja tarjoavat sekä langallisia että langattomia verkkoliitäntöjä USB:n lisäksi.
Mikro-ohjainten debuggerit ovat kriittisiä työkaluja kehittäjille, jotka työskentelevät sulautettujen järjestelmien parissa. Edistyneet vianhaku- ja korjausominaisuudet auttavat kehittäjiä löytämään ja korjaamaan virheitä nopeasti, testaamaan koodia ja optimoimaan järjestelmän suorituskykyä.