embedded software
play

Embedded Software TI2726-B 8. Debugging techniques Koen Langendoen - PowerPoint PPT Presentation

Embedded Software TI2726-B 8. Debugging techniques Koen Langendoen Embedded Software Group Grace Hopper 1947 2 Overview Debugging techniques Debugging a distributed system Preparation for the exam Debugging Write good code!


  1. Embedded Software TI2726-B 8. Debugging techniques Koen Langendoen Embedded Software Group

  2. Grace Hopper 1947 2

  3. Overview  Debugging techniques  Debugging a distributed system  Preparation for the exam

  4. Debugging  Write good code! Testing only uncovers a fraction of bugs  Testing and debugging can be very difficult  HW is involved (radio communication over devices?)  Different perception on bugs for ES  MS IE crashed?  Elevator not working? Telephone calling the wrong person? Cash machine? Medical instruments? 4

  5. Testing on the host machine  Try finding bugs early in the development process  HW might not be available early on  Exercise all of the code  Unlikely situations difficult to test (events on two devices)  Develop reusable, repeatable tests  Leave an “audit trail” of the test results  usually ES do not have hard-drives  Conclusion: do not test on target more than needed! 5

  6. Coverage tools gcov $ gcc -fprofile-arcs -ftest-coverage tmp.c $ a.out -: 1:#include <stdio.h> -: 1:#include <stdio.h> Success -: 2: -: 2: 1: 3:main () { 1: 3:main () { -: 4: int i, total; -: 4: int i, total; 1: 5: total = 0; 1: 5: total = 0; 11: 6: for (i = 0; i < 10; i++) 11: 6: for (i = 0; i < 10; i++) 10: 7: total += i; 10: 7: total += i; 1: 8: if (total != 45) 1: 8: if (total != 45) #####: 9: printf ("Failure\n"); #####: 9: printf ("Failure\n"); -: 10: else -: 10: else 1: 11: printf ("Success\n"); 1: 11: printf ("Success\n"); 1: 12:} 1: 12:} $ gcov tmp.c 87.50% of 8 source lines executed in file ‘tmp.c’ Creating ‘tmp.c.gcov’ 6 | 40

  7. Coverage tools www.ECLEmma.org • Eclipse plugin for Java 7 | 40

  8. Testing on the host machine Target system Test system Hardware independent code Hardware independent code Hardware dependent code Test scaffold code Hardware Keyboard Display Disk 8

  9. Testing on the host machine  Divide code into two categories  Hardware-dependent code  Hardware-independent code  Scaffold code provides the same entry points as the HW- dependent code  HW-dependent code can be debugged on HW only  Replace calls to HW functions with meaningful information  Rather than replacing the function in() for radio, replace the layer above with a printf() 9

  10. Testing on the host machine  Calling interrupt routines  Interrupt routines are major part of the system  Calling interrupt routines needs to be done from scaffold  Difficult? Not really  Split code of the ISR in two: HW-dependent and HW-independent  Place the HW-independent code in a separate function  Test this code extensively  Example: character processing on the serial line 10

  11. Calling the timer interrupt  Timer ISR – one of the most used and important parts of the system  Alternatives:  Emulate HW to “naturally” call this ISR  Force calls from the test scaffolds  Second option is preferred  The overhead is not large on a PC system  You have control in deciding when the time ISR is called with respect to other interrupts  Have several events occur “at the same time” 11

  12. Script files  Automation is needed almost always  Validate a piece of code under the same input conditions  “Trigger” ISRs in the same manner each time  Using script files requires some small overhead  Parser needed  Very simple instructions (2-3 characters)  Comments must be allowed  Data has to be entered ASCII & Hexadecimal  Results reporting in a formatted form 12

  13. Script files - interleaving Input script Output file # Frame arrives (beacon with no element) # Frame arrives (beacon with no element) # Dst Src Ctrl Typ Stn Timestamp # Dst Src Ctrl Typ Stn Timestamp mr/56 ab 0123456789ab 30 00 6a6a mr/56 ab 0123456789ab 30 00 6a6a # backoff time expires (software should send frame) # backoff time expires (software should send frame) kt0 kt0 --> Sending frame: ab ff ab ... # timeout expires again (assoc fails, no response) # timeout expires again (assoc fails, no response) kt0 kt0 #Some time passes (software should retry sending) #Some time passes (software should retry sending) kn2 kn2 kn2 kn2 --> Sending frame ab ff ab ... # another beacon arrives # Dst Src Ctrl Typ Stn Timestamp # another beacon arrives mr/56 ab 0123456789ab 30 00 6a6a # Dst Src Ctrl Typ Stn Timestamp mr/56 ab 0123456789ab 30 00 6a6a 13

  14. More advanced scripting  Automate state machine behavior  Each time some actuation takes place, a certain input (ISR) should be triggered  This behavior is an alternative to the regular behavior  Emulate the communication medium between devices  Wireless communication – interference, multiple devices  barcode reader, any wireless interface… Scanner A Scanner B Register A Register B Test scaffold software = communication medium 14

  15. Objections!!!  Objections to debugging on host machine appear  Engineer fails to quantify correctly the needed effort  Boss wants code to be ready fast  Everyone fails to realize how much time debugging will take  Most common objection  Testing on host is useless: most of code is HW-dependent 15

  16. Example from Telegraph 16

  17. Objections!!!  Building a test scaffold is difficult misconception  Writing a simple parser is easy even if done in C  Code output capture is a simple formatting function  Debugging takes significantly longer than code writing  RTOS needs to run on the host system  If so, choose one RTOS that does (many versions available)  If not, emulate system calls! Use a shell around the OS 17

  18. Objections!!!  Other objections  Software interaction with hardware  Example: use the wrong address to access the UART  Response and throughput  Shared-data problems (assembly level)  Portability issues (big-endian vs. little-endian)  They are true!  You cannot (usually) test these on the host  Testing on the host is not aimed at these issues 18

  19. Instruction set simulators  The processor execution is emulated in software  Software executing assembly version of real code  Useful for testing some of the issues not covered by debugging on the host  Advantages  Determine response time and throughput  Testing assembly-language routines  Resolving portability issues  Testing code dealing with peripherals  What they cannot do  Shared-data bugs – unless scripting is allowed or you are lucky  Simulate the whole platform 19

  20. The ASSERT macro  Very used tool: assert(condition);  If condition is true, noting happens  If condition is false, user code is launched  Print a message and stop  Advantages  Program state is tested on the spot: localized bugs  Example usage:  Test input values of a function (passing NULL pointers?)  Test context of function calls  assert(!” bad return from function”) 20

  21. The ASSERT macro  Assert on the target platform  Less verbose as systems do not usually have displays  Redefine functionality of assert  Disable interrupts and do: “while(1){};”  Turn on LEDs in a given pattern (led-based debugging)  Write variables to a certain location of memory  Write the location of the current instruction  Execute illegal instruction to trigger debugger or stop 21

  22. Using lab tools  Multimeter  Measure voltage between various points  Use it to detect if circuits are powered  Test state of enable/disable pins  Measure resistance between points  Make sure device is off – detect short or open circuits  Oscilloscope  Software engineers usage (time, voltage, trigger)  Use it as a voltmeter  Check if circuit is working at all by looking at changing waves  Check if signals are changing as expected (communication lines)  Check timing issues 22

  23. Logic analyzer  A “must-have” tool for embedded software design  Usb-based cheap versions available  Can track a set of digital signals simultaneously  Only VCC and ground signals understood  Logic analyzers are storage devices  Significantly more complex triggering mechanisms  Timing mode (make use of “real” time)  Test if event ever occurs  Measure time with respect to code length and response  Control output signal patterns 23

  24. Logic analyzer  State mode (makes use of external time signals)  Use the RE signal on memories to monitor memory access  Trace of execution display: signal, hex value, assembly code, line nr.  Trigger on a special event (memory access) and go backwards in time  Trigger writing of bad values in RAM (NULL pointers as parameters)  Filters on the data values are available 24

  25. Using lab tools  In circuit emulators  Hardware devices emulating the whole processor  Allow breakpoints and memory/registry inspection  Desktop debugger + logic analyzer in one tool  Logic analyzers are preferred: any processor, timing mode, better filters, easy to install  Monitors  Two parts: on the target system and on PC  Can set up breakpoints, makes use of serial communication  JTAG port (Joint Test Action Group) 25

  26. Overview  Debugging techniques  Debugging a distributed system  Preparation for the exam

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend