As the product manager for TimeStorm, I am often asked the following two questions about TimeStorm, our Integrated Development Environment (IDE):
- Why would I need an integrated development environment?
- What can I do with TimeStorm that I cannot do using Eclipse with available open source plugins?
There is no simple answer to these questions. Or is there?
When developing products, each developer has a goal such as: “to develop an application in C or C++ or Python to meet certain requirements,” “to port a Linux BSP to my custom hardware,” “to develop/adjust a device driver for a specific product use,” or “to develop a set of libraries that provide unified APIs for a product.”
I could go on and on, but the point is that development tasks vary as do the development processes needed to get there.
On top of it, developers have their own preferences for how to accomplish specific tasks — preferences that have often times resulted from experiences they’ve had working on various project throughout their careers. Many developers prefer to use command line, where each development process requires different tools. Others seek an easy-to-use integrated environment, which can be used to support multiple development processes and use cases.
When answering the original two questions posed, I focused on developers who seek an integrated development environment. So, wearing this hat, let’s look at some of the reasons why you would use TimeStorm IDE.
Do I need an IDE for embedded Linux development?
Working with embedded Linux in a cross-architecture setting means that development processes will be a bit more complex compared to Linux development Linux for a local host from the start.
The compilation process requires a cross-toolchain which compiles software for a target system. Such toolchains are provided by SDKs that can be obtained from various sources. These SDKs have to be installed within my IDE so the toolchains and associated libraries can be used at different stages of the development process. Typically, when an SDK is updated, I have to either remove the old one and install the new SDK in my IDE or install the new and switch from current to the new one.
When working with an IDE, I don’t want to have to be bothered by the whole mechanism of using an SDK as explained in the previous paragraph. I simply want an SDK to be available in my IDE and show up at various stages of the development process.
So having an IDE that integrates the SDK management makes it easy-to-use.
So, why not simply use an Eclipse project and available open source plugins?
The biggest reason lies in the word integrated. We expect an IDE to support our development without us having to spend time to realign the tool for every task we perform.
Open source plugins that are available for Eclipse are, for the most part, designed well to perform the one task they are supposed to perform. As an example, let’s look at the Yocto Eclipse plugin. It is designed to introduce a Yocto SDK in the Eclipse environment and make it available in the compilation process.
When using the Yocto plugin, you have to:
- Install the plugin manually
- Introduce the desired SDK to the plugin by manually entering several paths and settings
- Redo the previous step every time a new SDK is used
In terms of flexibility, with the Yocto plugin you:
- Have only a single SDK definition in the workspace, so you can’t switch back and forth between multiple SDKs within a project
- Have to use the same toolchain for different projects within the same workspace
- Don’t have the ability to easily test the same application on multiple target systems (reference and the product hardware) with different SDKs
The plugin does what it is designed for, but it lacks flexibility and doesn’t deliver a level of integration that makes it easy-to-use.
Figure 1: TimeStorm auto-detects Yocto and Timesys Factory SDKs
TimeStorm auto-detects SDKs from Yocto Project or Timesys’ Factory build systems (Figure 1). It easily supports multiple SDKs installed on a host development PC. And it gives you the power to choose and switch an SDK in any TimeStorm project you develop.
The SDK support in TimeStorm is just one area where the level of integration outperforms standard Eclipse with open source plugins.
Figure 2: Timesys’ TimeStorm Integrated Development Environment (IDE)
TimeStorm — an integrated solution for embedded Linux development
TimeStorm engineers have been analyzing Eclipse and open source plugins and have developed additional code and extensions (see Figure 2) to either make open source Eclipse plugins more adapted to the embedded Linux development process, or to develop new functionality that addresses developers’ needs and expectations.
On this note, TimeStorm supports multiple project types, including:
- Executable application
- Shared or Static library
- CMake managed projects
- Linux kernel project
- Device driver project
- U-Boot project
- Python project
Timesys engineers have also done a lot of integration around the functionality TimeStorm brings to developers (Figure 2). Our engineers have optimized various development processes to support the multiple goals embedded engineers have to meet when building Linux based products. Using TimeStorm, you can write code, easily debug it, run code coverage analysis, and profile a developed application or the entire Linux system. You can analyze memory performance and identify memory leaks. And you can also get a better understanding of application/system execution over time by generating a system trace. All this can be done from within a single IDE that works well with SDKs and multiple remote target systems.
TimeStorm IDE provides embedded Linux developers with a well-integrated development environment that goes beyond the level of functionality and integration provided by standard Eclipse and open source plugins.
A note from the author:
This blog is the first in a series of blogs aimed at introducing you to the various features integrated into TimeStorm and how they assist with day-to-day embedded Linux application- and system-level development. During this series we’ll also introduce you to TimeStorm’s functionality which includes profiling, system tracing and memory analysis as well as bootloader, Linux kernel and device driver development. And we’ll discuss how TimeStorm delivers a better development workflow when integrated with GIT and your Continuous Integration systems.
Timesys has extensive experience with embedded system development and lifecycle management. Timesys has been instrumental in working with global leader semiconductor manufacturers with smart, quick and quality solutions for highly complex systems with accelerated product innovation and multiple product variants.