Home | Our Values | Our Services | Our Skills | Our Products | Our People | Past Projects

Michael Grischy

Software/Firmware Consultant

Michael@OctaveSW.com

(408) 371-3060

 

SUMMARY

 

Experience:  More than 25 years experience covering all aspects of software development:  helping clients define project requirements, defining application architecture, writing specifications, designing, coding, and testing software and firmware, porting software to different platforms, reviewing digital hardware designs for firmware implementation feasibility, debugging prototype hardware, and writing internal and user documentation.  I have also done work trouble-shooting complex software systems and enhancing existing products to improve performance, improve GUI usability, and reduce memory footprint size.  I am comfortable working closely with hardware and with using such tools as network analyzers, in-circuit emulators, logic analyzers, and oscilloscopes.  I am adept at quickly learning new technologies and applications.  I also have experience providing expert consultant litigation support.

 

Technologies:  Projects worked on cover a broad array of applications, technologies, tools, and platforms including:  802.11 wireless LAN (WiFi) networks and communications systems; embedded linux kernel drivers and applications; embedded real-time microprocessor systems and communications devices, with or without a real-time operating system (RTOS) such as VxWorks, AMX, or MultiTask!, running on processors such as IXP425 (ARM XScale), Power PC PPC405EP, 8051, 80186, Z8018x, and MIPS; web-based applications using Java Swing, Java Servlets, and Java RMI; network drivers and LAN and WAN protocols, such as TCP/IP and Apple’s LLAP and AppleTalk protocols; Microsoft Windows technology, including GUI applications, DLLs, services, NDIS drivers, and other device drivers for most versions of Windows, including Windows CE and Windows Mobile, developed with tools such as the WDK, WinDbg, Visual C++, MFC, eVC++, and Platform Builder; serial communications; and PCB CAD applications.

 

Languages:  C, C++, Java, Pascal, Fortran, Z80 and x86 assembler.

 

 

EXPERIENCE                       (see Consulting Projects Addendum for more details)

 

Consulting Engineer, Co-Founder                                2001 – 2010

President (since 2005)

Octave Software Group, Inc., San Jose, CA.

A software/firmware consulting firm.

 

A sampling of projects:

 

·       Assisted in porting CCXv5 features from one code base to another for an NDIS 6.20 ExtSTA 802.11 WLAN Native Wifi miniport driver for Windows 7.  (details 33)

·       Worked extensively with a suite of 802.11 wireless LAN (WiFi) control software composed of applications, services, and NDIS drivers running under Windows CE and Windows Mobile on a handheld device, including:

§  Architecting and implementing a solution to replace a proprietary 802.1x authentication supplicant with an open source based supplicant.  (details 32)

§  Re-architecting a key component of the suite to resolve chronic design problems, improve product reliability, and improve user responsiveness.  (details 31)

§  Specifying and implementing RETAIL build run-time debug logging to reduce time and effort needed to debug complex problems found during formal test.  (details 30)

§  Leading a team to re-merge parallel branches of the software suite to correct hundreds of problems introduced by a faulty merge methodology.   (details 26)

§  Leading the effort to draw up a formal high-level architecture document describing the software suite, as well as writing the bulk of the document.  (details 25)

§  Architecting and implementing support for EAP/FAST and PEAP/EAP-GTC 802.1x authentication protocols.  (details 23)

§  Re-designing the code that interfaces to the (old) 802.1x authentication supplicant to accommodate major changes that had been made to the supplicant’s API.  (details 22)

§  General trouble shooting of various complex and subtle problems in the software suite, including finding bugs in industry-standard infrastructure devices.  (details 29)

·       Modified the firmware in an 8051-based handheld device to accommodate the replacement of old CPU and LCD chips that were facing end-of-life.  (details 28)

·       As an expert consultant, performed research and wrote reports on certain aspects of IBM OS/2 installation procedures and associated BACKUP/RESTORE utilities.  (details 27)

·       Wrote glue logic and a GUI utility to allow a developer to configure the diagnostic interface of a CDMA radio in a Windows Mobile based SmartPhone product.  (details 24)

·       Designed and wrote software to marry two linux products from different parties: a standard GSM cell phone and an 802.11 wireless VoIP phone.  (details 21)

·       Helped client in extreme time crunch effort to integrate a third party's lightweight SSH Server into an existing embedded 802.11 wireless Access Point application.  (details 20)

·       Designed and coded both a sockets-based kernel-space/user-space communications driver and a packet-switching kernel driver for a linux based 802.11 Access Point.  (details 19)

·       As an expert consultant, assisted in court-mandated review of technical documentation in order to evaluate it for usability by third parties.  (details 18)

·       Re-architected and re-wrote ethernet driver firmware for a Power PC-based multi-threaded real-time embedded system running in an 802.11 wireless RF Port.  (details 17)

·       Wrote flash management API for a 186-based multi-threaded real-time embedded system. As follow-on work, diagnosed a bug in an FPGA-implemented UART.  (details 16)

·       Implemented a sockets-based client/server control protocol for an embedded ATE application, running under WinCE, for testing 802.11 wireless radio cards.  (details 15)

 

 

Consulting Engineer                                                       2001

GVO, Inc., Mountain View, CA.

A product development consulting firm.

 

 

·       Reworked existing software to create diagnostics firmware for testing a new hardware revision of an existing 80186-based 802.11 wireless LAN telephone.  (details 14)

·       Partially implemented the SIP call-setup protocol for use in an 802.11 wireless LAN telephone.  (The project was cancelled.)  (details 13)

 

 

Consulting Engineer                                                       1992 - 2001

Probitas Corporation, Mountain View, CA.

A computer engineering consulting firm.

 

A sampling of projects:

 

·       As an expert consultant, assisted with forensic work on several hard disk drives searching for evidence of illegal copies of source code.  (details 12)

·       Architected, designed, and coded portions of a multi-tiered web-based data gathering system, based on Java Applets and a multi-threaded Java Servlet.  (details 11)

·       As an expert consultant, assisted with the investigation of the possible infringement of patents covering advanced video display technology.  (details 10)

·       Designed and coded a multi-threaded Java Swing dialog-box application that uses the Java Media Framework to play WAV files of foreign language phrases.  (details 9)

·       Designed and coded a multi-threaded Java program that tests a set of Java Servlets that comprise part of a browser-based employee review application.  (details 8)

·       Redesigned and enhanced the performance of embedded real-time firmware running on an 8051-based handheld device that reports the fluorescence of algae in water.  (details 7)

·       Designed and coded networking firmware in printer-related products to utilize Probitas’ AppleTalk network stack.  Also implemented Apple’s ADSP protocol.  (details 6)

·       Designed and coded firmware to implement Apple’s LLAP network communications protocol for use in a RISC-based printer.  (details 5)

·       Ported Probitas' AppleTalk stack to run on a proprietary ARM/networking processor under the VxWorks RTOS.  (details 4)

·       Helped customer set up and configure his VxWorks environment.  Designed and coded a Windows program to update the product’s flash image in the field.  (details 3)

·       Designed and coded a Windows driver, layered over the standard serial driver, that permits user authentication transparently to standard serial comm apps.  (details 2)

·       Designed and coded an object-oriented DLL in C++ that encapsulates a set of robotic wafer-fabrication tools and the protocol used to communicate with them.  (details 1)

 

 

Software Engineer, Software Manager                         1986 - 1992

Teradyne Inc., Santa Clara, CA.

Case Technology Inc, Santa Clara, CA (bought by Teradyne).

Producers of CAE, CAD, and other software.

 

·       PCB Software Manager:  Managed group responsible for interfaces to OEMed PCB layout product, gate assignment and back-annotation software, netlist-to-schematic generation software, and software-porting to Japanese-language-based NEC-PC platform.  Also was responsible for relationships with outside third parties developing netlist-to-schematic generation software and PCB router software.

·       PCB Software Architect:  Was a key member in team responsible for overall specification, architecture, design, and implementation of PCB layout software, including PCB router interfaces, auto-placement software, DRC software, and other supporting software.  Contributed in areas of employee training and internal software development standards.

 

 

Software Engineer, Software Manager                         1982 - 1986

Vectron Graphic Systems, Inc., Santa Clara, CA.

A Producer of CAE and CAD software.

 

·       PCB Router Software Manager:  Managed team responsible for development of PCB router software.  Projects included designing and implementing several PCB routers, a database sub-system for PCB drawings, a schematic back-annotator, and a netlist capture program.  Contributed in areas of software control, software documentation, and coding standards.

 

 

PROFESSIONAL ACTIVITIES

 

Speaker at Embedded Systems Conference:  Gave a tutorial class as part of the Embedded Training Program at the Embedded Systems Conference held in San Francisco in March 2005.  The class, entitled Design Patterns for Tasks in Real-Time Systems, was designed to help developers new to embedded real-time systems learn how to break down an embedded application into a set of tasks.

 

 

PUBLICATIONS

 

“Using Design Patterns to Identify and Partition RTOS Tasks”, embedded.com (an on-line magazine associated with the Embedded Systems Conference), February 6, 2006 in three parts, co-authored with David E. Simon. The article was based on the paper written for the tutorial class given at the Embedded Systems Conference, 2005 (see above).

 

 

PROFESSIONAL ORGANIZATIONS

 

PATCA (Professional And Technical Consultants Association)

 

 

EDUCATION

 

BSEE, San Jose State University, 1984, summa cum laude.

Course work emphasized digital design.

 

 


 

CONSULTING PROJECTS ADDENDUM

 

This addendum gives additional details about selected consulting projects.

 

Octave Software Group, Inc.                                             2001 – 2010

 

·       Port CCXv5 Features to Windows 7 WLAN miniport driver:  Assisted client in porting those portions of an existing WiFi driver that implement version 5 of the Cisco Client eXtensions (CCXv5) from one code base to another with a different architecture.  The driver is an NDIS 6.20 Extensible Station (ExtSTA) 802.11 WLAN Native Wifi miniport driver for Windows 7 (win7).  Work included running CCX test cases manually and with an Azimuth test bed.  The work was performed in C using Windows tools such as the WDK (Windows Driver Kit), WinDbg, and DebugView.  (summary 33)

 

·       802.1x Authentication Supplicant Replacement:  Architected solution for replacing a proprietary third party 802.1x authentication supplicant (from Meetinghouse) with an open source based third-party supplicant (from Devicescape).  Lead small team in integrating the new supplicant into an existing suite of 802.11 WLAN control software.  Work included writing a programmatic front end to encapsulate the communications-specific and data-translation-specific attributes of the supplicant's text-based command and control interface.  Challenges included, in the face of inadequate documentation, analyzing the supplicant's source code and behavior to determine what exact commands to send to it to elicit the desired result.  Work was performed in C using Platform Builder and targeting Windows CE 6.0 and Windows Mobile 6.1.  (summary 32)

 

·       Re-architect Key State Machine:  Advocated for, designed, and implemented the re-architecting of a key state machine in a key component of a suite of 802.11 WLAN control software.  The re-architecting resolved chronic design problems - misuse of mutexes, improperly handled race conditions, proliferation of global variables, unserialized event handling, and other flaws - greatly increasing product reliability and greatly improving user-responsiveness.  (summary 31)

 

·       Dynamic Debug Logging:  Advocated for, specified, and implemented dynamically controllable run-time debug logging capability for key components of a suite of 802.11 WLAN control software.  The design allows debug logging to be enabled in RETAIL builds, greatly reducing the time and effort needed to debug complex problems found both during product formal test and in the field.  (summary 30)

 

·       Trouble Shooter for 802.11 WLAN Software Suite:  Was instrumental as a general trouble-shooter through several releases of client's suite of 802.11 WLAN control software.  Tasks of interest included: diagnosing driver code-space corruption caused by the DMA controller, finding and fixing problems with freeing allocated memory twice, and extensive analysis of wireless packet captures to identify issues in the software suite's radio driver/firmware and, on occasion, in brand-name industry-standard wireless infrastructure devices (i.e., wireless switches and access points/ports).  (summary 29)

 

·       Modify Firmware for New 8051 and LCD Chips:  Modified existing firmware in an 8051 based handheld fluorometer to support new variants of the CPU chip and LCD controller chip as the old chips went end-of-life.  Work included reviewing the new hardware design and working with the client to correct errors, checking all 8051 function register values and correcting incompatibilities, and writing firmware to emulate the old CPU chip's built in I2C controller used for writing configuration values and log information to EEPROM.  Work was performed in C using the Keil development tool chain.  (summary 28)

 

·       Expert Consultant for IBM OS/2 Installation Research:  Obtained vintage PC equipment, performed experiments, and wrote reports giving detailed analyses of various aspects of installing the IBM OS/2 operating system and of the operation of the accompanying BACKUP and RESTORE utilities.  (summary 27)

 

·       Corrective Code Re-merge:  Detected and informed client of problems introduced into client's code base due to code-merging activity that used a fundamentally flawed methodology.  Created team plan and lead the effort to re-perform the code merge correctly.  The merge encompassed two parallel branches of an entire suite of 802.11 WLAN control software (approx. 500K lines of code) and corrected hundreds of defects resulting in a stable code base on which new development could proceed.  Also wrote code-merging best practices document adopted by client.  (summary 26)

 

·       Software Architecture Documentation:  Lead effort to draw up a formal high-level architecture document describing client's entire software suite for managing 802.11 WLAN communications on a handheld Mobile Unit (MU).  Wrote 80% of the document.  Presented my portion to the development team as part of internal training.  (summary 25)

 

·       SmartPhone Radio Diagnostics Enabler:  Wrote glue logic and utility code to configure the debug interface of a CDMA radio in a Windows Mobile based SmartPhone product, including a Windows GUI utility to allow a developer to enable the radio's various diagnostic modes.  Also performed general trouble shooting of radio and telephony interface layers (RIL/TIL).  Challenges included clarifying and reconciling different interface specifications from the different groups working on the product.  The work was performed in C++, using eVC++ and Platform Builder.  (summary 24)

 

·       EAP-FAST and PEAP/EAP-GTC:  Acted as architect and technical lead working with client's software team to upgrade a suite of 802.11 wireless LAN control software to support the EAP-FAST and PEAP/EAP-GTC 802.1x authentication protocols.  Work included writing requirements documents, technical specifications, formal test plans, schedule estimates, sales force training presentations, and user documentation.  Challenges included creating a functional specification for EAP-FAST and its related PAC management requirements based on analysis of the operation of Cisco's ACS Server and Wireless Client.  The work was performed in C and C++ using eVC++ and Platform Builder and targeted both Windows CE and Windows Mobile platforms.  (summary 23)

 

·       802.1x Authentication Supplicant Upgrade:  Redesigned and reworked a portion of client's existing 802.11 WLAN control software suite to interface to a newer version of a third-party's 802.1x authentication supplicant (from Meetinghouse).  The third-party vendor changed the supplicant's architecture from one of requiring all information prior to authentication to one of requiring that its information be supplied asynchronously bit by bit, via a callback, as the authentication process proceeds.  The client's code was in the form of an NDIS protocol driver running under Windows CE 5.0 and Windows Mobile 5.0.  Challenges included diagnosing and avoiding flaws in the third-party's threading model, as well as diagnosing and correcting existing flaws in the client's code's use of mutexes.  (summary 22)

 

·       Linux GSM/802.11 VoIP Phone:  Worked with a client and a third party to “marry” their two products together into a proof-of-concept prototype:  Designed and coded multi-threaded communications “glue” software, based on linux named pipes, that allows the two parties’ software applications to communicate.  The project also required modifications to both parties’ software in order to interface to the “glue” software, including extensive work with one party’s SIP protocol stack.  The end goal was to effect a seamless transition from a 802.11 wireless VoIP phone call to a standard GSM cell phone call automatically without user intervention.  The prototype was demonstrated at the CeBIT trade show.  (summary 21)

 

·       Time Crunch Embedded SSH Server:  Helped client in extreme time crunch effort to integrate a third party's lightweight SSH Server into an existing embedded 802.11 Access Point application running on an MPC860 Power PC processor under the SuperTask RTOS and with the USNet TCP/IP stack.  Work included writing a memory allocation sub-system to support malloc and free, designing and executing formal test plans to validate operation, and writing user documentation.  The firmware was delivered on-time.  Challenges included finding and fixing bugs in the TCP/IP stack.  (summary 20)

 

·       Embedded Linux Kernel Drivers:  Designed and coded a sockets-based kernel-space/user-space communications driver and a network packet-switching driver, both for an embedded linux system running on an Intel IXP425 processor.  The packet-switching driver switches ethernet packets between the local subnet – which includes a LAN port and two 802.11 radios – and either the linux networking stack, or proprietary software running in user-space.  The packet-switching driver uses the communications driver to exchange packets with the user-space application software.  The kernel drivers are used in an Access Point device for 802.11 wireless networks.  Development was done under linux using the MonteVista toolset.  Deliverables included test scaffolding code with an extensive set of regression test cases as well as documentation on the packet-switching driver’s design and implementation for use by the engineers that inherited the firmware.  (summary 19)

 

·       Expert Consultant for Documentation Review:  Assisted in court-mandated review of technical documentation produced by a major software corporation in order to evaluate it for usability by third parties.  Wrote an expert report on both the usability and completeness of the documentation and on the corporation’s proprietary software system used for viewing and navigating through the documentation.  (summary 18)

 

·       Power PC Ethernet Driver:  Re-architected and re-wrote ethernet driver firmware used in an RF Port device for 802.11 wireless networks.  The firmware runs on an IBM PPC405EP Power-PC processor as part of a multi-threaded real-time embedded application running under the MultiTask! RTOS.  Development was performed using GNU C++ tools on Sun Solaris.  Work included configuring and controlling the processor’s EMAC (Ethernet Media Access Controller), using the processor’s MAL (Memory Access Layer) to transfer packets between the EMAC and memory, and controlling an external PHY chip via an 802.3u standard MII (Media Independent Interface) implemented in the EMAC.  To simplify any future porting effort, the object-oriented driver design is partitioned into hardware-dependent and hardware-independent objects, with an interface between the two parts that is enforced using an abstract base class.  Work also included testing link auto-negotiation and driver throughput with SmartBits test equipment.  Deliverables included training material for the engineers that inherited the firmware.  Challenges included:  writing work-around code to detect whether the PHY chip had “crashed” due to electrostatic discharge and to reset it if it had; and controlling the PHY chip in such a way that its link state would survive across an intentional reset of the processor.  (summary 17)

 

·       802.11 WLAN Radio Configuration Application:  Helped in a client’s time-crunch bug-fixing effort for an 802.11 Wireless LAN mobile unit configuration and control program, developed using VC++ and MFC, that runs on Windows 98, ME, 2K, XP and on Windows CE.  Tasks included adding multi-threaded capability for IP address acquisition, finding and fixing subtle memory leaks and memory corruption bugs, and making enhancements and bug fixes to the graphic user interface.

 

·       Trouble-Shooter for 802.11 WLAN Software Suite (previous version):  Was instrumental as a general trouble-shooter through two release cycles of a suite of software that runs on standard and proprietary hardware platforms running Windows XP, 2K, CE 4.1, CE 4.2, PocketPC 2002, and PocketPC 2003.  The software suite is used for configuring and controlling an 802.11 wireless network stack running on a mobile unit and is comprised of a complex scheme of layered software that includes radio card firmware, an NDIS driver, network stack drivers, middleware, and a GUI application.  Tasks included:  debugging memory leaks, MFC bugs, and networking bugs all found in Microsoft’s CE operating system; debugging system timer and performance problems in a third party’s custom CE implementation; debugging subtle problems in the interaction between the mobile unit and various 802.11 Access Points and RF Ports; programmatically interfacing to Microsoft’s Wireless Zero Config functionality in order to use Microsoft supplicants for various 802.1x authentication schemes, such as EAP/TLS, PEAP, WPA-PSK, and WPA-PEAP; and specifying and implementing test utilities for use in automating the testing effort.

 

·       Flash Management API and UART Debugging for Embedded System:  Wrote a "flash management" task that runs under the KADAC AMX RTOS in an AM186ER-based multi-threaded real-time embedded system for a proprietary biomedical device.  The task serializes accesses to system flash by other tasks so as to protect the flash during write and erase operations.  The task also provides a generalized API that maps independently-erasable sectors in the flash to "pages" that can be grouped together and used for a single purpose by higher layer code.  Also wrote higher layer code that uses the flash API to store and manage calibration parameters and system log data.  Follow-on work included troubleshooting an intermittent RS-232 communications failure between a host PC and the device.  Diagnosed a bug in the device's UART – implemented in FPGA logic – which would occasionally miss the first bit of the first character transmitted to it after the RX line had been idle.  Devised a workaround that required no changes to the device or its firmware, thereby avoiding FDA re-certification.  (summary 16)

 

·       802.11 Radio Test System:  Worked on many aspects of an automated test equipment (ATE) system used for testing 802.11 wireless LAN radio cards.  The system is composed of a “Host” running Windows 2000 Server and a PC104-based radio test “Fixture” running Windows CE.  Initially implemented a sockets-based client/server protocol over TCP/IP in an embedded multi-threaded real-time VxWorks environment for Host-Fixture communications.  Follow-on work included porting the Fixture code to Windows CE, configuring the Windows CE kernel to support additional features such as multiple ethernet cards, reworking the Host and Fixture code architecture using object oriented design techniques so that multiple radio types could be supported with a minimum of code changes, improving the performance of the Host-Fixture communications by a factor of 10 or more, adding support for interfacing to a bar code scanner and a controllable power supply, simplifying the system startup process by using industry-standard protocols such as DHCP, FTP, and DNS, and reworking existing internal documentation to accurately reflect system design, setup, and operation.  (summary 15)

 

 

GVO, Inc.                                                                            2001

 

·       802.11 Wireless Phone Diagnostics:  Combined and reworked existing software to create diagnostics firmware for testing a new hardware revision of an existing 802.11 wireless LAN telephone.  The firmware runs on a 186-based processor without a real-time kernel.  The program presents a menu-driven user interface, via the phone’s keypad and LCD display, through which the user can invoke commands to exercise various portions of the hardware.  Modified various device drivers to conform to the new hardware design.  (summary 14)

 

·       SIP Protocol for 802.11 Wireless Phones:  Implemented the SIP call-setup protocol for use in an 802.11 wireless LAN telephone system integrated with a local PBX.  The project entailed modifying existing telephone firmware by removing the existing H.323 protocol code and replacing it with SIP code.  Challenges included interpreting the sketchy SIP RFC and inventing a SIP URL scheme that would be compatible with a SIP ethernet-LAN-to-PBX Gateway supplied by a third vendor.  (This project was left unfinished because customer demand for the product declined.)  (summary 13)

 

 

Probitas Corporation                                                         1992 - 2001

 

·       Expert Consultant for Infringement of Intellectual Property:  Assisted with an investigation into the possible infringement of a client’s intellectual property rights by a competitor.  Carried out forensic work on several of the competitor’s hard disk drives searching for evidence of illegal copies of source code belonging to the client.  (summary 12)

 

·       Web-Based Configuration for Call Distribution Center:  Architected, designed, and coded the intermediate and front-end portions of a multi-tiered web-based system for configuring, monitoring, and controlling a remote Call Distribution Center data-gathering application.  The system provides a browser-based user interface that allows multiple users to simultaneously access the data-gathering application via an intermediate web server.  The web server serves up HTML and Java applets, and runs a multi-threaded servlet that provides an API to the data-gathering application running on a remote machine.  The browser-based UI is comprised of a suite of tightly coupled applets, running in multiple frames, that communicate with each other and with the servlet.  The remote data-gathering application provides an RMI-based command interface accessed by the servlet.  (summary 11)

 

·       Expert Consultant for Video Patent Infringement:  Assisted with the investigation of the possible infringement of patents covering advanced video display technology.  Work included evaluating the patent claims, reviewing schematics and other technical documentation, and reviewing depositions.  (summary 10)

 

·       Java Foreign Language Phrase Player:  Designed and coded a multi-threaded Java Swing application that uses the Java Media Framework to play WAV files.  The program, designed to play a series of foreign language phrases, presents a dialog-box-like user interface that allows the user to control various aspects of how the phrases are played.  (summary 9)

 

·       Servlet Test Application:  Designed and coded a Java program that tests a set of Java Servlets that provide the user interface for a browser-based employee review application.  The test program, written in Java, provides the capability to simulate multiple simultaneous users through the use of multiple threads.  (summary 8)

 

·       Embedded Fluorometer:  Redesigned and coded an existing embedded real-time program that periodically samples the fluorescence of algae in water and then calculates and reports algae concentration values.  The firmware, written in C using the Keil IDE, runs on an 8051 processor without a real-time kernel in a power-conscious environment.  My work included enhancing the firmware’s performance, allowing it to meet its target design criteria.  (summary 7)

 

·       AppleTalk Network Protocols:  Worked extensively with Probitas’ AppleTalk network protocol stack on many embedded multi-threaded real-time projects.  These projects entailed designing and implementing firmware for various printer-related z8018x-based AppleTalk network communications products, including one in which I designed and coded firmware to implement Apple’s ADSP network communications protocol.  All of these projects included helping the customer debug prototype hardware.  (summary 6)

 

·       LLAP Network Protocol for RISC-Based Printer:  Designed and coded firmware to implement Apple’s LLAP network communications protocol for use in a RISC-based printer.  LLAP is the lowest level in Apple’s LocalTalk networking protocol specification and is the data-link access protocol used to control access to the physical network wire.  Thoroughly tested the implementation on the hardware to ensure that the timing requirements of the protocol were met.  Challenges included analyzing and mastering the subtle behaviors of the Zilog 8530 serial communications controller (SCC) which communicates with other network nodes using the SDLC protocol over an RS-422 high-speed serial connection.  (summary 5)

 

·       AppleTalk Port to ARM/VxWorks:  Ported Probitas' AppleTalk stack to run on a proprietary ARM/networking processor using the VxWorks RTOS and the Tornado tools.  Interfaced the bottom of the stack to VxWorks' MUX layer. Confirmed operation on the customer’s hardware.  (summary 4)

 

·       LocalTalk Packet Transfer Protocol:  Designed and coded firmware that receives and transmits LocalTalk network frames, using Probitas' LLAP driver, and transfers the frames to and from a separate host system via a PCI bridge.  The firmware runs on a Z80185 processor and uses the MultiTask! RTOS.  Designed the protocol used to exchange commands and data across the PCI bridge.

 

·       VxWorks-Based Field Update Firmware:  Helped a customer to set up and configure his VxWorks environment for developing a custom x-ray imaging system.  This included finding and reporting bugs in a BSP written by a third party.  Also designed and coded a Windows program that allows a field technician to download either configuration data or a firmware update and write it into the system’s flash.  Designed the serial communications protocol used for downloading.  Designed the Windows program's user interface for ease of use and fool-proof operation.  (summary 3)

 

·       Windows Device Drivers for User Authentication:  Designed and coded three versions of a custom device driver – one each for Windows 95, NT, and CE – that layers itself on top of the standard Windows Serial Port Driver.  The purpose of the driver is to monitor, capture, and insert data into the RS-232 serial data stream flowing between a remote host and a local standard communications application in a way transparent to the standard communications application.  The driver is controlled by a custom monitoring application running on the local machine whose purpose is to perform user authentication with the remote host.  Challenges included thoroughly analyzing the rich feature set and capabilities of the Windows Serial Port Driver so that the custom driver could precisely mimic it in order to remain transparent to the standard communications application.  As part of this project, also ported to Windows CE several MFC Visual C++ Windows applications, including the monitoring application already mentioned.  (summary 2)

 

·       Object-Oriented Robotic Control System:  Designed and coded a Windows DLL that was used by application software to communicate with and control a suite of robotic wafer-fabrication tools.  The DLL, written in C++, encapsulates the tools and the protocol used to communicate with them.  (summary 1)

 

·       DOS Radio-Spot Capture:  Redesigned and coded an existing DOS-based “radio-spot” capture program written in Pascal that captures data from an audio card and writes it to disk for later distribution to radio stations.  Reworked the program’s GUI to improve its usability, upgraded it to create .WAV files, and fixed Y2K problems.

 

·       Serial Communications Monitor:  Designed and coded various parts of an embedded application that monitors and controls serial communication between hosts and modems through a bank of 8530 USARTs.  The application incorporates a real-time kernel running on an 80186 processor.  Wrote boot-up and initialization code for the 80186 and for the 8530s.  Brought firmware up on prototype hardware and completed debugging and testing.

 

·       Network Protocol Interpreters:  Designed and coded protocol interpreters for EGP (Exterior Gateway Protocol routing protocol), IS-IS (Intermediate System to Intermediate System routing exchange protocol), NFS (Sun’s Network File System), RPCBind (Sun’s Remote Procedure Call Bind protocol), and others.  Upgraded an existing protocol interpreter suite for Banyan VINES (Virtual Integrated NEtwork Services) to interpret VINES version 5.5.  These interpreters all run within the framework of an existing DOS-based network analyzer tool, translating data captured from a local area network into human-readable form.

back to top

 

Home | Our Values | Our Services | Our Skills | Our Products | Our People | Past Projects

Last updated June 2010