About the Demo
Copyright © 2011 by Gladesoft. All Rights Reserved.
This demo site was developed using the Seminole embedded webserver. Seminole is a toolkit for building web applications that exist on small, simple platforms. Traditional web development tools such as PHP or Zope are not well suited for embedded systems.
Thanks to the Seminole webserver toolkit this demonstration program is very small and very secure. It uses few system resources and has no need of any filesystem support from the host operating system. All of the content for this entire site (including this page!) is compressed and bound into a single binary file. Despite the small size of this program (under 200KB including all content and runtime code) it packs a surprising number of features. Feel free to explore the site and see all the features in action for yourself!
The most obvious disconnect is that embedded systems rarely have a file system. If they do the file system is typically not designed for a large collection of small files. Seminole solves this problem by including a powerful read-only filesystem that is tailored for handling HTTP requests. The filesystem can even compress content on a file-by-file basis. All of the content of this entire site is part of a read-only filesystem image that is linked with the application module.
The next issue is an important one: space. Or rather, the lack of space. A typical embedded system has far less storage than even the lowest desktop computer. Rather than hard-disks, embedded systems often employ "flash memory" as their permanant storage. Flash memory is expensive, with 16MB of flash being on the large size. Seminole is designed to be small. Most of the major features can be disabled at compile time when space is tight and all of the features are carefully coded to be small but fully functional.
Code size isn't the only size metric embedded systems engineers worry about. RAM is another precious resource that is always in short supply. Seminole is conservative with memory allocations and allows most of the larger allocations to be tuned for a particular system. Seminole also provides options to reduce stack usage or heap usage (at the expense of performance) when those areas of memory are tight.
Embedded systems have a variety of operating systems; quite a few of them. Seminole makes very minimal demands on the operating system and compiler. Seminole relies on a simple interface layer for accessing services from the operating system. For custom operating systems this layer can be easily implemented. Included with the Seminole toolkit are pre-written interface layers for the following popular operating systems: