Technology is taking over the world. Nearly everything we do relies on electronic devices — from tracking our fleets to managing our bank accounts to ordering food online. The core elements of these devices, hardware, software and firmware, build off each other to create the electronic ecosystem of our modern world. This article will explain each of these concepts, and then take a look at how Geotab employs all three to provide a world-class telematics solution.
What is hardware?
Hardware is the hard stuff. It is the physical, metal parts that use electricity to process information and make things happen. Modern hardware is made of integrated circuits (ICs) connected together on a circuit board. An IC is a collection of circuits in one small package. They can contain anywhere from one simple circuit to billions of different elements.
Take a look at this part from an older Geotab GO4 device as an example:
Those little black rectangles are ICs — precisely engineered bits of silicon. Each was made for a singular, specific purpose and connects to other ICs in specific ways. It’s up to hardware engineers to select ICs and design the circuit board to achieve the required functionality. The circuit board connects all of the ICs together to allow them to receive power and communicate with each other and the world beyond the circuit board.
Some hardware systems consist of multiple circuit boards communicating with each other. This can be done for multiple reasons. It can save space, allow greater modularity when selecting components, and make it easier to replace malfunctioning or obsolete boards.
How to repair and upgrade your hardware
Upgrading or repairing hardware requires physically replacing components. This can entail precise replacement of individual ICs, or swapping out entire circuit boards.
This manual repair method necessitates a longer design process. All of the features that go into a piece of hardware have to be set in stone (well, in silicon) before anything is shipped out. The hardware must be thoroughly tested to ensure there are no problems. Any changes in design require further testing. Issues with the design can mean a costly RMA process for the manufacturer and equally costly downtime for customers.
The brains of modern computing
A special type of IC is the microprocessor. The brain of every modern computer, a microprocessor’s job is to receive and execute instructions. They are often the central part of a circuit board design, controlling and sending signals to other ICs.
Microprocessors come in many different flavours. They can range from the humble 8008 to the mighty POWER9 at the heart of the world’s fastest supercomputer. They can be optimized for high speeds, low power consumption, or low cost, for example. Some are designed for extreme temperatures or are even hardened against radiation. The one common feature of processors is that they are general purpose. The work that they do is defined by the instructions that they are running. Contrast this with other ICs, which are designed for a specific task and can’t be programmed to do anything else.
So where does a microprocessor get its instructions? We have arrived at software.
Main types of software
Running a program means giving the instructions to the computer processor to carry out. Given the huge array of processors available, this is a difficult task. Different microprocessors have different instruction sets, meaning they can’t all be programmed in the same way. How do we ensure that our program works, regardless of the underlying hardware? For this we turn to a special type of program called an operating system, or OS for short. The role of the OS is to mediate and allocate hardware resources to each program that needs to run on the computer.
The majority of software most people are familiar with is called application software. This is what the user actually sees and interacts with. Examples include web browsers, word processing programs, or music players. The role of the OS is to allocate hardware resources to each application that needs to run. When you open a web browser, the OS gives it some memory to work with and makes sure that the instructions that describe the web browser program are passed to the processor.
Application software provides a layer of abstraction between the user experience and the underlying hardware. This provides a distinct advantage. Engineers writing application software can target specific operating systems instead of specific microprocessors. This allows much greater freedom in software design, as the engineer can be sure that their program will run on any hardware that the OS itself can support. Users can install programs on their preferred OS without having to worry about the specifics of hardware.
One of the primary advantages of software is that it’s soft. It is easy to add fixes and features to software once it’s in the customer’s hands. Once the core software is created, engineers can continue to support and update the product throughout its life cycle. Contrast this with hardware, where once the physical device is built and shipped to customers, the engineers can do little to update or fix it.
Software allows us to do incredible things with powerful hardware such as smartphones, desktop computers, tablets, and others. But there is a whole other class of hardware devices that do specific tasks with limited or no human input. We call these embedded systems, and the software that powers them is firmware.
Types of firmware
Firmware is a specific type of software. It is designed to work closely with hardware, instead of abstracting it away behind an operating system. In fact, many devices running firmware run either a very simple OS or none at all. This allows for greater control of hardware at the cost of increased complexity in implementation.
Firmware is also implemented in a programming language using source code. The primary advantage of this setup is the ability to control real time systems. Such systems must receive and process data within a specified time frame, with consequences if they fail to do so. Engineers design firmware for embedded systems to ensure that these processing requirements are met. Application software typically makes no such guarantees. General purpose computers are running too many programs to always guarantee timing requirements. Since firmware is usually the only program running on an embedded system, engineers can guarantee that the resources provided by the system are sufficient to carry out the system’s functionality.
Many embedded systems are designed to operate for long periods with minimal human interaction. Firmware plays a role in this. When there are errors or unexpected conditions, it’s unacceptable for firmware to outright stop working. Even alerting a user often isn’t enough. Firmware needs to be able to recover from anomalous operating conditions.
Updating your firmware
There are billions of devices running firmware that can’t be updated. When was the last time you updated the firmware on your microwave? Probably never! With systems such as this, engineers have to take extra care to ensure that their firmware is correct. This firmware is deeply embedded. Once it is programmed, it is never again modified or updated.
The rise of connected devices has made it increasingly common to find devices that support firmware updates. Devices with Wi-Fi, cellular, Bluetooth, or other connections can usually be updated just like software systems. This allows for bug fixes and new features or improvements.
There are additional considerations beyond software updates, however. Since these devices are often running only firmware, a bad firmware update can turn a perfectly functional piece of hardware into an expensive brick. It’s difficult to do this with application software, since as long as the OS is alive, a user can troubleshoot updates gone wrong.
How does this work at Geotab?
Geotab designs hardware, software and firmware.
MyGeotab is application software. Specifically, it is a web application — one that runs inside a web browser. The Development team at Geotab maintains the program. They add new features, fix bugs, and make constant improvements.
The GO device is telematics hardware. Inside the sleek shell is a stacked circuit board, carefully designed by Geotab’s automotive team to provide vehicle telematics. The GO device is an embedded system, a purpose-built telematics solution.
The GO device runs firmware, also designed by Geotab’s automotive team. This firmware has to meet many real-time requirements, mostly related to engine communication. Missing messages from an engine computer is not acceptable when the customer is relying on this data for logistical or regulatory purposes.
Both MyGeotab and the GO device firmware are updated frequently with the latest and greatest fixes and new features. The GO device hardware, however, is updated only rarely. Usually, this represents a complete overhaul or major new features.
Hardware, software and firmware are all key elements of modern electronic devices. Hardware provides the brains of our systems. Software enables flexible, portable applications with a huge array of functionality. Firmware powers application-specific hardware for when timing is critical. All of these pieces together enable the amazing connected world that we enjoy.