The ever increasing penetration of micro processor-based embedded
systems in now so many market areas and product types is leading
to more and more attractive commercial opportunities. Moreover,
the exponential growth of the internet in the last few years, and
the consequent slump of the costs of internet services in general,
made network connectivity more a must than a desirable feature in
many commonly used embedded equipments. Mobile and smart phones,
PDA's, Hand-held devices are today definitely candidates for integration
with internet connectivity services. Cost-effective embedded internet
support solutions must be carefully studied for this class of applications,
possibly with particular regards to scalability and extensibility.
This paper
mainly describes the modular architecture of a networking subsystem
designed and developed within the embedded systems unit of Etnoteam.
Balancing modularity and efficiency has been known, since the
early days [1] of the TCP/IP protocol specification process, to
be a crucial issue in the development of protocol stacks, and
the implications of a modular design with respect to over all
performances are also evaluated and discussed. Section 6 summarizes
disadvantages, possible counter measures, and main industrial
benefits.
TECHNICAL
BACKGROUND AND MOTIVATIONS
Embedded application
software is generally severely constrained, with particular regards
to its memory foot print and systems requirements in general.
Among the major criteria beneath evaluation of the fitness of
particular software solution for the provision of a given functionality
is probably the configurability and flexibility of the software
itself. As cost is often a determinant factor in the success (or
failure) of a marketed product, the 'software side' of the embedded
system is today required to both gracefully adapt to the widest
possible range of hardware environments, and to scale well to
different classes of equipments - from the most expensive to medium
ones.
Scaling well
indeed also means providing sufficient modularity to keep the
whole software solution from soon becoming obsolete; many respects
of the evolution of internet software technologies - ranging from
encryption, security, to new addressing schemes - simply appear
to rule out non-modular architecture, that prove very difficult
to maintain and even more difficult to upgrade and update.
The software
modules at the base of internet connectivity are those included
in a TCP/IP stack. The de facto standard in application program
interfaces for network programming is today the BSD Sockets API,
and the whole BSD networking software might be probably regarded
as a sort of 'reference implementation' of the TCP/IP protocols,
complementing the relevant specifications. The widely recognized
importance of BSD network software as a standard setter - together
with public availability of relevant source code - caused the
proliferation of BSD-Derived implementations of TCP/IP stacks,
in a really wide variety of application areas. Several other sources
of networking software are actually available. However, many of
these sources were not probably designed for embedded systems
in the first place. Factors that are crucial in the deployment
of an embedded connectivity solution might instead regard as minor
issues in a desktop-based product.