When you get deep into solutions for the Industrial Internet of Things (IIoT), the line between firmware and application gets blurry ... or, in this case, foggy.
Most of my development experience has been in one particular form of firmware, commonly known as BIOS (Basic Input-Output System). This is the boot firmware common on Intel® Architecture platforms. While the Unified Extensible Firmware Interface (UEFI) specification modernizes and standardizes boot firmware, it still serves the same function as the original PC BIOS. Initialize the hardware, boot the operating system, and provide a robust low-level API so the OS doesn't have to be hard-coded to a specific hardware platform.
For microcontrollers, it's a bit different. Firmware often represents the entire software stack, due to limited memory and compute resources. Low-power sensors are more heavily customized for specific markets, so changing firmware is essential to building a proper solution. Small devices like freight tracking sensors don't communicate directly with the cloud, and need to work as a mesh network to extend battery life.
Intel is already working as part of the OpenFog* Consortium to standardize the 'fog' layer that is critical to new IIoT solutions. While developing reference platforms and customer solutions, Intel Software has started building firmware for these fog devices (fogware?) to implement mesh networking under low-power constraints. At Embedded World 2017, I had the opportunity to talk about the challenges in developing OpenFog* solutions. This work is driving the development of a firmware SDK for mesh-networked sensors.
Firmware is only one small part of building a complete IIoT solution, but it's critical to creating robust sensors that create the information needed for proper asset tracking. Even the biggest cloud starts as a drop of water.