Getting a core to run its first line
Brought the DSP up from the primary bootloader, with boot sequencing and IPC across audio, Bluetooth and remote-processor stacks.
Embedded software engineer · Qualcomm
I'm Ribhu Mukherjee. I write the C firmware underneath DSP, modem and UEFI: timers, watchdogs, boot sequencing and heap forensics, across 8+ commercial SoCs.
About me
I'm the IoT point of contact for Qualcomm's core platform codebase: the timers, heaps, watchdogs and task plumbing that every product on the SoC depends on. Before that I taught DSA to 8000+ students, and I still mentor engineers on careers and interviews.
Brought the DSP up from the primary bootloader, with boot sequencing and IPC across audio, Bluetooth and remote-processor stacks.
Wrote the first hardware watchdog driver for QCS8550 on Zephyr: register bring-up, ISR, feed and timeout callbacks, validated on silicon.
Core services in the internal C codebase that ship across IoT and mobile products. I'm the IoT point of contact for it.
Closed a month-long MDM9205 heap corruption with runtime integrity checks and an isolated heap region, ruling out 8+ causes.
30+ P0/P1 customer blockers for Samsung, GNSS, modem integration and Korea product teams, including one Samsung fix in 2 hours.
Eight agentic developer tools adopted org-wide. A two-level knowledge graph cut LLM debug-token usage by 40%.
edu 0000:00:04.0: /dev/edu0, MSI irq 24 [ RUN ] test_dma_roundtrip_full_buffer [ RUN ] test_concurrent_processes irqs=67 dma=54 spurious=0 [ RUN ] test_hot_unplug_with_open_file [ LOG ] kernel log scan: clean 66 checks, 0 failed · PASS
PCI driver for QEMU's edu device: BAR0 MMIO, MSI with INTx fallback, 28-bit DMA, kref-safe hot-unplug. CI boots it on a KASAN + lockdep kernel.
Open repository ↗[ 0.2 ms] compute submitted (waits sem0) [ 5.4 ms] buggy submitted (will hang) [ 10.5 ms] upload submitted [ 126.4 ms] compute -> "frame #42" [ 126.4 ms] buggy FAULT_TIMEOUT [ 126.6 ms] buggy recovered: OK
GPFIFO channels, pushbuffer methods and semaphore fences. A watchdog faults only the hung channel and recovers it. TSan-clean on Linux and macOS.
Open repository ↗after 3 allocations: heap_check -> OK after bad strcpy: heap_check -> OVERFLOW block @+128 allocated at demo.c:31 HEAP_FREE(uart_rx) twice -> DOUBLE FREE LEAK 48 bytes <- demo.c:32
A debug heap that names who allocated a corrupted block, a lock-free ISR-to-task ring buffer and RTOS-style timers. Cortex-M4 build in CI.
Open repository ↗Register-level bring-up, ISR and feed/timeout callbacks, validated on silicon.
Boot sequencing and inter-processor signalling with zero integration rework.
Shipped ahead of a pulled-in deadline with zero post-release defects.
Integrity checks and an isolated heap region unblocked a customer.
Contact
Hiring for embedded, kernel or GPU firmware? Or want a mentor for your next interview? Write to me.