Software Engineer in C, C++, Python; Embedded Firmware Developer; Test Instruments Automation
Dallas, Texas 75225
Email: firstname.lastname@example.org Skype: trg.tomike
15+ years of RTOS and Linux embedded experience; Develop applications, middleware and drivers for Windows, FreeRTOS, 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
Windows, VxWorks, FreeRTOS, Linux
OS, RTOS, Device Drivers
Visual Studio, Eclipse, NetBeans
Development IDE Tools
ClearCase, SourceSafe, SVN, Bugzilla
Revision Control Tools
ARM, PIC, AVR, MSP430, 8051
ICE, Trace32, JTAG, Serial I/O
LabVIEW, Oscilloscope, Logic Analyzer
Lab Test Tools
B.S. in Computer Science
California State University of Fresno – Fresno, CA
A.S. in Electronics Technology
Fresno City College – Fresno, CA
April 2017 – Present
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
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.
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.
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.
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
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.
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.
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.
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
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.
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.
EMBEDDED DEVELOPMENTSOLUTIONS OFFER
#1: Dell PC Hosted Software Development System plus Cross Platform SDK for Embedded Linux ARM SoC Raspberry Pi w/Completed Ubuntu PC Computer, Hardware & Software
# Raspberry Pi ARM SoM Professional Dev Kit + 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: Lubuntu desktop 64-bits Linux OS; SSH Server; TightVNC Server; Teamviewer Host; Wine; GanttProject; XMind; Host GNU C/C++ Compiler x86 64-bits; GDB; Oracle Java JDK/JRE; NetBeans IDE; 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
#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 SDK Library:
# Argtable; eCLI; zlib; log4cplus; lwIP; jsmn parser; jsonlite; MessagePack; AnyRPC; cJSON; jsonrpc-c; mbed TLS; FatFs; Check; CppUTest; Unity; LittlevGL; AWS IoT.
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