A Survey on the Linux CE Operating System Developments

 

Jinsuo Zhang and Sumi Helal

Helal@cise.ufl.edu

Depart of Computer and Information Science and Engineering

University of Florida, Gainesville, FL 32611

 

 

Abstract

In this paper, we survey the development and status of LinuxCE: a linux porting to the small portable devices. Linux, developed by thousands of volunteers around the world, is now the most challenging competitor to Solaris and Windows operating systems. The LinuxCE project, like Linux itself, is being developed by volunteers from all over the world with the mission of creating a version of Linux that can run on "WindowsCE" devices. The development of LinuxCE is carried out simultaneously on all popular WindowsCE architectures such as SH3, MIPS and StrongARM.

1. Overview about Linux, CE, H/PC and P/PC

Personal Digital Assistants (PDA) are becoming the next system battleground after the PC. The appearance of the WindowsCE operating system, and the proliferation of hand-held and Palm computers and other portable devices, produced more impact in this market than one could have thought five years a go. It is expected that the war of the past PC market will begin all over again in the hand-held and portable market. With the increasing popularity of such devices, it is natural to see Linux being ported onto these emerging platforms.

1.1 What is Linux?

Linux is a multi-user, multi-tasking operating system that runs on many platforms, including Intel, Motorola MC68K and DEC Alphas. It implements a superset of the POSIX standard. Linux interoperates well with other operating systems, including Apple, Microsoft and Novell.

Linux supports a wide rage of software, including X Windows, Emacs, and the TCP/IP networking protocols (inlcluding, SLIP/PPP/ISDN). Many people have executed benchmarks on 80486 Linux systems and found them comparable with mid-range workstations from Sun and Digital.

Linux (often pronounced with a short "i" and with the first syllable stressed -LIH-nucks) is freely available and can be copied and redistributed without fees or royalties. The source code for Linux is available on the Internet to anyone who wants it. For additional information, see http://www.linuxresources.com/what.html.

 

1.2 What does "CE" stand for?

The Official explanation for "CE" is: "CE" doesn't represent a single concept, but rather implies a number of Windows CE design precepts, including "Compact, Connectable, Compatible, and Companion." (From Microsoft Website at http://www.microsoft.com/windowsce)

1.3 HandHeld PC (H/PC)

Handheld PCs (H/PC) are one kind of small PDAs, The H/PCs provide the user with a big screen and a small but useable keyboard. User could operate via keyboard, stylus, and even a mouse.

Lots of vendors, including Compaq, Psion, LGI, Hewlett Packard, and Hitachi provide devices in this market. Other portable organizer devices, although similar in appearance and size, are not categorized as H/PCs. This is due to the lack of robust synchronization or integration with enterprise applications within the system.

1.4 Palm-Size PC(P/PC)

Palm-size PCs (P/PC) are smaller than H/PCs and keyboard is not provided for size constraints. Input is through the built-in handwriting recognition and/or a built-in software input panel combined with pen. Palm-held computing devices are small enough to fit into the hand and pocket. This is where its name comes from.

The 3COM Palm and the HandSpring Visor devices are the most famous devices in this market. The other contenders are the devices available from Casio, Everex, and Philips. There is very similar functionality for the applications in these devices: contacts, scheduling, and task management. 3COM devices run PalmOS, whereas all others run a common operating system: Microsoft WindowsCE (or its successor, Pocket PC).

1.5 Communicators

The third category of such portable devices is what is known as communicators. A communicator is a package consisting of a mobile phone with a keyboard and small screen into their cellular telephone, in which some personal information organizer (PIM) applications are provided for convenience. The Symbian consortium, formed by Ericsson, Motorola, Nokia, and Psion Software, is a major player in the communicators market. The objective of this consortium is to establish a standard operating system and a series of applications for the communicator market. The new operating system environment will be based both on the Psion OS, EPOC and on applications from Starfish Software.

The Nokia 9000 communicator is another device and perhaps the first to appear in this market. It uses GeoWork’s GeOS operating system. Recently Qualcomm introduced a product similar to the communicator that combines a mobile phone with a Palm Pilot.

2 Linux CE Overview

According to the LinuxCE organization (http://www.linuxce.org), "the purpose of Linux CE project is to support Linux on many different HandHeld/Palm-sized Computers, i.e. H/PC and/or P/PC. All of the PDAs manufactured to run Windows CE have fairly advanced hardware capabilities, including a fast processor and an MMU, which makes them very suitable for a Linux port."

Currently there are many types of PDA's, including CE based PDA's with MIPS, SH-3, and StrongArm processors. Linux portings for the Palm OS or psion are not included in this project. However, other porting efforts are addressing the Palm and the Psion and will be discussed later in this survey.

The first thought, when Linux porting is mentioned is the device’s instruction set, which varies from a device to the next based on the used processor technology. Currnt processors are listed below.

 

2.1 Handheld PC:

Casio Cassiopeia A-10, A-11, A-20, PA-2500, and PA-2400U

SH3

Compaq Second Generation C-Class (810C, 2010C, 2015C)

MIPS

Ericsson MC-16

SH3

Hitachi First Generation (Windows 1.0 Standard) and Second Generation (HPW-20E8, HPW-200EC)

SH3

Hewlett Packard 320LX, 360LX, 620LX, 660LX

SH3

LG Electronics Phenom, LG Phenom II, LG Phenom Ultra, LG Phenom Express

SH3

NEC Mobile Pro 4xx, 700, 750C

MIPS

Novatel Wireless Contact

SH3

Phillips Velo 1 and 500

MIPS

Sharp Mobilon HC-4000, HC-4100, HC-4100A, HC-4500, HC-4500A, HC-4600

MIPS

 

2.2 Palm-sized PC

BCom Electronics Mars P/PC

MIPS

Casio Cassiopeia E-10, E-11, E-55

MIPS

Everex Freeystyle Associate, Freestyle Manager, Freestyle Executive

MIPS

Hewlett Packard Jornada 428

SH3

Leo Freestyle Associate, Manager, Executive

MIPS

LG Electronics Pocket Phenom

SH3

Palmax PD-300

SH3

Philips Nino 301, 312, 320, 350

MIPS

Samsung Infogear

MIPS

Trogon Palm Power

MIPS

Uniden UniPro PC 100, 100A

MIPS

2.3 Handheld PC Pro:

Featron M800

MIPS

Hewlett Packard 820, 820E Jornada

StrongARM

NEC MobilePro 770, MobilePro 800

MIPS

NTS Computer Systems LTD Dream Writer I.T.

SH3

Samsung eGO Note

MIPS

Sharp Tripad PV-6000, Mobilon Pro PV-5000

MIPS

Vadem Clio

MIPS

2.4 Characteristic of H/PC and P/PC versus Desktop PC

From the above tables, one can see that most H/PC, P/PC use SH3/MIPS/StrongARM processors, instead of the popular desktop Intel x86 series CPU, which is the mainstream where current Linux runs. Furthermore, portable devices are so different from that of desktop computers. Some devices are even integrated into the CPU. The implication of this difference is that porting Linux means that the drivers for these devices must be implemented from scratch. Another difference is memory, which is smaller on the portable devices when compared with that of desktop computers. This means that the applications on the portables have to be compact. Finally, handwriting recognition is an additional requirement on these devices because it could be the only input device for the P/PC.

3 Linux CE Porting Paths

The work for the LinuxCE project can be divided into 3 main categories: kernel porting, libraries porting and applications porting. Each porting category is listed below, followed by detailed descriptions.

Kernel porting:

  1. Bootloader
  2. Basic kernel
  3. Basic drivers ( keyboard/pen input, LCD and CompactFlash cards)
  4. More drivers (sound, ...)

Libraries porting:

  1. Handwriting recognition
  2. GUI
  3. Lightweight database
  4. More...

Application porting:

  1. Installation management
  2. Configuration
  3. Phone/Contacts Database
  4. More...

3.1 BootLoader:

The function of the Bootloader is to do some necessary initialization, load an OS kernel image into RAM, set the CPU into kernel mode (if supported by the CPU), and finally jump to the kernel entry, and then transfers the control to the kernel. There are basically two kinds of bootloader: Software and hardware bootloader.

The software bootloader itself is a WindowsCE application. It is executed under normal WindowsCE like a normal WindowsCE application. Its responsibility is to do some necessary initialization, prepare the H/PC or P/PC's memory, load the kernal from file system, put it to the appropriate place in RAM, pass kernel parameters (either from user input dynamically or using default value) to the kernel, and then transfer the control to kernel. This approach is safer than hacking the hardware, and comes at no cost.

Software bootloader is executed only after normal WindowsCE is booted successfully. Running software bootloader is just like running a common WindowsCE application such as a calculator. The bootloader will be able to boot the kernel from either RAM or a CompactFLASH. The functions SetKMode() and VirtualCopy() from Windows CE SDK (Software development Kit) play a key role in implementing the bootloader. The Bootloader should be able to load and boot the Linux kernel from either an EXT2 or Windows file system (FAT/FAT32).

Currently the tools for compiling application for targeted WindowsCE devices are only available tools from Microsoft. This includes the latest Visual C++ or Visual Basic (version 5 or version 6 or higher) and combined with the WindowsCE development kit.

The hardware bootloader is actually a small piece of code, which is executed automatically upon system power-up or reset. Its main responsibility is to initialize the CPU, the chipset and controllers, and any peripheral devices required on starting WindowsCE. Usually, the bootloader resides in a nonvolatile storage device and its starting address is the CPU's boot sector.

The hardware bootloader for the WindowsCE devices should set up the hardware system in the following order:

  1. Initialized and setup internal CPU control and status registers, coprocessor registers, and memory management unit (MMU) registers.
  2. Initialize and enable the CPU's level 1 and (if any) level 2 cache.
  3. Initialize the DRAM controller and DRAM.
  4. Initialize other miscellaneous chipset.

To work on the hardware bootloader, there is a good tool set called ETK (WindowsCE embedded took kit). The ETK from Microsoft provides skeleton drivers and BootLoader. It is very useful especially for WindowsCE vendors, who want to design a new WindowCE device or write customized hardware bootloader. More information about ETK could be found at Microsoft’s web site at http://www.microsoft.com/windowsce.

There is also another tool set from Microsoft called the Platform Builder (PB) used for the same purpose. Those who are interested in this tool set could visit Microsoft’s website at http://www.microsoft.com/windowsce to get more information.

 

3.2 The Status of Bootloader Development

Work on the bootloader for the LinuxCE project has started and made progress. Some programmer are trying to write a hardware bootloader that would be placed in a ROM replacement, others are working on a software boot loader that could boot a kernel from within WindowsCE. More attention is currently being paid to software bootloaders.

At the time of this literature survey, there are two software bootloaders under development simultaneously. Mihai Spatar is programming one of them for the SH3 target. It is still very primitive now, but offers a good reference. First version of this implementation is available at: http://www.cotw.com/downloads/nino/bootloader/ or ftp://ftp.cotw.com/pub/nino/bootloader/.

Shin Takemura wrote the second bootloader. He has been successful in booting NetBSD on the NEC VR41x1 platform, which is also MIPS based. This means currently the bootloader only works for the MIPS platform. This bootloader is called PBSDBoot, which stands for Pocket BSD Bootloader. It is very mature and will be used as the starting point for the Linux bootloader design. Available copy of it could be obtained from Takemura-san's download directory of his home page.

3.3 The Basic Kernel Porting

To port the Basic Linux kernel into WindowCE devices, there are two toptions: one is to rewrite the kernel according to the requirements of WindowsCE devices, and another is to simply port existent Linux to the CE. The latter is mostly adopted. The porting of the basic Linux kernel includes:

3.4 Linux CE application support

At the time this survey was written, application support has not started yet. It is widely accepted that once LinuxCE kernel is ready on targeted platform, the main task for porting applications, will be simply re-compiling and performing minor modifications to existing applications if needed.

In the following sections, we summarize various ongoing LinuxCE projects targeting different architectures.

 

4 The Linux SH3 Project (http://linuxsh3.cjb.net)

4.1 Goal

The goal of the LinuxSH3 project is to port Linux to the Hitachi SHx family of processors (SH1, 2, 3 & 4), especifically WindowsCE H/PC's.

4.2 Status

Development status for the prjoect is summarized in the following table.

Bootloader

Very primative

Kernel (bootable)

Booting successfully with console output

 

4.3 Download Site

Code could be obtained at:

Description

Source Code

Binary Code

Version

SH3 Cross- development compilers

Http://egcs.cygnus.com

http://home1.gte.net/hassey/linuxce/sh3-tools.tgz

egcs 1.1.2 and binutils 990817

SH3 bootloader

Http://home1.gte.net/hassey/linuxce/SH/lld-src.tar.gz

http://home1.gte.net/hassey/linuxce/lld.exe

NA

LinuxCE Kernel

NA

http://home1.gte.net/hassey/linuxce/SH/kern640x240.gz

http://home1.gte.net/hassey/linuxce/SH/kern640x240.gz

2.2.11

 

4.4 Targeted Hardware Platform

Some popular commercial systems supported by Linux/SH3 are listed below.

Casio

Cassiopeia

LG Electronics

Phenom

HP

Jornada

Compaq seriese:

 

C120, C140

40mhz

Ericsson

 

MC-12

44mhz

MC-16

60mhz

Hitachi

 

HPC

40mhz

HPW-20E8

80mhz

HPW-200EC

100mhz

Novatel Wireless Contact

80mhz

NTS Dream Writer I.T.

80mhz

Palmax PD-300

60mhz

Sega Dreamcast

200mhz SH4

 

5 Linux CE for MIPS-based Devices (http://www.hacksrus.com/~mike/lince/lince-mips.htm)

5.1 Goal

The purpose of LinuxCE/MIPS is to port the Linux kernel and applications to the various WindowCE platforms. We say "various" here because there are many variant for MIPS CPU. Even within the WindowsCE devices of MIPS, there are still several families of MIPS CPUs produced by different manufacturers with minor difference. The two most popular are the NEC VR41xx family (used in the Casio Cassiopeia and Everex Freestyle) and the Philips PR31700 (used in the Philips Nino).

Each of these families is based on a MIPS CPU core, but the peripheral register definition is very different. Because of this, the MIPS portion of LinuxCE will probably have to be further divided into separate platforms, at least one for each CPU family.

5.2 Status

Some success has already been made with the kernel porting for VR41xx. The MIPS (Not specific to MIPS WindowsCE Devices) port of Linux provides great help for most of the code that isn't specific to anything outside the CPU core, so most of the hard work was already done. Current work is mainly on device drivers for the built-in devices.

5.3 Source for download

A kernel binary image for the Everex Freestyle could be found at web site http://www.hacksrus.com/~mike/lince/vmlinux.freestyle.gz. This binary only runs on VR41xx-based devices. Brad LaRonde has binaries for some other VR41xx-based platforms, which are available at http://www.ltc.com/linux-mips/. It's still a primitive kernel, but it provides a standalone shell.

Steve Hill's CVS repository contains the most up to date source code available. They could be accessed by:

cvs -d :pserver:anonymous@cvsftp.cotw.com:/data/cvs login

(The password is 'cvs')

cvs -z3 -d :pserver:anonymous@cvsftp.cotw.com:/data/cvs to checkout linux-mips or if you already have a previous version from there:

cvs -z3 -d :pserver:anonymous@cvsftp.cotw.com:/data/cvs update

5.4 One bootloader for LinuxCE/MIPS

Steve Hill is also working on a Linux-specific bootloader for MIPS called LoadLCE. The description of his work could be obtained at http://www.cotw.com/projects/nino/port/, and the bootloader itself could be found at ftp://cvsftp.cotw.com/pub/linux/loadlce.

6 The ARM Linux Project (http://www.arm.uk.linux.org/)

6.1 Goal

The purpose of ARM Linux project is to port the Linux to ARM processor based hardware platform.

6.2 Architecture Support

The Linux ARM port runs on several different machines and processor architectures, including complete computers, network computers, palm tops and PDAs such as Geofox. The following hardware types are currently supported:

6.2 Status

The LinuxCE Project for ARM will borrow the porting of Linux kernel porting on ARM architecture and make direct use of it. Then the other parts of Linux CE, such as bootloader, standalone application, is relatively easy to port compared to kernel porting. But now, the porting on this is still at very early stage because in the current market, the amount of H/PC and P/PC using SH3 or MIPS and its variant is far more than that of the devices which using ARM processor.

 

7 The Linux/Microcontroller Project (http://www.uclinux.org/)

The Linux/Microcontroller project is aimed at porting Linux to systems without a Memory Management Unit (MMU). At the time this survey was written, this port supported only Motorola’s MC68000 derivatives. The first successfully booted system is the 3Com PalmPilot, which originally uses PalmOS operating system from 3COM also.

This project is ahead of other LinuxCE project. Not only LinuxCE can be booted (like the initial success of other LinuxCE project), but also the device drivers on the Palm Pilot are ready and work correctly.

This project also contributed one very important co-product: XcoPilot. This is a software emulator for the hardware of Palm Pilot. Any ported OS could be run under Xcopilot so the debugging of OS is much easier than usual hardware debugging. Currently Xcopilot could run under Linux, Windows and Macintosh, but the hardware supported by it is still Palm Pilot only.

More information about Xcopilot could be found at http://www.uclinux.org.

 

8 Linux7k Project (Calcaria Linux7k website: Http:www.calcaria.net)

8.1What is Linux7k

The Linux7k project aims to port Linux to some palmtops. The "7k" in the name is from the processor Cirrus Logic PS-7110 chip. Currently palmtops such as Psion Series 5 and Geofox One make use of this kind of architecture.

8.2 Status of the project:

As of the time of this survey, the kernel port is successful for the Psion 5, and more efforts are being paid to develop a GUI interface intended for palmtops, PDAs, and embedded systems.

8.3 Source code for download:

The Psion installer is available from:

http://www.psion.com/downloads/epoc32/messagesuite/de/INSTEXE.EXE)

The latest Arlo, the software bootloader, is available from:

http://www.calcaria.net/cgi-bin/filelist.pl)

A glued kernel image is available from:

ftp://lrcftp.epfl.ch/pub/people/almesber/psion/binary/ as glued-*)

 

9 The Nano GUI Project (http://www.linuxhacker.org/nanogui/)

The NanoGUI is a project aimed for developing a GUI application called Nano-X for small Linux based systems such as palmtops. The X Windows system is a good candidate for this, but the X protocols and libraries are so large and unnecessarily complex for the targeted platform, and are therefore not appropriate for Nano-X. However, porting Gtk+ and Gnome to NanoGUI is important, and will many X applications easily portable.

Nano-X is a server program running under LinuxCE. It is very similar to an X server but fairly simple; small and uses less resources. It accepts requests from other applications to draw graphics on the screen and send events (message) such as key presses and pen movement to the applications. It is not only very small and simple, but also very modular and scaleable.

Nano-X could appears in two forms: it could run as an independent application and services other application using popular client/server mode. It could also appear in a special "client linked into the server" mode, i.e, it becomes part of application. More Information can be found at the Nano GUI project web site.

 

10 Reference

  1. Linux CE HomePage at http://www.linuxce.org/
  2. Linux SH3 at http://linuxsh3.cjb.net/
  3. Linux on SGI Machines at http://www.linux.sgi.com/
  4. Official Linux on MIPS Page at http://www.fnet.fr/linux-mips/
  5. The Linux Kernel HOWTO at http://metalab.unc.edu/LDP/HOWTO
  6. Linux Kernel Mailing List at http://www.tux.org/lkml/
  7. Warner's MIPS Based PDA Info Center at http://www.freebsd.org/~imp/pdamips.html
  8. NetBSD on HPC Page at http://www.jp.netbsd.org/ja/JP/Project/hpcmips/
  9. Linux on the SH3 Platform at http://members.aol.com/redhtlinux/sh3/
  10. The Official LinuxCE FAQ at http://www.2gn.com/~jjorgens/linuxce_faq.html
  11. Using and Porting the GNU C Compiler at http://www.psc.edu/general/software/packages/gcc/manual/gcc_toc.html
  12. Mike's LinuxCE for MIPS Page at
  13. http://www.hacksrus.com/~mike/lince/lince-mips.htm

  14. GCC for WinCE on MIPS Targets at http://www.innonet.at/~wisi/index.html
  15. Ben's Linux CE work at http://skyscraper.fortunecity.com/arpanet/47/lince.html
  16. http://www.hacksrus.com/~mike/lince/lince-mips.htm at http://www.hacksrus.com/~mike/lince/lince-mips.htm
  17. Linux 2.1.36 on NEC MobilePro 400 at http://skyscraper.fortunecity.com/arpanet/47/lince.html
  18. Nino-specific porting efforts at
  19. http://208.244.78.36/projects/nino/linux-nino-main.html

  20. ELKS (Embedded Linux Kernel Subset Project) at http://208.244.78.36/projects/nino/linux-nino-main.html
  21. Linux/MIPS (port of Linux to the MIPS processor) at http://208.244.78.36/projects/nino/linux-nino-main.html
  22. Linux/Microcontroller at http://ryeham.ee.ryerson.ca/uClinux/
  23. ARM Linux Project (port of Linux to the ARM processor) at http://www.arm.uk.linux.org/
  24. Linux 7K Project (port of Linux to the CL-PS7100 ARM-based chip) at http://www.calcaria.net/
  25. Linux-Embedded(Linux for embedded platforms) at
  26. http://www.linux-embedded.com/

  27. Nano GUI (Lightweight GUI for Linux Palmtops) at http://www.linuxhacker.org/nanogui/
  28. Linux on Palm Pilot at http://www.uclinux.org/
  29. Gcc on MIPS LinuxeCE port info at http://www.innonet.at/~wisi/index.html.
  30. Official Microsoft Windows CE site at http://www.microsoft.com/windowsce
  31. palm pilot from 3COM at http://www.palm.com/
  32. Takemura-san ‘s homepage at http://www02.u-page.so-net.ne.jp/ca2/takemura
  33. EZCP Embedded Machine at http://www.ezcp.cjb.net
  34. John Hassey's web page at http://home1.gte.net/hassey/linuxce/index.html
  35. Cassiopeia from Casio at http://www.casiohpc.com
  36. Kernal porting for SH3 at http://home1.gte.net/hassey/linuxce/SH/kern640x240.gz
  37. Kernal porting for SH3 at http://home1.gte.net/hassey/linuxce/SH/kern640x240.gz
  38. 3Com PalmPilot at http://palmpilot.3com.com/
  39. Motorola MC68000 at http://www.mot.com/
  40. Calcaria Linux7K official website at http://www.calcaria.net/
  41. Information about Psion at http://www.psion.com/
  42. Linux Journal at http://www.linuxjournal.com/
  43. Philips Nino at http://nino.philips.com/
  44. Linux FLASH Programmer at http://www.cotw.com/projects/flash-programmer/index.html
  45. Nino And Linux Synchronization (NALS) about GNOME/GTK+ suite to synchronize with a Nino running Windows CE at http://www.cotw.com/projects/nino/NALS/nino-nals-main.html
  46. Nino Serial Terminal about WinCE application for Nino to work as a serial terminal for a headless Linux box at http://www.cotw.com/projects/nino/working.html
  47. NEC MIPS CPU variant at http://www.nec.com/
  48. Hewlett Packard Jornada at http://www.hp.com/
  49. Casio Cassiopeia at http://www.casio.com/
  50. Windows CE City at http://www.wincecity.com/
  51. Windows CE Moster at http://www.cemoster.com/
  52. Everex Freestyle (Remarked HTC) at http://freestyle.everex.com/
  53. Linux CE for MIPS at http://www.hacksrus.com/~mike/lince/lince-mips.htm
  54. Brad LaRonde’s Homepage at http://www.ltc.com/linux-mips/
  55. NetBSD/HPCMIC:http://www.freebsd.org/~imp/netbsd-hpcmips-en.html
  56. Itsy project at Compaq Company at http://www.research.digital.com/wrl/itsy/