| Github | Youtube | Resume | Blog |
|---|
Embedded Linux and Platform Engineer focused on low-level systems development, board bring-up, and custom Linux distributions for embedded hardware. I build complete BSPs using Yocto, work with U-Boot, Linux kernel, and device trees across ARM Cortex-A and Cortex-M platforms. My goal is to understand how software interacts with hardware at every layer, from boot ROM to userspace.
Currently working on NXP i.MX6Q at SightForge Technologies. I run Arch Linux, edit in Neovim, and tile with DWM.
Check out my blog here.
Skills
| Languages | C (C89/C90), C++ (C++17), Python, Bash, Lua |
| Embedded Linux | Yocto, Linux Kernel, Device Tree, U-Boot, Buildroot, Cross Compilation, GStreamer, V4L2 |
| MCU Development | Bare Metal, FreeRTOS, OpenOCD, SWD/JTAG, PlatformIO |
| Application Processors | NXP i.MX6, TI DM3730, TI AM67A, Raspberry Pi |
| Microcontrollers | STM32, RP2040, RP2350, AVR |
| Interfaces | I2C, SPI, UART, MMC, Ethernet, CSI, LCD/DSS |
| Tools | GDB, Git, Valgrind, Perf/Ftrace, OpenOCD |
| Networking | lwIP, MQTT, TCP/IP |
Projects
nvim-platformio.lua
Check the project Link · ⭐ 199 · 🍴 19 · 👥 9 contributors
A Neovim plugin that brings a VS Code-like PlatformIO workflow to Neovim. Supports build, upload, serial monitor, project init, library search, and full keybind customisation via which-key. Uses Telescope for library and board search. One of the most active PlatformIO integrations for Neovim.
TI DM3730 EVK BSP
Check the project Link
Modern Yocto-based BSP for the TI DM3730 (Cortex-A8), replacing the legacy vendor software stack. Ported kernel and U-Boot with updated device tree support; enabled NFS, NAND, and MMC boot along with I2C, SPI, UART, and Ethernet interfaces.
STM32 PIO Libraries
Check the project Link
A GitHub organisation publishing hardware-agnostic STM32CubeHAL drivers to the
PlatformIO registry
, filling gaps where Arduino libraries exist but STM32 HAL support does not. Pluggable I2C/SPI transport callbacks throughout.
- W25Q64-flash : W25Q64 8 MB SPI NOR flash driver with callback-based transport.
- W25Q64-lfs : LittleFS block device adapter for W25Q64-flash, no heap allocation.
- littlefs : LittleFS v2.11.3 repackaged as a PlatformIO library.
- SSD1306 : SSD1306 OLED driver over I2C or SPI with full and partial-region updates.
- gfx-mono : Monochrome graphics library with bitmap drawing and scalable glyphs.
- I2C-LCD : HD44780 LCD via PCF8574 I2C backpack.
- DS1302-RTC : GPIO bit-bang driver for DS1302 RTC with 12/24-hour mode and battery-backed RAM.
- NEO-6M : NMEA parser and UART helper for u-blox NEO-6M GPS.
- HC-SR04 : Ultrasonic distance sensor driver.
- stm32-Delay : Microsecond and millisecond delay helpers for STM32Cube HAL.
- stm32f411-blackpill-base : Minimal PlatformIO template for STM32F411CE BlackPill.
-
F411-W25Q64-lfs-cli
: Interactive LittleFS shell over UART backed by W25Q64 flash, with
pcfstoolfor host-side file transfer.
stm32f401-rtos + stm32f401-cpp-hal
FreeRTOS on the STM32F401 with a custom linker script and bare-metal startup — no STM32Cube, no vendor HAL, just CMSIS headers and the FreeRTOS kernel (CM4F port, heap_4). The companion stm32f401-cpp-hal library provides C++20 peripheral drivers (GPIO, UART, EXTI) built directly on CMSIS. Each peripheral is a class; construction configures the hardware and enables the clock. Register fields are scoped enums for compile-time type checking. Copy is deleted, move is implemented.
my-linux-setup
Check the project Link · ⭐ 68
Arch Linux dotfiles and install scripts. DWM + Neovim + Kitty.