Eurotech Helios Edge Controller (front)
Eurotech Helios Edge Controller (rear)
The Helios interior exposed 3 USB sockets
The Everyware framework is based on OSGi
I recently had a chance to check out Eurotech's Helios Edge Controller (Fig. 1) to see how their OSGi-based Everyware framework operates. Everyware is the more significant of the two as it runs on a number of Eurotech's hardware platforms. The Java-based framework provides a portable platform for delivering distributed applications. More on Everyware later. First a quick look at the hardware.
Helios Edge Controller
The specs for the Helios speak for themselves. A quick look at the figures (Fig. 2) reveal its compact nature and its interesting expansion options. It's cover lifts (Fig. 3) to reveal three USB ports. These can be used for any kind of device from a USB flash drive to a wireless adapter or GPS. There are three holes for antenna or cable outlets. Opening the case to access the ports does not provide access to the processor. Then entire system needs to be taken apart for that type of access. Opening the cover only requires removal of a pair of screws. Mounting holes are provided for permanent attachment to a frame.
Eurotech's Helios |
Description |
---|---|
Processor |
1.6 GHz Intel Atom Z5xx with Intel System Controller Hub (SCH) |
Graphics/video/audio |
Intel SCH |
Memory |
512 Mbytes DDR2 |
Storage |
2 Gbyte Compact Flash card |
Peripherals |
8 status LEDs |
Communications |
3 external antenna connections |
Power |
12 VDC |
Operating Systems |
|
Software Frameworks |
|
Physical |
25.9cm by 12.1cm by 4.5cm |
The hardware arrived with Linux and Everyware installed. The Windows versions come the same way. All I had to do was plug in a monitor, USB keyboard and mouse and turn on the power. The system is powerful enough to do some development work but this is really a delivery vehicle. Cross development on this system was trivial given the range of tools available. For testing and development I normally have an NFS share with all the applications.
Everyware
Now for a look at the Everyware framework (Fig. 4). I won't be getting into a detailed review of Everyware or OSGi. Both can get very complex depending upon the OSGi bundles employed by an application. A good place to get more information is Eurotech's Everware whitepaper. Also check out the OSGi Alliance's website.
In a nutshell, the OSGi framework is written in Java. It provides a way to load OSGi bundles that contain Java class definitions. A loaded bundle can be utilized by an application that can be another OSGi bundle. Everyware starts with a stock OSGi framework and bundles. It adds Eurotech bundles. Some provide generic services for system management. Others provide access to device specific hardware. For example, there are a set of bundles for the Helios that provides access to the Ethernet network support, storage, etc. The interfaces for these are generic so the same network access can be utilized by an application even if it is running on another Eurotech device.
Bundles can be dynamically loaded and unloaded. They can be downloaded via a network connection. OSGi and Everyware can run on a wide range of hardware from embedded devices like Helios to servers. The Eclipse IDE (integrated development environment) is also based on OSGi. By the way, the latest incarnation of Eclipse is called Helios. As you might have guessed, OSGi can be used to develop desktop and server applications as well. In fact, Eclipse is based on he Rich Client Platform (RCP) that can be used by developers as well (see Eclipse: An Application Framework?).
I used Eclipse as the development platform to check out Everyware although any Java-based development system is likely to support OSGi development. Likewise, Everyware is designed to support OSGi bundles but it and OSGi have access to native drivers and applications using the Java JNI support.
Eurotech goes a good job of providing documentation, support and training. I didn't check out their training classes but I have had a chance to interview their tech staff and the documentation was more than sufficient to get an Eclipse user with Java experience (me) up and running in an afternoon. Part 2 of the documentation covers getting Eclipse up and running including downloading of the RCP support.
The easiest thing to do was to start with an RCP application to run on the PC and then develop a matching application to run on the Helios. The two could communicate using the network. The RCP application is straight forward because Eclipse has the support for OSGi built-in. The initial test for the Helios was the supplied Hello World logging program that followed the same process. The next application for the Helios blinked the LEDs. The Eurotech documentation walked me through all but the latter. Finally delving into more of the specific bundles provided by Eurotech took a little more time simply because of the details.
Eurotech even includes a Best Practices guide. OSGi is designed to be portable and provide portability to applications. The guide highlights issues like naming conventions, error handling and logging.
One piece I didn't have was the latest Internet-based management support that Eurotech has released. This addresses the management of distributed systems on a much wider scale than I tested. If you have hundreds of systems then this support is worth investigating. It is all built on OSGi so the local bundles essentially communicate with a server. The services include logging, data management and update support.
The one thing that I found that I think is key to the success of Everyware is that most of the facilities were ones I took advantage of. I did not have to write them from scratch. This is very similar to using other large frameworks like Microsoft's .NET. A developer only needs to include needed modules, or in Everyware's case bundles, and the framework takes care of the details.
Updating a bundle on the remote system was already a feature available to me. As noted, it can even be done dynamically. I would have had plenty of time to work on application-specific details had I a more interesting application to run on the Helios.
So how does Everyware fit with respect to embedded developers? Well, there is a range of issues from real time support to programming in Java. I won't get into a lengthy discussion here but check out my coverage of Atego's PERC for a discussion of real time Java issues. I also did a Q&A with Atego about this topic as well. I know that the bulk of embedded developers are still using C but Java is not that hard to learn. The benefits are significant especially when you realize the amount of support that you can take advantage of with Everyware. It is also significantly more portable than C or C++.
So, in closing, I would rate Eurotech's Helios and Everyware very high. If you plan on deploy large numbers of devices then this approach can get you there without having major programming issues. You also wind up with a more portable solution that makes migration in almost any direction much easier. By the way, Helios is a rather hefty OSGi platform. OSGi can run on very compact, single chip micros as well. Ok, not 8-bit Microchip PICs but it will work on may 32-bit microcontrollers.