Firmware
Firmware is the low-level software that runs directly on a microcontroller — often bare-metal (without an operating system) or on a small real-time kernel (RTOS). It controls hardware directly, is tightly coupled to the circuit and is optimized for scarce resources.
Embedded software
Embedded software is the broader term: any software in an embedded system — from firmware to more extensive applications on powerful SoCs (e.g. running Embedded Linux), including communication, control logic and testing.
In short
All firmware is embedded software — but not all embedded software is “just” firmware. What matters is what the system has to achieve: hard real-time and minimal resources argue for bare-metal/RTOS firmware, complex functions for a larger embedded architecture.
Frequently asked questions
What does SAMD use for what?
We develop both — from bare-metal and RTOS firmware for ECUs to larger embedded applications. The choice depends on real-time, resource and functional requirements.
Is this part of hardware development?
Ideally yes: when firmware and electronics are developed together, timing, stability and even EMC problems can be avoided early. See Embedded software and Electronics development.