Summary |
Design, code, optimization, and unit and integration test of real-time
embedded software and firmware, including satellite flight software development
and testing (unit, integration, validation/acceptance), on-orbit patch
development, training simulator and ground segment software,
and consumer electronics sensor and serial bus processing,
with firmware running or residing on over 80 satellites on-orbit.
|
|
Education:
M.S./B.S. Electrical Engineering with C.S. minor, Texas A&M-Kingsville.
|
|
|
Skills |
Software:
|
Software: C and C++ (gcc, Visual), assembly (8051
microcontroller, 1750A, RH-32),
Unix tools (sed, awk, bash, GRUB2, U-Boot, gparted, sfdisk,
gdisk, etc.),
debuggers (gdb, Visual, Keil), Java, Netty / ActiveMQ / STOMP,
Python, Ada, Matlab, gnuplot, SCM (git, Perforce, Swarm,
Confluence, Jira, Subversion), test languages,
IDEs (Visual, Rational Apex, Keil, NetBeans),
Wireshark network analyzer, Ubuntu Server,
Redmine Bitnami stack, FreeRTOS, FreeRTOS+Trace real-time
diagnostics (Percepio's Tracealyzer runtime and GUI), etc.
|
|
Hardware:
|
Lab equipment (logic analyzers, oscilloscopes, serial bus
analyzers), serial buses (MIL-STD-1553B, RS-485, RS-232C, I2C,
SPI), dev boards (ARM, Raspberry Pi, etc.), flight computers (Federal Systems
ASPS & CCP, Honeywell RH-32, UTMC 8051), Perle IOLan DS1
TCP/IP-to-RS232C terminal server,
MYK-14 Centurion encryption unit RS-232C driver,
GSC OPTO32D Optoisolator PCI board,
Acromag PMC482 Counter/Timer PCI board,
Total Phase's SPI / I2C bus analyzers,
emulators, JTAG H/W debuggers, UARTs, SN76477 sound chip,
SP0256 voice synthesis chip, CTS256A text-to-speech chip, etc.
|
|
|
|
|
Experience |
|
-
NASA's
Lunar Gateway,
Power and Propulsion Element (PPE):
|
Flight software development for the PPE's Mission Processor
(MP), a computer serving as a watchdog and as a multi-protocol
network gateway between the PPE and the Gateway's crew module.
|
The PPE will be based on Maxar' FS-1300 geostationary
satellite designs, and will provide Earth/Gateway and Moon/Gateway
communications, solar and battery power, maneuvering thrust,
and attitude control for the manned Lunar Gateway station in orbit
around the Moon.
|
-
Early integration and driver development of flight software for
RS-485 remote terminal serial bus interfaces on newly-adopted
single-board computer for the MP, involving U-Boot, VxWorks 7,
and gdb.
-
Porting of some of the flight software
applications on the Mission Processor to 64-bit VxWorks 7 RTOS.
-
Previous task: Integrated VectorCAST
unit test framework with PPE MP flight code in VxWorks 7
compilation environment, for flight code unit testing.
|
-
NASA's
Psyche and
Restore-L missions:
|
Previous tasks:
Code and unit test of Linux PCI device drivers
and thruster timing application code on headless development
boards, interfacing to optoisolator instrumentation boards
used for thruster pulse timing verification, to be used for
satellite flight software integration testing on lab hardware.
Used gcc for coding, and oscilloscope, signal generator, and
gdb (GNU Debugger) for debug and test.
|
|
(The Space Systems/Loral division of Maxar is the world's
leading provider of geostationary commercial satellites.)
|
|
|
|
-
Audio project
(Audience IP cores for audio processing on cellphones and tablets):
Completed integration of Percepio Tracealyzer real-time diagnostics
as a patch to FreeRTOS instances running on three Audience +
Tensilica Xtensa IP cores on Xilinx vc709 FPGA, with C (gcc) and
Perforce SCM. Debugged crashes in existing integration that were
preventing release, and made stack analysis and other debugging
tools for this effort. Made extensive in-house wiki in Confluence
for installation and use of the Tracealyzer runtime and GUI;
presented Tracealyzer and the wiki to the Mountain View and India
firmware teams.
-
Motion / Sensor Hub project
(Audience IP core for Android sensor hub core on cellphones and
tablets):
Code and test of sensor hub config commands with Android sensor
batching host protocol over I2C bus, running on Audience + Xtensa
core on vc709 FPGA. Updates to code and test of external I2C test
host running on STM M4 ARM dev board (STM32L152RCT6 /
ARM Cortex-M4), with Keil IDE and git SCM. Code and test of SPI
driver for NXP ARM Cortex-M4F sensor hub on NXP LPCXpresso dev
board. Debugged using Total Phase SPI serial bus analyzers.
|
|
|
Ground software design, code, and test at SSL/MDA
(now the Space Systems/Loral division of Maxar).
|
|
-
Telemetry, Command, and Ranging Suitcase (TCRS):
Upgrades to the TCRS in Visual Studio C++ to support SSL's
latest generation of satellites. The TCRS is a semi-portable
satellite simulator shipped by SSL's Ground Segment Test team
to remote customer sites, for the development of customers'
ground stations. Work included new data handling and GUI code
for CCSDS packet telemetry, for commanding, and for RS-232C
serial bus driver for command encryption/decryption in hardware,
for Eutelsat and Optus 10.
-
TCRS port to Java:
Completed initial port of TCRS to Java in a few weeks for NBNCo,
with CCSDS telemetry piped to remote GUIs via ActiveMQ.
-
In-Orbit Test (IOT) software (Primate):
Initial prototype in Python of software for new IOT satellite
performance measurement platform, to be used to characterize
on-orbit transponder and antenna performance during satellite
checkout period. Prototype included SCPI handshaking to
remote instrumentation racks and local GUI display of spectrum plots
of rack data. Administration of Ubuntu server installs and Linux
Mint desktop installs for the team, and, for project management and
bug tracking, of a Redmine stack with Apache, SQL, Subversion,
and Redmine server apps running on Ubuntu server, shared by the
IOT and TCRS Java projects.
|
|
|
|
|
-
Responsible for design, code, and test of satellite payload
and bus flight software integration tests, on lab hardware,
for common utilities, EEPROM uploads, boot, initialization,
vehicle configuration, anomaly detection/resolution, and
off-nominal shutdown. Duties included analysis, debugging,
and fix verification for problems determined during testing,
and burning and verification of releases in EEPROM for functional
verification by integration and test groups. Developed
disassembly / logic analyzer log merge tool for worst case timing
of flight processor boot process.
-
Analyzed and debugged Ada code, including use of target debuggers.
Debugged real-time ethernet issues with Wireshark.
-
Developed many Unix shell tools (in sh/gawk/sed) to speed
workflow, including various code generators and data filters.
Coded and tested the great majority of common and batch scripts
and Unix tools for the three areas I worked on at Lockheed
(Bus Test, and Payload and Bus Integration).
|
|
|
|
|
-
Responsible for design, code, and test of satellite
flight software functional requirement tests on
lab hardware, for boot, initialization, vehicle configuration,
flight image loading, patching, memory management, and
scrubbing.
-
Analyzed Ada code during debugging, and coded and
debugged some test builds. Discovered and analyzed and
reported to Rational a fatal bug in Rational's patching linker
by patching between two test builds. Rational later fixed this
in their product.
-
Helped integrators debug problems, mentored new engineers,
and provided generic solutions to other engineers.
-
Coded, tested Unix utilities for the testers and
integrators to speed the workflow, resulting in much time saved.
Coded and tested flight software upload utilities.
|
|
|
|
|
Responsible for design, code, real-time optimization,
unit test, troubleshooting, documentation, and patching of satellite
flight software for various applications on Loral's FS-1300 series of
satellites, in Ada, 8051 assembly, C, and 1750A assembly. Sole
telemetry flight firmware engineer for most of Loral's GEO programs
during this time.
|
|
Projects included: |
|
-
Major upgrades to Intelsat-IX telemetry and solar array drive
software, including telemetry changes to accommodate splitting
of flight computers. Tested on simulators and h/w targets;
advised/troubleshot integration test at satellite manufacturing
level. Advised engineers and testers on telemetry, software
environment, test equipment. Supported later programs based
on I-IX design
(1996-2002).
-
8051 microcontroller firmware on 1553-to-RS-485 command/telemetry
hub for Satmex-6 and ipStar (sole 8051 firmware engineer on this
project). Coded, hand-optimized for time and PROM, unit/integration
tested, verified worst-case timing with oscilloscope. 8K lines of
flight code and 14K lines of test code, most of it in 8051 assembly
and the rest in C, all flying in 32K of PROM and 256 bytes of RAM on
a radiation-hardened 8051. Produced full doc set (SRS, SDD, VDD)
(2000-2002).
-
Major upgrades to MTSAT attitude control software (1996-1998). Updates
to attitude control software for Chinasat-8, MCI-2, Telstar-7, Eurostar,
Intelsat-IX (1996-2002). Updates to command software for Tempo,
Panamsat-6, Intelsat-IX, Mabuhay (Agila)/Telstar/Apstar
(1995-1996).
-
Development of code generators, code patch tools, and various other
utilities, using shell, awk, and sed scripts under Unix. Coded and used
a coverage analyzer that merged 8051 simulator output with disassembled
8051 flight build. Coded and used a bus instruction trace tool that
merged logic analyzer output with disassembled 1750A flight build to
help pinpoint root cause of random flight processor reboots to a wait
state error in vendor's documentation, after a 9-month flight software
team effort did not find the cause by code and coverage analysis.
|
|
|
Software development on various astronaut training simulators for NASA.
|
|
NASA Space Station Training Facility (SSTF),
subcontracted to Hughes-Link
-
In the Onboard Computer Systems group (OBCS), designed, coded, and
tested several class objects for the firmware controller 1553
interface, part of the simulation of the Station's 1553 network;
integration-tested on SGI Challenge targets (including 1553 bus
logging and analysis, with serial bus analyzers).
Satellite Ground Station Training System, contractor for
Booz • Allen & Hamilton internal project
-
Ported satellite operations manual to real-time C, for training
model of customer's satellite, including sensor, controller, and
actuator models.
NASA Shuttle Mission Training Facility (SMTF)
, subcontracted to CAE-Link
-
PDR design for training model of the entire Space Station Data
Management System, to be run on the Shuttle Mission Simulator,
including all on-orbit computers and networks. Also coded and
ran filters for comparing and plotting flight
Shuttle Canadarm Robotic Arm data vs. simulator-modeled arm
data, in C.
|
|
|
|
Education
|
|
|
|
|
The Application of Neural Networks to Flight Control:
• at
Proquest. • at
Google Scholar.
|
|
|
|
|
|
Training
|
IEEE-Boston, EL805:
Embedded Linux Board Support Packages (BSPs)
and Device Drivers, 2019.
|
|
IEEE-Boston, EL201:
Introduction to Embedded Linux, 2017.
|
|
Coursera, Development of Real-Time Systems, August 2016, cert.
AK2DMQNP5E49.
|
|
STMicroelectronics STM32L4 low-power ARM Cortex M4 dev board seminar,
Santa Clara, October 21, 2015.
|
|
First PocketQube
Workshop, for the
CubeSat-derived
PocketQube tinysat, by Kentucky Space at NASA Ames, April 17, 2014;
attendee.
|
|
Export Control /
ITAR
briefings at Space Systems Loral, 2011 and 2012.
|
|
|
Memberships
|
The Institute of Electrical and Electronics Engineers
(IEEE), and the IEEE
Robotics and Automation, Aerospace and Electronic Systems, and
Controls Systems Societies.
|
|
|
Volunteering
|
Eagle Scout. Past merit badge counselor and webmaster (CA), Senior
Patrol Leader and Assistant Scoutmaster (TX). First Lego League coach
(2006, 2013-2015).
|
|
|