In embedded devices such as printer, switches, I am confused what the difference between the firmware and the operating system is. Are embedded devices operating systems similar
Firmware is an application that occupies the WHOLE hardware resources. In the other words, there is no operation system able to dynamically loading an application on the system. The application is the operation system itself. The application manipulates ALL resources of the hardware. Thus, the application is extremely integrated with the hardware, it is almost unable to be cross-hardware. It is why the application is called firmware : a software is FIRMED to a specified hardware.
For example, the firmware on your air conditioner controls an specified compressor and an specified control panel. So, the firmware is going to be unworkable on the other air conditioner models.(Of course, the firmware is unworkable on the other appliances) The firmware is extremely hardware-depending.
Originally, firmware was defined as "Firmware is held in non-volatile memory devices such as ROM, EPROM, or flash memory". But the definition is obsolete: Your whole computer will be within firmwares only but without any software if you use solid-state disk(SSD) on that computer.
From my perspective, there is no firmware based on the embedded Linux, or you should call all softwares as firmwares while you use SSD.
For any device (computer, printer, scanner, digital camera, etc.) to start running, it should have an initial program to run when it is powered up/booted. This initial program is called firmware. It is also called as bootstrap program, also called BIOS. It is mounted in ROM (a non-volatile memory, whose contents are permanent).
Firmware locates the operating system's kernel (remember, the kernel is part of the operating system) and loads it into primary memory (RAM) at the time of startup. Firmware is usually written in assembly language or a high level language such as C/C++.
An operating system is a complete software stack that manages a computer's hardware and sets up an environment for the applications to run. In other words, an operating system performs the designated task of the device. Kernel is at the bottom of this software stack and keeps running as long as your device is up and running. When I say operating system managing the hardware, It is actually the kernel that manages any requests to hardware resources (CPU, memory, input, and output).
Firmware refers to a small piece of code that resides in non-volatile memory. In hardware peripherals that are commonly found in offices these days (e.g. printers, VoIP phones, etc.), firmware is usually responsible for loading (e.g. OS code signature verification) and managing (e.g. flashing OS in recovery mode) the operating system that is installed on the machine. It's the operating system's job to carry out the actual task (e.g. printing).
Hardware vendors commonly use a derivative of Linux (e.g. Cisco IOS), or a real-time operating system (e.g. VxWorks).
In the simplest terms:
OS
Contains the kernel, a graphical user interface (GUI) or at minimum a command line interface (CLI) that utilizes hardware for file management
Kernel
Part of the OS software, the doorkeeper and translator between the OS and the hardware.
In other words (from Wikipedia), the kernel's primary function is to mediate access to the computer's resources:
Firmware
When you power on your computer:
Firmware → Kernel → Full OS
Basically
To dovetail off what other have posted:
Firmware is more than just the bootstrap or BIOS, although that is a common use of the term in most consumer devices.
In more sophisticated applications, field-programmable gate arrays (FPGAs), complex programmable logic devices (CPLDs), and other similar technologies provide a mechanism for creating configurable logic circuits that can go way beyond the linearly executable code run by a microcontroller or larger processor. This is often an alternative to application-specific integrated circuits (ASICs), which cannot be altered after the die is laid down.
In such applications the firmware does much more than simply load code to get things started. Applications can be designed to handle multiple parallel operations, including but by no means limited to address routing, signal processing, math coprocessing, timers, power and reset sequencing, even LED and relay controls.
The possibilities for creating custom devices is endless, and in the case of FPGA and CPLD, can be reprogrammed.
Firmware of the type described above is (usually) programmed in VHDL, which describes either synchronous or asynchronous parallel logic to represent desired functions. The designs are typically laid out to be software accessible via either a memory mapped address range or via some other protocol (e.g., PCI/PCI-X/PCIe). The registers created by the firmware design represent a set of control and status for desired features.
The operating system on the other hand, provides software the interfaces to function within some processing environment (i.e., provides context and "rules" to utilize the processor and any software accessible hardware or firmware). An OS can be either laid down as processing rules in firmware or (more commonly) it is just software loaded from either ROM, flash, or other media.
The interface between the machine-independent parts of the OS and the hardware comes in many forms: board support package (BSP), drivers, etc. The BSP is usually where addresses to processor and board-specific peripherals are set up, among other things. Many real-time OS (RTOS) vendors provide some basic BSP setups and/or tools to get things started.
Some designers will keep the BSP design simple to just get things going, and write many of the interfaces to reach hardware or firmware independently of the RTOS BSP protocols; this is more prevalent with custom firmware.
Yes, embedded device OSes are "similar" to PCs. The distinctions are on a spectrum, but they all fundamentally work the same and provide an execution context for the applications to operate on some set of peripherals. As far as what type of OS is actually in the printer? There is no way of really knowing without more information (they only publish that the version is 9.86... could be custom, could be any one of a number RTOSes or GPOSes); also it is not clear if the OS listed with the firmware is actually in that download or just a notation related to compatibility.
I hope that helps!
As others have pointed out, firmware is in non-volatile memory in a device. It contains the instructions that the device performs as it starts up from power-off or reset. This may be the entirety of the software on the device, or it may contain instructions to jump to instructions on some other component as for example when a PC's BIOS causes the processor to read the first sector on a hard disk drive (or floppy or CD-ROM) to discover which code to run next.
An operating system is code running on a device that provides services for applications to access the capabilities of the device. For example, it may provide time-slicing of the processor, a file system to access, input and output, and so on.
An embedded device does not need to supply an operating system to applications, but that may be an appropriate model for the manufacturer to use in writing the software. It is conceivable that a printer could have all of its firmware in one running program with some interrupt handlers, with no need to separate the web server from an OS. I don't know about that particular model.
The point is that an OS can exist in firmware, and firmware can exist without an OS. They are independent concepts.