Model level debugging and profiling, Code Generation Conference 2014
Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this...
Transcript of Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this...
![Page 1: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/1.jpg)
Smart Code Debugging
Techniques
ARMTechCon
Rafael Taubinger – Sr. Field Application Engineer
![Page 2: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/2.jpg)
• Introduction
• Simulator and C-SPY macros
• Breakpoints
• SWD/SWO and features
• Debugging a crash
• Debugging external images and Bootloader
• RTOS Kernel Awareness Plugin
• Demo
• Summary
• Q&A
AGENDA
![Page 3: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/3.jpg)
• WIKIPEDIA: ” Debugging is a methodical process of finding and reducing the
number of bugs …
DEBUGGING
![Page 4: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/4.jpg)
Simulator and C-SPY Macros
![Page 5: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/5.jpg)
SIMULATOR
• The C-SPY Simulator simulates the functions of the target
processor entirely in software
• The C-SPY Simulator supports:• Instruction-level simulation
• Memory configuration and validation
• Interrupt simulation
• Peripheral simulation (using the C-SPY macros).
![Page 6: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/6.jpg)
C-SPY MACROS
• C-SPY macros enable you to build complex debug functions suited to your needs. They can use functions such as:
• File operations
• Memory read/write
• Breakpoint setting/clearing
• Interrupt enable/disable
• JTAG commands
• SFR read/write
• Examples• Prepare the device for debugging
• Simulate HW/SW not yet ready
• Store the content of a memory range to file
• Use some really complex breakpoints
![Page 7: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/7.jpg)
Breakpoints
![Page 8: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/8.jpg)
CORTEX-M3/M4 DEBUG ARCHITECTURE
![Page 9: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/9.jpg)
BREAKPOINTS AND DIFFERENCES
• On a Cortex M device the debugger (C-SPY) instructs the ”Flash Patch and Breakpoint Unit“ to halt the core on a specific instruction
• This unit only works in a specified address range.
• Limit in number of breakpoints
• Software breakpoints • Here the debugger replaces the instruction where we want the breakpoint with a bkpt instruction. After stopping the instruction is inserted again.
•Require the ability to program the memory where the code is placed.
• Complex conditional code and data breakpoints
• Log and data log breakpoints
![Page 10: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/10.jpg)
SWD and SWO
![Page 11: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/11.jpg)
ARM CORE COMPARISON
ARM7 ARM9 CM0 CM3 CM4 CR4
JTAG X X (X) X X X
SWD (X) X X
SWO X X
ITM X X
ETM * * * * *
ETB * * * * *
• All cores have diferente interface and debug
capabilities
![Page 12: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/12.jpg)
FEATURES
SWD, a modern JTAG• JTAG was not intended for debugging, SWD is.
• Fewer wires, high speed
Trace, very handy for finding bugs. • ETM
• SWO Trace
• ETB
SWO• Lots and lots and lots of info to be found here
![Page 13: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/13.jpg)
SWO
• One wire data transfer, asynchronous bit stream
• USART• Wrong speed setting makes data impossible to interpret, as a RS232 UART
• Speed derived from mcu-clock -> sensitive to speed changes of cpu
• 1Mb/s
• Manchester encoded• The clock can be derived from the signal -> No speed setting necessary
•Changing speed of mcu is OK
• 100Mb/s
• Printf• High speed terminal IO
• stdio will use SWO to send data to Terminal IO in CSPY
•Use during development while your special hw is being constructed
•Old fashioned printf-debugging
•No use of breakpoints, print diagnostic messages
•Simple to use, just include stdio.h
![Page 14: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/14.jpg)
ITM Events
![Page 15: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/15.jpg)
ITM EVENTS
• Another similar feature is the ITM events. By including
these macros in the code data is sent to, displayed in and
logged by C-SPY.
• Simple way of sending small packets of data
• 4 channels
• Different sizes
• Tracking data• ITM_EVENT8(channel, value)
• ITM_EVENT16(channel, value)
• ITM_EVENT32(channel, value)
![Page 16: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/16.jpg)
Interrupt Logging
![Page 17: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/17.jpg)
INTERRUPT LOGGING
• Everytime an interrupt enters or exits a timestamp is sent to C-SPY
• Great for verifying timing of interrupts
• Verify how interrupts are interrupted by others with higherpriority.
![Page 18: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/18.jpg)
Code Coverage and Function
Profilling
![Page 19: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/19.jpg)
CODE COVERAGE
• Code coverage use trace data to analyze what parts of
the included functions are really executed in a run.
• Can be a requirement that all code is really tested, i.e.
executed in a test session
• Test cases can be added to verify code, or untested code
can be removed
![Page 20: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/20.jpg)
FUNCTION PROFILLING
• Function profiling using sampled trace data
• Function profiling using ETM trace data• More accurate, still based on how many hits you get in each function
• Function profiling using function calls as derived from
ETM data• Here the number of times a function is called is measured, not number of times
multiplied with the length of the function
![Page 21: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/21.jpg)
Debugging a Crashed Application
![Page 22: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/22.jpg)
DEBUGGING A CRASHED APPLICATION
• On Cortex M devices a lot of bugs can cause the execution to be shifted into predefined exception handlers
• UsageFault_Handler()
• BusFault_Handler()
• MemMang_Handler()
• HardFault_Handler()
• Of these, the HardFault handler is probably the most common, as it is used by unrecoverable system failures
![Page 23: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/23.jpg)
External Images and Debugging the
Bootloader
![Page 24: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/24.jpg)
ATTACH TO RUNNING TARGET
• In C-SPY there is an ability to connect to a target without
stopping the running program.
• Useful if you have a system that after running a while acts
funny. Connect to it when it is behaving strange• Run the device without debugger -> Debugger will not affect normal execution.
• No trace of course, but possible to find clues of a problem that is not evident at
startup
![Page 25: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/25.jpg)
EXTERNAL DEBUG INFORMATION
• Add extern debug information to your session• If the device already is partially programmed
• Bootloader – Application
• Large binary that you don’t want to program again, but want the debug
information
• Debug only session, using a ELF file as input• The device is programmed, you only want to debug the device.
• Program only
• Simpler debug, no changes to code
• Project -> Create new project -> Externally built executable
• Usefull when debugging the bootloader
![Page 26: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/26.jpg)
RTOS Kernel Awareness Plugin
![Page 27: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/27.jpg)
RTOS KERNEL AWARENESS PLUGIN
• The C-SPY Debugger of IAR Embedded Workbench has a native RTOS awareness plugin.
• This makes it possible to monitor:
• Threads
• Message Queues
• Semaphores
• Mutexes
• Pools
• Timers
• Even Flag Groups
• Thread Performance Metrics
• Timer Performance Metrics
• It will show you how your Application and
tasks are behaiving.
![Page 28: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/28.jpg)
Demo
![Page 29: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/29.jpg)
Summary
![Page 30: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/30.jpg)
SUMMARY
• IAR comprehensive debugging environments feature a wide range of different capabilities to perform smart debugging of your code
• In this presentation and demo we had an overview of available debug features, e.g. complex breakpoints, macros, stack checking, event logging, live data, and profiling
• We also demonstrated on how these available features can be used in a smart way for comprehensive debugging of your code
![Page 31: Smart Code Debugging Techniques - IAR Systems · 2015-11-17 · debugging of your code • In this presentation and demo we had an overview of available debug features, e.g. complex](https://reader036.fdocuments.in/reader036/viewer/2022062505/5ed8d4a96714ca7f4768a5af/html5/thumbnails/31.jpg)
Want to learn more?
• Book an IAR Academy course
• Get a demo of our latest news
THANK YOU FOR
YOUR ATTENTION!