|
| |||||||||
|
PROFESSIONAL
EXPERIENCE:
DETAILED
EXPERIENCE: April'09
- Present Senior Software Engineer,
Covidien, Carlsbad, San Diego I
am currently a member of the Platform team developing device drivers and test
utilities for a medical ventilator. I
have continued the development design of the FPGA SPI driver I created earlier
while employed as a contractor by this company and have now expanded the
protocol to incorporate additional board
types and the transfer of both sensor, command and calibration data.
This work has involved gaining an understanding of the entire ventilator
system. I have written Software
Requirement Specifications (SRS) and Software Design Specifications (SDS) for
this FPGA driver, as well as for a test utility which will be used to verify the
operation of each board type. I
supervise software contract engineers who are developing driver code for the
FPGA SPI interface and for the test utility.
I researched various medical international specifications regarding
software design with regard to risk management and mitigation after which I
created a summarized report and recommendations on the subject.
I created a Bootloader design document which details the PowerPC bootup
procedure with regards to the development product’s hardware implementation.
The Eclipse Integrated Development Environment was used interfaced with the GNU
C compiler and assembler for the PowerPC.
BDI3000 JTAG Debugger.
Freescale PowerPC processor (MPC8349EA).
Clearcase version control.
Nov'03
- April 09 Software Engineer, Quantum Blue Technology LLC
(Owner) I completed a second contract with MLS Technologies (2 months) assigned to Covidien after which they offered me a permanent position. I completed a short-term contract with a company based in the Los Angeles area. I was tasked to assist with the debugging of a medical product. I also implemented and tested software that I had previously developed for this same company. The software was developed to work on a PIC 18F67J50 processor and to communicate with a NAND memory device and wireless and USB interfaces. This work was performed both at the client’s site and also from my home office. I have my own computer lab with oscilloscope, power supply, multimeter, soldering station, six networked PC computer systems and laser printer. I have enhanced the NAND memory interface driver, developed Hamming Error Correcting Code and also provided an API interface to perform on-board FAT16 file operations. I also wrote a timing analysis document to determine the product’s overall system capabilities. The Microchip MPLAB IDE, ICD2 and C18 compiler were used. I recently completed a software contract with MLS Technologies (4 months) located in Poway California. I was assigned to work as a software contractor for a medical company. At this company I developed software drivers and board support programs for the PowerPC processor (MPC8349EA). These programs included the modification of the ThreadX operating system and the NetX Ethernet driver to cater for instruction and data cache operation, additional modifications to the Ethernet driver to also detect LAN connection status, initial development of the product bootloader implementation along with initial development of an FPGA Driver Application Program Interface which would handle multiple SPI inter-processor communication channels. These designs included the development and testing of PowerPC C and assembler code as well as the writing of the associated design and implementation documents (Microsoft Word). The Eclipse Integrated Development Environment was used interfaced with the GNU C and assembler for the PowerPC. BDI3000 JTAG Debugger. Clearcase version control. On a previous project I used
Borland C++ Builder Professional Edition IDE to develop a Client / Server
Point-Of-Sale (POS) Business Application which permitted up to 100 networked PC
computer systems to operate as point of sale cash register terminals providing
Inventory, Point-Of-Sale (cash and account sale transactions) and Accounts
Receivable functions. I developed a
distributed database environment which allowed the client POS cash register
terminals to continue processing customer sale transactions even if the network
and/or the server PC system were to fail. When the network and server were
operational, changes to the server database were automatically distributed to
the client PC systems to keep their respective databases current.
Calendar Indexed file directory structures were developed to create
database data files which provided fast report generation and data file update
features not generally available on other similar systems.
I also wrote a windows printer driver to handle ESC/POS printers.
This project has been completed, is fully documented and a demo version
was created which can be downloaded from the company website and installed on a
customer’s PC. I also developed
the company website using Microsoft FrontPage. Aug'02
- Oct'03 L3 Communications
"Ruggedized Command & Control Solutions" I
was hired by L3 to initially complete the Ruggedized LCD Display Panel - the
work of which I had originally developed while employed by QuEST Engineering.
I continued the project by writing the code for the four Micro
Controllers (C programming language). The
four source code sets were built, fully debugged after which system integration
was completed. I used the CanBus
CanAnalyzer and Condor ARINC Analyzer to monitor the respective communication
interfaces and to inject various test messages into the system.
The development environment was a Pentium PC (Win 2000) using the
Microchip C18 C compiler (Microchip MPLAB IDE and CodeWright Editor) and PVCS
version control. The Microchip
ICE2000 In-Circuit Emulator was used to assist debugging. My system specification documents and code design received
excellent reviews from heads of Software and QA departments. I
was then assigned to work on the MobileVU SPI (System Power Interface) control
card which was used to power a ruggedized display and computer system used in
law enforcement applications (eg. police vehicles). The SPI MicroController (Microchip 16F877) performed POST/BIT
tests, controlled the power to the computer system, the LCD display and an
auxiliary device. The SPI could power the various outputs in a user-selected
order, power down or restore power to the display as required by the user (or
user selected time period) and perform a UPS-style graceful shutdown of the
entire system if the selected operating time was exceeded, or if requested by
the user, or if the vehicle battery voltage dropped below some preset value.
Various system conditions (eg. battery voltage, BIT test status) were
also displayed on a row of LEDs. I
developed the software system design specifications for the SPI control card and
also wrote and tested the C source code (CCS C compiler, Microchip MPLAB IDE).
The Microchip ICD2 In-Circuit Debugger was used to assist in debugging
and to program the MicroController. My
final task at L3 was to develop software for the Driver's Vision Enhancer (DVE)
upgrade project. The DVE is a
product used to display external RS170/PAL video from a standard video camera or
from a FLIR device (Forward Looking Infra-Red).
Various product components were reaching the end of their production life
and the hardware was upgraded to utilize a new MicroController (Microchip 18F8720) and new video (Philips
SAA7118) and LCD interfaces (ADE3300). The
DVE MicroController performed POST, utilized an I2C interface to configure the
video and LCD interfaces (approximately 800 registers combined), monitored the
front panel controls and controlled the video and LCD interface to display the
selected video input channel and processed RS232 OSD (On Screen Display)
messages (alphanumeric characters to be displayed, cursor control commands -
move/get cursor position, clear line/screen).
I developed the software system design specifications and also wrote and
tested the C source code (Microchip C18 C compiler, Microchip MPLAB IDE,
CodeWright Editor, Microchip 18F8720 Micro Controller). The Microchip ICE2000
In-Circuit Emulator was used to assist in debugging.
The Microchip ICD2 In-Circuit Debugger was used to program the
MicroController.
July'2000
- June' 02 QuEST
Engineering Services and Technology, Spring Valley, CA I
developed test software for a classifier card which utilizes the Texas
Instrument TMS320C6712 Digital Signal Processor. The test software, controlled via an RS-232 terminal
interface, exercises the DSP
interfaces as well as other various peripherals (eg. multimedia card interface,
Flash memory, SEROCCO-M
serial communications controller). The
code has been developed and is ready for the test phase. I
was then sub-contracted to Hughes Network Systems as a software engineer.
There I was tasked with assisting the software team developing the
Thuraya hand-held satellite phone. My
work included enhancement modifications to the Software Environment (a suite of
wrapper functions used to create a system software / operating system
independent interface - the wrapper functions were layered on top of the VxWorks
Operating System) - these modifications included broadcast capability for tasks
with no queues, queue spying speed improvements, and research into possible
timer speed enhancements. I also
improved the execution speed of the VxWorks serial interface drivers and
debugged / modified the Inter-Processor Communications Channel for the
determination / detection of failure conditions and the dropping of
non-important message types when communication throughput approached its upper
limit. I also assisted with sleep enhancements for the reduction of
the phone's overall power usage. I
have written profiler code which was used to detect and monitor the various
tasks which ran between successive IDLE task executions - this permitted the
determination of the tasks which required the most processor time and to ensure
that the watchdog timeout would not elapse.
I also developed a system to monitor various task health conditions and
to report on suspended or invalid tasks. My
experience was also used in overall debugging of the final product and I
assisted the various team members as and when required.
Two ARM7 processors were used in this project. I
developed software system design specifications for a Ruggedized LCD Display
Panel which was internally controlled by four circuit cards (Switch Encoder,
Display Controller, Video Interface and Power Supply).
Each card utilized a PIC 18C658 MicroController.
The Switch Encoder performed POST / BIT / I-BIT (Power-On Self Test,
continuous Built-In Test and Initiated-Built-In Test) and keypad scanning.
The Display Controller performed POST / BIT / I-BIT, automatic / manual
LCD backlight brightness control (pulse width modulation), monitored the LCD and
LCD Backlight temperatures, monitored
the LCD backlight and ambient brightness conditions, stored / retrieved system
settings to / from non-volatile EEPROM memory, controlled the LCD and LCD
Backlight heaters and monitored / controlled system warm start / cold start
conditions. The Video Interface
performed POST / BIT / I-BIT, displayed various test screens, displayed selected
video channel (or displayed an error message if no video was detected),
displayed OSD (On Screen Display) alphanumeric text and output various ARINC
messages to external computer systems. The transmitted ARINC messages were continually monitored to
ensure validity. The Video
Interface processed received ARINC messages which allowed remote computers to
force the unit to perform I-IBIT tests. The
remote computer could also abort active I-BIT tests. The power supply card performed POST / BIT / I-BIT,
controlled internal fans (dependant upon the internal temperature), continuously
monitored various power supply voltages (resetted any erroneous power supplies),
and detected system shutdown / power fail conditions (under these conditions,
the Power Supply MicroController would interrupt the Display Controller
MicroController in order to initiate the saving of system settings to EEPROM.
All cards reported their status information to the other cards via the
CanBus. The
design documents I developed included the User's Interface, Programming
Environment Methodology, System Architecture, Software Development (one for each
MicroController card) and Protocol (ARINC and CAN bus) Specifications.
I later wrote Test Specifications for each individual circuit card and
for the entire unit. My
employer (Quest Engineering) and I were then offered permanent positions at L3
where we completed this project. Dec'99
- June'2000 Self
Employment - Software Contractor USB
Monitor Board My
task in this project was to develop software for a Motorola 68HC05JB4
microcontroller which monitored and controlled various devices.
After reviewing the product specification and schematic, the
microcontroller documentation, the various controller interface specifications
and the USB Specification (Universal Serial Bus), I then developed a software
system specification which documented the various processor tasks which would be
implemented along with the actual USB protocol messages.
I then wrote the code in C utilizing the COSMIC "C" compiler
and tested the monitor board system using a Motorola emulator and a CATC USB
Chief Bus and Protocol Analyzer. Quest
Engineering then offered me a permanent position. Dec'98
- Nov'99 Senior Engineer,
Information Systems Laboratories, San Diego, CA My
principal task was that of system architect.
I was the software lead of a team of engineers subcontracted to another
company in order to enhance an NMR (Nuclear Magnetic Resonance) device which
could detect explosive compounds. An
engineering team comprised mostly of physicists and chemists had designed the
current hardware and software for this device.
The system design documentation which was available was minimal at best
and written from a purely scientific viewpoint. I reversed engineered the existing design and developed a set
of system design documents to describe each of the new sub-systems in detail.
Our own program development team along with development teams from the
main company and an additional sub-contractor utilized these documents.
I also designed and supervised the development of the GUI (Graphic User
Interface) Windows-like program (Photon IDE and QNX Operating System (UNIX-like)
running on a PC Pentium platform) which controlled the entire system. Aug'97
- Dec'98 Project Manager,
Integrated Systems - Design Center, San Diego, CA. Designed
and implemented code to provide debugger commands on the ST20 development
platform using their command language feature. Modified this code to execute as a C++ class
definition. This task
involved traveling to Bristol, UK in order to complete the implementation of the
project. Managed
a software project consisting of up to eight team members.
The project involved the porting of the pSOS+ operating system to the NEC
V830 processor. Developed
project requirement and software functional specifications for a satellite set
top box. Also researched the
digital security encryption/decryption processes and wrote development
specifications. Final task on this
project was to implement the OpenTV command suite for the MPEG decoder. Enhanced
a menu system for a Bang & Olufsen high-end Audio/Visual system. Sept'96
- July'97 Snr Software Engineer, Stellcom
Technologies, San Diego, CA. Worked
as a consultant for Stellcom Technologies and was assigned to Dr. Design (which
was later taken over by Integrated Systems). Reviewed
a Satellite TV DSS IRD (set top box receiver) design and developed improvements
to the OSD (On Screen Display) user interface.
Created various software project documents - design methodologies
(structured top down design - HLD, LLD, data flow diagrams, program design
language (structured English), coding standards, data dictionary and module
description). Taught the design
methodologies to a customer's development team. VSS version control. Designed
and implemented code to mimic the MTOS operating system on a pSOS+ Power PC
environment (ie. wrapper functions). Created
development documentation defining the MTOS operating system wrapper function
calls. Wrote/compiled/tested
the wrapper function code. Wrote
test code to verify the operation of each wrapper function. (Documents in MS WORD Ver7.0a, code written in C for UNIX). Designed
/ implemented disassembler for M32R pSOS+ port. Developed code source flow utility to analyze a group of
"C" code source files and generate function calling / called trees.
Developed a program design package which takes structured English
constructs and generates a cross-reference listing.
Created
user operation documents for each project.
Both utilities were written using Microsoft Visual C/C++ Ver 4.0 (Win'95
DOS window command line environment). Integrated
Systems then offered me a permanent position. Jan'96
- Aug '96 Senior Software Engineer,
Metacomp Inc., San Diego, CA. Researched
various ISDN PPP (Point-to-Point protocol) RFC's and developed a document
logically identifying the various steps required to implement the protocol.
Designed
and implemented embedded firmware for a POTS telephone upgrade to an ISDN BRI
(Basic Rate Interface) PC card. The
upgrade permitted a PC Host program to remotely control the POTS interface via
API commands and included a transparent mode option which would route speech
data to the PC for recording / playback purposes. The project required gaining a detailed understanding of the
BRI switch protocol used during POTS operation. I
was responsible for designing new API protocol messages and updating the related
documentation. I also wrote PC host
software to exercise the new POTS features and upgraded the ISDN BRI firmware to
operate in the ETSI (European) environment.
I have also been directly involved in taking the card through conformance
testing. All the firmware projects
were designed to operate on a Motorola 68302 processor using the IDL interface.
The code was written in C and Assembler using a PC (Windows 3.11)
platform.
Aug'95
- Dec'95 Senior Software
Engineer, TV/COM International, San
Diego, CA. Designed
and implemented software systems for an MPEG-2 Transport Scrambler (Motorola
68EN360). Developed HLD & LLD design documents, front panel operators
manual, several interface control documents (NMS, Scrambler Engine and Test Port
protocol definitions), Offline and Online BIT tests, Data Flow Diagram and used
Program Design Language to build code framework. Code written in Microtec
Research C and Assembler, developed on PC platforms (Windows for Workgroups).
Firmware controlled system operations, front panel menu/keypad interface,
RS232 asynchronous interface and Ethernet Client/Server interfaces.
Supervised the coding of certain sections of the project.
PVCS version control. Nov'92
- July'95
Firmware Engineer, GENERAL
INSTRUMENTS, San Diego, CA. Designed,
implemented and maintained software systems for diagnostic test stations
(Motorola 68302 & 68EN360) used in testing multichannel digital television
encoder boards. Wrote system development and operational specifications. Trained
manufacturing technicians in the use of test stations. Embedded control code
written in Microtec Research C and Assembler, developed on PC platforms (Windows
for Workgroups). Wrote drivers and control firmware for RS232 interface to
operator terminal, Bar code wand interface, HDLC communications channel &
GPIB interface (IEEE 488 Controller) to remotely drive an HP Powermeter /
frequency counter. PC based
emulator & Microtec Powerscope debugger were used during code testing. VAX
CMS version control. Designed
and implemented software systems for an MPEG-2 transport encryption multiplexer
(Motorola 68EN360). Firmware controlled MPEG-2 packet generation and PID
translation, RS232 asynchronous
interfaces, HDLC interface and Ethernet Client/Server interfaces. Wrote system development and internal Ethernet protocol
specifications. Code written in
Microtec Research C and Assembler, developed on PC platforms (Windows for
Workgroups and Windows NT). PVCS
and RCS version control. Aug'90
- Oct'92
Senior Software Design Eng., DYNAMIC INSTRUMENTS, San Diego, CA. Designed
and implemented software systems, wrote operational/remote-control protocol
specifications for a multichannel audio communications recorder and an audio
switch matrix, (Intel 8051 - PLM/51, ASM51).
Developed interrupt driven IBM PC RS232 & GPIB (IEEE 488) remote
control packages to remotely control the recorder & switch matrix (PASCAL)
Wrote system / operational / remote-control protocol specifications for
two DAT based audio recorder systems. Created
interface library to access SCSI DAT (DDS) Digital Data Storage system (IBM AT,
Turbo C++). PVCS (DOS) version
control system.
Jan'87
- Jul'90
Software Manager, IDCO, Johannesburg, SA. Developed
software drivers and digital hardware for a small hand-held computer, (Intel
8051 embedded controller -IAR C).
Created system design and operation specification documents, developed
and implemented software for an audio recorder (audio and IRIG-B time code
channels), a data recorder and an intercom system which utilized continuous
built-in test, (Intel 8051 - PL/M-51). Developed
RS232 test communications packages, (IBM AT -Turbo Pascal).
Supervised other company software projects, (robotic tractor, sensor
calibrator, hand-held computer). Responsible
for development of project system and operational specifications. Jun'85
- Dec'86 Software
Development Engineer, E.L.BATEMAN, Johannesburg, SA. Software
maintenance and enhancements to a DEC PDP11/73 based process control system
which communicated with Gould Programmable Logic Controllers, (RSX11M/PLUS - RPL/2).
Also wrote operator and software system specifications for graphical
trending and report manager packages. Aug'82
- May'85
Systems Programmer, TELKOR, Johannesburg, SA. Embedded
microcontroller programming using Intel "Blue Box" development system
with In-Circuit-Emulator, (Intel 8085, Usart, Timers, PICs (Priority Interrupt
Controller) - PL/M-51 & ASM51), for an interrupt driven terminal monitor program
and a mimic panel three operator train number controller.
Data General Nova IV assembler programming for refrigeration holding shed
control system, (responsible for dynamic variable graphics display and various
alarm displays). Mar'81
- Jul'82
Analyst/Programmer, NEDACOM, Johannesburg, SA. Banking
environment - designed and wrote system & online programs to execute on a
Burroughs B4800 and B6800 mainframe, (TSL, BPL, COBOL & Assembler).
Programs included an online customer activated terminal system, remote
printing, diskpack analysis and countrywide personnel report packages). EDUCATION: BACHELOR of SCIENCE
DEGREE in COMPUTER SCIENCE
University of the Witwatersrand Johannesburg
South Africa
In
my final year at university I
worked in the Physics Department as a research assistant to Dr. J.A. van Wyk.
My
work involved the modification and testing of software analysis programs as well
as the operation of a Varian Electron Spin Resonator.
The project was funded by De Beers to study of the effect of color
changes in artificially irradiated diamonds. |