Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.
  1. How are firmware and device driver different and related? I think both control devices?
  2. Is firmware always self-booting, while driver must be run/booted by OS?
share|improve this question

3 Answers 3

  1. Firmware is the software that runs on the device. A driver is the software that tells your operating system how to communicate with the device. Not all devices have firmware--only devices with some level of intelligence.

  2. I'm not exactly sure what you mean... generally speaking, firmware has nothing to do with "booting"... I think maybe what you're asking is, do devices with firmware always have the firmware installed on the device, or is it loaded after boot time. If that's what you're asking, the answer is no...

Most commonly, devices with firmware have the firmware programmed into the device (either with a ROM chip, or a programmable ROM chip), but there are some devices where the firmware is loaded into the device at initialization time. I can think of some network cards and webcams that operate this way, but I'm sure there are others as well.

share|improve this answer
    
Thanks! in 2, by self-booting, I mean that if the firmware is run by itself not by others, while driver is run by OS not by itself? I picked up the word self-booting from "Without an operating system, a user cannot run an application program on their computer, unless the application program is self booting" in en.wikipedia.org/wiki/Operating_system –  Tim Jun 20 '11 at 4:48
    
Firmware is run by the hardware device itself... I think that answers the question? Consider this: Many non-computer devices have "firmware"--such as digital cameras, DVD players, cell phones, etc. So obviously in these cases, the firmware is completely self-contained in the device itself. Only if/when you plug one of those devices into your computer do you need a driver. –  Flimzy Jun 20 '11 at 4:50
    
Thanks! From en.wikipedia.org/wiki/Computer_software: "Firmware is low-level software often stored on electrically programmable memory devices. Firmware is given its name because it is treated like hardware and run ("executed") by other software programs." Is firmware run by other software programs or by the hardware itself? –  Tim Jun 20 '11 at 5:20

The modern definition or common usage of firmware has nothing to do with a specific software functionality. Firmware is simply software that is stored in non-volatile semiconductor memory (e.g. PROM, EEPROM or flash) chips rather than a mass storage device such as a hard drive. The stored software could be a monolithic linked binary, or consist of loader, kernel and application modules. (OTOH I've seen some TV tuner cards for PCs that require loading of "firmware" by the Linux kernel in order to complete initialization.)

The origin of the term has to do with processor-controlled logic versus hardwired logic. Software stored on hard drives could be easily modified and updated. Revisions and updates to hardwired logic required board or module redesign and replacement. The middle ground was a processor executing software to control hardware. The software was called *firm*ware to reflect the middle ground between *soft*ware versus *hard*wired logic. Originally the firmware was stored in ROM, PROM or EPROM chips in order to maintain board modularity. The advancement of EEPROM and flash chips allowed in-circuit and on-board updates of the firmware.

As processors (and peripherals) got smaller and cheaper and less power hungry, the possibilities for embedding them in every kind of device/appliance expanded. In order to make the software to operate these devices rugged and secure, the software is stored in flash memory chips rather than a hard drive; it also makes the device smaller and a lot cheaper. The term firmware has been expanded to encompass all software in devices/appliances with embedded processors, even though some parts of the stored code could have no relationship to replacing hardwired logic.

share|improve this answer

Firmware implements low-level details that are required to operate the hardware, and provides an API/ABI to a higher level. A device driver provides an adapter between the OS and the API/ABI exposed by the firmware.

share|improve this answer
    
Thanks! Is device driver part of the OS, and run by the OS kernel? Is firmware part of the device, and run by which, the OS kernel or the firmware itself? –  Tim Jun 20 '11 at 5:39
    
The device driver is considered part of the OS, and usually runs on the host CPU. Firmware is usually run by the device; it may be uploaded to the device by the OS though. –  Ignacio Vazquez-Abrams Jun 20 '11 at 5:43

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.