CDC Build System: Target Devices

The previous section showed how to use a host Linux x86/PC to build and test phoneME Advanced MR1. Here we'll show how to use the CDC build system to generate executable versions of the CDC Java runtime environment for different target devices.

As a technology, phoneME Advanced can address a variety of target devices. So in this section we will describe the common features of these target devices to help with understanding what kinds of devices phoneME Advanced is appropriate for. Later, we'll describe how to setup the build system for two example target devices.


Common Target Device Features

Target devices for phoneME Advanced technology are sometimes called resource-constrained devices. The table below describes some of the main features of these target devices:

Category Description
CPU32-bit RISC w/ MMU.
OS ANSI standard library.
POSIX thread library.
Berkeley socket library.
Uniform memory address space.
graphicsThread-safe GUI library.

The memory requirements for target devices vary too much to quote a helpful statistic. However, it may be useful to note that phoneME Advanced was designed to execute out of ROM for memory-constrained applications.

These requirements are described in greater detail in the CDC Porting Guide.


Target Build Tool Requirements

Like the host build tools, the target build tools can be discovered by the CDC build system with the CVM_TARGET_TOOLS_PREFIX. This build system variable helps identify the required target build tools described in the following table:

Description Example
C compilermips-cobalt-linux-gcc
C++ compilermips-cobalt-linux-g++
assemblermips-cobalt-linux-as
linkermips-cobalt-linux-gcc
library archive indexermips-cobalt-linux-ranlib
library archive utilitymips-cobalt-linux-ar

In some cases, these tools can be combined. For example, with the Linux x86/PC example in the host build section, gcc takes on the role of the C compiler, the assembler and the linker.

When building phoneME Advanced for a new target platform, you must first acquire target build tools that are appropriate for the target platform. In many cases, particularly for Linux variants, this requirement can be satisfied with a cross-compiler toolchain based on gcc and binutils. The examples below are based on that approach, but for some platforms you'll need to get these tools from a board vendor or partner.

NOTE: The CDC build system has been tested with several recent versions of the GCC compiler, especially 4.x and 3.x.


Target Device Notes

The phoneME Advanced MR1 technology has been built and tested with Linux/x86 as well as two sample target devices: the Sharp Zaurus and the Cobalt Qube 2. While it is possible to build and test with these devices, the device support in phoneME Advanced MR2 technology is more robust and will continue to evolve to support new devices. So the source and build directories to support these target devices are included for reference purposes.

The following notes describe the target device support in phoneME Advanced MR1.

Each target device for phoneME Advanced reflects an OS/CPU combination that requires certain resources in the development environment:

  • A compatible target compiler.

  • Target system libraries and header files.

  • [Optional] A target-specific version of the Qt library and header files.

  • A set of UNIX build utilities compatible with the CDC build system.

The first two of these requirements are usually provided by the device vendor. For example, a development board vendor might provide an SDK with a compiler, libraries and header files for a specific development board or they might make reference to a third-party toolchain. Qt is included as a prebuilt component for most Linux distributions. But building this library for an alternate target device requires the same kind of SDK resources as described above. The procedures to build Qt are described in the Qt reference documentation. Finally, the UNIX utilities needed by the CDC build system are provided by most current Linux distributions like Ubuntu.

The source code layout and build system procedures for target devices are described in the CDC Build System Guide.