QNX® Momentics® Development Suite Tools for Building, Debugging and Optimizing Embedded Systems
2 out of 48 All content copyright of QNX Software Systems Co. Agenda 1. Eclipse and CDT Introduction 2. QNX® Momentics® Development Suite 3. Target Management 4. Embedded System Debugging 5. Embedded System Profiling 6. Application Analysis: Memory, Code Coverage, Performance 7. Multi-core Systems Development 8. Embedding the Operating System and Applications 9. Q&A
QNX® Momentics® Development Suite Eclipse and CDT Introduction
4 out of 48 All content copyright of QNX Software Systems Co. What is Eclipse? Eclipse is - a vast open source community ► 17 Strategic Members, 79 Add-in Provider Members, many independent contributors ► Widely adopted 50 million downloads since 2001 (as of 2005) 1 million downloads of Callisto (3.2) 40 days after release Eclipse is - A collection of open source projects ► “providing an extensible development platform and application frameworks for building software” ( Eclipse is – A platform ► Core Runtime, GUI, and IDE features ► An SDK for building plug-ins for the Platform
5 out of 48 All content copyright of QNX Software Systems Co. History of Eclipse Originated at IBM in 2000 Foundation for WebSphere Studio Application Developer ® ► Intended to compete with Microsoft ® Visual Studio ® in enterprise IBM had vision to see the value of open source technologies ► Good experience with Apache and Linux Formed Eclipse Consortium November 2001 ► Involved both partners and competitors Gave technology and leadership to Eclipse Foundation ► February 2004 ► Combat the perception that IBM still owned Eclipse
6 out of 48 All content copyright of QNX Software Systems Co. What is the CDT? One of the major Eclipse tools projects A set of plug-ins that support C and C++ development ► Extend many of the Eclipse Platform extension points Support Edit/Build/Debug cycle Out-of-the-box support for gnu tools for host development ► gcc, g++, gdb, binutils, etc. Platform for integrating other toolchains ► Compilers, debuggers, build systems, … Platform for adding other C/C++ tooling ► Embedded tools to support unique needs of embedded systems
7 out of 48 All content copyright of QNX Software Systems Co. History of the CDT Project launched July 2002 ► At QNX headquarters in Ottawa, Canada Initially populated with contribution from QNX ► Additional participation from Rational, MontaVista, and Red Hat ► Again, both partners and competitors CDT releases regularly with latest being in Sept 2006 Contributions from: ► QNX - initial contribution, core and debug ► Rational/IBM - parser technologies ► Intel and Texas Instruments - makefile generation ► Wind River - refactoring ► Others coming…
8 out of 48 All content copyright of QNX Software Systems Co. QNX is Committed to Eclipse and CDT QNX is a founding member of the Eclipse Consortium QNX contributed the original implementation of the CDT to Eclipse and has guided the evolution of the CDT project, from its humble beginnings of 80,000 LOC to over 700,000 LOC today The CDT is the second most popular project on Eclipse, following only the Eclipse platform itself Simultaneously leverage open standards like Eclipse while taking advantage of high value-add functionality and world-class innovation through standardized extension points ► Designed for embedded: cross-compiler support, easy debugging, extended for target management ► Seamless support for third-party plug-in tools and optimizing compiler technology ► High developer productivity: no additional learning curve, high performance IDE, reliable platform, scalable to large projects
9 out of 48 All content copyright of QNX Software Systems Co. Who creates products that include the CDT? There are over 17 commercially available products based on Eclipse and CDT
QNX® Momentics® Development Suite Overview
11 out of 48 All content copyright of QNX Software Systems Co. QNX ® Momentics ® at a Glance
12 out of 48 All content copyright of QNX Software Systems Co. Built on the Eclipse Platform
QNX® Momentics® Development Suite Target Management
14 out of 48 All content copyright of QNX Software Systems Co. Target Management Embedded systems need to be monitored, debugged and controlled remotely ► Much of complexity and difficulty with embedded development is the limited insight into the operation of the target system
15 out of 48 All content copyright of QNX Software Systems Co. Target Management QNX Momentics adds target management to Eclipse ► Observe and control running target (memory, threads, processes) ► Manipulate file system ► Download, debug, control and optimize applications Network/Serial/Other
16 out of 48 All content copyright of QNX Software Systems Co. Target Management - Memory Target navigation
17 out of 48 All content copyright of QNX Software Systems Co. Target Management - Memory Memory Map Memory Details
18 out of 48 All content copyright of QNX Software Systems Co. Target Management – File System File Details File System Explorer
19 out of 48 All content copyright of QNX Software Systems Co. Target Management – Adaptive Partitioning Partition Information Partition Explorer CPU Usage Per Partition Partition Budgets
QNX® Momentics® Development Suite Embedded Systems Debugging
21 out of 48 All content copyright of QNX Software Systems Co. Embedded System Debugging QNX Momentics embedded debugging to Eclipse ► Full source debugging on remote target ► Start, stop, and step multiple processes and threads ► Observe variables, globals, memory, registers Network/Serial/Other
22 out of 48 All content copyright of QNX Software Systems Co. Embedded Systems Debugging Process and Thread Information Source View with current executing code
23 out of 48 All content copyright of QNX Software Systems Co. Embedded Systems Debugging Execution control Variables and data structures Registers
QNX® Momentics® Development Suite Embedded Systems Profiling
25 out of 48 All content copyright of QNX Software Systems Co. Profiling an Embedded System Very low overhead, high performance buffering of kernel events Snapshots of activity are captured and sent to the IDE IDE visualizes events in graphs and tables for analysis
26 out of 48 All content copyright of QNX Software Systems Co. System Profiler – Kernel Events Inter-Process Communication Thread state change Thread Migration
27 out of 48 All content copyright of QNX Software Systems Co. System Profiler – CPU Utilization CPU Utilization CPU Usage
28 out of 48 All content copyright of QNX Software Systems Co. System Profiler – Measuring Interrupt Latency Interrupt arrives – Kernel handles it Kernel sends message to handler thread Thread begins to run
29 out of 48 All content copyright of QNX Software Systems Co. System Profiler – Multi-Core Support CPU Usage by Thread Cumulative Graph
30 out of 48 All content copyright of QNX Software Systems Co. System Profiler – Multi-Core Support CPU Utilization CPU Usage
31 out of 48 All content copyright of QNX Software Systems Co. System Profiler – Multi-Core Support Running CPU by Color Code Mouse Hover CPU Information
32 out of 48 All content copyright of QNX Software Systems Co. System Profiler – Multi-Core Support Thread Migrations vs Time Top Thread Migrations
33 out of 48 All content copyright of QNX Software Systems Co. System Profiler – Multi-Core Support Inter-core Messages List of Top Inter-core Senders/Receivers
34 out of 48 All content copyright of QNX Software Systems Co. System Profiler – Adaptive Partitioning Support Partition Summary Process/Thread Summary
35 out of 48 All content copyright of QNX Software Systems Co. System Profiler – Adaptive Partitioning Support Mouse Hover Partition Information
QNX® Momentics® Development Suite Application Analysis: Memory, Code Coverage, Performance
37 out of 48 All content copyright of QNX Software Systems Co. Embedded Application Analysis Embedded development requires debugging and optimization of the application on the target system Memory analysis can reveal difficult to debug system crashes or memory leaks that cause long-term instability Code coverage can reveal deficiencies in the testing process ► If you haven’t tested the code your customers probably will Application profiling can reveal performance bottlenecks ► Where is the CPU being used? ► Why is my application freezing when certain things happen?
38 out of 48 All content copyright of QNX Software Systems Co. Memory Analysis – Error Discovery Source View Error Report Back Trace
39 out of 48 All content copyright of QNX Software Systems Co. Memory Analysis - Profiling Session Information & File Navigation Source View Back Trace Allocation/Deallocation History
40 out of 48 All content copyright of QNX Software Systems Co. Memory Analysis - Profiling Timeline View Details Memory allocation request histogram
41 out of 48 All content copyright of QNX Software Systems Co. Memory Analysis - Profiling Memory Usage with Overhead Memory Usage Vs Time Trace Details
42 out of 48 All content copyright of QNX Software Systems Co. Memory Profiling - Optimization Band Histogram (based on memory allocation algorithm) Block Usage Vs Time Trace Details
43 out of 48 All content copyright of QNX Software Systems Co. Code Coverage Source View Session Information & File and Function Navigation Web Report
44 out of 48 All content copyright of QNX Software Systems Co. Code Coverage – Web Report File & Function Navigation Coverage Statistics Source View
45 out of 48 All content copyright of QNX Software Systems Co. Performance - Application Profiling Session CPU Usage Summary Call Graph Source View Detail Per Thread Usage
QNX® Momentics® Development Suite Multi-core System Development
47 out of 48 All content copyright of QNX Software Systems Co. Symmetric Multiprocessing for Multi-core Systems Highly scalable supporting multiple processing cores seamlessly without code modification One OS “sees all” and handles all resource sharing / arbitration issues Dynamic load balancing can handle processing bursts with OS controlled thread scheduling High performance inter-core messaging and thread synchronization Core-to-core application synchronization using POSIX OS primitives System wide statistics / information gathering capability for performance optimizations, debugging, etc. CPU System Interconnect Cache I/O Memory Controller I/O Memory QNX Neutrino Applications
48 out of 48 All content copyright of QNX Software Systems Co. Multi-core System Profiling Observe CPU Utilization per Node Find Compute- intensive Processes
49 out of 48 All content copyright of QNX Software Systems Co. Exploiting Parallelism – Application Profiling Use call graph to find CPU usage – candidates for parallelization
50 out of 48 All content copyright of QNX Software Systems Co. Multithreading Compute Intensive Operations Single threaded application ► Several compute- intensive functions ► Identified through profiling Create worker threads for compute-intensive functions ► Neutrino OS will schedule to multiple CPUs ► Improve throughput
51 out of 48 All content copyright of QNX Software Systems Co. Monitor Thread Migration/Inter-core Communication Monitor application after parallelization ► Watch for heavy thread migration ► Watch for heavy IPC
52 out of 48 All content copyright of QNX Software Systems Co. Bound Multiprocessing Set CPU affinity for processes and threads ► Lock down thread/process to CPU
QNX® Momentics® Development Suite Embedding the Operating System and Applications
54 out of 48 All content copyright of QNX Software Systems Co. Embedding the OS and Applications Embedded systems require operating system and applications to be bundled into a boot image Tools are needed to simplify the work of creating a boot image QNX Momentics provides the System Builder which provides tools in Eclipse to: ► Create boot image from OS, binaries, libraries and DLLs ► Startup script editing ► Built-in TFTP server ► Serial terminal
55 out of 48 All content copyright of QNX Software Systems Co. Embedding the OS - System Builder
56 out of 48 All content copyright of QNX Software Systems Co. Embedding the OS - System Builder Image Navigator Binary Inspector Binary and File System Builder Built-in TFTP Server Serial Terminal
57 out of 48 All content copyright of QNX Software Systems Co. Embedding the OS – Image Builder Binaries, Libraries, DLLs, etc. Boot File System Structure
58 out of 48 All content copyright of QNX Software Systems Co. Summary QNX is a leading and active contributor to Eclipse and the CDT Embedded development requires more than basic IDE functionality ► Target management ► Embedded Debugging ► System Profiling ► Application Analysis ► Tools ready for Multi-Core Development QNX Momentics Development Suite is open, extensible and ready for embedded development
Thank you! Questions and Answers