The Embedded Internet Challenge
TCP/IP is a protocol that is easy to understand, but difficult to implement. This is
because of the many sub-protocols involved and the options each sub-protocol can
support. In theory each embedded internet node should be able to interact with every
other but in practice many of the present solutions involve a series of compromises.
At the extreme low end is the low-cost small footprint stack. This stack requires less
than 4K of program memory and less than 2K of RAM. While these stacks are
compliant with TCP/IP standards, in reality they are often compliant with just a
limited subset. For instance, they may only be capable of supporting one browser
connection at a time, making simultaneous connections on a moderately busy
network impossible. In addition, these tiny stacks may not be capable of handling
some of the more sophisticated HTML pages, reducing them to being capable of
handling only simple control tasks with limited I/O such as home water heaters.
At the opposite end is the full-featured 32-bit+ stack with all of the sub-protocols and
options found in a full World Wide Web server. These solutions meet all the TCP/IP
standards and are specifically targeted for high-demand control tasks on a busy
network. In order to accomplish this these solutions sacrifice cost and parts count for
But the most important part of an Embedded Internet application is interactivity. The
web browser needs to able to control and monitor the embedded system. If the
Embedded Internets only function is to serve up static web pages to a browser then
it is little more than a document delivery system.
An effective Embedded Internet system needs to be able to have full interactivity with
a browser. This translates to:
Being able to send data to the Embedded Internet system from the browser
thru a Form, and
Having the Embedded Web Server send data to the browser that reflects a
In the first case, this translates to the web server being able to send form data, in the
exact same way one would fill out a name/address form on the web, to an embedded
web server. The most effective way of doing this is using a TCP sub-protocol called
an HTTP POST. This allows the user, via the browser interface, to send data to the
embedded web server. This data is then passed, as parameters, to the application
subroutines in program memory so that they can take a reading from a sensor or
control an actuator.