Firmware is a software program permanently etched into a hardware device such as a keyboards, hard drive, BIOS, or video cards. It is programmed to give permanent instructions to communicate with other devices and perform functions like basic input/output tasks. Firmware is typically stored in the flash ROM (read only memory) of a hardware device. It can be erased and rewritten.
Firmware was originally designed for high level software and could be changed without having to exchange the hardware for a newer device. Firmware also retains the basic instructions for hardware devices that make them operative. Without firmware, a hardware device would be non-functional.
Originally, firmware had read-only memory (ROM) and programmable read-only memory (PROM). It was designed to be permanent. Eventually PROM chips could be updated and were called erasable programmable read-only memory (EPROM). But EPROM was expensive, time consuming to update and challenging to use. Firmware eventually evolved from ROM to flash memory firmware; thus, it became easier to update and user friendly.
There are levels of firmware:
(i) Low Level Firmware
This is found in ROM, OTP/PROM and PLA structures. Low level firmware is often read-only memory and cannot be changed or updated. It is sometimes referred to as hardware.
(ii) High Level Firmware
This is used in flash memory for updates that is often considered as software.
These have their own fixed microcode embedded in flash chips, CPUs and LCD units. A subsystem is usually considered part of the hardware device as well as high level firmware.
BIOS, modems and video cards are usually easy to update. But firmware in storage devices usually gets overlooked; there are no standardized systems for updating firmware. Fortunately, storage devices do not need to be updated often.
Middleware is a software layer situated between applications and operating systems. Middleware is typically used in distributed systems where it simplifies software development by doing the following:
- Hides the intricacies of distributed applications
- Hides the heterogeneity of hardware, operating systems and protocols
- Provides uniform and high-level interfaces used to make interoperable, reusable and portable applications
- Provides a set of common services that minimizes duplication of efforts and enhances collaboration between applications
Middleware is similar to an operating system because it can support other application programs, provide controlled interaction, prevent interference between computations and facilitate interaction between computations on different computers via network communication services.
A typical operating system provides an application programming interface (API) for programs to utilize underlying hardware features. Middleware, however, provides an API for utilizing underlying operating system features.
Freeware is any copyrighted software, application or program that may be freely downloaded, installed, used and shared. Such programs are available for use at no cost to general end users. Freeware differs from free software, as the latter allows a user to modify source code for republishing or integration with other software.
As small software utilities, freeware is free to use throughout its lifetime because it does not expire after a certain period. Freeware may be used for a desktop, mobile or Web-based utility.
Generally, freeware is a concise and limited version of a larger and paid software program. Vendors publish freeware to provide a limited but free version of software to prospective buyers prior to purchase. Additionally, large independent software vendors (ISV) publish freeware to enhance brand buzz and market reputation.