Making hardware programmable has made great strides over the past two centuries. One could argue that the very first example of hardware programming at an industrial scale was the Jacquard loom system developed in the early 1800s. Textile engineers could use this system to define the patterns they wanted the loom to weave by using a chain of punched cards (see Figure 1). This invention made Inventor Joseph Marie Jacquard a famous figure in the textile industry and demonstrated great progress for hardware programming. His name is now a common word used to refer to the type of fabric made on his looms.
Fast-forward 200 years to see a trend toward more programmable hardware. Mechanical automation made the transition to programmable first, followed by electromechanical and electronic logic, and finally embedded control with microcontrollers, microprocessors, and software. Today the programmability of machines and devices varies depending on the application and industry. They can range from fixed-function devices with no programmability to fully programmable and upgradable devices like smartphones.
The traditional way of designing programmable hardware carries a strong legacy from mechanical engineering, with embedded devices somewhat mimicking what used to be done mechanically or electro-mechanically. Utility meters are a good example of this approach. At first, electricity meters were a simple replacement for mechanical meters, replacing the numbered wheel with an LCD display to offer greater cost optimization and reliability. Then more functions like automated meter reading were added to improve operating costs without altering the purpose or use cases.
Embedded software or real-time software exists on these devices, and they require specific skills rarely taught in colleges. Instead, they are usually learned on the job. Embedded software development requires almost as much expertise as hardware development for two reasons. First, fixing embedded software mistakes is expensive, as devices can be difficult to upgrade. Second, many embedded devices must comply with stringent safety regulations, which requires additional knowledge and time resources to ensure adherence to regulations such as IEC 61508, IEC 62304, UL 60730-1 H, CSA E60730-1 H, IEC 60730-1 H, UL 60335-1 R, and IEC 60335-1 R, UL 1998.
Unbeknownst to most, however, is a silent revolution in the embedded software development paradigm, driven by the Internet of Things (IoT), and it is gaining ground every day. As our devices become more connected, they suddenly open up to the world. A good IoT device must be accessible to developers through a well-defined API, as demonstrated by applications like NEST, Fitbit, and Withings (Nokia) Digital Health. Conversely, any connected device can now gain access to virtually unlimited resources in the cloud. This opens new possibilities beyond the capability of traditional embedded devices, as voice recognition, artificial intelligence and personal assistant functions -- like Amazon Alexa -- become more broadly accessible.
This new developer community is reshaping the embedded world, creating a “softwarization” of hardware. They’re pushing embedded engineers to think like modern software developers and look at other technologies that have been efficient for IT systems and web applications. For instance, one of Renesas’ partners, IoT startup MediumOne, is able to program devices in the field with Python scripts in the cloud –truly mind-boggling.
The time for reinventing the wheel has passed. The embedded industry has the power to completely change the way it defines and designs products. In today’s highly competitive markets, engineers must become adept at reusing proven, productized software components with high levels of abstraction. These components have traditionally come from specialized companies and they were expensive. However, several lower-cost options have made them more accessible. Open source is one approach, although it comes with unknown quality questions and other risks. Another option is working with chip manufacturers who integrate professional software with their hardware devices, offering them as part of a single platform cost structure.
This softwarization trend will transform traditional firmware developers into a hyperspecialized community, similar to the way hardware developers are now a specialized part of embedded teams. Their role will be to ensure that a complete board support package runs on the hardware, enabling a growing crowd of software developers to create applications with frameworks and high-level languages and scripts.
This trend can also expand career possibilities for embedded developers. Here are a few education essentials that can help you take advantage of this shift:
- Learn how to use middleware and RTOS. This soon will be baseline knowledge expected for engineers working with hardware.
- Start working with a framework. Automotive developers have Autosar. Industrial developers can start with embedded Linux as a good base for understanding. Even developing Android or IOS apps – or even a Minecraft Mod – are good ways to understand framework development.
- Play with the maker boards. They may seem like toys today, but you will be amazed by the possibilities they offer.
- Become familiar with the RESTfull API and the JSON data format. They are the bread and butter of Internet communication and most IoT services use one or the other.
Developer communities provide interactive peer-to-peer forums to hone software skillsets, particularly working with communities around new embedded frameworks such as the Renesas Synergy platform as shown in Figure 2, or the IoT Sandbox that was developed with MediumOne.
You may decide to join the revolution and become an application software developer, juggling with higher-level frameworks. If you ultimately choose to stay on the hardware / firmware side, understanding software developers’ needs will become an essential requirement for you as an embedded engineer in the era of the IoT.