The softwarization of hardware

By Semir Haddad

Chief Product and Strategy Officer

MicroEJ

April 13, 2018

Story

Making hardware programmable has made great strides over the past two centuries.

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.

[Figure 1 | The Jacquard loom machine uses a chain of punch cards to simplify manufacturing textiles with complex patterns such as brocade, damask, and matelassé.]

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.

Consequently, a new breed of developers (the Internet developer community) is starting to tinker with devices. They began with maker boards and developed with the tools they know -- Object Oriented programming, APIs, scripts, and frameworks like Java, JavaScript, Python, Lua, JSON and REST API. To demonstrate new levels of embedded development simplicity, the Arduino platform (based on Wiring and C++) has popularized object language concepts like methods and attributes. And Raspberry Pi has made Linux and Python accessible to everyone. They teach us to use integrated tools with predefined frameworks that make writing a simple application a “walk in the park.”

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.
  • If you want to cultivate your software side, play with object languages such as C++, Java, and Objective C, and try markup languages like XML as well as script languages like JavaScript, Python or Lua. Start out by developing mobile apps or web development, and soon there may be embedded options using smaller microcontrollers.
  • 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.

[Figure 2 | The Renesas Synergy Platform is a complete and qualified platform with fully integrated software, a scalable family of MCUs, unified development tools, and easy to use kits and reference software.]

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.

Semir Haddad is Director of Strategy Planning & Strategic Business Development at Renesas Electronics America. He has over 20 years of experience in the semiconductor industry and more than 17 years in product management with microcontrollers (MCUs), microprocessors (MPUs) and embedded software. Mr. Haddad earned his Master’s degree in Electronic Engineering from the École Supérieure d’Électricité (France) and an MBA from ESSEC Business School (France).

Semir Haddad is the Chief Product and Strategy Officer at MicroEJ, and is in charge of product strategy and ecosystem, for the company that makes everything software defined. Semir has more than 20 years of experience working with industry leaders and startups, bringing innovative technologies to industrial and consumer markets.

More from Semir

Categories
Software & OS