iApplianceWeb.com

EE Times Network
News Flash Appliance Insights Appliance Directory Standards in IA Webcasts


 

Embedix SDK 2.0 Evaluation Part 1

By Edmund Troche
iApplianceWeb
(08/20/01, 06:48:41 PM EDT)

In the summer of 1998, Caldera Systems, Inc. spun off Lineo as an embedded Linux company. Since then, Lineo has positioned itself as a leader in the embedded technology sector. Lineo has continued its growth with more than 325 employees worldwide. Bryan Sparks, current President & CEO and co-founder of Caldera Systems, Inc., established Lineo, Inc., in order to focus development, marketing, and sales efforts on the embedded systems market. At this point Lineo remains privately owned.

Lineo provides products for embedded systems, real-time, and high availability solutions that include software, hardware reference designs, and professional services. The company's product line includes: Embedix, embedded Linux system software; uClinux, embedded Linux for MMU-less processors; SecureEdge, Linux-based Internet appliances, including VPN Internet routers, network attached storage and firewalls; RTXC, general purpose and DSP real-time operating system; BeaconSuite, x86 development toolkit; RTXC Quadros, a real-time operating system for multi-processor devices; and Availix, mission-critical high availability Linux cluster solutions. The first version of Embedix was released in January 2000.

Lineo provides these technologies to OEMs focusing on the following vertical areas:

Digital Media Linux-based digital solutions for the interactive digital TV market
Networking and Communications VPN Internet routers, firewalls, modems, switches, gateways, network attached storage, high availability for Compact PCI systesm
Smart Handheld Devices PDAs, mobile phones, entertainment systems, scanners

Lineo's forward-looking focus on embedded design has made Embedix SDK2.0 a product offering that has much to offer to the embedded OS community.

Introduction
Embedix is a family of products that includes: Embedix SDK, Embedix BDP, Embedix RM, and Embedix RealTime. Embedix SDK 2.0 allows users to configure, customize, and deploy embedded Linux software for a variety of processors. Supported processors include: x86, Power PC, MIPS, ARM, Strong ARM, and SuperH. It provides a GNU-based toolchain to cross-compile and debug applications and the kernel. The kernel debugger is based on KGDB and supports serial and Ethernet interfaces, although the serial interface is regarded as unstable, according to the included documentation. The GNU GCC compiler version is 2.95.3, which, according to the Documentation/Changes file in the Linux source tree, is a recommended version for compiling the kernel. Embedix SDK 2.0 also includes Metrowerks CodeWarrior version 4.1 for Linux.

More information about CodeWarrior is available at the Metrowerks Website. "A Comparison of Linux Integrated Development Environments" also provides a comparison of Linux IDEs, which includes CodeWarrior.

Because the documentation claims that Embedix SDK 2.0 can be hosted in the most popular Linux distributions (distribution-independent), Embedix was installed and run in three different distributions, RedHat 7.1, SuSE 7.1, and Caldera OpenLinux eDesktop 2.4, and it seemed to install and run without problems. The installation documentation also mentions RedHat 6.2 and SuSE 7.0 as compatible distributions. Further, Embedix SDK 2.0 includes Caldera OpenLinux eDesktop 2.4 in case no other distribution is available during install.

The Embedix SDK 2.0 includes tools, debugger and trace facility, and modules that support hard real-time applications. One of the main issues with embedded OSs is the footprint. Embedix SDK 2.0 includes LIPO, which is a tool that allows you to reduce the size of shared libraries. If no executable uses a particular shared library, LIPO will identify it and remove it from the target's install file system. This can represent a significant reduction in footprint. LIPO is usually invoked through the Target Wizard, which handles configuration, customization, build, and deployment functions.

The important aspects of configuration are handling dependencies and resolving conflicts. The Target Wizard provides a graphical representation of packages and gives the user immediate feedback, showing where and what conflicts and dependencies exist for the configuration. This is all driven by a set of Embedix Component Description (ECD) files, which contain, among other things, the individual packages dependencies. Once the dependencies and conflicts are resolved, the target's distribution may be built. The build process is driven by the Target Wizard and controlled by Lineo Build Control (LBC) files.

Details of the ECD and LBC files will be covered in the second part of this article. The kernel modules and patches for the real time support are based on RTAI 24.1.4. The Linux kernel version is 2.4.5-pre1, the kernel version 2.4.4 with the 2.4.5-pre1 patch applied. There is also a version of the Embedix SDK that is hosted on a Microsoft Windows Platform (NT4.0 or 2000).

The list price for Embedix SDK 2.0 is $4995.00 for a single developer license. The Embedix SDK 1.2 for Windows lists for $5495.00 -- notice this is not for 2.0, the latest version available. For detailed specifications of the product go to http://www.lineo.com/products/embedix_sdk/datasheet.html for the Embedix SDK 2.0 Data Sheet.

Installation
The documentation specifies the following host machine system requirements:

Hardware:
· 64 MB RAM minimum (128MB or greater recommended)
· Pentium processor minimum (Pentium II/K6, 400 MHz or greater recommended)
· 1.5GB disk space minimum for installation only, and an addition 2.0GB or more for project storage.

Software
· Linux distribution, MS Windows NT 4.0 or MS Windows 2000

This evaluation was conducted on a system with the following configuration:

Hardware
· 256 MB RAM
· Pentium III 450 MHz
· 8.5 GB of disk space

Software
· RedHat 7.1

As you can see, the system used for the evaluation is not exactly a screamer by today's standards. Nevertheless, there were no perceived performance problems.

The installation process started with the Linux distribution. Instructions for installing the various distributions will be different, but there are some things to keep in mind. First, the disk should be partitioned appropriately. The 8.5GB HD was partitioned as follows:

Mount Point Size
/home 2.0GB
/ 1.0GB
/opt 5.0GB

This only adds up to approximately 8GB, so the rest went to the swap partition. Linux is a virtual memory system, just like MS Windows NT and many other OSs. Notice the partitions are named by their mount points, not by the actual device partition name (e.g. /dev/hda1). During the installation of your Linux distribution, you will have the opportunity to add partitions, and specify their size and mount point.

The "/opt" partition is where Embedix SDK 2.0 will be installed. Whenever a new project is created, a new directory structure is created under /opt/Embedix/home/{user_name}/project/{project_name}. For example, if user "embedded" is logged in and creates a Target Wizard project named "TS2800," there will be a directory tree created in "/opt/Embedix/home/embedded/project/TS2800." This is where all source files and compile results will be kept. As an example, a typical build can consume 700MB of the "/opt" partition. There are also some other packages that will install in "/opt" so you want to leave some extra space free.

The "/home" partition contains the user accounts. During the installation process, you will need to create some user accounts, other than root. The installation documentation fails to mention this, but if there are no other accounts created, the installation will fail. Unfortunately, this is not exactly obvious since the error message presented by the installer fails to shed light as to the possible cause. Later on, you will realize that the reason is that the Target Wizard will not run under "root." There can be several non-root accounts registered (during install) to use Embedix SDK 2.0.

This is a summary of the options and time required for installing Embedix SDK 2.0 under RedHat Linux 7.1.

- PS/2 2 Btn Mouse
- 104-key Keybd
- Disk Druid
      Partitions:
        + /home (2.0GB)
        + / (1.0GB)
        + /opt (5.0GB)
- Format partitions (check for bad blocks)
- LILO on MBR
- DHCP
- Activate eth0 on boot
- Security medium
- Language English (USA)
- UTC 6- Central w/Daylight Savings
- Set password for root
- Create account "embedded"
- Enable MD5 passwd
- Enable shadow passwords
- Select
     Support
     Window System
     KDE
     Mail/WWW/News Tools
     DOS/Windows Connectivity
     Networked Workstation
     NFS Server
     SMB Server
     Anonymous FTP Server
     Development
     Kernel Development
     Utilities
- Select X Configuration (Mach64)
- Select Monitor

The installation time for RedHat Linux 7.1 was 32 minutes. A good portion of this time was taken up by the formatting of the partitions, since the "check for bad blocks" option was enabled. The Embedix SDK 2.0 and BSP (Board Support Package) total installation time was 7 minutes. So, you can start with a pristine machine and install everything you need to get started with Embedix SDK 2.0 in about 39 minutes or less (depending on packages you select and HD bad block check). MetroWerks CodeWarrior may be installed, even though it is not required for building or debugging.

Once everything is installed, users can start creating projects to target their systems. Users of Embedix SDK versions 1.0, 1.01 or 1.2 may utilize existing projects under version 2.0, but they require manual intervention. However, since this was not attempted in this case, it cannot be confirmed.

Creating Projects
One of the advantages of using Embedix is that it provides the Target Wizard, which performs dependencies checking to make sure that the kernel, commands, and utilities built will operate correctly once Embedix is installed in a target system. Configuration, customization, build, and deployment functions are all performed and managed through the Target Wizard.

To get started with the Target Wizard you must create a project. First login to Linux under a user account created for employing Embedix SDK 2.0. According to the installation described above, this account would be "embedded," but any user account registered with Embedix during installation will work. Once you are in, start a terminal program (e.g. xterm), and type "tw". This will bring up the Target Wizard (see Fig. 1).

No Project
Figure 1

At this point, select the menu bar option "Project" and click on New (or Ctrl+N). A dialog box will pop up and prompt you for the project base directory and project name (see Fig 2). The base directory will show the "/home/{user_name}/project" directory, in this particular case, it would be "/home/embedded/project". The project name must be a valid Linux directory name. For the purpose of this evaluation, let's name the project TS2800.

Project Name and Location
Figure 2

After this is filled in, press "Next." Notice that the dialog boxes have a "Help" button, which brings down a browser window with help information. Make sure that Netscape is installed in the "/usr/bin" directory, otherwise the Target Wizard will not find it. Another way to get around this is by modifying the BROWSER entry in the "/etc/twdefault"s file. You must have "root" privileges to change this file. The next dialog box allows you to set build options for your project (see Fig 3). One of the build options is to allow for building the project even when there are conflicts. Other options include, building when errors occur and producing build logs. Build logs are very convenient since they spell out the whole build process results.

Build Options
Figure 3

To finish creating the project, press "Next," and select the target platform for the project. For the purpose of this project, select "Generic x86 board."

Target Options
Figure 4

After you are done with this dialog, the project is created. You will see a dialog letting you know that the project creation is in progress and that it could take minutes. The host system takes about a minute to create the project. Creating this project takes about 66MB of hard disk space. At this point we could configure our project by selecting libraries, applications, utilities, kernel options, etc.

There are ECD and LBC files that contain information about packages and build procedures. Most likely, you will want to add your software to Embedix, whether it is a library, application, or patch to existing sources. Therefore, you will have to become familiarized with both the ECD and LBC files at some point. Part 2 of this evaluation will show some examples of ECD files, LBC files, build configuration, and deployment. One of the examples will show how to bring up to date the Busybox package distributed with Embedix. The Busybox version distributed in Embedix is 0.51; the current version is .60. In addition, we will add an LCD display device driver based on the Hitachi 44780 controller, written by the author of the article. The source to the driver, ECD and LBC will also be made available. Finally, a patch to the kernel will be added to replace the CS8900 Ethernet controller driver. Once all of these modifications are put in place, we will configure Embedix and deploy the software to be installed in a Technologic Systems TS2800 board.

LINUX is a registered trademark of Linus Torvalds.
CodeWarrior and Metrowerks are registered trademarks of Metrowerks Corporation.
Lineo and Embedix are registered trademarks of Lineo, Inc.
Microsoft, Windows, Windows NT and Windows 2000 are either registered trademarks or trademarks of Microsoft Corporation.




Copyright © 2004 Appliance-Lab
Terms and Conditions
Privacy Statement