environments that could encompass a more complete
set of programming paradigms. Currently the en-
vironment includes object oriented design, graphical
debugging systems, complex data-typing and compo-
nent subsystem sharing between projects and devel-
opers. Formalising object inheritance of primitiveand
composed function blocks purely in the graphical do-
main is a further area of interest.
One particular advantage of maintaining a close
relationship between the programming environment
and the device instruction set as that this effectively
removes the ‘round-trip problem’ of code genera-
tion from graphical programming environments such
as UML. The current application programming tool
supports TCPIP communicate directly with the target
device during development phases, allowing transfer
programme data for fast round-trip development and
also supporting real-time graphical debugging of de-
vice behaviour.
5 IN-USE EVALUATION
The core EHS software, including a restricted stan-
dard component library, can operate on devices with
very low processing power, including for example 8-
bit devices with as little as 16KROM and 8K RAM.
Such device are not the initial target for the technol-
ogy, however this example is indicative of the mini-
mal system resources required for the RTE.EHS and
the full standard component toolkit have been built to
run on larger devices, typically utilising Linux, QNX,
Nucleus or Win32 operating systems. Target CPU ar-
chitectures tested include most variants of x86, MIPS,
SH4, PPC, and ARM.
The EHS device software, minus all component li-
brary source code, comprises ∼ 2000 lines of ANSI-C
(LOCs). Only 47 LOCs are specific to the target oper-
ating system and none are CPU specific. The standard
component library comprises ∼ 3700 LOCs and is en-
tirely hardware/OS independent, depending only on
ANSI-C. The total code size of the EHS and the com-
plete set of component library interfaces comprises ∼
6700 lines of independent code.
SODL file sizes scale approximately 100 bytes of
plain text (20bytes compressed) per component in-
stance. Application load times from flash memory
were invariably less than 1 second for an applica-
tion containing several 1000s of function blocks on
a 200MHz Vortex86 processor.
5.1 Component Integration
Components written entirely in ANSI-C without li-
brary dependencies were integrated into the compo-
nent modules, by importing the source into a compo-
nent module build system and generating the XML
API description file. The key aspect of this process
was in defining an easily usable functional interface
for the component.
LegacyAudio Visual components exemplify a dif-
ferent integration process, where typically the es-
tablished build complexity of the legacy component
suggests leveraging the pre-established build system.
Legacy components are typically buildable for differ-
ent targets as static or dynamic libraries and were inte-
grated with EHS by building wrappers that map their
pre-defined APIs to the generic EHS API. Wrappers
typically include an API state machine to ensure com-
ponents are not depend on client trust.
Taking an Audio Visual player component as an
example, the first step was to design a functional in-
terface from an application developer’s point of view,
that would ideally be common to different target’s
player APIs. A Hardware Abstraction Layer (HAL)
was then used to wrap target componentfunction calls
for the A/V subsystem, mapping these to the applica-
tion developer centric EHS A/V component API.
The first A/V target system integrated was based
on SoC specific native code where decoders and
graphics were hardware accelerated and drivers for
this were included in the integration. A second exam-
ple of integrating a more portable software-based A/V
decoder for x86, ARM and PPC processors was sub-
sequently evaluated using the same EHS A/V com-
ponent API. libVLC (Video LAN library) was used
for this purpose and was first built in its library form
using the autoconf build tree provided in the release.
Both the SoC and libVLC legacy software builds were
complex and hampered by sensitivity to dependency
versions and host build environment. Once libraries
were built for each target and linked to EHS, no fur-
ther effort was required to deal with these libraries
during subsequent component integration.
5.2 Application Development
It was identified at an early stage of using the devel-
opment environment that because the programming
environment is naturally concurrent the programmer
must use constructs to ensure synchronicity of data
and events along processing chains. The following
symbols exemplified two basic types of event han-
dling components, implemented as components that
need to be made available to the programmer to con-
trol event flow. The ease of programming was found
to be dependent on the details of defining standard
basis components for event and data management. A
UBIQUITOUS COMPUTING NEEDS UBIQUITOUS SOFTWARE - A General-Purpose Computation Model
247