Fagmannens veiledning til feilsøkingsverktøy og -teknikker for tingenes Internett (IoT)-enheter
Bidrag fra DigiKeys nordamerikanske redaktører
2021-03-23
Utviklingen av et integrert system, der programvaren og maskinvaren må fungere godt sammen, har blitt ekstremt kompleks og utfordrende, selv for det som kan virke som de enkleste tingenes Internett (IoT)-enheter. Når ting først går galt – noe som er uunngåelig – er ikke feilsøkingstidene vanligvis et par timer, men kan i stedet ta uker eller måneder. Disse forsinkelsene fører til ekstra utviklingskostnader, hindrer et produkt i å komme på markedet i tide, forsinker produksjonsplaner og ødelegger forsyningskjeder og forretningsplaner.
Den beste måten å redusere feilsøkingstider på og holde et prosjekt i gang, er å bruke en kombinasjon av maskinvare-feilsøkingsverktøy og lett tilgjengelig programvare for å få innsikt i hvordan et system yter og hvor problemene oppstår. Som sådan, for både fagfolk og hobbykonstruktører, hjelper det dramatisk å ha de riktige verktøyene for jobben for å få den gjort raskt og riktig.
Denne artikkelen vil ta for seg utviklingsverktøy og programvare som kan brukes til å feilsøke og analysere ytelsen til en tingenes Internett (IoT)-enhet. Den vil bruke et utviklingskort fra STMicroelectronics som et eksempel på en tingenes Internett (IoT)-enhet, og bruke verktøy og programvare fra SEGGER Microcontroller Systems for å forstå og feilsøke systemet. Artikkelen omhandler også flere tips og triks om hvordan du kan minimere feilsøkingstiden og levere et tingenes Internett (IoT)-prosjekt i henhold til tidsplanen.
Den typiske tingenes Internett (IoT)-enheten som skal feilsøkes
Tingenes Internett (IoT)-enheter har blitt utbredt i nesten alle bransjer, fra smarte hjem til industriell overvåkingsstyring. Til tross for de forskjellige bruksområdene, er det flere typiske komponenter en tingenes Internett (IoT)-enhet vil ha. Disse omfatter:
- En mikroprosessor
- En radio for konnektivitet
- Sensorer
En utvikler har ikke noe ønske om å spesialutvikle sitt eget kort for å utforske feilsøkingsteknikker eller teste ut deler av programkoden. Det er alt for tidkrevende. Det er smartere å jobbe på et rimelig utviklingskort, for eksempel STMicroelectronics sitt B-L4S5I-IOT01A-utviklingssett (Discovery Kit) for IoT Node. Dette har nesten alt man finner på en typisk tingenes Internett (IoT)-enhet (figur 1).
Figur 1: STMicroelectronics B-L4S5I-IOT01A-utviklingssettet (Discovery Kit) for IoT Node inkluderer alle komponentene som vanligvis kreves i en tingenes Internett (IoT)-enhet. (Bildekilde: STMicroelectronics)
Kortet inkluderer STM32L4S5VIT6, en Arm® Cortex®-M4-mikrokontroller som kjører på 120 megahertz (MHz). Dette støttes av opptil 2 megabyte (Mbyte) flash og 640 kilobyte (Kbyte) RAM. Kortet inkluderer Wi-Fi og en overflod av sensorer som kan brukes til å raskt å bygge en tingenes Internett (IoT)-testenhet, noe som er viktig for formålene med denne øvelsen.
Profesjonelle maskinvareverktøy for feilsøking
Nesten alle utviklingskort leveres med et integrert JTAG/SWD-grensesnitt, slik at utviklere ikke er nødt til å skaffe sin egen programmerer. De kan i stedet jobbe med et utviklingskort som er klart til bruk. Selv om dette er flott for markedsføringsformål, er det ikke nødvendigvis flott for faktisk produktutvikling: Innebygde feilsøkere er ofte dramatisk reduserte versjoner med begrensninger, for eksempel antall tilgjengelige bruddpunkter og grensesnittets datatakt. For den uinnvidde virker kanskje ikke disse begrensningene som noe problem, men når man har ubegrensede bruddpunkter slipper man å konstant måtte aktivere og deaktivere bruddpunkter, og raske datatakter er nødvendig for installasjonssporing (mer om sporing i programvareverktøy-delen).
Det er flere forskjellige verktøy å velge mellom som kan gi en profesjonell feilsøkingsopplevelse, men selve verktøyene er bare halvparten av løsningen. Verktøyene må støttes opp av god programvare. Ett spesielt sett med verktøy som skiller seg ut, både fra et maskinvareperspektiv og et programvareperspektiv, er SEGGER J-Link-serien. Denne serien har en feilsøkerversjon for nesten alle typer utviklere, alt fra studenter og hobbykonstruktører til de mest hardnakkede fagfolkene.
Det er to modeller som har vist seg å være de mest nyttige for gjennomsnittsutvikleren: J-Link Base og J-Link Ultra+ (figur 2). Når det kommer til størrelse, er de to enhetene identiske, men J-Link Ultra+ gir en utvikler raskere nedlastingshastigheter til RAM (3 Mbyte/s kontra 1,0 Mbyte/s) og raskere SWD-grensesnitthastighet (100 MHz kontra 30 MHz). De raskere hastighetene er avgjørende for en utvikler når de ønsker å spore applikasjonen sin for å få innsikt i ytelse, RTO-ATFERD og feilsøking av systemet.
Figur 2: SEGGER J-Link Ultra+ gir utviklere en forbedret feilsøkeropplevelse ved hjelp av et 50 MHz målgrensesnitt. (Bildekilde: SEGGER Microcontroller Systems)
Det som er så fint med J-Link og B-L4S5I-IOT01A-utviklingskortet, er at de to kan kobles til via en Tag-Connect TC2050-IC-NL-kabel og TC2050-CLIP-3PACK-holdeklemme. Disse gjør det mulig å koble en feilsøker til utviklingskortet gjennom «spikerputen» (nails pad) (Figur 3). Det kan være nødvendig å tilpasse J-Link-ens 20-pinners kontakt til den 10-pinners kontakten på TC-2050-kabelen. Et alternativ som kan brukes til dette er en 8.06.04 J-Link 10-pinners nåladapter (Needle Adapter).
Figur 3: Tag-Connect-kabelmodulen kan kobles til B-L4S5I-IOT01A-utviklingskortet via en kretskortmonteringsflate som ligner en spikermatte (bed-of-nails-like pc board footprint) (høyre). (Bildekilde: STMicroelectronics)
Når en utvikler har lukket denne banen på maskinvaresiden, kan de bruke programvareverktøyene til å analysere og feilsøke installasjonen sin.
Profesjonelle programvareverktøy for feilsøking
Det er ganske mange programvareverktøy som fungerer bra med SEGGER J-Link-verktøyene, som overraskende nok ikke er levert av SEGGER. Følgende vil ta en titt på flere av disse gratisverktøyene, og se hvordan utviklere kan bruke hver av dem for å feilsøke programvaren sin.
Først ut er J-Scope. J-Scope er et oscilloskoplignende verktøy som viser variable verdier over tid. Utviklere kan overvåke en enkelt variabel eller flere dusin variabler. Vær imidlertid oppmerksom på at etter hvert som flere variabler overvåkes, kan det tas færre samplinger før samplingsbufferen overskrides og data går tapt.
Variabler velges ved å gi J-Scope elf-filen som sendes ut av kompilatoren. Dette tilveiebringer minneplasseringene som skal leses, og utvikleren kan deretter angi samplingsfrekvensene sine og overvåke hvordan variabelen(e) endres over tid. Et enkelt eksempel på et tre-variabelt spor kan ses på figur 4.
Figur 4: J-Scope kan brukes til å overvåke variabler gjennom J-Link mens et program kjører i sanntid. (Bildekilde: SEGGER Microcontroller Systems)
Neste er Ozone. Ozone er et feilsøkergrensesnitt og en ytelsesanalysator. Utviklere kan laste inn elf-filen sin i verktøyet og utføre feilsøking på kildenivå. De kan angi bruddpunkter og oppdatere koden. En spesielt nyttig funksjon for utviklere er at de også kan utføre instruksjonssporing (hvis maskinvaren støtter dette) og identifisere hvilke modul- og C-kodekommandoer som er utført. Dette er spesielt nyttig for å verifisere kodedekning av HiL-testing (HiL – Hardware-in-Loop).
Ozone kan også hjelpe utviklere med å analysere systemytelsen (figur 5) og visualisere variabler over tid. Dette gir funksjonalitet som ligner J-Scope, men på en mer integrert måte. Den kan til og med brukes til å overvåke strømforbruk og synkronisere alle disse hendelsene sammen på ett sted.
Figur 5: Ozone kan brukes til å spore variabler gjennom J-Link mens en applikasjon kjører i sanntid, i tillegg til kodedekning og RTOS-bevisst feilsøking. (Bildekilde: SEGGER Microcontroller Systems)
Et tredje verktøy er SystemView. Med SystemView kan utviklere analysere RTOS-systemkjøringsatferd. Oppgavebytting registreres i en sporingsbuffer og rapporteres deretter til SystemView gjennom feilsøkeren (figur 5). SystemView viser deretter denne informasjonen på en måte som gjør det mulig for en utvikler å se kontekstbryterne sine og måle systemets ytelse. Dette er også en flott måte å visualisere et system på, samt finne feil og andre problemer.
Figur 6: SystemView gir en lenke til en RTOS som gir utviklere muligheten til å måle oppgaveytelse og visualisere hva RTOS-en gjør og når den gjør det. (Bildekilde: SEGGER Microcontroller Systems)
Tips og triks for feilsøking av et integrert system
Feilsøking av en tingenes Internett (IoT)-enhet krever at utviklere har de riktige verktøyene, både fra et maskinvareperspektiv og et programvareperspektiv. Begge deler må være på plass hvis utviklere skal kunne minimere tiden de bruker på feilsøking. For å kunne feilsøke på en vellykket måte, er det flere «tips og triks» utviklere bør huske på, for eksempel:
- Bruk et profesjonelt feilsøkerprogram som maksimerer grensesnittets datatakt. Mengden med nyttige data som kan hentes fra et system, vil avhenge av hvor raskt disse dataene kan mottas. Lavere hastigheter resulterer i en lengre feilsøkingsøkt.
- Installer feilsøkingsprogramvaren tidlig i utviklingssyklusen. Utviklere bør ikke vente til de har et problem før de konfigurerer feilsøkingsverktøyene sine.
- Bruk sporingsverktøy fra begynnelsen av når du utvikler. Dette vil gjøre det mulig for utviklere å overvåke systemytelsen og umiddelbart forstå hvordan programvareendringer påvirker den.
- Dra nytte av instruksjonssporing eller programtellersampling for å forstå systemkodedekning under testing. Feil vil eksistere i betingede grener og kode som ikke er testet.
- Dra nytte av raske overføringsprotokoller for å sende data eksternt, for eksempel til RTT-biblioteker (RTT – Real-Time Transfer).
Utviklere som følger disse «tipsene og triksene» vil oppdage at de kan spare ganske mye tid og stress når de forsøker å utvikle en tingenes Internett (IoT)-enhet.
Konklusjon
Tingenes Internett (IoT)-enhetsprogramvare har blitt kompleks, men det betyr ikke at fagpersoner eller hobbykonstruktører trenger å sette seg fast med kontinuerlig feilsøking av systemene sine. Bruk av profesjonelle utviklingsverktøy og programvare kan gi utviklere innsikten de trenger for å ikke bare feilsøke et system, men også for å analysere og forbedre systemytelsen. Ved å investere i disse verktøyene, kan brukere dramatisk redusere tiden som brukes på feilsøking, og få prosjektene sine til å fungere og ut på markedet innenfor en rimelig tidsramme.
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.




