Grasp

Understanding and validating the timing behavior of real-time systems is not trivial. Many real-time operating systems and their development environments do not provide tracing support, and provide only limited visualization, measurements and analysis tools. Grasp is a tool for tracing, visualizing and measuring the behavior of real-time systems. It provides a simple plugin infrastructure for extending Grasp with custom visualization and measurement methods.

We are using Grasp extensively for the development of various extensions for the uC/OS-II real-time operating system. In particular, we have developped a versatile hierarchical scheduling framework. We have been tracing the execution of uC/OS-II applications on a commercial camera platform and inside the OpenRISC simulator. Here you can find more information about the integration of uC/OS-II and the OpenRISC simulator.

Download Grasp

You can download the latest version of Grasp here:

*) To get it running on a 64 bit version of Linux make sure to install ia32-libs.

**) Grasp by Mike Holenderki is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

The download includes several example trace files. Take a look at the example_explained.log trace using your favourite text editor to get started on the Grasp trace format. It contains an explanation of many trace commands and their parameters. Note that it is also a proper trace, so you can open it with Grasp.

Download Grasp Recorder

The Grasp Recorder provides a set of methods for recording a Grasp Trace. These methods are called by the instrumentation code inserted into the traced system. For example, during a context switch the instrumentation code should call a method in the Grasp Recorder to log a preemption of the currently running task. You are free to generate a Grasp Trace however you want, but for your convenience we have implemented a sample Grasp Recorder.

You can download the latest version the Grasp Recorder here:

Contributors

Screenshots

Trace illustrating a video processing application comprised of several tasks (including Network, Decoder and Renderer tasks) executing on a single processor and communicating individual frames of an MPEG video via two shared buffers.


Trace of tasks executing on a dual-core processor sharing a mutex.

Trace of tasks mapped to a deferrable and a polling server executing in a hierarchical scheduling framework.

Publications

Contact

For any questions feel free to contact Mike Holenderski.