Home      Company      Customers      Solutions      Publications      Press      Contact Us    

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.