BSP & U-Boot Interview (60 Questions)

 

Section A – BSP Fundamentals (1–10)

1.

What is a Board Support Package (BSP)? Why is it required?


2.

What components are typically included in a BSP?


3.

Explain the BSP architecture in Embedded Linux.


4.

What is board bring-up? Describe the complete process.


5.

What are the first things you verify when a new hardware board arrives?


6.

What files need to be modified when porting Linux to a new board?


7.

What is the difference between:

  • BSP
  • SDK
  • Linux Distribution

8.

Explain the complete Linux boot flow from power-on until the login prompt.


9.

What are the responsibilities of the BSP engineer during board bring-up?


10.

How do you verify that a BSP is functioning correctly?


Section B – Boot Process (11–20)

11.

Explain the complete boot sequence of an ARM-based embedded system.

Power ON


Boot ROM


SPL


U-Boot



Linux Kernel



Device Tree



RootFS



Application

12.

What is Boot ROM?


13.

What is First Stage Bootloader (FSBL)?


14.

What is SPL (Secondary Program Loader)?


15.

Why is SPL required?


16.

What are the differences between:

  • Boot ROM
  • SPL
  • U-Boot

17.

What happens immediately after reset?


18.

How is DDR initialized?


19.

Why can't Linux boot directly from Boot ROM?


20.

What are the different boot sources?

  • NOR Flash
  • NAND Flash
  • SD Card
  • eMMC
  • USB
  • Network (TFTP)

Section C – U-Boot (21–35)

21.

What is U-Boot?


22.

What are the major responsibilities of U-Boot?


23.

Explain the architecture of U-Boot.


24.

What are U-Boot environment variables?


25.

How do you print environment variables?


26.

Difference between:

printenv

setenv

saveenv

27.

What is the purpose of:

bootcmd

bootargs

28.

Explain the complete U-Boot boot flow.


29.

What are FIT Images?


30.

Difference between:

  • zImage
  • uImage
  • Image
  • FIT Image

31.

How does U-Boot load the Linux kernel into RAM?


32.

How does U-Boot pass parameters to the Linux kernel?


33.

Explain:

  • bootm
  • bootz
  • booti

34.

How do you boot Linux using TFTP?


35.

How do you debug U-Boot if the board does not boot?


Section D – Device Tree & BSP (36–45)

36.

Why is Device Tree required?


37.

How does U-Boot load the Device Tree?


38.

What happens if the Device Tree is incorrect?


39.

How do you add a new peripheral in the Device Tree?


40.

How do you enable UART in Device Tree?


41.

How do you enable SPI?


42.

How do you enable I2C?


43.

How do you configure GPIOs?


44.

How do you debug Device Tree issues?


45.

Difference between:

.dts

.dtsi

dtb

Section E – Linux BSP Development (46–52)

46.

How do you port Linux to a new hardware platform?


47.

Explain the Linux kernel configuration process.

make menuconfig

48.

How do you cross-compile the Linux kernel?


49.

What is a Root Filesystem?


50.

Difference between:

  • initramfs
  • initrd
  • RootFS

51.

How do you integrate a new device driver into the BSP?


52.

How do you optimize Linux boot time?


Section F – Debugging & Scenarios (53–60)

53.

The board powers on, but nothing appears on the serial console. How would you debug it?


54.

U-Boot starts, but Linux does not boot. What could be the possible causes?


55.

Linux boots, but the root filesystem cannot be mounted. How do you investigate?


56.

The kernel hangs during "Starting kernel...". What would you check?


57.

The Ethernet interface is not detected after boot. How would you debug the issue?


58.

A newly added SPI sensor is not recognized. Outline your debugging steps.


59.

You are asked to port an existing BSP from one ARM Cortex-A board to another. What steps would you follow, and what challenges would you expect?


60.

Design the BSP architecture for an Automotive ECU that includes:

  • eMMC
  • CAN Controller
  • Ethernet
  • SPI Flash
  • Watchdog
  • Multiple UARTs
  • GPIO Expander

Explain:

  • Boot sequence
  • U-Boot configuration
  • Device Tree organization
  • Driver initialization order
  • Memory layout
  • Debug strategy
  • Production considerations

Coding / Practical Questions (Frequently Asked)

  1. Configure U-Boot to boot from eMMC.
  2. Modify bootargs to boot from NFS.
  3. Add a new UART to the Device Tree.
  4. Add an SPI device to the BSP.
  5. Cross-compile U-Boot for a custom board.
  6. Enable a GPIO LED using Device Tree.
  7. Port U-Boot to a new hardware revision.
  8. Add a custom environment variable in U-Boot.
  9. Customize the U-Boot splash screen.
  10. Build a custom Linux image using Yocto or Buildroot (if applicable).

Senior-Level Scenario Questions

These are typical for candidates with your experience:

  • The board does not boot after a firmware update. How do you determine whether the issue is in Boot ROM, SPL, U-Boot, or the Linux kernel?
  • U-Boot boots correctly, but the kernel cannot initialize DDR. How would you investigate?
  • A custom board fails only in Release builds, while Debug builds work. What could cause this?
  • You need to implement a secure boot chain. How would you design it from Boot ROM through U-Boot to the Linux kernel?
  • How would you support A/B partitioning and rollback for OTA updates using U-Boot?
  • How would you reduce Linux boot time from 15 seconds to under 5 seconds?
  • How do you bring up a board when the UART is unavailable?
  • How would you verify that all power rails, clocks, and reset signals are correctly configured during bring-up?
  • What changes are required in U-Boot and the Device Tree when migrating from one DDR memory configuration to another?
  • How do you structure a BSP so that it can support multiple hardware variants with minimal code duplication?

Comments

Popular posts from this blog

Fundamental Secure Features in Automotive ECUs

Overview of ISO/SAE 21434 Standard

Fundamental Secure Feature I: Secure Boot