Firmware Development Interview Questions and Answers

Q1 : What is the Firmware of a Computer?
A : Firmware is the stored data on a computer or another hardware device’s read-only memory (ROM). It consists of instructions of the device’s operating procedure. Firmware such as the ROM, BIOS of any computing devices like laptop, Smartphone or personal computers may contain only elementary functions of a device. Firmware such as the program of the embedded system may be the only program that runs on the system and provides all of its functions.

Q2 : What do we mean by a Firmware Update?
A : Most of the modern day gears and other states of art appliances, that are being invented for use nowadays is more or less the computer, be it an audio or video device. In these devices, the manufacturer makes improvements to the firmware that operates the device. These improvements are released as firmware updates and are generally updated through the internet.

Q3 : What do you understand by a Microcontroller?
A : The microcontroller is a self-contained device with peripherals, memory and a processor that can be used as an embedded system.

Q4 : Mention what are Buses used for Communication in an Embedded System?
A : In an embedded system, the following are the buses used for communication:

  1. I2C: used for communication between multiple ICs
  2. CAN: used in automobiles with centrally controlled network
  3. USB: used for communication between CPU and devices like mouse, etc.
  4. While ISA, EISA, PCI are the standard buses for parallel communication being used in PCs & other network devices.

Q5 : What does a Firmware Engineer do?
A : Firmware is the programmable content in electronic hardware devices, such as remote controls, mobile phones and medical devices that provide directions to the device on how to operate. Firmware engineers create and execute these instructions, called algorithms, which enable the hardware to function properly

Q6 : What is Semaphore? What are the types of Semaphore?
A : Semaphore is an abstract data store which is used to control the resource accesses across the different threads of execution or across different processes.
There are basically two types of semaphores:

  • Binary semaphore which can take only 0, 1 values. (Used when there is contention for a single resource entity).
  • Counting semaphore which can take incremental values to a certain limit (used when a number of resources is limited).

Q7 : Explain Interrupt Latency? How can you reduce it?
A : In computing, interrupt latency is the delayed time when an interrupt is generated to when the cause of the interrupt is serviced. For many operating systems, devices are serviced as soon as the device’s interrupt handler is executed. By writing some minor ISR routines, interrupt latency can be reduced and make the system efficient.

Q8 : Mention the difference between Microprocessor and Microcontroller?
A : Microprocessor manages the resource (I/O, memory) which lies outside of its own architecture. Microcontrollers have I/O, memory, etc. inbuilt and specifically designed for controlling applications.

Q9: Explain what are Real-time Embedded Systems?
A : Real-time embedded systems are computer systems that monitor, respond or control an external environment. This environment is connected to the computer system through actuators, sensors, and other input-output interfaces.

 Q10 : What are Real Times Embedded Systems?
A : Real-time systems are specially designed computers that are supposed to monitor, respond to, or control an external environment, connected to the computer system through sensors, actuators, and other input-output interfaces. These environments generally consist of physical or biological objects of any form and structure. Sometimes humans are part of the connected as an external world, but a wide range of other natural and artificial objects, as well as animals, are also possible in this system. These computer systems must meet various timing and other constraints that are imposed on it by the real-time behavior of the external world for which it is interfaced. That’s why it is known as real time. Another name for these systems is reactive systems; because their primary purpose is to react to signals from their environment. A real-time computer system may be a component of a larger system in which it is embedded; reasonably, such a computer component and is called as an embedded system.

Q11 : What is Dma? How does Dma deal with a Microcontroller?
A : Direct Memory Access (DMA) is a feature provided by some computer bus architectures which permits data to be sent directly from an external device (such as a disk drive) to the memory on the computer’s motherboard. DMA address deals with such physical addresses. It is an appliance which directly drives the data and address bus during data transfer. So, it is purely a physical address.

Q12 : What is a Watchdog Timer?
A : A watchdog timer (WDT) is a hardware that automatically initiates a system reset if the main program neglects to service it. It is often used to reset an embedded device that hangs because of a software or hardware malfunction.

Q13 : Explain the need for an Infinite Loop in Embedded Systems?
A : Embedded systems need infinite loops for repeatedly processing and monitoring the state of the program for exceptional errors. For instance, issues such as memory outage or divide by zero, etc. that might just happen during the runtime and are being verified.

Q14 : Whether we can use Semaphore or Mutex or Spinlock in Interrupt Context in Linux Kernel?
A : Semaphore or Mutex can’t be used for interrupt contexts in Linux Kernel. While spinlocks can be safely used for locking in interrupt context.

Q15 : When should we use the Recursion Function? Mention what happens when Recursion functions are declared Inline?
A : Recursion function should be used when we are aware of the number of recursive calls is not excessive. Inline functions property says whenever it will call, it will copy the full definition of the function. Recursive functions declared as inline, creates the burden for the compiler’s execution.

Q16 : List out some of the commonly found errors in Embedded Systems?
A : Some of the commonly found errors in embedded systems are:

  1. Damage of memory devices due to static discharges and transient current.
  2. Address line malfunctioning due to a short circuit
  3. Malfunctioning of Data lines
  4. Due to garbage or errors, some memory locations become inaccessible for storage
  5. Wrong insertion of memory devices into memory slots
  6. Wrong control of signals

 Q17 : Why is Embedded System Useful?
A : With an embedded system, it is possible to replace dozens or even more of hardware logical gates, input buffers, timing circuits, output drivers, etc. with a relatively cost-effective microprocessor.

Q18 : What is Embedded Software Design?
A : Embedded software is written to control machines or devices that are not perceived as computers. It is being designed for the particular hardware that is operated upon and has time and memory constraints. These machines don’t need a power supply and can be switched on and off randomly. Instructions installed in it cannot be modified and for which the data doesn’t need to be saved.

Q19 : What do you understand by Firmware?
A : Firmware is basically software that is embedded on a piece of hardware categorized as Non-volatile memory. Non-volatile (NVMe) is a semiconductor technology that does not require a continuous power supply to retain the data or the coded program stored in a computing device like flash drives, cameras, remote control etc. Firmware provides a standardized operating environment for complex devices like camera, television sets etc. which does not need a continuous power supply.

Q20 : Is Embedded Software a Firmware?
A : Embedded System usually refers to a specific instance of some hardware that’s designed to be embedded into an application. Firmware is the software which is being installed during the manufacturing of the system. The name clearly suggests that it is firmly embedded in the hardware. If we consider the system is a PC, BIOS is its firmware.

Q21 : What is the difference between a Driver and Firmware?
A : Device drivers are dependent on the operating system and hardware. A driver acts as a translator between the hardware device and the programs or operating systems on which the hardware is installed. Firmware is a software program permanently installed into a hardware device such as a keyboard, hard drive, BIOS, or video cards and is independent to operate the hardware accordingly. It draws power from the source on which it runs.

Q22 : What are the common examples of Firmware?
A : Firmware is a set of instructions that are running on our routers, DVD Player, Smartphones etc. More sophisticated firmware runs on a computer that requires a continuous power supply. BIOS are one such firmware. Another example is a microcontroller, a part of the microprocessor that instructs the microprocessor what actions to take.

Q23 : What do we know by Embedded Firmware Design?
A : Embedded firmware is the memory chip which stores specialized instructions running on an embedded device to manage its functions. Firmware in any embedded system provides the same purpose as ROM but can be updated more easily as compared to firmware on non-volatile equipment. Updations are essential for better adaptability to conditions or interconnecting with additional and modern equipment.

Q24 : What is Firmware in an Operating System?A : Firmware in an operating system is also known as a bootstrap program, known as BIOS, which initializes the operating system. It is mounted in ROM (a non-volatile memory, whose contents are permanent). Firmware locates the kernel of the operating system (kernel is part of the operating system) and loads it into primary memory (RAM) at the time of the computer startup. Firmware of this type needs to be updated regularly to keep the system compatible with other modern devices.

Q25 : Which Programming Language is used for Microcontrollers?
A : Microcontrollers were initially programmed in its assembly language, but nowadays there are many programming languages available and are being used to target microcontrollers. These languages are nowadays being designed especially for the purpose or versions of general purpose languages such as the C programming language.