Career guide

Embedded firmware engineer

Write the code that runs inside devices, close to the chip, where timing and memory matter.

Embedded

17 Mokxi courses, then the real-world steps.

The job

What it is day to day

  • Write C and C++ that runs on a microcontroller with kilobytes of memory and no operating system, or a small real-time one.
  • Bring up new hardware: get the clocks, pins and peripherals working on a board for the first time.
  • Talk to sensors and chips over I2C, SPI and UART, reading the datasheet to get the details right.
  • Debug with a debugger, a logic analyzer and an oscilloscope, often at the same time.
  • Work closely with hardware engineers on schematics, and with testers on what the device must do.
Your path

The courses, in order

Each course builds on the one before. Every lesson runs in your browser, free, with nothing to install.

  1. Step 1

    Embedded on the Arduino Uno

    One board, twenty pins and a C++ sketch. From a lamp you switch to a game you can play.

    16 lessons
  2. Step 2

    Interactive devices on the Uno

    Read people and sensors without blocking, control an output, then finish with two playable builds.

    9 lessons
  3. Step 3

    Talk to chips: I2C, SPI and UART

    The three buses every sensor, screen and radio speaks, on the Uno: serial between two boards, I2C scans and shared buses, SPI screens and an SD card, the logic analyzer, and a weather station that uses them all.

    7 lessons
  4. Step 4

    Motors and motion

    DC motors on a driver, the H bridge inside it, servos, a stepper on an A4988, an encoder that measures what the motor did, and a 2WD robot car with ultrasonic eyes and line sensors.

    7 lessons
  5. Step 5

    Embedded on the ESP32-C3

    A 32 bit RISC-V board at 160 MHz. Its own peripherals, its own 3.3 V rules, and a console at the end of it.

    13 lessons
  6. Step 6

    Embedded on the Raspberry Pi Pico

    A dual core Cortex-M0+ at 125 MHz. PWM on every pin, a 64 bit clock, and pins that do not forgive 5 V.

    7 lessons
  7. Step 7

    MicroPython on the Pico

    Real Python on a Raspberry Pi Pico: blink and the REPL, buttons and if, loops and PWM, a knob on the ADC, lists and functions on an LED bar, an OLED on I2C, and a reaction game boss.

    7 lessons
  8. Step 8

    Connected devices

    WiFi, APIs, a web server, MQTT, ESP-NOW and BLE on the ESP32, and a device that keeps going when the network does not.

    7 lessons
  9. Step 9

    Embedded on the STM32F411

    A Cortex-M4 at 84 MHz, where a pin is a port and a number and every peripheral starts with its clock switched off.

    6 lessons
  10. Step 10

    Debug like an engineer

    The multimeter, the oscilloscope, the logic probe and analyzer, Serial done right, and a method that finds any fault. Ends with a boss: three bugs in one circuit.

    6 lessons
  11. Step 11

    Under the hood

    Take the Arduino wrapper off: DDR, PORT and PIN, Timer 1 by hand, the vector table and interrupts, cycle-counted delays in a .S file, a bug read off a halt in the debugger, and a UART drawn by hand on a pin.

    6 lessons
  12. Step 12

    Read datasheets and schematics

    The skill every hardware job asks for: schematic symbols, a first page, absolute maximum ratings, timing diagrams, register maps and pinouts, each checked on real parts. Ends with a sensor brought up from its datasheet alone.

    7 lessons
  13. Step 13

    Control systems: PID

    Feedback control on real physics: open and closed loops, P, I and D one at a time, tuning by the numbers, encoders, a balancing robot, and a motor that holds its speed whatever you throw at it.

    7 lessons
  14. Step 14

    Scheduling and RTOS

    From a scheduler written by hand to FreeRTOS on the Uno: tasks and priorities, time slicing on the logic analyzer, queues, mutexes and priority inversion, starvation and the watchdog, and a four-task device.

    7 lessons
  15. Step 15

    Low power products

    Make a battery last years: where an Uno’s current goes, sleep modes and wake sources, a power budget on a bare chip, measuring with a meter and an INA219, battery life checked against a draining cell, and a coin cell node.

    7 lessons
  16. Step 16

    Firmware architecture

    How a whole device is put together on the Uno: a scheduler and state machines, ISRs that only record, drivers behind interfaces, checked settings in EEPROM, error codes and the watchdog, safe updates, and a layered multi-sensor boss.

    7 lessons
  17. Step 17

    Portfolio and interviews

    Turn finished projects into a job search: choose and document portfolio pieces, share links that run, read job posts and answer technical questions out loud.

    6 lessons
Skills

Your skills checklist

Portfolio

Projects to build and show

Open one, run it, change it, then share your version as a link that runs. The last course in this guide shows how to write each one up.

Temperature and light on one I2C bus

Two chips at their own addresses on one bus, read from their datasheets.

Alarm clock

A real-time clock chip, a display driver and a state machine for the alarm.

Kalman filter tilt angle

Sensor fusion: an accelerometer and gyro combined into a steady angle.

Rocket flight computer

A self-test, flight states, a filtered apogee and a log on an SD card.

CAN bus dash reader

Reading and decoding frames from a bus used in real vehicles.

Next steps

After Mokxi, in the real world

Mokxi teaches the skills; employers, schools and licensing boards set their own rules. These are the common routes, and they vary by place.

Training and education

  • Most embedded engineers have a degree in electrical engineering, computer engineering or computer science. Some move in from electronics technician roles or from software with strong hardware projects.
  • A community college associate program in electronics or computer engineering technology is a common first step, and some credits can transfer to a bachelor's.
  • Buy a cheap development board and a logic analyzer, and build the same projects on real hardware. Interviewers often ask what went wrong on a real bench.

Certifications

  • No certification is expected for most firmware jobs; projects and a degree carry more weight.
  • Some fields have their own safety standards (cars, medical devices, aircraft). Employers in those fields usually train you on them.

Entry-level titles to search

  • Junior embedded software engineer
  • Firmware engineer I
  • Embedded systems engineer
  • Associate firmware developer
  • Embedded software intern
  • Hardware test engineer
Interview prep

Questions you may be asked

Short answers drawn from the courses. Say each one out loud, then check it on a circuit.

What does volatile mean, and when do you need it?

It tells the compiler the value can change outside the code it can see, for example in an interrupt or a hardware register, so it must read it every time instead of keeping a copy.

What should an interrupt handler do?

As little as possible: record what happened, set a flag or copy data into a buffer, and return. The main loop does the slow work. Long handlers delay other interrupts.

Why is delay() a problem in larger programs?

It blocks: nothing else runs while it waits. Checking millis() against a saved time lets one loop handle many tasks, each at its own rate.

Compare I2C, SPI and UART.

I2C uses two shared wires and addresses for many devices, at modest speed. SPI uses separate select lines and is faster. UART is two wires point to point, with no clock, so both ends agree on a baud rate.

What is a pull-up resistor for?

It holds an input at a known high level when nothing drives it, so it does not float. A button then pulls the pin low when pressed.

What is debouncing?

A mechanical switch bounces for a few milliseconds when pressed. Debouncing ignores changes inside a short window so one press counts once.

What is PWM, and what is it used for?

Switching a pin on and off fast with a set on-time fraction, the duty cycle. The average power sets LED brightness or motor speed.

How do you set a bit in a register without changing the others?

OR it with a mask: reg |= (1 << n). Clear it with AND and the inverted mask: reg &= ~(1 << n).

The board resets at random. Where do you start?

Check power first with a scope (a dip on the supply when a motor starts is common), then look for a watchdog, a stack overflow or a bad pointer. Reproduce it before changing anything.

What is the difference between a microcontroller and a microprocessor?

A microcontroller has its processor, memory and peripherals on one chip and runs one program. A microprocessor needs external memory and usually runs an operating system.

Start

Step 1 is Embedded on the Arduino Uno

One board, twenty pins and a C++ sketch. From a lamp you switch to a game you can play.