Nguyen Cong Thanh
Embedded Software Engineer
Summary
Final-year Engineering Student passionate about Automotive & IoT Security. Skilled in C/C++, STM32, and ESP32 with a specialized focus on Secure Boot & FOTA implementation (CAN/UDS, ECDSA). Looking for opportunities to apply hands-on experience in a challenging Embedded Software environment.
Technical Skills
- Languages: C/C++, Python (Scripting/Tools).
- Communication Protocols:
- Standard: UART, SPI, I2C, TCP/IP, MQTT, HTTP/HTTPS.
- Automotive: CAN (ISO 11898), UDS (ISO 14229 subset), CAN-TP (ISO 15765-2).
- Embedded OS & Frameworks: FreeRTOS, ESP-IDF, STM32 HAL/SPL/Register-level, Arduino.
C/C++
STM32/ESP32
FreeRTOS
CAN/UDS
MQTT/HTTPS
Security (ECDSA/AES)
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.
- Ensured system reliability with read-back verification and strict 4-byte alignment checks during the dual-slot copy process to prevent flash corruption.
- Github: SECURE_FOTA_UDS_CAN_BUS
2. 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
Other Projects
- IoT Weather Station (ESP32, MQTT, FreeRTOS): Built a multi-sensor data logger with cloud telemetry, operating stably for 10 months.
- Smart Home Network (ESP-IDF, C++): Developed customized IoT devices leveraging BLE Mesh networking and ESP Rainmaker framework.
- Laser Engraver Automation (STM32): Controlled stepper motors and emulated USB-HID keyboard events to automate industrial workflows.