By R. Colin
Johnson EE
Times
March 11, 2003
PORTLAND, Ore. — Advanced Cybernetics
Group Inc. claims to have developed a "write anywhere, run anywhere"
technology, called Eclipse, that compiles Java programs into an embedded-C
program that has no operating system. Next, ACG intends to compile the C
program as software not only for embedded micro controllers but also for
hardware field-programmable gate arrays.
According to daCosta, the low-footprint technology can
disassemble Java byte codes to identify the needed OS services, then
convert that Java into monolithic C modules. Eclipse takes those C
modules, plus any others that are already written in C, and statically
links them with the company's OS components library. By thus
incorporating the code, which answers the application's service requests,
Eclipse outputs processor-independent C code that can be compiled into an
OS-less executable for any target processor with a C
compiler.
ACG's technology could eventually close the rift between software and
hardware engineers by enabling them to use the same high-level
language to describe their designs, daCosta said.
"The software and hardware engineers have never spoken the same
language before, but the nice thing is that at the op-code level,
processors don't care," he said.
So far, the company has only created software with Eclipse's smaller
embedded code size for its OS-less micro controllers, but daCosta has
plans to tackle hardware next by putting its technology on
FPGAs.
For now, dozens of companies, including IBM and
Seagate Technology are using embedded micro controllers based on the
OS-less Eclipse program. "When you are designing embedded systems you
don't have the luxury of an entire operating system at your behest,"
daCosta said.
Most applications depend on the operating system to provide the
resources it needs from the hardware. The OS layer enables programmers to
change their code on the fly without worrying about reallocating hardware
resources, because the OS layers below it take care of all the
application's needs.
"This held for both enterprise and embedded systems, with embedded
systems relying on a micro kernel of OS services rather than an enterprise
OS. But then Java came along, and all sensible engineers embraced its
concept of 'one development environment, multiple-deployment
environments,' " said daCosta. "That works fine for enterprise computers,
but for embedded systems you need not only a micro kernel layer but also a
virtual-machine layer"
Having to add yet another virtual-machine layer around a micro kernel
OS inflated his embedded footprint so much that daCosta got to thinking
about getting rid of the OS altogether. So he asked himself, "What is the
underlying difference between having a virtual machine plus micro kernel
layer and having no virtual machine or OS at all?"
His answer: "The fundamental difference is the difference between doing
dynamic calls, which are linked to OS resources at run-time, and static
calls to the hardware resources of the embedded system." Compilers traditionally perform
the function of identifying the static system resources that an
application needs and binding them to the dynamic variables in a program.
But Java's interleaved virtual machine eliminates the need for compiling.
So for embedded systems, daCosta set out to design his Eclipse technology
to eliminate the
need for the virtual machine by translating Java op codes into C
macros that can be compiled.
"In the real world, compilers always expect a particular OS; but in the
ideal world, if a compiler was designed to link into an application just
the components it needed from a modular OS, then that would be exactly
what we are doing," said daCosta.
Technically speaking, this static
binding of modular components melds just the OS services an application
needs into the block of monolithic C code. The result is an OS-less,
high-level C program that can be compiled for any processor. Usually an
embedded processor will be its target, but because the code is
self-contained, daCosta envisions a day when his programs will compile
down to FPGAs.