Project History |
Jun 2005 |
Multi-thread ONC-RPC Additions
Added multi-threaded support to ONC-RPC library to allow multiple
RPC requests to be sent and handled by the RPC clients and servers.
This allows for a client to initiate a request and to abort that
request from another thread in the client. This also allowed the
server to create a pool of threads for handling RPC requests. So,
one request into the server will not hold up all the other RPC
requests from other clients.
|
Mar 2005 |
802.11 a/b/g Driver Support
Worked with an 802.11 a/b/g vendor to get WPA and WPA-2 support into
their Windows drivers. My role was to provide a proposal and a roadmap
to the vendor on how go about adding WPA and WPA-2 support to their
present non-WPA driver.
|
Mar 2005 |
Ported 802.11 a/b/g Driver to Windows CE
Ported a Windows XP 802.11 a/b/g driver to Windows CE-5.0 on an
x86 platform. The driver was maintained as a single source driver
to re-use as much of the source code that already existed. Source
code was ifdef'ed to reduce extended memory and other resource usage.
Total project time took approximate 4 weeks from beginning to end.
The customer now has a single source driver that works for both
Windows XP and Windows CE, and can be built and installed using the
Windows CE 5.0 Platform Builder.
|
Nov 2004 |
Linux 2.4/2.6 32/64-bit SATA Raid Controller Driver
Ported a Linux-2.4 SATA Raid controller driver to Linux-2.6 and added
support for 64-bit Linux processors. The resultant driver worked on
both Linux-2.4 and Linux-2.6 systems and on both 32-bit and 64-bit
processor platforms. The driver supported hot-plug/un-plug of
running/mounted drives and gracefully handled recovery without crashing.
The driver was also compiled and ran on a LinuxPPC Macintosh platform.
|
Oct 2004 |
Embedded Linux RFID Platform Upgrade and Automatic Configuration from DHCP
Developed network based upgrade and automatic configuration using DHCP
for a Linux based RFID reader platform. Extensions were made to the
ISC DHCP client to support DHCP lease force renew and DHCP inform.
Portions of the TriplePoint Embedded Linux distribution were also
incorporated into the project to quickly add support for DHCP, Perl,
and NTP to the XScale RFID platform. When the RFID platform received a
DHCP lease, or was forced to perform a DHCP lease renew, it would use
the information present in the DHCP response from the DHCP server to
perform re-configuration, and to know when to start upgrade from a
network server.
|
Jun 2004 |
Ported TriplePoint Embedded Linux Distribution to PowerPC Platform
Ported the TriplePoint Embedded Linux distribution to a PowerPC platform.
This involved adding the UBoot bootloader to the distribution as well
as extending the current processor/platform support for big endian cross
tools and support for PowerPC processors.
|
Apr 2004 |
802.11 Stimulus/Validation Test Generation
Designed and implemented 802.11 stimulus and validation tests for
an 802.11 test/validation hardware vendor. Tests were implemented
as Perl scripts that generated the custom tester command language.
This allowed for quickly changing the tests to run in different
environments with a variety of parameters.
|
Jan 2003 |
802.11 Driver Suite for Windows XP/2K/NT/CE
Developed a shared source code 802.11 a/b/g driver suite for Windows
XP/2K/NT/CE. The drivers shared approximately 90% of the source code
from the Windows XP driver. Much of the internal code was also shared
with the Linux implementation. This allowed for one single source code
base to be developed and tested to eliminate redundant development,
testing, and maintenance efforts. WPA and WPA-2 functionality was
added to the driver and we worked with Microsoft to extend NdisTest
(part of the WHQL suite) to better test/support WPA-2 functionality
of new drivers. The final driver was WHQL certified using the
Microsoft HCT suite and passed all tests.
|
Nov 2002 |
Ported TriplePoint Embedded Linux Distribution to PC104 Platform
Ported the TriplePoint Embedded Linux distribution to a PC104
platform. Minor changes were needed to the distribution build system to
support both the StrongARM (CerfCube) and x86 (PC104) platforms. The
porting process took a total of 2 weeks to complete. The platform was
the 686CORE/
686BASE from
CompuLab.
|
Aug 2002 |
AD007 Firmware Upgrade (v1.01f)
Implemented updates to the Tektronix AD007 GPIB-Ethernet Adapter source
code to address problems found in the field.
|
Jul 2002 |
TriplePoint Embedded Linux Distribution
Designed and implemented version 2 of an embedded Linux distribution
that builds completely from sources. The distribution was created
specifically for use with the TriplePoint Home Gateways to make the
build process easier and more repeatable. Just "make" at the top of
the distribution build tree will create a kernel and disk image that
can be download and flashed into a CerfCube platform.
|
Jun 2002 |
Remote NDIS Support
Contracted as the technical expertise on a product that was using
Microsoft Remote NDIS over a USB bus. Remote NDIS effectively remotes
the physical "network adapter" across the USB bus. In theory, only
one driver needs to be written in the host operating system since
normal NDIS messages are sent across the USB bus to the device. It is
up to the device to decode the NDIS messages and perform the requested
actions. Remote NDIS can also be used to simulate a LAN over USB where
the remote USB device takes the role of a network end-point.
|
May 2002 |
TriplePoint Home Gateways
Created a replacement internet gateway network appliance for our home
broadband networks based on the
Intrinsyc
CerfCube
hardware platform. Our initial home gateway implementation used a
stripped down PC platform with 2 ethernet adapters to perform firewall
functionality as well as creating an IPSec connection between our homes
and the TriplePoint office. The new implementation uses the PCB out of
the CerfCube platform re-packaged in a small box (2.5" x 3.5" x 1.0")
with the addition of a compact flash ethernet adapter from Socket
Communications to replace the clumsy/noisy/power hungry PC platform
implementation. The software is based on standard Linux software
packages and components re-targeted from the original SuSE-based x86
PC platform onto the StrongARM platform. This was the predecessor of
the TriplePoint Embedded Linux Distribution.
|
Apr 2002 |
Windows/Linux Infiniband System Design and Specification
Developed a specification for an Infiniband system that presented a
common programming interface for both Windows and Linux operating
systems. Programs written to the common Verbs interface could run
either in user space, or in kernel space without changes to the
source code. Design emphasized zero copy techniques, support for RDMA
(Remote DMA), permission validation, asynchronous calling conventions,
and source code portability to other operating systems.
|
Mar 2002 |
Serial Over TCP/IP
Developed serial over TCP/IP server implementation (RFC2217) for
Windows CE. This allowed for another workstation to use the serial
ports on the WinCE platform over a TCP/IP connection as if the WinCE
serial devices were connected directly to the workstation. Serial
over TCP/IP service is actually implemented as an extension to
the Telnet protocol. For the client-side implementation, we used Serial/IP for Windows
workstations from Tactical
Software for development and validation.
|
Jan 2002 |
Intrinsyc CerfCube Platform
Discovered a small (2.25" x 3") Linux platform based on the StrongARM
processor called the
CerfCube
from
a company called Intrinsyc Software
Inc. out of Vancouver, British Columbia, Canada. The platform makes
a reasonable network appliance since it has both a 10Mb Ethernet port
as well as a compact flash interface. An additional Ethernet interface
can be added to the compact flash interface to make a wired network
appliance, or a compact flash 802.11 adapter can be added for a
wireless network appliance.
|
Jan 2002 |
Embedded Linux Camera, Web Server and Bluetooth
Continued working with Rob on the embedded camera platform using
uCLinux on an ARM7 platform without an MMU. Additional tasks and
accomplishments included:
- Investigation of other Bluetooth stack options
- Updates to the OpenBT stack to complete Bluetooth certification
- Took over software development on the DSP image processing subsystem
- Enhanced DSP image algorithms, color and image calibration, and updated communication protocol between the NetARM and DSP processors
- Upgraded product from uCLinux-2.0 to uCLinux-2.4. Updating resulted in a much more stable and robust system
- Implemented automated tests and test analysis tools used for validating system robustness
|
2002 |
Conferences
- Mar 2002 - Embedded Systems Conference
Attended the tradeshow in San Francisco to refresh my information on industry embedded solutions and to evaluate the show as another exhibiting opportunity for TriplePoint
- Apr 2002 - Microsoft WinHEC
Manned the TriplePoint booth in Seattle. We talked with Microsoft architects about the present and future, and chatted with people in the industry and potential customers.
- Oct 2002 - Microsoft Embedded Conference
Attended the tradeshow in Las Vegas to see what Microsoft has to offer in the embedded world besides WinCE and Embedded Windows and to evaluate the show as another exhibiting opportunity for TriplePoint
|
Dec 2001 |
TriplePoint Invoice/Expense Package v2.0
Updates to TriplePoint Invoice/Expense package:
- Invoices for each user are displayed in a report format including user splits and subtotals
- Added Javascript menu package to allow for easier creation and manipulation of Invoices and Expenses
- Using the menu package, invoices can be marked as received when payment arrives
- Updates for new TriplePoint letterhead
|
Dec 2001 |
IP Discovery Protocol Updates
Updates to the IP Discovery protocol:
- IP Address Squatting
If the device was not able to acquire a DHCP address and receives an
IP Discovery request, it can temporarily "squat" on an IP address
so it can be configured for the user network. This is performed
by ARP'ing for an unused IP addresses around the requesting
client workstation's IP address. By using this method, the user
does not need to re-configure their workstation IP address to
talk to an un-configured device. Previously a device without a
user interface would assume an IP address like 192.168.1.1 when
it was not configured. The user then had to re-configure their
workstation to be on the 192.168.1.0 network to talk to the device
and reconfigure the device to operate on the normal user network.
- Java Client
IP Discovery can now be performed from a Java enabled web browser
like Microsoft Internet Explorer or Netscape Navigator from Windows
and Macintosh platforms without installing special software.
Select the IP Discovery link to perform an IP Discovery of the
devices on your LAN.
IP Discovery
- Device Parameters
Device parameters like device name and firmware versions can
be returned back to the requesting client application. This is
useful for identifying different devices and determining additional
information about the device like firmware versions.
|
Oct 2001 |
AD007 Firmware Upgrade
Implemented updates to the original Tektronix AD007 GPIB-Ethernet Adapter
source code and firmware upgrade application. Updates included better
DHCP client support, functionality updates for the GPIB and VXI-11
subsystems, fixes to the HTTP server for recent web server exploits
like NIMDA, and a single executable firmware upgrade utility.
|
Jun 2001 |
Embedded Linux Camera, Web Server and Bluetooth
Worked with Rob and Tim on an embedded camera platform using uCLinux
on an ARM7 platform without an MMU.
- Ported the OpenBT Bluetooth stack
- Implemented extensions to the Bluetooth stack to support FCC testing
- Updates to the serial and ethernet drivers
- Implemented the HTTP server
- Debug of ARM unaligned data access and no MMU issues in both the kernel and applications
- Implemented manufacturing support interface
- Implemented firmware upgrades from a web server
- Integrated updated IP Discovery functionality into the product
- Implemented kernel features to support manufacturing and diagnostics
- Defined build/release procedures
|
May 2001 |
TriplePoint Invoice/Expense Package v1.0
Developed a web-based Invoice and Expense reporting package that
integrates with QuickBooks to ease creating invoices for clients (both
paper and PDF versions) and reporting employee expenses. Scripting was
performed using Perl and included support routines also written in Perl
that extracted information from the underlying database to be imported
directly into QuickBooks using the "semi-open" QuickBooks IIF format.
|
May 2001 |
Embedded Linux Camera, Web Server and Bluetooth
Worked with Rob and Tim on an embedded camera platform using uCLinux
on an ARM7 platform without an MMU.
- Ported the OpenBT Bluetooth stack
- Implemented extensions to the Bluetooth stack to support FCC testing
- Updates to the serial and ethernet drivers
- Implemented the HTTP server
- Debug of ARM unaligned data access and no MMU issues in both the kernel and applications
- Implemented manufacturing support interface
- Implemented firmware upgrades from a web server
- Incorporated updated IP Discovery functionality into the product
- Implemented kernel features to support manufacturing and diagnostics
- Defined build/release procedures
|
Feb 2001 |
Linux Build Environment for Tornado-II/VxWorks-5.4
Implemented and deployed VxWorks build environment on Linux for a large
software project. The project was initially built on a Windows NT using
the VxWorks commandline build environment and was taking ~6 hours to
build from sources. After changing the build system over to Linux,
the build time was reduced by over 3x on single processor x86 Linux
systems. When parallel make and multiple processors were enabled,
the build time reduced to less than 30 minutes.
|
Jan 2001 |
WindRiver Residential Gateway (TRex)
Worked on a team developing a hardware
reference platform for the WindRiver Tornado
for Home Gateways project. Implemented glue layer interface
between the DC-ATM stack and the ADSL hardware interface routines. Also
developed test routines for validating ADSL operation in both WAN and
LAN (RFC1483/RFC1577) configurations. Wrote code for integration of
the reference platform BSP and components into the Tornado IDE.
|
Nov 2000 |
Voice Recognition System
Developed demonstration of a voice recognition/text-to-speech system
using an off-the-shelf automobile MP3 player and Linux. The demonstration
software was based on commercial TTS (text-to-speech) / ASR (automatic
speech recognition) system running on Linux and driven by a Perl
program. The system implemented verbal operation of the MP3 player,
verbal creation of playlists, and synchronization of MP3 songs between
a host system and the mobile MP3 player over a wireless 802.11 interface.
|
Sep 2000 |
Linux 2.2/2.4 LAN/WAN ADSL PCI Driver
Designed and implemented a Linux 2.2/2.4 LAN/WAN ADSL driver for a
PCI adapter. This included porting driver code developed for Microsoft
Windows NT/2K into the Linux driver model. The driver allowed for both
LAN ethernet interfaces using RFC1483/RFC1577 and WAN PPP TTY/serial
interfaces using RFC2364.
|
Jun 2000 |
WindRiver Tornado-II/VxWorks-5.4 ISDN BSP
Developed a VxWorks BSP to support PCI/cPCI ISDN adapters. The
ISDN driver enabled firmware download to the adapters as well as
setup/teardown of multiple ISDN channels, and data transfers.
|
Mar 2000 |
Upgrade WindRiver Tornado-I WDB/PCI Shared Memory Agent to Tornado-II
Migrated TpiWdb support from WindRiver Tornado-I environment into the
Tornado-II environment. Added graphical control panel to configure
the adapters and communication.
|
Jan 2000 |
Multi-layer switch BSP support for VxWorks
Designed and implemented a VxWorks driver/BSP to support a multi-layer
switch IC.
|
Oct 1999 |
Office Y2K Updates
Updates to the office servers and bookkeeping software for Y2K
compliance.
|
Aug 1999 |
Extended Support/Development of ISDN Serial Port Emulation
Provided extended support for the Microsoft Windows NT 4.0 ISDN Serial
Port Emulation product.
- Updated Call State to handle ISP RAS call loads
- Call Manager interface
- Support for Citrix and ZetaFax products
|
Jun 1999 |
WindRiver Tornado-I WDB/PCI Shared Memory Agent (TpiWdb & TpiShm)
Designed and implemented a WindRiver Tornado-I WDB agent that enables
communication between a VxWorks client and a Windows NT host across
PCI shared memory without the usual extra hardware and external cabling
(ie. ethernet, serial, etc).
|
Feb 1999 |
Linux Wireless Ethernet Driver
Designed and implemented the WaveLAN/IEEE PCMCIA driver for
Linux. Implemented a combination source code and library driver
to support the Lucent WaveLAN/IEEE wireless ethernet adapter. The
combination source and library allows for a publicly viewable PCMCIA
driver interface with a binary adapter interface library to hide the
proprietary hardware details. The driver supports the normal wireless
adapter interfaces as well as the WaveLAN/IEEE UIL interface for
advanced adapter monitoring and operations.
|
Dec 1998 |
Windows NT 3.51 Port of Serial Port Emulation
Ported a previously developed Windows NT 4.0 serial emulation driver
for ISDN to Windows NT 3.51. One source code base and installation
now supports both Windows NT 4.0 and 3.51. This was needed to support
Citrix WinFrame and older Windows NT 3.51 server installations.
|
Oct 1998 |
Windows CE Wireless Ethernet Driver
Ported a Windows NT/95 NDIS 3 network driver to Windows CE 2.0 for
MIPS and SH3 processors. Added control panel interface for modifying
adapter parameters. Completed package including the driver, control
panel, online help, and Windows NT/95 installer support.
|
Sep 1998 |
DHCP Client Discovery Protocol for Win32/Linux/VxWorks
Developed a protocol to support the discovery of DHCP clients on a
TCP/IP network. This service simplifies how a network application
can communicate with network-based clients that have received a DHCP
assigned TCP/IP address. Without this protocol, the client's network
address has to be entered by the user instead of being browsed and
selected from a list.
|
Sep 1997 |
VxWorks Embedded Motorola PPC860 Development
Developed the software for a Motorola PowerPC 860 embedded system running VxWorks. The product was the Tektronix AD007 GPIB-Ethernet Adapter to allow VXI-11 Remote Procedure Call (RPC) communication over TCP/IP to GPIB based instruments. System features included:
- Flash filesystem
- Ethernet support
- FTP server
- DHCP client
- HTTP server with web-based management
- GPIB controller support
- Win32/UNIX ONC-RPC programming interface
- VXI-11 RPC programming interface
- GPIB print capture and redirection
|
May 1997 |
Windows NT Serial Port Emulation for ISDN
Developed a Windows NT driver to present the ISDN channels as serial
ports/modems to the operating system. The driver dynamically manages
incoming/outgoing digital and analog calls, and routing of the calls
through onboard 56K modems. This allowed for both dial-in/dial-out
RAS and FAX support.
|
Feb 1997 |
Handheld PC-Compatible BIOS/Video Support
Modified Phoenix PICO BIOS to support an embedded handheld PC-compatible
with touch screen, radio modem, and flash filesystem. Integrated CGA
video graphics support and investigated rotated video support.
|
Jan 1997 |
Windows NT Ethernet Driver
Developed a Windows NT 4.0 NDIS 3/4 driver for an integrated
Ethernet/SCSI PCI adapter.
|
Oct 1996 |
Netware FDDI Driver
Developed a Novell Netware 3.x/4.x driver for a PCI based FDDI
adapter. The driver developed was both a Netware server driver as well
as an ODI Client32 driver.
|
Aug 1996 |
Accepted Position at TriplePoint
|
Jun 1994 thru Oct 1996 |
Linux Adaptec AIC7xxx SCSI
Developer/coordinator on the Adaptec AIC7xx SCSI development team. My
involvement started in the early releases of Linux-1.1 and continued
through to the Linux-2.1 version of the kernel. Since then, I have passed
on the development to another group of intrepid SCSI driver developers.
|
Aug 1991 thru Aug 1996 |
UNIX X-Windows/Motif Development
Developed X-Windows/Motif interfaces for a network based chip
tester. Designed and implemented custom Motif widgets to support
display and manipulation of the large dataset presented by an IC
tester. Developed a software build system that was used throughout
the company for consistent/repeatable product releases.
|
Jul 1993 |
Embedded Motorola 68HC11 Development
Worked on a team to develop an embedded computer that was used as a
crop-duster monitor/control interface as well as a helicopter hook
gauge monitor.
|
Apr 1988 thru Aug 1991 |
Tektronix 1180x/CSA803 Human Interface Development
Developed embedded firmware for front-panel interface components
and extended GPIB and RS232 commands to support new oscilloscope
features. Designed and implemented a network based parallel build tool
for the oscilloscope firmware.
|