You receive the first prototype of a new custom board. How do you bring it up?
What the interviewer wants to hear
- Visual inspection and check power rails before connecting firmware
- Confirm debugger connection and clock configuration
- Blink an LED and get a UART console working first
- Bring up peripherals one at a time with test firmware
- Use scope and logic analyser; log issues for the hardware team
Model answer
First I inspect the board for assembly problems, then power it from a bench supply with a current limit and measure every rail and its ripple before anything else. Next I connect the SWD debugger, confirm I can read the chip ID, and run a minimal program on the internal oscillator. Then I blink an LED and get a UART console, which gives me a debugging channel. After that I switch to the external crystal and the full clock tree, and check clock output on a scope. I bring up peripherals one at a time with small test firmware: I2C and SPI devices by reading ID registers, checking signals with a logic analyser against the schematic and datasheets, then ADC, memory, radio and power modes, measuring sleep current. I record each problem with evidence and share it quickly with the hardware engineers, because board fixes take time.
Can you answer it under time pressure?
Take a timed hard round and get scored on every answer.
More hard Embedded Systems Engineer questions
- Design the firmware for a battery-powered sensor that must run for 5 years on a coin cell and report data every 15 minutes.
- How would you secure an IoT device's firmware against tampering and cloning?
- How do you make sure a real-time system always meets its deadlines?
- How do you build a strong automated testing strategy for embedded firmware?
- How do you choose a microcontroller for a new product?
- Design a secure, fail-safe over-the-air firmware update system for a fleet of IoT devices.
- What changes when you write firmware for a safety-critical product, such as automotive or medical?
- How do you safely share data between interrupt handlers and tasks while keeping interrupt latency low?
- A variable is randomly overwritten in devices running in the field, but you cannot reproduce it on your desk. How do you find the cause?