On Wed, Oct 21, 1998 at 05:23:59PM +1000, Alf Katz wrote:
> As part of a new embedded development project (a scientific instrument) we
> are currently trying to settle on an OS. Linux is being considered along
> with NT, WinCE, QNX and ThreadX. One of the important factors in the
> decision will be size of Flash required (we'll be using Disk On Chip).
Having implemented some embedded Linux systems for Worldvisions, I think I
should tell you: there are _lots_ of tradeoffs you can make.
One thing you can do is install a full Linux system with X, command shells,
scripts, perl, and everything else. For some loosely "embedded" systems
(eg. drop-in, headless web caches and web/file servers) this can be
reasonable, and because much of the software is standard, you can put your
device together very quickly. Expect around 40megs for your rootdisk here,
putting it out of range of most flash solutions.
Another possibility is to use a smallish kernel with a minimal Unix-like
userspace. I've set up a system with a 1.2mb (compressed) rootdisk plus
350k kernel that has various Unix amenities (sh, ls, cp, mv, init, ifconfig,
libc6, etc). Add in 500k compressed for a rather big application and that's
only 2mb, which is pretty good. No graphics in this setup, but you could
delete the networking and add svgalib (MUCH smaller than X!) and use about
the same space.
Finally, you could use a very stripped-down kernel (250-300k) and one big
(perhaps threaded) statically-linked userspace application that you build
yourself. You might look at www.cygnus.com for their alternative libc for
embedded applications -- it's much smaller/faster than a typical Linux libc,
because it does make some compromises. With this, I think you could fit the
entire system (including kernel) in 1 or 2 MB of flash.
> X-windows for VGA LCD (we need a gui front end, though not the actual
> windowing, drop down lists etc).
I really don't think X is the right answer if you don't need the GUI
front-end. Look at svgalib instead. It's very fast, very small.
> Floppy disk support for upgrades and general file reading & writing.
> Serial ports
> Parallel port
> keyboard
> Unicode support
Included in the kernel.
> DOC file support
I don't know what this is.
> touch screen drivers (we can work this out separately).
You may have to develop it yourself, but the driver should be pretty small
anyway (40-80k absolute maximum, I'd think).
> We will not need networking, browsers, etc.
That will help keep your kernel size down. Note that you need to include
networking in the kernel if you want to use X.
Have fun,
Avery
P.S. We at worldvisions.ca have a stripped-down Linux userspace layer that
we can license you. E-mail me personally if you want more info.