The Linux CE FAQ
Date: 5 Jan 2000
This FAQ contains answers to questions frequently asked on the Linux CE development mailing list. There should be an update every month. You can find it at http://linuxce.2gn.com/faq
------------------------------------------------------------------------
1. What is the Linux CE project?
The aim of the Linux CE project is to port linux to Windows CE based PDA's. This currently includes CE based PDA's with MIPS, SH-3, and StrongArm processors.
2. So is this the right project to follow for information on Linux for the Palm Pilot or Psion?
No. Those are separate projects.
3. Ok, where can I get information on the Pilot and Psion ports?
Information on the palm pilot port can be found at www.uclinux.org . For the Psion port, check out www.calcaria.net
4. So, I have a WindowsCE based PDA. Where can I find more information?
The official website is www.linuxce.org. The development mailing list is [email protected]. The website has instructions on how to join the list. Below are a list of links with info related to Linux CE.
1. Warner's MIPS based PDA page
2. Warner's translation of the NetBSD on mobilegear page
3. Steve's Linux Nino hacking page
4. The sh3 portion of the port
5. John Hassey's LinuxCE page
6. Bradley D. La Ronde's VR41xx efforts
7. Mike Klar's VR41xx efforts
8. Niibe Yutaka's SH3 efforts.
9. Jay Carlson's userland work
10. The Linux VR website.
5. What method will be used to load the kernel?
Current development is focusing on a Windows CE application to boot the kernel. The work is based on a NetBSD bootloader that is being developed in Japan. Some folks are working on replacing the ROMS but those projects tend to be very machine specific.
6. What is the development platform for the various pieces?
The bootloader (and only the bootloader) is being written on the Microsoft Visual C++ platform. The rest of the project will be done with GCC.
7. Why can't we do the bootloader with GCC?
There is no usable GCC for Windows CE so we either port GCC (a nontrivial task) or save a whole lot of time and develop the bootloader with VC++. The latter option is being used at this time. The NetBSD bootloader is also developed under VC++.
UPDATE: Work has resumed on a GCC port to the Windows CE MIPS platform. Check out; http://www.innonet.at/~wisi/index.html
8. What hardware will be required to run Linuxce?
It looks like on the MIPS side, 4 Meg of RAM will be the reasonable minimum. On sh3, they're shooting for a low of 2 Meg of RAM.
9. How far along is the project?
1. Bradley LaRonde and Steve Hill are working on a bootloader called CyaCE based in part on pbsdboot.
In the words of Brad, "CyaCE is the coolest boot loader ever" :-)
2. On the MIPS side, VR41XX platforms are booting a kernel to the point where it mounts a root file system from a ramdisk image. They have functional shell that includes network support over the serial port.
3. Harald Koerfgen has had some luck with booting the Poseidon based MIPS, in particular, the Sharp Mobilon. The very experimental code is at the linux-vr site. Check out http://www.linux-vr.org for instructions. Note that he uses the NetBSD boot loader.
4. On sh3, the kernel boots to a simple user space program from ramdisk.
5. Barry E. Neilsen is beginning work on the StrongArm CE devices, specifically, the HP Jornada 820.
10. How can I help?
The areas that are receiving the most attention right now are the kernel and userland utils. Each of the MIPS platforms needs work on the outside the core stuff. Drivers for pcmcia/compact flash, IRDA, and keyboard maps are also being hacked at.
11. Who is working on what?
1. Steve J. Hill and Bradley D. LaRonde have done most of the current work on the MIPS bootloader.
2. Mihai Spatar has done work on the SH3 boot loader.
3. Mike Klar and Bradley D. LaRonde are working on the VR41XX mips port.
4. Steve Hill and Harald Koerfgen are working on the poseidon portion of the MIPS port.
5. Jay Carlson is doing a lot of work on MIPS userland and floating point stuff.
6. Mihai Spatar, Niibe Yutaka, Yaegashi Takeshi and John Hassey are working on the SH3 port.
7. Warner Losh has been helpfull by providing and pointing to gobs of information on MIPS based PDA's.
12. Who has contributed to this FAQ?
Well, Bradley D. LaRonde has offered a lot of needed corrections. All of the folks on the Linuxce development list have contributed at least indirectly. If you think your name belongs here, send me a note. It's forgetfulness not insult.
------------------------------------------------------------------------
Copyright (C) 1999: John L. Jorgensen.
This document is intended for distribution under the parts of the General Public License that would apply to documentation.
This document is distributed with NO WARRANTY.
Brad LaRonde's Linux-MIPS FAQ
Do you need a CF card to boot this kernel?
I mount a ramdisk image that's linked right into the kernel as root. That's how the pre-compiled kernels on my ftp site are made, so it's easy to try if you want to. See Booting Linux from Windows CE for more info.
You don't need a CF card or anything like that. You just need to get the bootloader and the kernel image to the device, then boot the kernel image with the bootloader. If you want to use a CF card as a means of getting them there, then that's fine. Otherwise, you can use Windows CE Services to copy the files to the device.
Will booting the kernel delete data stored on my CF card?
Booting the kernel should not delete anything from your CF card, although it will most likely wipe out everything in your device's RAM.
What about the Palm III handheld? Is there a port of Linux for it?
Yes, but where is that page... let's see... www.yahoo.com, linux palm pilot, search... ah, there it is - http://www.uclinux.org/ :-)
Will this work on a Casio E-Whatever?
Yes, it should work on any of the Casio E-Series devices (E-10, 11, 15, 55, 100, 105, 500, and 507 last I checked). I havn't heard any reports like "It won't run on my E-Whatever" yet, other than the fact that my bdl-10 kernel images didn't have RAM sizing support, but that's fixed in the bdl-10.1 kernels. Try the serial-console kernel (reading this might help), and please let me know how it goes.
Any plans to make it run on say... the Sharp Mobilon HC-4500 (MIPS 3912 cpu)?
That's not in my immediate future plans, but I think someone on the list was talking about that device.
Does this need some of the faster CPUs (133mhz+)?
Nah.
What about the Philips NINO?
Check out Steve Hill's page on this - http://www.cotw.com/projects/nino/index.html.
Does each platform need it's own kernel?
I think so. Some platforms - say ones that all use the Vr41xx processors, might be able to share the same kernel, but I'm not even sure about that. Certainly you need different kernels for different cpu typs (MIPS, ARM, SH).
One of our goals is to make it as easy as possible to configure and build a kernel for a specific platform.
What is "Caught CPU trying to run FP instruction..."
The FP complaints are normal at this point. The Vr41xx doesn't have an FPU, so Mike just rigged it to spit that out whenever an FPU instruction is executed. We need to fix this. :-)
Will binaries compiled for MIPS work on all MIPS-based devices?
Generally, yes, but there are at least a few issues that I can name (with the help of folks from the linuxce-devel list), namely:
1. MIPS binaries come in two flavors - big-endian and little-endian. This project is little-endian, and to quote Mike Klar, "as far as I know, a big-endian MIPS binary won't even get past the elf headers."
2. Not all processors have an ll/sc instruction pair, so binaries with these instructions won't work on all processors.
3. Not all processors have a floating point unit, and we don't have FPU emulation working yet (that I know of), so programs that need an FPU won't work on all processors.
4. Not all processors support MIPS ISA-III (Instruction Set Architecture III), so binaries with ISA III instructions won't run on ISA-1-only processors.
There is also the obvious issue of whether or not certain plaforms have the resources (peripherals, horsepower) needed by the program.
For further explanation, Harald Koerfgen says,
[Linux CE should support binary compatability] as well as Linux/MIPS does.
By default, MIPS binaries are built for mips-1 targets. That means that little endian binaries will not only work on all MIPS based CE devices but on all other little endian Linux/MIPS boxes as well (Mips Magnum 4000, Olivetti M700, SNI RM200, Digital DECstations, you name it...).
[So] all userland MIPS binaries are built for the ISA-I, with one sole exception, which is the multithread part of glibc. This is what the ll/sc emulation in the kernel is intended for.
The emulation for this particular case is quite easy but I haven't finished this yet because 99.9 % of the userland binaries don't seem to need this.
Question: so what would the advantage/disadvantage be if we do the same?
The advantage is obvious: binary compatibility for all MIPS platforms (well, beside the little endian vs. big endian issue). The disadvantage is that those binaries may be a little bit slower than needed. I haven't done any experiments in this direction myself, but I've heard from Ralf Baechle that this speed disadvantage is in the 1% range. Not worth the effort, IMHO.
------------------------------------------------------------------------
All brands and product names may be trademarks of their respective owners.
|