Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

DSDP/TML/TmLAdditionalNotes

< DSDP‎ | TML

The Spectrum of Mobile Linux Systems

While Linux is a mature operating system that has been adopted by manufacturers of mobile devices, the spectrum of such mobile systems spans a wide range of software and hardware capabilities.

At one end of the spectrum, one finds simpler microcontroller boards that are usually designed and programmed for specific purposes and run specialized versions of Linux such as uCLinux.

At the other end of the spectrum, one finds powerful mobile devices that have more memory and processing power than desktop computers of just a few years ago. Such general purpose devices are true “pocket computers” and often run full-fledged Linux distributions based on e.g. Red Hat or Debian.

In spite of these differences, if one takes a birds-eye view of the entire spectrum one can find many commonalities that one can take advantage of to leverage the power and quality of mobile Linux software.

Why Tools for Mobile Linux?

A consistent set of tools for development of software for mobile Linux devices is needed to take advantage of Linux commonalities and improve the quality and power of applications available for such devices.

The common characteristics of application development for mobile Linux devices are based on the following points:

  • Because compilation may be impractical on a mobile Linux device, e.g. on a specific-purpose microcontroller device, cross compilation on a host system is often required or desirable. This is widely known.
  • There is a feedback loop between software and hardware development. While mobile hardware is always designed within given technical and cost constraints, it is also designed to meet certain capability and performance goals. More often than not, such capability and performance goals are closely related to the software it is intended to run. Therefore, not only is there a feedback loop between software and hardware development, but hardware prototypes are often not yet available when software developers start their work. Emulation of mobile device environments is a reasonable solution that allows software developers to start working early, even though actual performance measurements must be taken on the actual hardware.
  • High-end mobile Linux devices support more sophisticated network and enterprise applications. In order to streamline development of such applications, even when hardware prototypes and perhaps specialized servers are not yet available, tools must provide support for development and testing of end-to-end enterprise applications. Emulation of mobile device environments combined with simulation of service providers and/or specialized services allows developers to sort out many of the problems involved in this kind of software.
  • Native applications can unleash the potential of Linux-based systems in a way that Java (J2ME) applications cannot (and are not intended to). However, development of such applications is typically more difficult as it involves more extensive APIs and more specific functionalities. In addition to this, cross-compilation toolchains and system-specific libraries and drivers make it somewhat different from C/C++ development in general. Therefore, it is highly desirable to have development environments that are at the same time user friendly for the beginner and powerful and customizable for the expert, with full support to all the characteristics of this kind of development activity.

What do We Need?

In a nutshell, every developer of software for mobile Linux devices could greatly take advantage of a development environment with the following characteristics:

  • user-friendly for the beginner;
  • powerful and customizable for the expert;
  • straightforward support to cross compilation and device-specific toolchains;
  • straightforward support to different device-specific libraries;
  • convenient management of multiple toolchains and device-specific libraries;
  • support to cross compilation of a single application for multiple targets (simultaneously or not);
  • powerful and easy-to-use device emulation with support to deployment, testing and debugging of applications;
  • deployment of applications to actual devices with support to on-device debugging and performance profiling;
  • integrated simulation of service providers and servers for end-to-end testing of enterprise applications.

Why Eclipse?

Eclipse has become a de facto standard for creation of integrated development environments. The plug-in/extension point mechanism for extensibility and the availability of plug-ins for specific tasks allows any IDE to take advantage of existing plug-ins rather than implement than from scratch or adapt them.

Eclipse is supported by a strong open source community which ensures that contributed code is extensively tested and is general enough to be useful to a large part of the community. Indeed, open source code typically provides the underlying infrastructure components whose functionalities and architecture have become stable over the years, thus freeing commercial developers to focus on value-added applications.

Furthermore, there are quite a few successful projects that support development of C/C++ applications and/or embedded applications, such as CDT (C/C++ Development Tools), DSDP (Device Software Development Project) and TPTP (Test and Performance Target Platform).

Putting Together the Pieces of the Puzzle

The CDT project supports development of C/C++ applications. The Managed Make feature provides a graphical front-end to the specification of the build process by means of a makefile, while the Standard Make feature supports the traditional makefile approach. CDT supports different toolchains by allowing the user to specify the build tools (compiler, linker etc.) used to build the application executable. CDT also provides debugging functionalities and other nice features that are similar to their Java counterparts, such as syntax highlighting, code outline and so on.

DSDP/TM (Target Management subproject) provides a framework to support management of remote and local target systems, allowing the user to execute commands, navigate filesystems and deploy applications to target systems, regardless of whether they are emulators or actual devices.

The TPTP project provides support for performance profiling.

If one places these “pieces” over a board that represents the wishlist that was put together in section 3, it turns out that there are some uncovered areas.

The purpose of the TmL (Tools for Mobile Linux) project is to provide the infrastructure for the missing pieces in the puzzle.

Examples of uncovered areas are:

  • convenient management of multiple toolchains and device-specific libraries;
  • support to cross compilation of a single application for multiple targets (simultaneously or not);
  • powerful and easy-to-use device emulation with support to deployment, testing and debugging of applications;
  • deployment of applications to actual devices with support to on-device debugging and performance profiling;
  • integrated simulation of service providers and servers for end-to-end testing of enterprise applications.

Some of the areas listed above are partially covered by the existing projects, but require extensions and/or adaptation to satisfy our needs. In this case, changes shall be made to CDT and DSDP and any other projects and contributed back to the open source community.

For instance, management of multiple toolchains and device-specific libraries and support to compilation for multiple targets are candidates for CDT contributions.

On the other hand, DSDP/TM provides some of the infrastructure required for handling emulators and mobile Linux devices, but additional infrastructure is likely to be required, particularly for emulators. The latter shall be implemented in the scope of the TmL project.

Plans for TmL

The TmL project shall eventually span the entire development cycle.

  • Define: system software architecture
  • Design: software design
  • GUI design and code generation (possibly using DSDP/NAB)
  • Development: coding (using CDT)
  • Building: compiling and linking the application for multiple targets (using CDT)
  • Testing: emulator and on-device testing (using DSDP/TM and TPTP)
  • Debugging: emulator and on-device debugging (using DSDP/TM, DSDP/DD and TPTP)
  • Performance profiling: on-device profiling (using TPTP)
  • Testing of enterprise applications: using several emulators and simulated service providers
  • Final deployment: application signing

Initial Focus for the TmL Project

Initially the TmL project shall focus on the following items:

  • Development: coding (using CDT)
  • Building: compiling and linking the application for multiple targets, using CDT + extensions including toolchain and library management. These are planned contributions to the CDT project.
  • Testing: emulator and on-device testing, using DSDP/TM for target management and file transfer and TmL for emulator-specific support.

But contributions are accepted for all areas outlined above.

The most important TmL requirements that must be kept in mind are:

  • TmL must neither require nor assume that the host platform is a Linux platform. It can be any platform where Eclipse is supported.
  • Only the target platform is supposed to be a (mobile) device running some flavour of Linux (regardless of whether it is mainstream or customized).

Business Case for the TmL Project

Linux is widely recognized as a growing platform for mobile computing. As a mature desktop platform, it has the definite advantage of a broad collection of infrastructure components (such as standard Linux and uCLinux kernels, device drivers, and so on) and tools that are provided by its large base of skilled developers and almost entirely available as open source.

The fact that Linux comes from the desktop world adds another advantage that may not be at all obvious. As mobile devices become increasingly more powerful with regard to processing power and storage capacity, one can discern the inevitable convergence of mobile computing and desktop computing looming on the future horizon, leading to a unified model of personal ubiquitous computing. Since Linux is no stranger to either of these worlds, is shall have a definite advantage.

The key to success is to jump in and harness all the potential linked to Linux. TmL and related Eclipse open source projects (CDT, DSDP etc.) are the perfect arena for companies to contribute to synergistically create a robust code base for the Linux application development infrastructure. Each company shall then be able to focus on development of value-added products and services with lower costs by relying on the infrastructure available as open source.

Enterprise applications play an important role in the evolutionary trend leading from mobile computing to personal ubiquitous computing. Native applications are the fundamental building blocks of such sophisticated applications. In the near future the TmL project shall provide support for testing of such applications by means of simulated service providers or servers.

Conclusion

Companies shall avoid reinventing the wheel and plunge into open source community efforts to create the best wheel ever. Let’s invent it together, once and for all… and then focus on the customer offering better products and services.

Back to the top