Nguyen Cong Thanh

Embedded Software Engineer

☎️ (+84) 372 788 796 ✉️ congthanh.ml.2509@gmail.com 📍 Hanoi 🔗 LinkedInGitHub

Summary

Final-year Electrical and Electronics Engineering student focusing on Embedded Software and System Security. Familiar with low-level C/C++, bare-metal environments, and Embedded Linux. Possess foundational knowledge of the V-model and basic hardware security principles. Recent practical exposure includes building a Secure Firmware-Over-The-Air (FOTA) architecture and applying an automation mindset to diagnostic protocol testing. Always eager to learn and looking for opportunities to contribute to a challenging embedded engineering environment.

Technical Skills

  • Languages: C/C++, Python (Scripting/Automation).
  • Embedded Linux: Buildroot, Kernel-space Character Drivers, POSIX Threads & IPC.
  • RTOS & Bare-metal: FreeRTOS, ESP-IDF, ARM Cortex-M Architecture, STM32 (HAL & Register-level).
  • Protocols & Networking:
    • Automotive: CAN 2.0, CAN-TP / ISO 15765-2, UDS / ISO 14229.
    • Peripherals: UART, SPI, I2C.
    • IoT: TCP/IP, MQTT, HTTP.
  • System Security: ISO/SAE 21434 (TARA), Secure Boot, Applied Cryptography, Hardware & Protocol Pentesting, Reverse Engineering (Ghidra).
  • Hardware & Lab Equipment: Basic Schematic & PCB Routing, Oscilloscope, Logic Analyzer, Digital Multimeter.
C/C++ Python STM32/ESP32 FreeRTOS Embedded Linux CAN/UDS Security

Key Projects

1. Secure Automotive FOTA System
12/2025 – 02/2026

Tech Stack: C/C++, STM32, ESP32, FreeRTOS, CAN-UDS, Wi-Fi, Ethernet, Security (SHA-256, ECDSA, AES), SquareLine Studio.

  • Designed and implemented a secure bootloader with pre-boot authenticity and integrity checks: Validates ECDSA P-256 signatures and SHA-256 hashes at startup to prevent tampering and unauthorized code execution.
  • Implemented the core UDS/CAN-TP stack for both ESP32 (Client) and STM32 (Server), managing packet segmentation and flow control (STmin, Block Size) to ensure reliable firmware transport.
  • Implemented an end-to-end "verify-then-decrypt" pipeline (ECDSA P-256, AES-128-CBC), supported by a custom Python desktop app for automated firmware packaging and signing.
  • Developed an ESP32 gateway (with LVGL UI) managing dual-interface updates: Remote OTA via Wi-Fi (HTTPS) and local deployment via Ethernet, utilizing UDP broadcasts for dynamic device discovery and TCP for reliable payload transfer.
  • Optimized STM32 RAM by implementing stream-based AES decryption and chunked SHA-256 processing, eliminating the need for full-firmware buffering.
  • Architected a failsafe Dual-Slot (Active/Download) scheme featuring VTOR relocation, 4-byte aligned Flash memory routines, and read-back verification to enable seamless bootbank swapping and rollback.
  • Github: SECURE_FOTA_UDS_CAN_BUS
System Architecture
End-to-End system overview with Python App, ESP32 Gateway, and STM32 ECU.
CAN-TP Sequence
Low-level UDS/CAN-TP protocol with Flow control and Segmentation mechanisms.
FOTA Security Flow
FOTA flow from Python App through ESP32 Gateway to STM32 ECU.
Memory Map
Dual-Bank Flash memory layout STM32F103C8T6.
2. USB Casing Laser Engraving Automation System
10/2024 – 12/2024

Project Overview: Designed and built an automation system for a state-owned organization, replacing the manual USB laser engraving process with an automated conveyor system.

Technical Implementation:

  • Overall System Solution: Defined the complete system architecture and workflow, selecting the optimal integration approach for the mechanical parts, embedded hardware, and PC software.
  • Mechanical Design: Designed the conveyor belt and feeding mechanisms using Autodesk Inventor. Built a 3D-printed prototype (PoC) for functional testing before deploying the final system using CNC-machined aluminum.
  • Hardware Design: Selected core components (MCU, motor drivers, sensors) and designed the schematic. Collaborated with a teammate who handled the final PCB layout.
  • Firmware & Protocol Integration: Developed STM32 firmware utilizing FreeRTOS to manage real-time multitasking (precise motor positioning and sensor interrupts). Integrated a custom USB-HID stack into the firmware to autonomously trigger the PC-based engraving software, eliminating all manual operations.
USB Casing Laser Engraving System Demo - Automated Conveyor & Engraving Process.
3. Air Quality Monitoring System
05/2026

Coursework: Embedded Operating Systems

Tech Stack: C, BeagleBone Black, Buildroot, Linux Kernel, POSIX pthreads, GPIO, UART, I2C, CAN.

  • OS Generation: Built a customized, minimal embedded Linux image, cross-compilation toolchain, and rootfs from scratch using Buildroot.
  • Kernel-Space Drivers: Developed custom I2C, UART, and CAN character drivers utilizing direct memory mapping, hardware interrupts, and spinlocks for concurrency protection.
  • Sensor Integration: Implemented custom UART/I2C parsers based on BME280 & PMS7003 datasheets, integrating checksum validations and 32-bit Bosch compensation algorithms.
  • Concurrency & IPC: Architected a 5-task POSIX pthreads application. Applied Priority Inheritance Mutexes to strictly prevent priority inversion.
  • System Reliability: Implemented a Software Watchdog with heartbeat monitoring for automated deadlock detection and graceful thread recovery.
  • GitHub: embedded-linux-device-driver-bbb
4. Low-Power Digital Clock
10/2025

Coursework: Embedded Systems

Tech Stack: C++, STM32, FreeRTOS, SPL.

  • Applied C++ OOP to wrap hardware drivers (RTC, LCD, Encoder), making the code cleaner and easier to manage.
  • Handled low-power modes by programming the system to enter STM32 Standby Mode automatically after 10s of inactivity to save battery.
  • Used FreeRTOS to manage display tasks and user inputs efficiently without blocking the CPU.
  • GitHub: STM32_DS1307_LCD_LowPower

Work Experience

1. Automotive Cybersecurity Intern
04/2026 – 06/2026
Vietsol
  • Automotive Cybersecurity Training: Completed internal training on fundamental ISO/SAE 21434 principles and applied basic Threat Analysis and Risk Assessment (TARA) concepts primarily to define scopes for penetration testing activities.
  • Automated UDS Pentesting: Contributed to UDS (ISO 14229) protocol security testing by developing automation scripts, helping to reduce manual diagnostic testing efforts.
  • Reverse Engineering: Performed basic static analysis and reverse engineering on diagnostic .dll files specifically to extract the Seed-Key calculation algorithms required for UDS security access.
  • Hardware Security Testing Library: Researched hardware attack vectors and authored foundational test cases for hardware-level pentesting, contributing directly to the team's internal testing documentation library.
  • Vulnerability Discovery: Identified a logic flaw in the battery rental mechanism of a commercial E-Scooter and analyzed the core principles required to bypass the lock restriction and enable vehicle operation.
2. Technical Member
02/2023 – 02/2025
Embedded AIoT Laboratory – PTIT
  • Firmware Development & System Integration: Specialized in C/C++ (Bare-metal/RTOS) programming for MCUs. Executed end-to-end integration, seamlessly bridging custom hardware with upper application layers.
  • Hardware Design & Bring-up: Designed custom PCBs and performed physical board bring-up and debugging using oscilloscopes and logic analyzers.
  • Lab & External R&D Projects: Actively contributed to outsourced engineering projects within the university laboratory, focusing on hardware prototyping and embedded system deployment.
  • Competitions & Academic Research: Prototyped and developed embedded solutions for the Faculty Robotics Competition, IoT Challenge (FPT), and Undergraduate Scientific Research initiatives.