Firmware practice without the noise.
Embedded C problems, systems prompts, and fundamentals in a quiet workspace built for firmware engineers.
- problems
- 101
- topics
- 10
- workspace
- C11
#include <stdint.h>#define GPIOA_BSRR (*(volatile uint32_t *)0x40020018)// Drive PA5 high — atomic set via the BSRR registervoid led_on(void) { GPIOA_BSRR = (1u << 5);}- 01sets the target bit
- 02preserves neighbor bits
- 03atomic write
Pick the interview surface.
Coding is one part of the loop. The rest is architecture, debugging, and fundamentals under pressure.
Built around real low-level work.
Embedded C
Pointers, volatile, fixed-width types, and the C that runs on metal.
Bit Manipulation
Masks, shifts, and register flags without disturbing neighbors.
Memory-Mapped I/O
Drive peripherals through volatile register pointers.
Communication Protocols
UART, SPI, and I2C framing, parsing, and checksums.
RTOS
Tasks, ISRs, atomicity, and shared-state race conditions.
Debugging
Inspect broken firmware and explain the root cause.
State Machines
Non-blocking timing, debouncing, and protocol framing.
Bootloaders
Image integrity, CRCs, and safe OTA update flows.
Systems Design
Architect firmware: schedulers, drivers, and recovery.
Memory Management
Static allocation, pools, and fragmentation-free design.
Read. Write. Run. Review.
Read the spec
Each exercise starts from a focused embedded problem statement, not a puzzle wrapped in a story.
Write embedded C
Use the in-browser editor for register work, buffers, protocols, and small systems code.
Review the result
Run against a stable judge contract and see the failure point without leaving the page.
A problem should read like a real spec.
Short statement. Clear signature. Examples you can verify.
Set, Clear, and Toggle Register Bits
Modify a single bit of an 8-bit hardware register using masks — without touching the others.
uint8_t set_bit(uint8_t reg, uint8_t bit);
uint8_t clear_bit(uint8_t reg, uint8_t bit);
uint8_t toggle_bit(uint8_t reg, uint8_t bit);Get notified when new material lands.
Occasional product updates. No problem counts. No spam.