Nguyen Cong Thanh
Embedded Software Engineer
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.
Key Projects
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
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.
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
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
- 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.
- 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.