Debugging in embedded en native systemen met GDB



Vergelijkbare documenten
Korte handleiding Unix debugging met GDB/DDD

Hoofdstuk 19. Embedded systemen

18 Embedded systemen 1

Inleiding Practicum Operating Systems

Erik Poll Martijn Warnier.

Software-Ontwikkeling I Academiejaar

in Operating System Concepten

in Operating System Concepten Doel van een Operating System Interrupts 3-Lagen model spooling (Simultaneous Peripheral Operation On Line)

Bescherming van (software) IP bij uitbesteding van productie

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368

Van Poort tot Pipeline. Ben Bruidegom & Wouter Koolen-Wijkstra AMSTEL Instituut Universiteit van Amsterdam

De MySQL C API. Variabelen in C Functies in C Pointers in C

Computerarchitectuur en netwerken. Memory management Assembler programmering

Wat is Arduino? Arduino = microprocessor (Atmel)

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Zelftest Java concepten

A Quick Start Guide: AVR programmeren

EmSE presentatie. Starten met de ATtiny2313: Een RGB powerled driver Kees Moerman, 13 juli 2010

Inleiding Practicum Operating Systems

Van dvd naar webserver. Marcel Nijenhof 18 Juli

ES1 Project 1: Microcontrollers

Selenium IDE Webdriver. Introductie

Hoofdstuk 18. Embedded systemen

Android Development CCSS2011

Inhoud. 1 De Microcontroller 1. 2 De taal C Declaraties Functies In- en uitvoer Voorwaardelijke opdrachten 41

Oefeningen Interpretatie I Reeks 6 : Registermachines

Modelleren en Programmeren

ES1 Project 1: Microcontrollers

Bijlage 8. Testprogramma brandreactiemodulen LBK

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 4: Lcd Interface & Files

Technische data. Versie dec

Gelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: , Appendix A.

Inhoud. 1 De Microcontroller 1. 2 De taal C C in het kort Functies 31

ES1 Project 1: Microcontrollers

Computerarchitectuur en netwerken. Memory management Assembler programmering

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces?

SI-Profinet. Unidrive M700 en Siemens S7-300 PLC (Step 7)

Inhoud. 1 De Microcontroller 1. 2 De taal C C in het kort Functies 31

Analyse probleem remote execution

Peripheral Interface Controllers. BRAC clubavond PE2WDO

Gebruik van command-line operating systems

Microcontrollers Introductie INLMIC Jesse op den Brouw INLMIC/

MINICURSUS PHP. Op dit lesmateriaal is een Creative Commons licentie van toepassing Sebastiaan Franken en Rosalie de Klerk Bambara

Inleiding Visual Basic en VBA. Karel Nijs 2009/01

Handleiding JCreator. Inhoud. Een Workspace en een eerste project maken

LabVIEW 8.5. Voor beginners. Adriaan Brebels

Overzicht. Tekstmanipulatie. Doel van de cursus. Doel van de cursus. Tekstmanipulatie: tekst automatisch bewerken en onderzoeken. Waarom Linux?

Rodin installatiehandleiding (vanaf versie 2.1.xxx.x)

Zelftest Informatica-terminologie

Memory Management. Virtual Memory. Eisen Memory Management. Verdelen geheugen over meerdere processen

Vorig jaar in 5v cluster, tot en met OO hoofdstukken, geen problemen. Nu in mengcluster, tot OO hoofdstukken, wel problemen bij 4h leerlingen

Basis UNIX commando's - overzicht

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Studentnummer:... Opleiding:...

Les 11: systeemarchitectuur virtuele machines

studievaardigheden studentassistent: Alice de Vries werkcollege / practicum

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Tentamen Programmeren in C (EE1400)

Programmeren in C ++ met wxwidgets les 5

Opencockpits FMC V3 Handleiding Prosim737

Inhoud Introductie Development Environment Programmeren voor Android Demo. Android Development. Sven van Haastregt

Open Source Software. Bart van Dijk

Inhoud. Geschiedenis / evolutie van OpenEmbedded en Yocto Overzicht van de architectuur en concepten Persoonlijke ervaring

Linux. Linux lezing 13 april 2005 Marcel Nijenhof Note: De slechste vragen zijn niet gestelde vragen

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Arduino. HCC Vlaanderen - Mechelen 7 februari Luc De Cock

Tekstmanipulatie. Week 1. Gosse Bouma 2007/2008. Informatiekunde Rijksuniversiteit Groningen

Een infra DevOps CI/CD straat

ICT Infrastructuren: Processen en Threads. 18 november 2013 David N. Jansen

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

OP6800/ OP6810: C-programmeerbare besturingscontrollers: OP6800-serie.

Programmeren in C++ (deel 1)

ArcGIS Mobile ADF. Smart Client Applicaties voor ArcGIS Server Eva Dienske, Wim Ligtendag

Onder de motorkap van Microsoft Azure Web Sites. Eelco Koster Software architect ORDINA

Intramed procedure. Intramed en Windows Upgraden naar Windows 7

Wat is JAVA? Peter van Rijn

CONTAINERIZATION OF APPLICATIONS WITH MICROSOFT AZURE PAAS SERVICES

Betaalbaar Home Control. Presentatie op bijeenkomst van EmSE: Embedded Systems Eindhoven

Tentamen Programmeren in C (EE1400)

continue in een for, while of do lus herhaalt de lus vroegtijdig. De volgende herhaling wordt onmiddellijk begonnen.

TIMEMANAGER. Configuratie Lantronix TIMEmate. Werkwijze: Opmerking:

Qt in het kort Handleiding

RS232 Commands BrightSign players HD1010, HD1020, XD1030, XD , AU230

Meet the Arduino FAMILY

Kansen en aandachtspunten van draadloos PROFINET

Vogelaar Electronics DRAFT DelphiStamp VE08201

Cerussa FIN Pre-requirements

Origineel bestandsform aat DWG als archiveringsfo rmaat

Transcriptie:

Debugging in embedded en native systemen met GDB A.M. ten Doesschate July 15, 2015 Abstract Een korte beschrijving : intro gebruik met welke tools en hulpmiddelen van de GDB setup en een summier aantal GDB commando s van native en embedded systemen debugging (specifiek : ARM) 1

1 Introductie waarom GDB? printf alike functie kan maar tot een bepaald punt debuggen (bijv. werkt nauwelijks tot niet voor interrupts) prinf telkens in code van target inbouwen hardware exceptions (segmentation faults, hard fault, etc) interface (API) voor hardware protocollen (JTAG, BDM, RSP) support voor native als remote (ethernet, serieel, etc) support server en client component draait onder diverse OS-en uniform voor embedded (target) en host (native) support voor diverse programmeer talen @2013, AMtD 2

2 Tools en hulpmiddelen opzet van fundamentele documentatie m.n. interface in multidisciplines gcc en gdb op native OS (GNU/Linux) compiler (gcc) : compile met optie -g source code listing Mijn omgeving (back-to-the-basics) : alle tools : commandline georiënteerd vi Makefiles linker loader scripts (voordeel t.o.v. command line : vastzetten van secties. Alleen nuttig in embedded systemen!) gcc compiler suite voor host en ARM (specifiek : cortex-m3 van NXP) JTAG converter : J-Link van Segger (education versie) kleine adapter t.b.v. J-Link en target (bevat ISP en 20-polige ARM jtag konnektor) @2013, AMtD 3

3 GDB tool GDB in 2 stappen : initialisatie vanuit file (zgn..gdbinit ) commando s uitvoeren vanuit een shell (interactief) 3.1.gdbinit file.gdbinit voorbeelden : debugging van native tools met argumenten verbinding leggen met IC dongles (bijv. JTAG via tcp/ip) flashen/programmeren van microcontroller displayen van registers (in embedded omgeving) zetten van stack en program counter intermix van programmeertaal (C) en assembly @2013, AMtD 4

3.2 GDB commando s (interactief) start van : debuggen van host applicatie (al of niet met.gdbinit) : : gdb <host applicatie > : zet eventuele breakpoints : type run in de gdb shell debuggen van embedded systeem applicatie : arm-none-eabi-gdb -se <firmware-microcontroller > : zet eventuele breakpoints type cont in de gdb shell disp /format <variabele >: display variable in format voorbeelden : disp /s string : display string in ascii format (NULL terminated) disp /x var : display var in hex format disp /x *p : display pointer info (zonder * : geeft adres weer) disp /x *p.member : display member in ptr naar struct Opm : het nummer van dit display commando geeft index in de display lijst aan undisp <n >: uitzetten van displayen van variable waarbij <n >= index in de display lijst step (extra features) en next : stepi : single step instruction machine code step : (zonder i) single step van programmeer taal instructie step(i) <n >: voert n instructies uit n(ext) : als bij step maar bij een functie wordt functie uitgevoerd tot bij eerstvolgende instructie van programmeertaal n(ext) <n >: idem dito maar dan <n >keer steppen <enter >: voert laatste gdb commando uit bt : backtrace, geeft aan waar de hierarchie van de functie is breakpoints : br(eak) <file >:<regelnr >: set breakpoint op regelnummer. Opm : het nummer van dit breakpoint geeft index in de lijst van breakpoints aan watch : doet hetzelfde maar dan op variabelen del <brknr >: delete break/watch point nummer(s) Mag ook een reeks ofreeksen zijn bijv : del 1 2 3 of del 1-4 5 6 info br(eakpoints) : geeft aan hoeveel en waar de breakpoints (file + regelnummer) staan conditioneel breakpoint zetten bijv : br <file >: <regelnr >if i >= 6 na breakpoint verder met commando cont cont : verder doorgaan met laten draaien van app na een breakpoint stop cont >n <: >n <aantal keren doorgaan alvorens stop bij een breakpoint (zinvol bij een loop) @2013, AMtD 5

4 Demo host debugging embedded debugging met ARM board (praktisch) debugging op native en embedded samen @2013, AMtD 6