eCos is a component architecture. The system comes as a
number of packages which can be
enabled or disabled as required, and new packages can be
added as they become available. Unfortunately, the packages
are not completely independent: for example the µITRON
compatibility package relies almost entirely on
functionality provided by the kernel package, and it would
not make sense to try to build µITRON if the kernel
was disabled. The C library has fewer dependencies: some
parts of the C library rely on kernel functionality, but it
is possible to disable these parts and thus build a system
that has the C library but no kernel. The
ecosconfig tool has the capability of
checking that all the dependencies are satisfied, but it
may still be possible to produce configurations that will
not build or (conceivably) that will build but not run.
Developers should be aware of this and take appropriate
care.
By default, ecosconfig will
include all packages that are appropriate for the specified hardware
in the configuration. The common HAL package and
the eCos infrastructure must be present in every configuration. In
addition, it is always necessary to have one architectural HAL package
and one platform HAL package. Other packages are optional, and can
be added or removed from a configuration as required.
The application may not require all of the packages; for example,
it might not need the µITRON compatibility
package, or the floating point support provided by the math library.
There is a slight overhead when eCos is built because the packages
will get compiled, and there is also a small disk space penalty.
However, any unused facilities will get stripped out at link-time,
so having redundant packages will not affect the final executable.