------------
Expertise
Services
Company
News
Resources
------------

Tim Gardner - Principal Engineer

Background
Graduated from Montana State University in May 1983 with a BS in Computer Science and began graduate school. I moved to Oregon to work for Tektronix in April 1984, developing oscilloscope digitizer firmware and operating systems. I've had many graduate level classes at the Oregon Graduate Institute, focused on embedded platforms and networking. Extensive experience designing and implementing low-level event driven software and device drivers on a wide variety of platforms, including multi-processor and multi-threaded environments. I have excellent communication skills, the ability to come up to speed quickly on new projects, and am very familiar with embedded firmware development using current popular processors (x86, ARM, PPC).

Languages C, C++, assembler (x86, z80)
Processors x86 (real & protected), i960, i860, misc 8 bit processors, ARM, PPC
Operating Systems Windows NT, 9x, 3.1; DOS; OS/2 Warp; VxWorks; Qnx; VRTX; Unix; Linux
Programming API's Win32; WDM/NT; NDIS 5, 4, 3, 2; RAS; COM/ActiveX; WDM Audio Miniport; Linux Kernel; Native Drivers on all OS's
Protocols TCP/IP; SPX/IPX; NetBEUI; NetBIOS; ISDN; HDLC; 802.3; 802.2; 802.11b; WinSock; Sockets; ATM; Fibre Channel; Mobile IP

Project History
Jun 2019 - Aug 2019 Add Linux driver support for Nvidia GPUDirect and CUDA
Modified an existing Linux DMA driver to add support for GPUDirect. Developed test application to demonstrate performance improvements using the CUDA library and compiler.
Nov 2018 - Aug 2019 Embedded firmware for EZ-USB
Developed embedded firmware for an EZ-USB based device (8 bit ARM).
Jan 2018 - Present Development process design and support
Assisted large medical company with build and development processes. Converted from IBM ClearMake to GNU Make. Made substantial reductions in build times.
Aug 2017 - Present Linux and Windows driver development and customer support
Develop and support Linux and Windows device drivers and test applications for FPGA Multichannel DMA IP designs.
Jun 2017 - Present Embedded software developer using embOS RTOS from Segger
Primary software developer and maintainer for a distributed embedded system based on an Atmel SAMR21 SOC (Arm Cortex M0).
Feb 2007 - Apr 2017 Ubuntu kernel team technical lead for Canonical, Inc.
Hire and develop a team of kernel engineers for the support of the Ubuntu distribution kernel. Became expert with Debian packaging (GNU Makefiles) and some areas within the kernel.
Nov 2014 - Apr 2015 Linux kernel developer and foundation layer support for a medical instrumentation company.
Maintained and debugged kernel code for an AM35x SOC. Bugs solved included interrupts, time of day, and networking issues. Foundation support included Python update and recovery code.
Nov 2013 - Jan 2014 Linux kernel developer, foundation layer support, and developer environment support for an enterprise A/V company.
Maintained and debugged kernel code for a Marvel ARM SOC. Developed build environment using git, Ubuntu core, and GNU make.
Sep 2013 - May 2014 Linux kernel developer, backported CIFS from 3.19 to 3.4 on a PPC networked test and measurement instrument.
Backported the in-kernel CIFS file system driver and VFS layer in order to support the SMB 2.0 specification.
Aug 2006 - Dec 2006 JTAG debug application support for a silicon design company.
Develop and support a command line application that allows development engineers to operate a custom silicon design via JTAG. This required a thorough understanding of JTAG mechanisms and algorithms.
Mar 2006 - Aug 2006 Developed Embedded SAS/SATA Disk driver for a multimedia company.
Developed a custom disk device driver for an ARM based product running the MQX embedded kernel. This project required that SAS/SATA support be integrated into an existing Fibre channel code base. The SAS controller was an LSI 1068 PCI bus master.
Jan 2005 - Jan 2006 Continued as Development Partner at Global Net Inc.
My primary focus at Global Net for the last year has been the development and support of Atheros based 802.11abg miniPCI adapters in the Linux Netbox platform. The Atheros wireless adapter has allowed Global Net to deploy high speed back haul links based on 802.11a and 802.11g as well as mixed mode 802.11bg clients. I have also begun focusing on quality of service issues at layer 2 in advance of deploying VOIP.
Jun 2005 - Dec 2005 Developed Linux Thin Client Wireless Support
I worked for several months for a large manufacturer of thin clients for the banking industry. My job was to improve the project build environment as well as develop wireless and WPA support using the HostAP project in conjunction with xsupplicant.
Dec 2000 - Dec 2004 Development Partner at Global Net Inc.
For the previous 4 years I have been a development partner at Global Net Inc., a wireless ISP headquartered in Bozeman, MT. I have developed a native 802.11 wireless product based on Linux using an 802.11 protocol driver that I wrote. The product is known as the NetBox (or NB for short). I have developed the following for the NetBox:
Access Point or Client
The NB can be configured to be an 802.11 client, or an 802.11 Access Point and layer 2 bridge.
Router or bridge
The NB can be configured as a NAT and/or standard router. Alternatively, even the wireless client can be configured as a layer 2 bridge.
NAT
I developed a rules based engine to configure the NB as a NAT router. It supports VLAN, port filtering, bi-directional rate shaping, DHCP server, NAMED server, and a multiple dwelling unit philosophy. An MDU configuration can support multiple independent VLAN subnets.
IP Tables
The NB makes full use of Linux IPTABLES. This feature allows stateful inspection of packets. I have also developed 2 new IPTABLES filters; FUZZYP and PSDP. FUZZYP limits packet transmit rates on a per IP subnet basis using a decaying limit threshold. PSDP limits the number of TCP connections from any one IP subnet over time. PSDP and FUZZYP are used primarily to combat Denial of Service attacks from various viruses.
Embedded Linux
The NB runs on a variety of CPU architectures. To date the NB is supported on StrongARM, PPC, Elan x86, and Geode x86. Full support is included for a variety of FLASH parts (YAFFS, JFFS2, EXT2, and EXT3 file systems) as well as features unique to the platform, e.g., high resolution timers and hardware watchdog.
Turnkey Build Environment
I developed a GNU make based build environment that builds all of the supported platforms with a single make command. In essence, I developed my own Linux distribution for these cross compiled platforms.
Field Upgrade Utility
The ultimate result of the platform builds is a single utility that contains upgraded binaries for all of the supported platforms. This utility can upgrade individual files on a unit in order to bring the unit up to the current software revision. The utility is multi-threaded and can upgrade multiple units simultaneously.
User Interface
The NetBox is configured using Curses based applications. No command line interaction is required (or allowed). These applications support computer illiterate field installers as well as tier 3 network diagnostic technicians.
Diagnostics
The NB applications provide extensive diagnostics via the Curses based UI. Everything from the contents of IPTABLES rules down to the number and type of 802.11 Management packets transacted by the unit.
Hardware driver development
I developed custom Linux device drivers for Prism and Atheros PCMCIA, Compact Flash, and PCI adapters. Atheros support includes 802.1a, 802.11b, and 802.11g. The 802.11 protocol fully supports all of these PHY modes.
Non-development duties
I have acted as a field service technician installing and removing wireless units. I have also serviced and constructed radio towers. These towers consist of wireless units, back haul links, antennas, managed switches, UPS's, and are typically in remote, inaccessible locations. I have acted as the manager of operations, assisting and directing the efforts of field and support personnel. I have helped develop the software and business processes used by employees of Global Net. I have also assisted in sales and the support and development of sales programs.
Nov 2000 Linux Embedded Camera and Web Server
Worked with Rob on an embedded camera platform using uCLinux on an ARM7 (no MMU). I developed much of the kernel level stuff as well as customized the build environment. I also back ported the Compressed RAM File System (CRAMFS) driver from Linux 2.4.3 to the 2.0.38 based uCLinux in order to more efficiently utilize scarce RAM.
Nov 2000 Linux Embedded Wireless MPEG Player
Worked with Dean to develop a prototype voice recognition and wireless EMPEG player based on embedded Linux. The player would automatically update its play list as soon as it was within the wireless cell. It also responded to voice commands for play, stop, etc. Hop over to Dean's page for a different slant on the same project.
Mar 2000 Linux Wireless LAN Driver
Developed a Linux driver for the Symbol Technologies IEEE 802.11 Wireless 11Mb PCMCIA adapter.
Nov 1999 - Oct 2000 Linux Driver for Telecommunications Adapter
Developed a Linux ISDN driver to support a Brooktrout PRI/BRI family of telecommunications PCI adapters.
Sep 1999 - Dec 2000 Implemented Mobile IP Transport
Developed a custom RFC 2002 Mobile IP client transport and installation for Windows 9X, Windows NT 4.0, and Windows 2000.
May 1999 - Dec 2000 Wireless Product Support
Provided installation, development, and debug support for a wireless adapter application and driver suite for Windows 9X, Windows NT 4.0, and Windows 2000.
Jan 1999 Intermediate NDIS Driver for VPN Product
Customized the TriplePoint Wedge driver and installation for a VPN product on Windows 9X and Windows NT 4.0.
Jan 1999 Microsoft COM and ActiveX Components
Developed COM and ActiveX components for instrument communications using Visual Studio 6.0 and Active Template Library 2.0.
Sep 1998 Windows NT 4.0 Audio Driver
Developed User Mode driver and Kernel driver for PCI 4 channel audio adapter with MIDI and digital interface.
Sep 1998 Windows NT & 95 NDIS 4.0 Miniport Intermediate Driver and Installation Network Device Installer
Developed TpiWedge NDIS Miniport for Windows 95 and Windows NT. This driver binds between any NDIS protocol and any NDIS MAC driver or Miniport. By wedging between the Protocol and the MAC, this driver can filter all incoming and outgoing packets, as well as insert new packets into these streams. Developed COM interface to access the Miniport driver via an intermediate DLL. Enhanced Win 9x installation to support Plug 'N Play devices such as RAS and PCMCIA.
Mar 1998 Windows 98 NDIS 3.0 Miniport and WDM USB Driver
Developed a cooperating NDIS 4.0 Miniport and USB WDM driver to communicate over an ADSL modem.
Mar 1998 Windows NT 4.0 and Windows 95 Integration Expert
Worked as a driver integration expert on an audio/video conferencing product. Was also responsible for several kernel mode drivers and VxDs. Helped develop, support, and debug screen capture and audio drivers.
May 1998 Windows NT 4.0 Audio Driver
Developed User Mode driver and Kernel driver for ISA 2 channel audio adapter with MIDI.
May 1998 Windows 95 and Windows NT 4.0 binary compatible NDIS 4.0 Miniport.
Developed an NDIS ethernet Miniport driver for a smart encryption adapter.
Jun 1997 Microsoft Broadcast PC
Developed NDIS drivers for the Microsoft Broadcast PC initiative. The drivers supported satellite receivers over PCI and USB. Also developed replacement Broadcast Receiver Transport for direct I/O outside of the network transports. Developed MPEG disassembly/reassembly code to acquire encapsulated IP packets.
Jun 1997 Realtime QNX Driver
Developed a real-time QNX driver for a data acquisition card. The driver passed data to a processor application using shared memory for large buffers, and messages for smaller buffers.
Jan 1996 System Services Module for Trillium Q93.B ATM Protocol Stack
Developed a system services module for the Trillium ATM protocol stacks. Also provided integration support, LAN emulation debugging, and project management expertise.
Aug 1995 NDIS Driver for Fibre Channel EISA and PCI Adapter
Developed NDIS driver for a Gigabit Fibre Channel adapter family. Provided extensive performance support. Implemented IP over Fibre Channel with ARP support.
Oct 1994 Windows NT 3.51 ATM Driver
Developed a PVC ATM over IP driver for a PCI ATM adapter. The driver performed traffic shaping and IP encapsulation.
Jun 1993 Windows NT, Windows 95 NDIS Full MAC for EISA FDDI
Developed NDIS driver with full FDDI ring protocol support. Also developed dual homing support and eventually added PCI bus support. Two years later I converted this same driver from Full MAC to Miniport.
Apr 1993 NDIS 2 and NDIS 3 Drivers
Worked with a development team on a suite of adapters. During this period I developed NDIS 2 and 3 drivers for several Token Ring and Ethernet adapters.
Jun 1991 I960 Tools
Developed high speed serial interface to an i960 based firmware monitor. Used RS422 to achieve 115K Baud and higher.
Jul 1991 Embedded Firmware Printer Driver
Developed a real-time driver for a thermal printer in an oscilloscope.
Sep 1991 Embedded Firmware O/S and Support Components
Developed an operating system and support components for a consumer desktop box.
Aug 1990 TriplePoint Incorporated
Founded by Bill Campbell, Rob DeVoe, Tim Gardner, and Larry Hattery.
Nov 1988 - Aug 1990 DWB Associates Inc. Senior Consultant
Developed numerous NDIS 2 drivers. Extensive experience with DOS, Windows, and OS/2 device drivers. Two years in hell.
Aug 1987 - Oct 1988 Sequent Computer Systems
Developed embedded firmware for a system services module on a multiprocessor platform. Used VRTX as O/S, developed bulk of firmware using C++. I learned a bunch about multi-threaded, multi-processor programming.
Apr 1984 - Aug 1987 Tektronix Inc. Software Engineer II
Developed O/S and firmware for an Oscilloscope 80186 based digitizer. I worked for Lorne Bechtel who was perhaps the best manager I could have lucked upon. In retrospect, he is the best guy I've ever worked for.

Back to Company

---- What we can do for you ----
Device Drivers
NDIS Drivers
Embedded Systems
Application Programming
Training
Installation

 
© 2023 TriplePoint Inc.
Home     Expertise     Services     Company     News     Resources
TPI Drivers & Firmware
Updated: 2023-05-30