ARM DS-5 Streamline

= Introduction =

DS-5 is a tool available from ARM which provides an Eclipse user interface for debugging and perform profiling analysis. The profiling tool is provided as an extention via the Streamline Eclipse plugin. In this document, I will try to describe how to prepare an OMAP4 environment and also point to the documentation on how to install the tool. Moreover, as I went through adding more features to the tool, I'll go through the steps on how to add my extention too.

= Prepare an OMAP4 board =

The best is use an OMAP4 Pandaboard and install the latest available software to you. It can be either a TI Internal Ubuntu release or just the latest Ubuntu software. All the information can be found here: http://omapedia.org/wiki/OMAP_Ubuntu_Main. In the following section, you can also find information on how to install a Linaro image for Pandaboard, which is also Ubuntu based. This information is contained in David Stubbs' blog.

Once you have a Pandaboard up and running you can go ahead.

= DS-5 installation and setup =

First, on your Ubuntu Desktop PC, you will need to install DS-5 software tool.
 * Either use the full version (license or trial period): http://www.arm.com/products/tools/software-tools/ds-5/index.php
 * Or you can also use the community version: http://blogs.arm.com/software-enablement/633-arm-ds-5-community-edition-enabling-the-android-developer-community

All the steps are very well described in David Stubbs' blog: http://blogs.arm.com/software-enablement/545-debug-performance-analysis-of-linaro-images-with-arm-development-studio-5/

= Adding a new feature to ARM Streamline =

As an exercise, I decided to go through the gator kernel module source code and see if I could add an interesting feature. I found one that was missing for me: the CPU frequency. Actually, it would be an interesting value to display in the UI as on OMAP4 boards we support different frequency levels depending on the system load. Following the ARM recommendations (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka14989.html), I took the mmaped.c sample code and made my proper event tracking cpufreq.c. All the source code is available here: https://gitorious.org/ubuntu-omap/arm-gator

Files that have been changed compared to original Linaro source code DS5 v5.8: http://git.linaro.org/gitweb?p=arm/ds5/gator.git;a=summary


 * https://gitorious.org/ubuntu-omap/arm-gator/blobs/master/driver/gator_events_cpufreq.c
 * https://gitorious.org/ubuntu-omap/arm-gator/blobs/master/daemon/events-omap.xml

Note that DS5 version 5.8 has an issue with displaying constant values. The issue is acknowledged by ARM engineers and a fix should come in versions after 5.9 release. See community support thread here: http://forums.arm.com/index.php?/topic/15510-ds-5-gator-module-customization/page__gopid__38049#entry38049

= Other useful features =

Streamline annotate is an interesting feature too in the sense that it doesn't require much programming and changes. Basically in your target source code, you'll just need to open a character device and write to it. On the PC side, it will handle all the hard part for you and display the information in a friendly manner. All the details and exemples are available here: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka14989.html