System design for firmware/embedded engineers

Intel
PixO00

Go to company page Intel

PixO00
Mar 16 6 Comments

#hardware #interview #semiconductor
I need some advice on how should I be preparing for system design interviews for firmware/embedded roles. Maybe we can use this post to list any design questions faced by embedded or firmware engineers on their respective interviews.
The only design question I was asked in my past interview was how would a firmware stack look like while interfacing a dma controller.
Suggestions are welcome for any material out there which I can refer for design questions.
TC 200k

comments

Want to comment? LOG IN or SIGN UP
TOP 6 Comments
  • Apple
    Sweetfruit

    Go to company page Apple

    Sweetfruit
    For firmware Engineering interviews system design interviews, it is very niche and dependent on what company you are interviewing for. For example companies like Magic Leap or Reality labs can ask you to design some smart glasses or VR device. If you are interviewing for some IOT company like silicon labs, they may ask you to design an IOT based system which is to accomplish an objective.

    Sometimes, the interviewer will ask you how to design a product and sometimes he or she will ask you to design an interface or protocol. However, the basic approach to answering any embedded system design question should be as follows:

    1. Understand the problem statement really well. Ask clarifying questions to the interviewer. More often than not, candidates fail system design interviews because of not knowing what the interviewer expects.

    2. If you are asked to design an electronic toaster, design the basic functionality of the toaster first, before thinking of what IOT interface the toaster needs. Simplicity is the key.

    3. Define all the blocks the system might need. The ones I am talking about are the component blocks that are absolutely needed. For example, if you are designing a basic computer motherboard, you will need a DRAM and an SRAM and some sort of interface to the CPU.

    4. Think about the peripheral blocks that the product might need if applicable, like UART, or SPI etc.

    5. Once you are convinced that you have all the basic building blocks of your system, explain to the interviewer how the system would work and its flow.

    6. First think through the basic design and only then think of system optimization. For example, only when you think that the CPU should not be kept busy all the time, add the DMA block. But this is only an optimization that should be added later. Stick to the basics first. To many details will clutter your design so don't add them in the beginning.

    7. Think of power optimizations the system might need.

    Last and most importantly, think in this order:

    1. First make it Functional. i.e. it should work.
    2. Then make fast, think about performance.
    3. Lastly, think about scalability.

    For system design in ESE, I highly recommend Elicia White's book : Making Embedded Systems.
    Apr 16 0
  • Need this as I am in the same boat
    Apr 4 2
  • Have you found any info ?
    Apr 4 0
  • Looks like no response from anyone. Am looking for some information too on embedded systems design questions
    Mar 28 0