In one of the Monday presentations at the Cadence DAC Theater, Ronan Synnott from ARM talked about how ARM Software Development Tools such as DS-5 interact with the Cadence System Development Suite. I thought it would be good to provide a more detailed example of how DS-5 interacts with the Cadence Virtual System Platform.
Some time ago, we decided that Eclipse was the best infrastructure to build our software development environment for VSP. Today's DAC presentation by Ronan and this more detailed description demonstrate the true benefits of Eclipse.
First, let me say that the EDA software ecosystem is a complex web of connections, alliances, interoperability, partnerships, and coopetition. It is an environment of proprietary software and open standards where competitors often need to share software with each other for interoperability purposes. For me, the DS-5 connection with VSP is something completely new, where multiple software tools not just co-exist, but do it in such as way that it's almost impossible to tell which parts came from which vendor, and where the other vendor may not even know this is being done.
The Cadence Virtual System Platform offers an Eclipse environment for software developers working with virtual platforms. It connects directly to Cadence simulators, and provides not only the standard software debugging features you would expect from Eclipse CDT, but much more in terms of hardware awareness. This includes tracing of both hardware and software events, visualization of the system memory map, register values and fields in each hardware model, breakpoints on hardware events, and more. One goal is to make hardware-dependent software development much easier while leveraging the power and familiarity of Eclipse.
Let's take an example virtual platform running Android 4.2, also known as Jelly Bean. This virtual platform runs a Linux 3.4 kernel from source.android.com, and for this demonstration I will use a SystemC model of the Goldfish platform. This is similar to the Android emulator, but done in SystemC and used for training purposes.
By itself the VSP Eclipse environment is pretty good at working with the kernel and drivers and a good tool for Android platform work.
Next I downloaded the ARM DS-5 Community Edition so I could add the StreamlineTM performance analyzer to the environment. DS-5 easily installs as a plugin into the Eclipse I'm already running using simple instructions.
After DS-5 was ready, I installed the Android Eclipse plugin for DDMS (Dalvik Debug Monitor Server), which will also help to analyze the running Android system.
The result is a single Eclipse environment with multiple perspectives that when used together provide a powerful environment for Android platform work.
Here is a screenshot of my "open perspective" dialog that shows all of the things installed.
For Android, Streamline requires the gator daemon and device driver. These can be obtained from the Linaro git server or the ARM website. I followed the instructions to compile the driver against my Android Linux kernel and then used the Android NDK to compile the gator daemon. You can find all of the details on how to compile the driver and daemon on the ARM Infocenter. Just search for "gator daemon". The info is also on the Linaro git server.
I could have installed the driver and daemon using Eclipse also, but I did not. I used standard adb connection and command line. The virtual platform uses port forwarding to connect ports in the virtual platform to host computer ports. To set up an adb connection, I ran the following commands in the Android shell to use port 1234 of the Android system.
Then on my host machine with the Android SDK installed, I tested the adb connection to port 2345 on the host, which is forwarded to 1234 on the target.
Simple "adb push" commands can be used to transfer the gatord (daemon) and gator.ko (device driver).
Here's how I started the gator daemon on port 80:
Finally, I connected Streamline to localhost port 10080, which is forwarded to port 80 in the target, and hit the button in Eclipse to start data collection by Streamline.
Click here to see VSP debug and Streamline in the same window.
For good measure, I can also connect DDMS to see the Android activity from the Android SDK perspective.
Finally, the home screen:
There are way too many features to describe, but the point of this story is that the plug-in architecture of Eclipse provides as easy way to add plugins such as ARM DS-5 and DDMS to provide a full software development environment in which it is almost impossible to tell that the features come from different companies like ARM and Cadence. It's an encouraging story which shows how tools should actually work together.