|Future Proofing Through Portable Software
Be it due to component end of life or changing market demands, embedded systems are going to require changes over product life times. A flexible software framework can ease the pain of transition.
by Wes Johnson, Eurotech
Developing and deploying an embedded device is a complex and risky task. The embedded systems market is constantly changing as customers demand higher performance, more features and a longer shelf life. Most devices undergo several hardware or software updates to meet new technology and customer demands.
Some subsets of the embedded industry, such as machine-to-machine (M2M) communications, have even more potential for future expansion or new feature add-ons. With multipart M2M technologies in play, companies have no way of knowing exactly what is going to happen in the future or how their business needs might change. If the developer does not account for future changes or expansion, they will have to redesign the whole system.
When developing an embedded device, “future proofing,” and planning for the unforeseen to account for these changes can save time, money and frustration. Eurotech’s Chief Technology Officer Arlen Nipper has a favorite saying on the importance of future proofing: “You don’t know what you don’t know.”
Nipper explains, “Although developers do not know exactly what types of changes to anticipate, they can build flexible embedded devices designed to stand the test of time.”
Evolving as Market Demands Change
Developers want to be able to adopt and modify an embedded platform design and quickly add on their application expertise, thus significantly reducing time-to-market. Then, once they get to market, they want to be able to quickly and easily respond when market demands change and software or hardware needs to be updated.
There are two key reasons the make-up of an embedded device will change during its lifecycle. The first is that a component can go end-of-life. Processors and other components go end of life periodically, and OEMs must replace the components and find new working solutions to continue to produce the embedded device. The other cause for change is that new technology or a changing business world creates the need for added functionality. Whether the new functionality incorporates an enhanced wireless connection, more bandwidth or scaling for a bigger project, chances are an embedded device will change from its original specification and add functions over time.
In order to respond to these changing market conditions, developers spend weeks, months, even years on custom coding and complicated fixes. An application-ready, future-proof platform, on the other hand, saves time and money.
Developing on a Software Framework
Developers should think of their connected device in layers. The first layer is the chosen hardware platform/BIOS. The second layer is the operating system. It is not within the scope of this article to discuss hardware and operating system choices, but several embedded modules and Linux distributions enable a full range of foundational capabilities needed across embedded designs.
As shown in Figure 1, the next layer, and the one we are focusing on as we discuss future-proofing, is the software framework. The software framework puts a middleware layer between the operating system and the customer application, with industry standard interfaces that shorten custom development time, simplify coding, and allow software to be easily ported from one hardware platform to another.
OEMs should choose a software framework that is modular, making it easy for a developer to add new features that were never thought of in the original specification. Suppose the developer wants to add a MODBUS device to their application. With a modular software framework, they can plug in the new software component without affecting the rest of the application, in this case a MODBUS bundle. The MODBUS bundle enables an application to poll, control and connect to MODBUS-enabled devices typically found in industrial applications, eliminating the need to write and code the protocol internally.
The ideal software framework has a foundation in Java, the Eclipse IDE, and the OSGi Application Framework, and also includes several optional modules depending on the requirements for the application being developed.
In creating a future-proof embedded computing device, it is important to choose tools on platforms in lieu of coding on the operating system to improve portability. Java has many advantages since it runs across all operating systems, runs in a “virtual machine” sandbox, eliminates collateral damage to the operating system, and offers rapid code development from a large repository of existing code.
Java was conceived with the concept of “write once, run anywhere, ” which is achieved through the Java Virtual Machine (JVM). The JVM is simply the executable code that interprets the byte code from a Java application that has been complied with the “javac” compiler. Not only does the JVM enable the extensive capabilities of the OSGi Application framework, but it also creates a hardware abstraction layer, enabling portability of the customer’s application code across multiple hardware platforms. Using JVM as the foundation for a future-proof software framework provides a standard and open programming environment that is user friendly and operating system independent in its architecture.
The ideal software framework has a professional grade IDE for Java application development and debugging. The Eclipse IDE is the leading choice today (Figure 2), providing the software framework with all of the tooling required to develop, test, debug, and package application bundles.
The OSGi Application Framework is a general-purpose, secure, and managed framework that supports the deployment of extensible and downloadable applications known as “bundles.” Bundles can be downloaded, installed, started, stopped, monitored, and uninstalled on the fly, even while other applications are running. The OSGi framework specifies a modular system for Java that implements a complete and dynamic component model that does not exist in standalone Java/VM environments. Figure 3 shows how the OSGi Application Framework coupled with the JVM forms the foundation for a software framework layer.
Once the developer establishes the foundation for the software framework, they can develop custom bundles that can then be used and reused for various embedded devices. Once these bundles are developed, there will no longer be a need to create custom application code to manage foundational hardware capabilities.
As shown in Figure 4, with the modular framework provided by using the Eclipse IDE and the OSGi Application Framework, the OEM can choose which of these components to use for a specific product.
A Sample Software Framework
Out-of-the-box software frameworks can provide customers with an ideal solution to future-proof their software and mitigate risk. Eurotech’s Everyware Software Framework (ESF), for instance, is a comprehensive software framework that allows developers to immediately begin porting the application and to rest assured the software is ready for future expansion, feature adds or market changes. With the ESF, the OEM does not have to do any additional coding for basic features like power management, GPS location or shut down functions, which are typically not their area of expertise.
Figure 5 shows some of the foundational level activities that ESF can handle that cross vertical industries such as power management, GPS, cellular modems, WiFi devices, USB-based devices, Bluetooth, watchdog functions, J-BUS and CAN-BUS devices and security cameras. When developers install the Eclipse IDE for ESF, they pull down the rich suite of foundation bundles developed, distributed and licensed by or from Eurotech.
Software Framework in the M2M Market
As mentioned, M2M applications are even more diverse and more complicated for developers. A standard software framework in the M2M space is comparable to Android in the cell phone market. Android is a platform for cell phones, and there is a community of application developers creating applications to run on the platform, but they do not have to worry about how Android itself works. They don’t have to worry about the operating system, they can simply develop the application and it will run on the platform. A standard software framework allows developers the same simplicity and flexibility of using a toolkit to create an application.
The ultimate goal for an M2M device is often to get data from a distributed device to the enterprise where people can act on the data received. With a software framework, OEMs get cloud-ready hardware that greatly reduces the development time required to connect a distributed device through the cloud. The framework makes accessing the cloud easier with a built in Message Queuing Telemetry Transport (MQTT) client that enables an embedded device to publish and receive messages from the cloud with a few lines of code. MQTT is a low bandwidth, low overhead message protocol for sensors and mobile devices. MQTT has recently been adopted for Facebook’s instant messaging tool for its efficiencies and persistence and has potentially hundreds of millions of users already.
Such a framework enables devices to be easily connected to the cloud with MQTT and other highly optimized communication protocols. By leveraging this end-to-end solution, customers can deploy their embedded devices and start receiving data immediately without the need to create, provision and maintain a costly IT infrastructure.
A standard software framework allows embedded system developers to account for hardware and component changes due to end of life or other market pressures. For example, suppose a developer has to remove a device’s modem and put in a new one because it went end of life. The best software framework will provide a common library of software APIs to talk to a modem. It doesn’t matter what the modem is from a hardware perspective, an equivalent component can be dropped in that abstractly represents that device in the software without changing the rest of the application.
Developing on a standard software framework takes the work off the OEM’s plate, allowing them to take advantage of an integrated hardware and software infrastructure so they can start adding their unique value on day 1. Taking advantage of a collection of cohesive software components lets customers modify, reconfigure and maintain their application over time, so it can evolve and adapt as market demands change.
Eurotech, Columbia, MD. (301) 490-4007. [www.eurotech.com]