The Software Development Blog | AndPlus

Firmware Development in 2021

Written by Abdul Dremali | Jan 1, 1970 5:00:00 AM

Technology has its own set of colorful terminology. It can be fun to learn the origins of technical terms because some have a fascinating history.

For instance, long before there was computer software, none other than Thomas Edison is believed to have coined the term “bug” to refer to design defects that cause system failures. A competing version holds that “bug” came into use because early computer researchers found that actual insects were causing hardware issues.

Whatever the case, the term stuck, and for as long as humanity continues to develop hardware and software systems, there will be bugs.

Less controversial is the origin of “firmware.” This term first appeared in a 1967 article in Datamation magazine. In that article, the term referred to low-level “microcode” that implemented the instruction set used by a computer’s central processing unit (CPU). Since then, the term has evolved to refer to any low-level programming code providing the basic functions of a piece of hardware, such as the startup and shutdown sequences, power management, and input/output interfaces.

The “firm” in “firmware” refers to the fact that such code usually resides in permanent (or semi-permanent) read-only memory, as distinguished from software that is loaded into the system’s main memory for execution.

Firmware Development

Firmware, by definition, is invisible to the device user. Unlike application software the enduser interacts with, firmware sits in the background, unnoticed unless something goes wrong with it.

From a layperson’s perspective, firmware development doesn’t seem like interesting work. In reality, firmware development can be among the most interesting and important projects a developer can work on.

Consider:

  • An endless variety of devices need firmware, from Bluetooth headsets and TV remote controls to network switchgear, wireless sensors, and the computers that control most aspects of modern automobile operation. Each device and implementation presents unique requirements and challenges.
  • A firmware bug can cause the whole device to stop working, sometimes permanently, so the firmware must be ultra-reliable. This means extensive testing for every possible contingency, including those you think would never happen.
  • Often, firmware development occurs in parallel with the development of the device’s embedded software, which makes the device do whatever useful thing it’s designed for. The firmware and embedded software developers must practice close coordination throughout the project; miscommunication or poor assumptions can cause interoperability issues that are difficult to track down and resolve.

Firmware is everywhere, and few modern electronic devices can do anything without it.

What’s New in Firmware?

So, with all this important firmware activity going on, what are the latest trends in firmware development? First, there’s been an explosion in the variety of hardware for which to develop firmware.

The “brains” of these devices fall into a few main categories:

  • Microprocessors are traditional general-purpose CPUs found in computers and other devices with high levels of sophistication and functionality.
  • Microcontrollers are single-chip computers that include one or more CPU cores integrated with memory and input-output interfaces. Less powerful than general-purpose computers, microcontrollers are programmed to perform a limited set of functions, such as those for remote controls and kitchen appliances.
  • Field-programmable gate arrays (FPGAs) are logic chips that can be configured (and reconfigured) to perform many different functions. They are often used in hardware development for prototyping in the process of determining the final hardware design.

In each case, several manufacturers provide a wide variety of devices, and each has its own specifications, conventions, and requirements for firmware development.

In the past, firmware development involved getting down to the nuts and bolts of the hardware. It required the laborious process of writing assembly-language code for the firmware.

The good news for developers is those days are gone.

Numerous tools have emerged in recent years to simplify the firmware development process to a great extent. Integrated development environments (IDEs) exist for specific brands of microcontrollers and enable developers to write code in a higher-level language (such as C++ or Java) and compile it into the machine-level code to run the microcontroller.

These tools enable developers to write, compile, and test their code all in one environment. Some tools, such as PlatformIO, take this a step further, enabling development for devices from multiple manufacturers in a single IDE.

The Firmware Development Niche Market

The demand for firmware development is growing, driven by new innovations in internet-of-things (IoT) devices. These devices are expected to number in the tens of billions in the next few years, so there’s no lack of work for firmware developers.

Firmware development has always been a specialized niche within software development in general. College courses and developer bootcamps rarely focus on firmware, instead leaning towards teaching techniques for developing application software. Thus, many firmware developers are self-taught. 

However, the rise of easy-to-use tools and extensive online documentation make the firmware development market more accessible for both new and experienced developers. Further, each device manufacturer has a community of firmware developers around to share skills and techniques and help each other solve problems.

With a large number of programmable devices available, it’s not possible for one developer to be an expert in all of them. At the same time, it’s unwise, from a career development standpoint, for a developer to focus on only one. Firmware developers should be familiar with enough different devices (if possible, from different manufacturers) to have flexible options as the market for firmware development continues to evolve and expand.

AndPlus and Firmware Development

AndPlus has a long history and strong expertise in firmware development. Our firmware specialists are experts in the tools and techniques needed to develop firmware with the efficiency and reliability required of resource-constrained, mission-critical devices. 

If you have a great idea for a hardware device and need a helping hand with the firmware development, give us a call. We’d love to hear your idea and discuss how we can help bring it to life.