Sign in

Software Engineer, Embedded Firmware Test, C, C++, Node.js

Dallas, TX, 75225
February 03, 2020

Contact this candidate


Mike Truong

Software Engineer in C, C++, Python; Embedded Firmware Developer; Test Automation

Dallas, Texas 75225

Email: trg.mike @ Skype: trg.tomike


15+ years of Real-Time and Linux embedded experience; Develop applications and drivers for Windows, FreeRTOS, VxWorks, Linux.

Working knowledge of OOD and TDD, implement algorithms into program code using C++, C, Python, Shell, and Assembly language.

Demonstrated leadership by successfully led a small Software Development Team for 5 years.

B.S. in Computer Science with an emphasis in Real-time Systems Programming. Ability to quickly grasp new technical concepts to shorten learning curve.


C, C++, Python, VB, Assembly

Programming Languages

15+ years

Windows, Linux, FreeRTOS, VxWorks

OS, RTOS, Device Drivers

7 years

Visual Studio, Eclipse, NetBeans

Development IDE Tools

15+ years

ClearCase, SourceSafe, SVN, Bugzilla

Revision Control Tools

8 years

ARM, PIC, AVR, MSP430, 8051


8 years

ICE, Trace32, JTAG, Serial I/O


8 years

LabVIEW, Oscilloscope, Logic Analyzer

Lab Test Tools

10 years

B.S. in Computer Science

California State University of Fresno – Fresno, CA

June 1991

A.S. in Electronics Technology

Fresno City College – Fresno, CA

Ju 1988


Opsource Systems

Dallas, TX

April 2017 – Present

Applied Concepts

Plano, TX

July 2016 - September 2017

Software Engineer Contractor. Provide Contract Embedded Linux and RTOS software development. Consulting works included:

Embedded real time application development in C, C++ and Python; Develop device drivers for bare metal systems, Linux, and RTOS

Use FreeRTOS for ARM7, ARM9, and ARM Cortex-M microcontrollers; Linux in SoC ARM Raspberry Pi, TI AM335x, and NXP i.MX6

HW peripherals comm protocols (PWM, ADC, DAC, SPI, I2C, UART, USB, RS232); Unit Test, Test Driven Development (TDD), Acceptance Test D D (ATDD)

Setup cross/remote compilation tools, ICE, JTAG, and debuggers; LMAR (Logging, Monitoring, Alerting, Reporting) mechanisms

DRS Technologies

Germantown, MD

December 2016 – March 2017

Embedded Software Engineer to support the design, development and test of counter threat measurement system.

Use of TI ARM DSP processors and Code Composer C/C++ to design, implementation, test/debug and integration of large embedded software subsystems.

Drive the analysis of customer requirements and development of internal software requirements to translate into coding.

Develop embedded software drivers related to the use of Flash memory, PWM controllers, A/D and D/A.

Lockheed Martin

Orlando, FL

June 2014 – July 2016

Software Engineering contractor. Consulting projects and works included:

Development of embedded real-time C++ in all phases of the SDLC (Software Development Life Cycle) including requirements analysis, design, coding, unit test, integration, and verification of Bare Metal, Embedded Linux and FreeRTOS.

Use C/C++ to design, develop, and testing of Xilinx Zynq SOC FPGA ARM core, I2C, SPI, FLASH and TCP/UDP for Turret system.

Abbott Laboratories

Irving, TX

August 2012 – April 2014

Work as Software Engineer. Primary function was to develop embedded application layer software on top of the QNX platform. The software perform robotic movements for an automated IVD system to process Immunoassays and deliver result data to a central control system. The tasks include system and algorithm design and implementation unit test cases & debug.

Participate in a team-oriented environment to define and develop embedded system control applications.

Analyze existing designs for testability and maintainability and redesign as required. Define Internal and External software interfaces using program and industry standards.

Develop software test strategies including regression analysis perform unit testing in a mock environment. Responsible for developing test plans and test cases for software components.

Write test software in C++ / C using Google Test and Google Mock for a IVD medical instrument. Used a CASE tool for testing, and documented results.

Develope board device driver in the areas of file system, communication, networking. Other duties included documenting system requirements, designing, developing, coding new and existing systems, and testing code with hardware.

Skiva Technologies, Inc.

Irving, TX

Feburary 2010 – July 2012

Work as Firmware Engineering contractor. Consulting projects and works included:

Development of BSP and board device driver in the areas of file system, communication, networking for ARM embedded linux platform. Other duties included documenting system requirements, designing, developing, coding new and existing systems, and testing code with hardware.

Using C/C++, Altium to research, design, development, and testing of low power embedded MCU/microcontrollers, I2C, SPI, UART and USB. Design schematic capture and PCB layout.

General Dynamics C4S

Scottsdale, Arizona

March 2009 - January 2010

Software Engineer Contractor - Responsibilities included the development of large, complex DoD JTRS Software Defined Radio systems. Hands on support new feature development and quality improvements, help create project requirements, and provide input to design decisions. Research software design and develop well documented and quality software applying OOP principles and techniques. Develop and document detailed integration and test plans for new and reused code. Participate and conduct peer reviews of software coding.

Work with hardware elements, PowerPC 8544, read schematics and block diagrams.

Usage of TCP/IP, BSD Sockets API. Programming in C/C++ OOP, Green Hills Integrity RTOS Compiler tools, Linux based OS.

Write multithreaded applications, use Clearcase and Clearquest Rational tools for software management.

Use Telelogic DOORS, Rhapsody, Understand C++, Rational Rose, Prismtech tools for Software Defined Radio Waveforms. Work with SCA v2.2.2, CORBA, UML and XML.

Texas Instruments

Dallas, Texas

October 2006 – January 2009

Software Foundation Engineer - Develop NavNet as a part of TI-Nspire handheld device connectivity interface to and from PC computer. Work within a small team to design and implement PC Windows’s hosted applications such as Computer Link, Connect-to-Class, and Data Collection. Design and program Nucleus based device driver’s components and apps. Integrate wireless AP routers and firewalls into classroom network. Perform software integration and testing with DCSled sensors and probes. Key technologies involved are:

Programming languages using C++, C and Shell Scripting in ARM Nucleus and Windows platforms.

NavNet Connectivity medium included Serial I/O, USB, and TCP/UDP via wireless 802.11 b/g.

Implement wireless network bridge to access point translator for Texas Instruments TI-Nspire technology.

Terion, Inc.

Plano, Texas

August 2005 - September 2006

Sr Embedded Software Engineer - Design and implement embedded firmware applications utilizing Nucleus RTOS targeting ARM processor for Vehicles Tracking Systems. Develop device drivers for CDMA/GPRS data modem, Zigbee, GPS, RS422, TCP/IP and to facilitate the company’s products development. Other duties included:

Developed System Initialization and Boot code for ARM7 platform as well as driver and interrupt service routines for peripherals, network interfacing, and backend web based data collection.

Developed Software Requirements and High-Level Design Specifications Documents to meet customer expectations.

Worked closely with the sales, customer service and management teams to ensure the mutual understanding of customer issues and project schedules.

Bally Technologies

Las Vegas, Nevada

October 2001 - July 2005

Join Video Main Team to design next generation of Host Interface Manager for Video Slot Machines, Responsibilities:

Participate as team member to develop and deploy next generation of Host Interfaces for Slot Game Machines.

Perform all tasks in the software development process through implementations, integration, test, and deployment.

Maintain and modify legacy code to correct errors, bugs, and incorporate new functionality.

Develop unit test plan and software tools to validate firmware applications to meet Nevada Gaming Regulations.

Philips Semiconductor, CARD Center

Richardson, Texas

April 2000 - September 2001

Sr Software Engineer - Develop User Interface/MMI using C and Assembly Languages targeting ARM processor for Cellular Handsets. Develop Automatic Test/Calibration software on Automated Test Equipment to facilitate regression test and certification of CDMA/AMPS/GSM Cellular Handsets. Other duties included:

Work with RF/System Engineers to define and implement test procedures for Cellular Handsets.

Design, Code, and Test wireless data communication software and protocols (IS95A, TSB74, J-STD-008).

Work closely with Customers and Manufacturers to ensure testability and calibratability of Cellular Handsets.

Hypercom Corp.

Richardson, Texas

January 1999 - March 2000

Software Engineer - Design and develop “C” Developer’s SDK Toolkit for Multi-Host POS Terminals for retail and restaurant merchants Credit/Debit Transactions. Responsible for migrating legacy assembly code to portable ANSI C language.

Develop Point of Sale applications targeting Z80 embedded processor for Multi-Host POS Terminals.

Responsible for Credit/Debit Card and Transaction processing software applications.

Develop firmware driver and API for signature capture and host interface communication for storage and retrieval.

Taught classes in Point of Sale concepts and practical applications of POS software package. Provide technical support for customer base.


Dell PC Hosted Remote/Cross Software Development System for Embedded Linux ARM SoC Raspberry Pi w/Ubuntu Linux Computer Hardware & Software

# Raspberry Pi ARM SoM Professional Dev Kit Compute Module 3 + CM3 IO Board + 7" HDMI LCD with raspbian lite Linux OS Installed

# Fast Dell OptiPlex Intel CPU SFF or DT Ubuntu Linux 120GB SSD 4GB/8GB PC: Intel CPU; 4GB; 120GB SSD; DVD+RW

# PC software installed: ubuntu-18.04.1-desktop-amd64 Linux; openssh-server SSH Server; tightvncserver TightVNC; teamviewer-host; build-essential: GNU GCC G++ C C++ Compiler; oracle-java8 Oracle Java JDK/JRE; netbeans-8.2-linux NetBeans IDE; clipse-cpp-photon Eclipse IDE.

# build-essential: GNU C C++ Compiler Tools in Raspbian for Remote Development of ARM MCU Raspberry Pi

# gcc-linaro-arm-linux-gnueabihf-raspbian: Linaro GNU C C++ Compiler Tools in host PC for Cross Development of Raspbian ARM Raspberry Pi

# Drivers and Examples: 1-Wire, AD_DA, Audio, CAN, Ethernet, GPIO, I2C, Infrared, ISM_Radio, LCD, LED, Light_bus, PWM, RS-485, SPI, Timers, TP-BUS, UART, USB, Video, WDT

Solution 2: Dell PC Hosted SEGGER GNU Embedded Studio Software Development for ARM MCU w/Ubuntu Linux Computer Hardware & Software

# LinkIt 7697 Cortex-M4 with FPU@192Mhz; IoT application; Wi-Fi 802.11 b/g/n (2.4G); BLE; Pin-out for GPIO, UART, I2C, SPI, PWM, EINT, ADC, IrDA, I2S; Open software development FreeRTOS; 352KB RAM and 4MB Flash

* J-Link BASE Debug Probe; Bus Pirate v3.6 universal serial interface board

# Fast Dell OptiPlex PC Ubuntu Linux and common PC software packages installed

# SEGGER Embedded Studio: a cross development environment C/C++ IDE works with almost any ARM microcontroller. It directly links with the J-Link debug probe. Support for all ARM-based devices

FreeRTOS Real Time Kernel: Mini RTOS kernel for small embedded systems. Preconfigured example programs are included for a variety of microcontroller architectures including ARM7, ARM CORTEX and others.

Middleware Library:

# CppUTest: A C/C++ based unit xUnit test framework for unit testing and for test-driving development (TDD) your code. Portable and simple to use.

# GoogleTest and GoogleMock: Google's C++ test framework. GoogleMock is a framework imitating the rest of your system during unit tests.

# Unity: Curiously Powerful Unit Testing in C for C. Build with Test-driven Development in mind.

# Argtable: A single-file, ANSI C, command-line parsing library that parses GNU-style command-line options.

# eCLI: The embedded Command Line Interpreter, ecli, allows users to bind in a directory of commands and the associated functions to execute those commands. MIT license.

# zlib: is lossless data compression decompression library for use on virtually any computer hardware and operating system. The zlib data format is itself portable across platforms.

# FatFs: is a generic FAT/exFAT filesystem module for small embedded systems. The FatFs module is written in compliance with ANSI C (C89) and completely separated from the disk I/O layer. Therefore it is independent of the platform. It can be incorporated into small microcontrollers with limited resource, such as 8051, PIC, AVR, ARM, Z80, RX and etc.

# log4cplus: is a simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. It is modelled after the Java log4j API.

# lwIP Lightweight TCP/IP stack: A small TCP/IP implementation for embedded systems. lwIP is used in many commercial products. lwIP is licenced under a BSD-style license.

# jsmn parser: a minimalistic JSON parser in C. It can be easily integrated into resource-limited or embedded projects.

# AnyRPC: provides a common system to work with a number of different remote procedure call standards for C++. Currently supported RPC standards include: JsonRpc, XmlRpc and MessagePackRpc

# cJSON: Ultralightweight JSON parser in ANSI C. parser, under MIT license.

# mbed TLS: makes it trivially easy for developers to include cryptographic and SSL/TLS capabilities in their (embedded) products, facilitating this functionality with a minimal coding footprint.

# AWS IoT: SDK for connecting to Amazon Web Services Internet of Things (AWS IoT) from a device using embedded C.

OS: win32 pthread Multi Threaded re-entrant NW: network protocols TCP/IP TCP UDP RPC JSON XML OSS: opensource open source Elasticsearch Logstash FluentD Kibana ELK EFK Nagios Wireshark FW: GoogleTest Google Test GoogleMock Google Mock Cpputest Cunit TECH: data log logger parse store storage visualize visualization TEST: blackbox greybox whitebox unit functional regression stress performance test driven test-driven development TDD

Contact this candidate