If you're looking for Firmware Development Interview Questions for Experienced or Freshers, you are at right place. There are lot of opportunities from many reputed companies in the world. According to research Firmware Development has a market share of about 53.6%. So, You still have opportunity to move ahead in your career in Firmware Development Engineering. Mindmajix offers Advanced Firmware Development Interview Questions 2018 that helps you in cracking your interview & acquire dream career as Firmware Development Engineer.
Q: What do you understand Firmware?
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.
Q: What is the difference between a driver and firmware?
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.
Q: What is the firmware of a computer?
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.
Q: Is embedded software a firmware?
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.
Q: What language is used to write firmware?
Firmware is typically written in a low-level language (be it C or assembly) as compared to other languages. It can be easily compiled and assembled into machine code and placed in a known position on the storage, where the hardware, during its startup process can read from the location and initiate that code.
Q: What are the common examples of firmware?
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.
Q: What is firmware of microcontroller?
Firmware is a program that is installed in any microcontroller based system, usually stored in flash memory. The bootloader is a small program which facilitates the programming of these flash memories.
Q: What is embedded software design?
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.
Q: What do we know by embedded firmware design?
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.
Q: Which programming language is used for microcontrollers?
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.
Q: What is firmware in an operating system?
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.
Q: What do we mean by a firmware update?
Most of the modern day gears and other state 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.
Q: What is an embedded language? Which programming language is used in embedded systems?
A programming language is a language that has been used for coding in the firmware application. Examples of embedded languages are VBA for Microsoft applications and various other versions of LISP in programs such as Emacs & AutoCAD. C remains the most widely used and is being accepted in the embedded programming language, with compilers available for almost every microprocessor, microcontroller and processor core on the market. However, this language wasn’t designed or intended for making firmware.
Q: What are real times embedded systems?
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.
Q: Why is embedded system useful?
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.
Q: Explain what are real-time embedded systems?
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.
Q: What do you understand by a microcontroller?
The microcontroller is a self-contained device with peripherals, memory and a processor that can be used as an embedded system.
Q: Mention the difference between microprocessor and microcontroller?
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.
Q: What is DMA? How does DMA deal with a microcontroller?
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.
Q: Explain interrupt latency? How can you reduce it?
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.
Q: Mention what are buses used for communication in an embedded system?
In an embedded system, 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.
Q: List out the various uses of timers in an embedded system?
Timers in embedded system is used in multiple ways
1. Real Time Clock (RTC) for the computer system
2. Initiating an event after the preset time delay
3. Initiating an event after the comparison of preset times
4. Calculate the value in timer on any event
5. Finding the time interval between two eventsTime slicing for different tasks
6. Time division multiplexing
7. Setting up of various tasks in RTOS.
Q: What is a Watchdog Timer?
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.
Q: Explain the need for an infinite loop in embedded systems?
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.
Q: List out some of the commonly found errors in Embedded Systems?
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
Q: What is semaphore? What are the types of semaphore?
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).
Q: What is mutex? Explain what is the difference between mutexes and semaphores?
In computer science, a lock or mutex (from mutual exclusion) is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. The difference between mutex and semaphore is depicted in the following chart: -
|A mutex object facilitates one thread into a controlled section, forcing other threads, that tries to gain access to that section, to wait until the first thread has moved out from the stipulated section||Semaphore allows multiple access to shared resources|
|Mutex can only be released by the thread which has acquired it||Semaphore can be triggered from any other thread or process.|
|Mutex will always have a known owner||
For semaphore we can’t detect which thread we are blocking on
|Mutex is a tool that can also be used to provide deadlock-free mutual exclusion. (either consumer or producer can have the key and proceed with their work)||Semaphore is a synchronization tool that helps us to overcome the critical problems|
|By definition, Mutexes are binary semaphores, so there will be two states, locked or unlocked||
Semaphores are usually referred to the calculated number of locks
Q: When should we use the recursion function? Mention what happens when recursion functions are declared inline?
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.
Q: Explain whether we can use semaphore or Mutex or spinlock in interrupt context in Linux Kernel?
Semaphore or Mutex can’t be used for interrupt contexts in Linux Kernel. While spinlocks can be safely used for locking in interrupt context.
Q: What does a firmware engineer do?
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.
Get Updates on Tech posts, Interview & Certification questions and training schedules