Run Win98 From 16MB Flash Disk
ksheff writes "Embedded Ware Technologies has come up with a product to run Win98 applications from a 16M Flash disk. This could be useful for companies that would like to use an existing Win9x application in an embedded system."
M-Systems makes a device called the Disk-on-Chip that I believe can do this. Although it doesn't interface through IDE, it can be made to emulate a hard drive at the BIOS level, using M-Sys's TrueFFS BIOS. Therefore, operating systems (like Windows 98, I believe) that use BIOS calls to access the hard drive can use the Disk-on-Chip as if it were a hard drive. Other operating systems like Windows NT and Linux need the proper drivers / kernel modules to access the disk. The upshot of all of this is that I was able to get my own hacked-up minidistribution of GNU/Linux (which I naturally called Asshat Linux), to boot and run off of the 16-Megabyte Disk-on-Chip in a Visara 1783 thin client machine (formerly running QNX). I believe that the same could be done for Windows 98. If anyone wants info on how I did this, email me or post a reply.
What's the smallest you can get wine down to?
It would be interesting to see if you can do this with embedded linux + wine.
Advantages:
* You can disable all the gui stuff (if it's embedded, then you might not need any gui)
* You can hack it to make it smaller
* You don't need a windows license
Does anyone know how big wine is normally when compilied? libs and all.. I have no idea if it is a few MB, or 10's of MB's.
Microsoft can't make Windows CE stable (or PocketPC for that matter), so I don't believe that a 3rd party will be able to do the same with a custom product - particularly with an OS that has such a legendary stability record as Windows 98.
The reliability of the Windows CE powered ticket machines at my local cinema is awful. At any one time, at least one or two machines have either locked up; are in the middle of rebooting (but stuck because they can't find the network - that's how I know it runs Windows CE); or worst of all.. about to crash.
You know a crash is about to happen because the UI starts flaking out (text vanishes, on-screen buttons loose captions) while in middle of trying to buy tickets. This happened to me once - I was able to finish by guessing which button to "print tickets", but it locked up when the people next in line tried to use it.
The only reason the machines are actually useful is because the short lines mean you can get your tickets fast - as opposed to the horrendously long queue to buy from the human ticket drones.
The only reason the machines manage to sell any tickets at all is because there are 6 of them - "reliability" through numbers I suppose.
Windows 98 has the advantage of allowing an application to directly access I/O ports and memory mapped registers on I/O cards. This means that you are not forced to write a device driver to do I/O. The system can be setup to run a single application, with Windows providing the GUI and network stack. The end-user only sees the provided application, and is never given the chance to run any other programs or to modify the system.
Mea navis aericumbens anguillis abundat
Agilent and Tektronix (and probably others) have been using Win9x in their oscilloscopes and analyzers for years now. The truly "embedded" part is running on a separate CPU on a PCI card. Windows is simply used as a front-end to render the user interface.
It seems like a win all the way around. These companies can focus on what they do best, which is high-speed data aquisition and analysis. They don't need to get into GUI design. They can use off-the-shelf parts for the chassis and peripherals. And end-users don't have to figure out some obscure UI like on the older equipment.
Windows is reasonably solid, as long as you're not mucking around with DLLs by installing new software. Typically these devices ship with the app pre-installed, and nothing else is ever run.
I still don't think I'd trust it for an unattended (eg, ATM) application, though.
Chelloveck
I give up on debugging. From now on, SIGSEGV is a feature.