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, 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:
Firmware is everywhere, and few modern electronic devices can do anything without it.
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:
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 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 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.