Blog

Firmware Development Interview Questions And Answers

  • (4.0)
  • | 608 Ratings

If you're looking for Firmware Development Interview Questions And Answers 2018 for Experienced or Freshers, you are at right place. Here Mindmajix sharing a list of 15 Firmware Interview Questions to land your dream job. There are a 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 the opportunity to move ahead in your career in Firmware Development Engineering. 

For an in-depth understanding and practical experience, Explore Firmware Development Training.

Firmware Interview Questions

1) What is Firmware?

A) In electronic systems and computing, the firmware is a computer program that provides the low-level control for the device's specific hardware. Firmware can either provide a standardized operating environment for the device's more complex software (allowing more hardware-independence), or, for less complex devices, act as the device's complete operating system, performing all control, monitoring and data manipulation functions.


2) Can you give me some example devices where the firmware is used?

A) Typical examples of devices containing firmware are embedded systems, consumer appliances, computers, computer peripherals, and others.

 

3) What are the types of firmware?

A) There are two types of firmware's are there: they are,

BIOS and EFI


4) What is BIOS?

A) BIOS is primarily responsible for handling your computer’s hardware components and ensure that they function properly.


5) What is EFI?

A) EFI stands for Extensible Firmware Interface. EFI is a specification for a new generation of system firmware that provides the first instructions used by the CPU to startup hardware and passes the control to the bootloader. EFI, sometimes also referred as Unified Extensible Firmware Interface (UEFI).

Firmware Interview Questions And Answers


6) What is the difference between Software and Firmware?

A) The main difference between Software and Firmware is, software is virtual so it can be Copied, Changed, and Destroyed. It is often stored in memory that is easily accessible and even replaceable by the user. But in the case of firmware, the memory that it stores is often embedded in the device itself and is not replaceable by the user. This is done deliberately to prevent any tampering or removing as it is critical for the device to run and can cause serious consequences if removed.


7) What is Flashing?

A) Flashing involves the overwriting of existing firmware or data, contained in EEPROM or flash memory modules present in an electronic device, with new data. This can be done to upgrade a device or to change the provider of a service associated with the function of the device, such as changing from one mobile phone service provider to another or installing a new operating system.


8) Could you describe Firmware architecture?

A) Firmware architecture includes several steps,

1) Requirements Identification
2) Differentiate Architecture from Design
3) Time Management for non-real-time, soft-real-time, and hard-real-time requirements
4) Embedded Systems Testing - System Tests, Integration Tests, Unit Tests
5) Product Customization - management of feature diversity and product customizations


9) What is the programming language used to write firmware?

A) That is to say, the firmware is typically written in a low-level language (be it C or assembly), compiled and assembled into machine code, and placed in a known position on this storage, where the hardware, during its startup process can read from a known location, and begin executing that machine code.

 

Checkout Firmware Development Tutorial


10) What is meant by middleware testing?

A) Middleware is the layer that resides between the hardware layer and the application layer to provide services such as database management.


11) How can you use c++11 when programming the Arduino? 

A) As of version 1.6.6, the Arduino IDE enables c++11 by default.

For older versions, read on:

It is very easy to change the flags for any element of the toolchain, including the assembler, compiler, linker or archiver.

Tested on the Arduino IDE version 1.5.7 (released on July 2014),

1) Locate the platform.txt file,

 AVR architecture => {install path}hardwarearduinoavrplatform.txt
 SAM architecture => {install path}hardwarearduinosamplatform.txt

2) Inside that file, you can change any flag, for instance,
 compiler.c.flags for changing the default compilation flags for C++ files.
 compiler.cpp.flags for changing the default compilation flags for C++ files.

3) You can also change any of the "recipes" or compile patterns, at the corresponding section of the configuration file, under the title "AVR/SAM compile patterns".

4) After making the changes, you must restart the Arduino IDE, at least on version 1.5.7.

 

12) How do you test firmware before installing it?

A) Yes, we can test firmware using emulation before installing it.


13) When compiling C++ code for the Arduino platform, can you use virtual functions, exceptions, etc? Or would you want to (have to) use a subset of C++ (as described in the comment)?


A) The Arduino environment uses the AVR version of the GCC toolchain. The code is compiled as C++, so you can use classes. Virtual functions are possible; the vtables will be stored in the .data section and have the correct addresses. In fact, the Print base class uses virtual functions to adapt the various "print" methods to the different output types.

Exceptions are not supported because of code space reasons. The Arduino environment passes "-fno-exceptions" to the compiler command line.


14) Can java programming be used in micro-controller programming like C and C++? If yes what is the requirement for it? What about in PIC16 and PIC32 series microcontroller? 

A) To run Java on any platform you will need a Java Virtual Machine (JVM). I would not hold out too much hope for PIC16 due to the memory resources required and perhaps the performance. If you want the highest performance and smallest footprint then C or C++ are a better (and most usual) solution for embedded systems.


15) How firmware communicate to the electronic devices to perform its operations?

A) Modern hardware has a program stored in ROM and an all-purpose microcomputer (CPU) executing that program.

The CPU reads information from ROM by setting up addresses on its address bus and then asking the ROM to tell it the value stored at that location. There's something like a read pulse being raised (on a separate line) to tell the ROM to make the value accessible on the lines of the data bus. That, in a nutshell, is reading.

To get the hardware to do something, the CPU basically executes a kind of write operation. It puts a value, which is just a bunch of bits if you want to look at it that way, on the address bus to select a certain device and perhaps function on that device, then it raises another signal line saying "write!" The device that recognizes its address on the address bus responds to that signal by accepting the data from the data bus and then performing whatever its function is.

Typically, one of the data bus bits will be connected within the output device to a power output stage, i.e. a transistor stronger than the ones used just for computation, and that transistor will connect some electrical device to current sufficient to make it move/glow/whatever.

Tiny, cheap devices are coded in assembly language to save costs for ROM; in industrial quantities, even small amounts of memory can affect the price. The assembly language is specific to the CPU; some chips called "8051", "6502" and "Atmel (something or other)" are popular. Bigger devices with more complex requirements may have their firmware written in C or a C-like dialect, which makes programming a little easier than assembler. The biggest ones even run C++ code. Compiled, of course.

Explore Firmware Development Sample Resumes! Download & Edit for Free..!  Download Now!