Embedded Firmware

    Reliable firmware from bare-metal C to MicroPython

    I write production-grade firmware in Embedded C and MicroPython — from bare-metal peripheral drivers to full application stacks with wireless connectivity, sensor fusion, and OTA updates. Code is structured, testable, and documented for long-term maintenance.

    C programmingMicroPython developmentReal-time systemsPeripheral integrationCommunication protocolsPower optimization

    Bare-Metal & RTOS Firmware

    Whether the project calls for a lean bare-metal loop or a multi-tasked FreeRTOS application, I structure firmware for clarity and reliability. ISR-driven peripherals, DMA transfers, and low-power sleep modes are implemented with deterministic timing — not blocking delays.

    • Bare-metal firmware with interrupt-driven architecture
    • FreeRTOS task design, queues, semaphores, and timers
    • DMA-based data transfers for ADC, SPI, UART, and I2S
    • Low-power sleep modes with configurable wake sources

    Communication Protocols

    Modern embedded products rarely stand alone. I implement robust communication stacks — from on-board buses (SPI, I2C, UART) to wireless protocols (BLE, WiFi, NB-IoT, LoRa) and application-layer messaging (MQTT, HTTP, RTMP). Error handling, retry logic, and watchdog recovery are baked in.

    • Bluetooth Low Energy (BLE) profiles and GATT services
    • WiFi station/AP modes with MQTT and HTTP clients
    • NB-IoT and 4G LTE via SIM7020 / SIM7060 modems
    • LoRa point-to-point and LoRaWAN integration
    • RTMP video streaming over cellular connections

    Sensor Integration & Signal Processing

    From IMUs and pressure sensors to cameras and mmWave radar, I handle the full chain: hardware interface, driver code, calibration routines, filtering (moving average, Kalman, complementary), and data fusion. The goal is actionable, noise-free data — not raw register dumps.

    • IMU drivers (MPU6050, ICM-42688, LSM6DSO) with calibration
    • Camera interfaces (OV2640, OV9655) with DMA frame capture
    • Analog sensor conditioning, ADC sampling, and digital filtering
    • Multi-sensor fusion for reliable event detection

    OTA Updates & Production Firmware

    Firmware that ships needs to be updatable, recoverable, and production-ready. I implement dual-partition OTA update mechanisms, factory-reset flows, and secure boot chains. Production test firmware and JTAG/SWD programming jigs are delivered alongside the application code.

    • OTA update via WiFi, BLE, or cellular with rollback safety
    • Dual-partition boot with integrity verification
    • Production test firmware for manufacturing QC
    • JTAG/SWD debug and programming jig support

    Tools & Technologies

    ESP-IDF
    Pico SDK (C/C++)
    STM32CubeIDE / HAL
    FreeRTOS
    MicroPython
    JTAG / SWD debuggers
    Logic analyzers

    Frequently Asked Questions

    Do you write firmware in C or MicroPython?

    Both. Performance-critical or production firmware is written in Embedded C using vendor SDKs (ESP-IDF, Pico SDK, STM32 HAL). For rapid prototyping or simpler products, MicroPython offers faster iteration.

    Can you add wireless connectivity to my existing hardware?

    Yes — if the hardware has an MCU with wireless capability (ESP32, nRF52) or an external modem (SIM7020, SIM7060), I can implement BLE, WiFi, NB-IoT, or 4G LTE firmware on top of your existing design.

    Do you provide source code and documentation?

    Always. You receive the complete source code, build instructions, API documentation, and a firmware architecture overview. The code is yours to maintain or extend.

    Need embedded firmware for your project?

    Let's discuss your requirements and find the best approach for your hardware project.