A Survey on the Linux CE Operating System Developments
Jinsuo Zhang and Sumi Helal
Helal@cise.ufl.eduDepart of Computer and Information Science and Engineering
University of Florida, Gainesville, FL 32611
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.
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.
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)
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.
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.
|
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 |
|
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 |
|
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.
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.
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:
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.
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)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.
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.
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.
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.
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.
Calcaria Linux7k website: Http:www.calcaria.net)
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.
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.
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-*)
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.
http://www.hacksrus.com/~mike/lince/lince-mips.htm
GCC for WinCE on MIPS Targets at http://www.innonet.at/~wisi/index.html Ben's Linux CE work at http://skyscraper.fortunecity.com/arpanet/47/lince.html http://www.hacksrus.com/~mike/lince/lince-mips.htm at http://www.hacksrus.com/~mike/lince/lince-mips.htm Linux 2.1.36 on NEC MobilePro 400 at http://skyscraper.fortunecity.com/arpanet/47/lince.html Nino-specific porting efforts athttp://208.244.78.36/projects/nino/linux-nino-main.html
ELKS (Embedded Linux Kernel Subset Project) at http://208.244.78.36/projects/nino/linux-nino-main.html Linux/MIPS (port of Linux to the MIPS processor) at http://208.244.78.36/projects/nino/linux-nino-main.html Linux/Microcontroller at http://ryeham.ee.ryerson.ca/uClinux/ ARM Linux Project (port of Linux to the ARM processor) at http://www.arm.uk.linux.org/ Linux 7K Project (port of Linux to the CL-PS7100 ARM-based chip) at http://www.calcaria.net/ Linux-Embedded(Linux for embedded platforms) athttp://www.linux-embedded.com/
Nano GUI (Lightweight GUI for Linux Palmtops) at http://www.linuxhacker.org/nanogui/ Linux on Palm Pilot at http://www.uclinux.org/