En professionell guide till felsökningsverktyg och tekniker för IoT-produkter
Bidraget med av DigiKeys nordamerikanska redaktörer
2021-03-23
Utvecklingen av ett inbäddat system, där programvaran och hårdvaran måste samsas, har blivit extremt komplex och utmanande, även för det som verkar som de enklaste Internet of Things-produkterna. Den är så pass komplex att när något går fel - som det oundvikligen kommer göra - tar felsökningen vanligtvis inte ett par timmar, utan istället veckor eller månader. Dessa förseningar ökar utvecklingskostnaderna, förhindrar att en produkt lanseras på marknaden i tid, försenar tillverkningsscheman och förstör försörjningskedjor och affärsplaner.
Det bästa sättet att minska felsökningstiden och hålla ett projekt på rätt spår, är att använda en kombination av hårdvarufelsökningsverktyg och fritt tillgänglig programvara för att få inblick i hur ett system fungerar och var problemen uppstår. För både yrkesverksamma och makers, hjälper det avsevärt att ha de rätta verktygen för uppgiften för att få saker gjorda snabbt och korrekt.
Denna artikel diskutera utvecklingsverktyg och programvara som kan användas för att felsöka och analysera prestandan för en IoT-produkt. Den kommer använda ett utvecklingskort frånSTMicroelectronics som en exempel-IoT-produkt och använd SEGGER Microcontroller Systems verktyg och programvara för att förstå och felsöka systemet. Den kommer också att diskutera flera tips och tricks om hur man minimerar felsökningstiden och levererar ett IoT-projekt enligt schema.
Den typiska IoT-produkten att felsöka
IoT-produkter har blivit vanliga i nästan alla sektorer - från smarta hem till industriell styrning och övervakning. Trots de många olika tillämpningarna finns det flera typiska komponenter som en IoT-produkt kommer ha. Dessa inkluderar:
- En mikroprocessor
- En radio för uppkoppling
- Sensorer
En utvecklare kommer knappast vilja konstruera ett eget kort för att utforska felsökningstekniker eller testa delar av sin applikationskod. Det är helt enkelt för tidskrävande. Istället är det klokare att arbeta med ett billigt utvecklingskort, som STMicroelectronics B-L4S5I-IOT01A Discovery Kit for IoT Node. Detta har nästan allt som finns i en typisk IoT-produkt (Figur 1).
Figur 1: STMicroelectronics B-L4S5I-IOT01A Discovery Kit for IoT Node innehåller alla komponenter som vanligtvis krävs i en IoT-produkt. (Bildkälla: STMicroelectronics)
Kortet är byggt kring STM32L4S5VIT6, en Arm® Cortex®-M4 microcontroller på 120 MHz. Detta stöds av upp till 2 Mbyte flash och 640 Kbyte RAM. Viktigt för denna övning är att kortet inkluderar Wi-Fi och en mängd sensorer som kan användas för att snabbt bygga en verklighetsnära IoT-testprodukt.
Professionella verktyg för felsökning av hårdvara
Nästan alla utvecklingskort har ett inbyggt JTAG/SWD-gränssnitt så att utvecklare inte behöver gå ut och anlita en egen programmerare. Istället kan de arbeta med utvecklingskortet direkt ur förpackningen. Även om detta är bra i marknadshänseende, är det inte bra för ingenjörsmässigheten: kortinbyggda felsökare är ofta dramatiskt nedbantade versioner som har begränsningar, exempelvis i antalet brytpunkter och gränssnittets dataöverföringshastighet. För oinitierade kanske dessa begränsningar inte verkar vara en stor sak, men att ha obegränsade brytpunkter undviker att man ständigt måste aktivera och inaktivera brytpunkter, och snabba dataöverföringshastigheter behövs för applikationsföljning (mer om följning i avsnittet programvaruverktyg).
Det finns flera olika verktyg tillgängliga som kan erbjuda en professionell felsökningsfunktion, men själva verktygen är bara hälften av lösningen. Verktygen måste stödjas av bra programvara. En uppsättning verktyg som sticker ut från både hårdvaru- och mjukvaruhänseende är SEGGER J-Link-serien. Denna serie har en debugger-version för nästan alla typer av utvecklare, allt från studenter och makers till verkligt specialiserade proffs.
Det finns två modeller som erfarenhetsmässigt har visat sig vara mest användbara för allmänna utvecklare: J-Link Base och J-Link Ultra+ (Figur 2). Storleksmässigt är de två enheterna identiska, men J-Link Ultra+ erbjuder snabbare nedladdningshastigheter till RAM (3 Mbyte/s kontra 1.0 Mbyte/s) och en snabbare SWD-gränssnittshastighet (100 MHz istället för 30 MHz). De högre hastigheterna gör stor skillnad när en utvecklare vill följa sin applikation för att få inblick i prestanda och RTOS-beteende och vill felsöka sitt system.
Figur 2: SEGGER J-Link Ultra+ erbjuder utvecklarna en bättre felsökningsfunktion genom ett målgränssnitt på 50 MHz. (Bildkälla: SEGGER Microcontroller Systems)
Det fina med J-Link och B-L4S5I-IOT01A-utvecklingskortet är att de två kan anslutas via en Tag-Connect TC2050-IC-NL-kabel och fästklämman TC2050-CLIP-3PACK. Med dessa kan en felsökare att anslutas till utvecklingskortet genom "nålmattan" (Figur 3). Det kan vara nödvändigt att anpassa J-Links 20-poliga kontaktdon till det 10-poliga kontaktdonet på TC-2050-kabeln. Ett alternativ som kan användas för detta är nåladaptern 8.06.04 J-Link med 10-stift.
Figur 3: På utvecklingskortet B-L4S5I-IOT01A kan Tag-Connect-kabeln anslutas via ett nålmattsliknande område på kretskortet (höger). (Bildkälla: STMicroelectronics)
När en utvecklare har slutit denna bana på maskinvarusidan kan de använda programvaruverktygen för att analysera och felsöka sin applikation.
Programvara för professionell felsökning
Det finns en hel del programverktyg som fungerar riktigt bra med SEGGER J-Link-verktygen, vilka förvånande nog inte levereras av SEGGER. I det följande tittar vi på flera av dessa gratisverktyg och på hur utvecklare kan använda vart och ett för att felsöka sin programvara.
Först ut är J-Scope. J-Scope är ett oscilloskopliknande verktyg som visar variabla värden över tid. Utvecklare kan övervaka en enda variabel eller flera dussin variabler. Tänk dock på att när fler variabler övervakas, kan färre samples tas innan samplebufferten översvämmas och data går förlorad.
Variabler väljs genom att förse J-Scope med den elf-fil som matas ut av kompilatorn. Detta anger vilka minnesplatser som ska läsas in och utvecklaren kan sedan ange sina samplingshastigheter och övervaka hur variablerna förändras över tid. Ett enkelt exempel för en trevariabel-följning kan ses i figur 4.
Figur 4: J-Scope kan användas för att övervaka variabler via J-Link när ett program körs i realtid. (Bildkälla: SEGGER Microcontroller Systems)
Nästa är Ozone. Ozone är ett felsökningsgränssnitt och prestandaanalysator. Utvecklare kan ladda in sin elf-fil i verktyget och utföra felsökning på källnivå. De kan ställa in brytpunkter och uppdatera sin kod. En särskilt användbar funktion för utvecklare är att de också kan utföra instruktionsföljning (om deras hårdvara stödjer det) och identifiera vilka assembler- ochC-kodsdeklarationer som har exekverats. Detta är särskilt användbart för att bekräfta kodtäckningen i hardware-in-loop-testning (HiL).
Ozone kan också hjälpa utvecklare att analysera systemprestandan (Figur 5) och visualisera variabler över tid. Detta erbjuder funktioner som liknar J-Scopes, men på ett mer integrerat sätt. Ozone kan till och med användas för att övervaka strömförbrukningen och synkronisera alla dessa händelser på ett ställe.
Figur 5: Ozone kan användas för att följa variabler genom J-Link medan ett program körs i realtid, utöver kodtäckning och RTOS-medveten felsökning. (Bildkälla: SEGGER Microcontroller Systems)
Ett tredje verktyg är SystemView. SystemView gör det möjligt för utvecklare att analysera sitt RTOS-systems beteende i runtime. Uppgiftsbyte registreras i en spårningsbuffert och rapporteras sedan till SystemView via felsökaren (Figur 5). SystemView visar sedan denna information på ett sätt som gör det möjligt för utvecklare att se sina kontextväxlingar och mäta systemets prestanda. Detta är också ett utmärkt sätt att visualisera ett system och hitta fel och andra problem.
Figur 6: SystemView ger en inblick i ett RTOS som gör det möjligt för utvecklare att mäta uppgiftsprestanda och visualisera vad RTOS:et gör och när det händer. (Bildkälla: SEGGER Microcontroller Systems)
Tips och tricks för felsökning av ett inbäddat system
Felsökning av en IoT-produkt kräver att utvecklare har rätt verktyg både i hårdvaru- och mjukvaruhänseende. Båda delarna måste finnas på plats om utvecklare vill minimera tiden de tillbringar på felsökning. För att lyckas med felsökningen, finns det flera "tips och tricks" som utvecklare bör lägga på minnet, exempelvis:
- Använd ett professionellt felsökningsverktyg som maximerar dataöverföringshastigheten för gränssnittet. Mängden användbar data som kan erhållas från ett system beror på hur snabbt denna data kan tas emot. Lägre hastigheter resulterar i längre felsökningssessioner.
- Konfiguera felsökningsmjukvaran tidigt i utvecklingscykeln. Utvecklare bör inte vänta med att konfigurera felsökningsverktyg tills de stöter på problem.
- Använd följningsverktyg redan från början i utvecklingsarbetet. Detta gör det möjligt för utvecklare att övervaka systemprestandan och omedelbart förstå hur mjukvaruförändringar påverkar den.
- Utnyttja instruktionsföljning eller programräknarsampling för att förstå hur systemkoden täcks under testningen. Fel kommer att finnas i otestade villkorsgrenar och kod.
- Utnyttja snabba dataöverföringsprotokoll för att få ut datan från chippet, såsom t.ex. Real-time Transfer-bibliotek (RTT).
Utvecklare som följer dessa "tips och tricks" kommer att upptäcka att de besparar sig en hel del tid och frustration när de försöker utveckla en IoT-produkt.
Slutsats
Mjukvaror till IoT-produkter har blivit komplexa, men det betyder inte att proffs- eller hobbyutvecklare behöver fastna i att ständigt felsöka sina system. Med hjälp av professionella utvecklingsverktyg och mjukvaror kan utvecklare få den information de behöver för att inte bara felsöka ett system, utan även för att analysera och förbättra systemprestandan. Genom att göra investeringar i dessa verktyg kan användare dramatiskt minska tiden som läggs på felsökning och få sina projekt att fungera och rullas ut på marknaden inom rimliga tidsramar.
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.




