Hi, I'm Kyle.

I transform real-world data into intelligent systems.

Notice

Focused on academics & career. Commissions closed indefinitely.

5+

Production-ready projects

70,000+

People living easier

3

Core programming languages

5

Years of real world problem solving

Hi, I'm Kyle.

I transform real-world data into intelligent systems.

Notice

Focused on academics & career. Commissions closed indefinitely.

Kyle Dudley

Junior EE Student

Texas A&M University

Hi, I'm Kyle.

I transform real-world data into intelligent systems.

Notice

Focused on academics & career. Commissions closed indefinitely.

Kyle Dudley

Junior EE Student

Texas A&M University

EmbeddedSprint

A two-week, self-directed embedded bootcamp on the STM32 NUCLEO-F446RE to bridge coursework and production firmware. I’m building and validating bare-metal drivers (GPIO/EXTI/Timers/UART/SPI/ADC/PWM), a repeatable toolchain (CubeMX/CubeIDE + CMake, ST-LINK/OpenOCD, gdb-multiarch), and small, testable modules. Status: in progress; core toolchain + GPIO/1 Hz blink + 50 ms debounced button are working; interrupts, UART ring buffer, SPI loopback, ADC+PWM, and a tiny FreeRTOS prototype are next.

ROLE

Solo developer (firmware, build/debug tooling, documentation).

PROBLEM

Academic labs rarely cover the full bring-up loop (codegen → build → flash → instrument → debug). The goal is to create a repeatable STM32 workflow and a set of small, verifiable drivers suitable for real boards: compile deterministically, flash reliably, observe with scope/LA or UART, and debug at the register level—then document the procedure so it can be reused.

RESULTS

Established a reproducible build/flash/debug pipeline (CubeMX-generated HAL + CMake, ST-LINK/OpenOCD, gdb-multiarch) with one-command flash.

Repo structured for daily modules with top-level CMake auto-discovery, per-day firmware targets, post-build .hex/.bin artifacts, and a tight .gitignore.

Upcoming: UART logging with ring buffer & command parser → SPI full-duplex loopback & diagnostics → ADC sampling + PWM mapping → FreeRTOS tasks/queues prototype.

ROLE

Solo developer (firmware, build/debug tooling, documentation).

PROBLEM

Academic labs rarely cover the full bring-up loop (codegen → build → flash → instrument → debug). The goal is to create a repeatable STM32 workflow and a set of small, verifiable drivers suitable for real boards: compile deterministically, flash reliably, observe with scope/LA or UART, and debug at the register level—then document the procedure so it can be reused.

RESULTS

Established a reproducible build/flash/debug pipeline (CubeMX-generated HAL + CMake, ST-LINK/OpenOCD, gdb-multiarch) with one-command flash.

Repo structured for daily modules with top-level CMake auto-discovery, per-day firmware targets, post-build .hex/.bin artifacts, and a tight .gitignore.

Upcoming: UART logging with ring buffer & command parser → SPI full-duplex loopback & diagnostics → ADC sampling + PWM mapping → FreeRTOS tasks/queues prototype.

Why this sprint exists

This project simulates the day-to-day of a junior embedded SWE: start from a blank NUCLEO-F446RE, stand up a clean toolchain, bring up peripherals one by one, and prove behavior with instruments and logs. Each day ships a small, working slice—GPIO debounce, EXTI, timers, UART ring buffer, SPI loopback, ADC+PWM—so progress is measurable and reviewable.

Architecture & toolchain (so far)

Hardware: STM32 NUCLEO-F446RE (Cortex-M4).

  • Firmware: C with STM32 HAL, CubeMX codegen kept in firmware/; user logic in app/.

  • Build/Debug: CMake + arm-none-eabi-gcc, ST-LINK/OpenOCD, gdb-multiarch; post-build .hex/.bin.

  • Validation: UART logs (planned), scope/logic analyzer for timing, ctest hooks for host utilities.

  • Completed: 1 Hz blink, 50 ms debounced button; clean repo layout and flash target.

  • Next: EXTI button, timer-driven tasks, UART ring buffer, SPI loopback, ADC+PWM, small FreeRTOS demo.

Outcomes & next milestones

On completion, this page will include short demos and diagnostics for each module (GPIO/EXTI, timers, UART, SPI, ADC, PWM) plus a compact FreeRTOS example. The deliverable is a portable starter firmware stack and step-by-step bring-up guide that I can reuse on future boards (and hand to a team without surprises).