Ian McDonnell
Consulting Software Engineer
Objectives
Software and system design, development and analysis with a focus on networking
and communications related applications, realtime and embedded systems,
data acquisition and control systems. Specialized work with UNIX and Internet
networking including protocol, server and interworking unit development,
system bring-up, performance and resource tuning. Real-time and Object
Oriented design, development and systems integration.
Embedded Linux systems and design.
SoC based board and subsystem design.
Summary
A well-rounded pragmatic engineer with broad experience in systems development
from Cray supercomputers to 8-bit micros.
Deep knowledge of Unix systems, networking and Internet protocols.
Excellent understanding of operating system principles,
time-share and realtime.
Interacts and communicates very well with team members;
is cooperative and friendly; provides leadership and mentoring.
Has broad understanding of computing systems, communications and architecture;
reads hardware schematics and works well alongside hardware engineers
and other disciplines.
Strong system analysis, problem-solving and debugging skills;
sees the big-picture and the critical detail.
Has excellent written and verbal communication abilities and
is well-versed in software development processes, tools and techniques.
Takes pride in creating high-quality practical solutions.
Skills
Applications/technologies: Internet client/server and systems;
LAN and WAN network protocols, applications, access and connectivity;
protocol gateways, routers, switches and interworking devices;
network appliance, test equipment; network security.
Device drivers: PCI configuration; IDE, SCSI, Fast/Gigabit Ethernet,
FPGA, CPLD, Co-processor, Fibre Channel.
SoC peripherals, microcontrollers.
Embedded systems; UNIX daemon, kernel and driver code, BSD, Linux.
Real-time, high-performance and multi-threaded data processing.
Internet applications, protocols and server implementation experience
with: SLIP, PPP, SMTP, MIME, FTP, Telnet, RPC, NQS, NFS, SOCKS4, Kerberos,
L2TP, PPPoE, CGI, HTML, TCP, UDP and IPv4, IPv6, routing protocols, RIP, OSPF,
BGP, QoS, MPLS.
Datalink technologies: RS232, V.24/V.28/V.35, Modems, HDLC, LLC/MAC,
X.25, Ethernet (10/100,1G), ATM, SONET, DSL, high-speed proprietary interfaces,
SPI, i2c, CAN.
Platforms: UNIX (application and kernel), SVR4, BSD, Linux, Solaris,
SunOS, UNICOS, HP-UX, AIX, IRIX, VMS, Windows/NT, ChorusOS, pSos, VxWorks, eCos.
POSIX and X/Open system interfaces; interprocess communication
services: streams, sockets, TLI, NLI, multi-threading, RTLinux,
SMP, shared memory, file systems, semaphores etc.
Programming: C, C++, shell, perl, expect, Tcl/tk, lex, yacc,
etc., various assembler & microcode, Intel x86, PowerPC, ARM, XScale,
PCI, PCMCIA, CardBus, i2c, Flash, EEPROM, MicroWire, 64-bit systems,
32-bit SoC and microcontrollers.
Tools/Environment: UNIX, X-Window System, VNC, KDE, make,
GNU tools and cross compilers, Binutils, ld-scripts,
GDB (local/remote), DDD, RCS, CVS, Clearcase, Purify, UML, ROSE, Octopus,
Gilb/Fagan Inspection,
Xray, ICE, Sniffers, HP/Tek Analyzers/Scopes,
ARM Metrowerks IDE, EmbeddedICE, BDI2000 JTAG.
Contact Information
Web: http://www.aprioriamerica.com
e-mail: projects3 @ aprioriamerica.com
Phone: +1-781-354-5878
Experience
A Priori America, Inc.
Winchester, Massachusetts.
Freelance Consulting Software and Systems Engineer, 1994 - date
Bright Star Engineering Inc.,
Woburn, MA 2/2004 - 3/2007
Bright Star is a manufacturer of small form factor
single board computers and platforms.
Responsibilites included platform and driver development for
PowerPC and ARM based GNU/Linux SBC designs,
all aspects from hardware bring-up,
bootstrap to multi-threaded application-specific realtime protocol
implementation.
Vehicle diagnostic tool development incorporating
SBC board design and main i/o board development,
incorporating wireless LAN, signal multplexers,
PIC microcontroller, LCD, Keypad,
realtime vehicle control, diagnostic protocols and
electrical interfaces - over 5000 units shipped,
see DCC Tools.
- Development from scratch of Flash-based GNU/Linux SBC platforms.
- Processor architectures: ARM7, ARM9, XScale, PPC603e, MIPS.
- System-on-Chip (SoC): embedded Linux using Atmel AT91SAM9260,
Philips LH79524, FreeScale MPC5200, AMD Alchemy AU1100 chips.
- Configured and build GNU GCC cross-compiler tool chain for target
architectures.
- Developed source code management framework, make system and
cross-compiling environment.
- Designed and wrote device drivers for:
NAND filesystems, Controller Area Network (CAN) interfaces,
serial peripheral interface (SPI) controllers and attached devices,
LCD displays (interface with linux framebuffer),
CPLD devices, analog-to-digital (ADC) converters,
timers, RTC, I2C controllers and devices, SoC GPIO, SD/MMC card storage,
watchdog, realtime timestamped serial comms, ethernet MAC and PHY MII,
USB host and USB devices.
- Integrated both Conexant (PCI) and Marvell (compact-flash, SDIO)
802.11 Wireless chipsets and the vendor-provided drivers with various
SoC bus, interrupt, and GPIO architectures.
Wrote the low-level I/O layers providing the data transfer and
interrupt handling primitives underpinning the vendor-provided drivers.
Integrated with Linux Wireless Extensions and WPA supplicant.
- Linux memory technology devices (MTD) including JFFS2 and YAFFS NAND
filesystems (small and large page devices), chip mapping drivers,
developed flash labeling, partitioning and management utilities.
- RTLinux (FSMLabs) integration with Linux host,
RTL driver and RTL application development.
Developed a dual RTLinux and Linux driver/device architecture to support
shared access to devices and common hardware interfaces.
- Developed fast Flash-based boot mechanisms: under 3 seconds with kernel,
full GNU glibc runtime environment all loaded (SDRAM) with
root filesystem and busybox.
- Product recovery: secondary, smaller footprint system, with high levels
of functionality for network-based software reinstallation and in-field
recovery.
- Product firmware upgrade mechanisms: web push, CLI etc.
- User-space: system start-up procedures and scripts, multithreaded
(pthreads) application development, driver/application API, daemons.
- Use of JTAG, Abatron BDI2000 and ARM EmbeddedICE tools for low-level
debugging, initial program loading, board bring-up etc.
- Hardware design review, bus and peripheral attachment, interrupt
routing and hardware/software trade-off.
- Hardware verification, diagnostics and manufacturing test software
design and coding.
- Bare-metal bootstrap development: including CPU, clock, bus,
SoC pinning configuration, NAND boot and product recovery mechanism.
- Das U-Boot bootstrap: added support for processor and board
specific hardware initialization (SDRAM, bus, clocks etc),
additional commands, warm-start variables and watchdog recovery.
- Warm booting of OS and filesystem images from a running system;
integrated with web-push to boot upgrade images without requiring
any changes to persistent storage/flash; providing rollback on
upgrade failure.
- eCos C++ based LPC2194 microcontroller firmware development for a
CAN bus multiplexer switch, less than 16kB SRAM footprint.
- Designed and implemented a CAN based firmware update
protocol and utility for in-circuit-programming of the
LPC2194 microcontroller.
Seranoa Networks Inc.,
Boxborough, MA 1/2002 - 9/2003
Network Switch Development - Embedded Linux on both PowerPC and StrongARM architectures:
Motorola MPC8260 PowerQUICC-II, Intel IXP1200/StrongARM network processor,
Flash, Ethernet, PCI, C, C++, ARM assembler, GNU tools, CVS, Bugzilla, KDE.
- Contributed to Switching product hardware and software design reviews.
- Evaluated both MontaVista and BlueCat Linux distributions for embedded
Linux on StrongARM.
- Firmware Development:
- Configured and built GCC and binutils for big-endian StrongARM development.
- Designed and coded IXP1200/StrongARM network processor initialization,
memory configuration, I/O and PCI configuration.
-
Hardware bring-up and trouble shooting of IXP1200 processor,
Flash-ROM, SRAM, SDRAM, i82559 and 8260 FEC Ethernet chips.
- StrongARM TFTP bootloader development.
Coded Flash-ROM programming and update utility.
Integrated bootloader with Linux OS.
Built and modified newlib C library for big-endian ARM,
modified i82559 Ethernet firmware driver to operate with IXP1200 PCI.
- Embedded Linux:
- Merged code from three Linux kernel versions (2.5, 2.4, 2.3)
to produce an operational big-endian IXP1200 StrongARM kernel for
Intel's IXP12EB and Seranoa's WANport boards.
- Built, integrated and trimmed system shared libraries for small-footprint
embedded use.
- Configured, built, fixed and modified Busybox (embedded Linux commands)
for use on big-endian StrongARM.
- Developed system boot and initialization scripts for
embedded Linux on both PPC and StrongARM processors.
- Linux driver development:
- Developed drivers for IXP1200 - interfaced microcode-based
data-plane with Linux protocol stack.
Developed switch and forwarding information base driver.
.
- Coded initialization and link-state management for
IXF1002 dual Gigabit Ethernet driver and wrote link-state monitor application.
- Enhanced Linux MPC8260 FEC Ethernet driver -
added support for Broadcom BCM5221 PHY, media mode tracking,
auto-negotiate/manual PHY control and fixed cache coherency issues.
- Enhanced both MPC8260 FEC and i82559 Ethernet drivers to support
jumbo Ethernet frames.
- Wrote co-processor and GBIC control PLD driver.
- Protocol development:
- Integrated MPLS 0.9 for Linux with 2.4 and 2.3 kernels, fixed bugs.
Created a new Linux socket protocol type for user-space MPLS applications.
Created MPLS client API.
- Designed and coded a custom ARP resolver daemon providing
next-hop address tracking for Gigabit Ethernet channels and IXP1200
microcode forwarding engines.
- Designed and implemented custom inter-processor bridging and tunneling
kernel modules for Ethernet, Frame Relay and MPLS traffic.
- Coded kernel module to forward ISIS protocol PDUs between
WAN and LAN ports.
Extended Linux Ethernet LLC to support jumbo frame encapsulation.
- System Integration:
- Coded SunRPC based interprocess and co-processor control services
including modified SunRPC libraries for tight control of timeouts,
retransmission and reply caching.
- Developed several system control, device,
and protocol trace, system test and debug utilities.
Zetari Inc., Waltham, MA 5/2000 - 9/2001
System architecture, design and development of a high-density
integrated server, NAS and switch system (NetBSD, SA-110, 21285, EBSA-285,
Flash, SCSI, Fibre Channel, Ethernet, PCI configuration, C, C++).
- Member of a core team defining overall system design and architecture,
including: processors, connectivity, peripherals etc.
- Contributed to the selection of operating systems, hardware/software
trade-offs, peripheral silicon and driver selection for both StrongARM
and IA32 x86 processor elements; Ethernet, SCSI and Fibre Channel peripherals.
- Ported NetBSD/arm32 to proprietory StrongARM-based control processor,
including: hardware bring-up, SA-110 Footbridge 21285 programming, Flash-based
board and PCI device initialization and bootstrap coding.
- Modified and supported NetBSD/arm32 as a platform for system control
and network management components: PCI drivers, VM configuration, I/O mapping,
bootstrap, added support for 82371 ISA/IDE/USB and PCI-based IPC to attached
co-processor.
- Developed abstract, object-oriented, UML models for network attached
storage (NAS) subsystem. Produced designs mapping existing NAS technology
to an abstract model with simplified use and management cases.
- Supported hardware bring-up of NAS subsystem including: BIOS selection,
BIOS vendor relations/specification, NFSv3, PCI-bus/device configuration,
Fibre Channel, SCSI, RAID, and Ethernet device firmware Flash
and EEPROM programming (MicroWire programming utility development).
- Worked with hardware engineers to bring-up Linux, FreeBSD and Windows
2000 on custom 815e Pentium boards.
Built custom OS versions; maintained OS source repositories,
bug-fixes and version control.
Modified Linux LILO to support unattended reset, reboot, OS
and disk partition selection as signaled by a control processor.
- Participated in InfiniBand channel adaptor chip selection and
InfiniBand/Ethernet
switching platform architecture. Examined InfiniBand specifications and
developed product functional, architectural and design specifications.
Nokia,
Burlington, MA 2/1998 - 5/2000
Internet-access product development. FreeBSD-based
operating system and
ChorusOS
(realtime micro-kernel Posix/UNIX); FreeBSD
and proprietary networking code;
custom hardware; (L2TP, PPPoE, IP, RIP, OSPF, PPP, Diffserv, ATM, STM-1,
OC-3 V.35, T1, E1, xDSL, PowerPC, BSD, C, C++).
- Principal designer/developer of L2TP Access Concentrator (LAC) subsystem
development, including PPPoE (RFC2516) and PPP encapsulation, PPPoE session
management, L2TP (IETF-draft) tunneling and zero-copy packet switching.
ATM and Fast Ethernet data-links.
- Implemented queuing layer for the Internet differentiated services (RFC2475)
expedited forwarding (diffserv-phb-ef draft) quality of service (QoS).
Modified ATM, T1/E1 and Fast Ethernet drivers and extended the data-link/driver API to support multiple output queues.
- ATM device driver performance analysis and subsequent optimization -
re-design and coding of I/O path for Rockwell/Conexant Bt8233 ATM SAR device.
Achieved line-speed packet (cell) rates with small-sized packets.
Designed and developed an ATM test and evaluation tool used for
ATM hardware verification and to measure and tune ATM driver
and system performance and efficiency.
- Coded Internet Protocol fast-path forwarding. Integrated and optimized
forwarding interface with underlying ATM datalink and routing base.
Enhanced ChorusOS networking modules to support Internet CIDR routing scheme.
- Built and configured Linux-based boot facility
for diskless line-card bootstrap and configuration.
- Ported Internet routing daemon and protocols, including RIP, OSPF, BGP,
to distributed router. Designed and implemented route distribution components.
Integrated routing information base with distributed forwarding engine
and information base.
- Reviewed design and implementation of Layer-3 Cross-Connect, PPP datalink,
and DHCP subsystems.
Provided mentoring and guidance to engineers working with IP, data communications,
operating system and network management components.
BBN, Cambridge, MA (now Genuity)
6/97
- Technical lead for a large-scale firewall monitoring system over Internet
wide-area communications, Kerberos authentication/encryption and proprietary
firewall management components (C, C++, Perl, Kerberos, SOCKS4, TCP/IP,
UNIX, Solaris, BSDi).
Mentor Graphics, Billerica, MA 5/97
- Consulted on set-up and management in remote office of network workstations
and configuration for Solaris NIS+, DNS and SMTP, LAN/WAN frame-relay,
T1, and router. Produced PPP dial-up and network routing management tool.
Unimax Systems Corporation,
Minneapolis, MN 4/96 - 4/97
- Designed and developed a secure on-line product
licensing system and tools incorporating MD5 digest and MIME running on Linux,
and created a Web-based product license service with Perl HTML/CGI programs.
- Analyzed software components for a telephone switch management product
to identify areas critical to performance and reliability,
reported recommendations and priorities (C, C++, Windows/NT/95).
- Created a modem diagnostic tool with GUI for use on Windows/NT/95 systems
to aid field support of dial-up and dialed modems used with polling and
management of telephone switches.
- Designed and developed an Internet Telnet gateway providing network
access to remote telephone switches over a mix of dial-up
and network connections.
- Architect and consultant developing a Windows32 agent to poll remote
telephony devices and retrieve and distribute alarm messages to Internet-based
management stations.
Giesecke & Devrient Engineering, formerly Ektron/Kodak, Bedford,
MA 11/95 - 4/96
- Conducted performance and benchmark measurements and analysis to locate
and measure areas critical to data acquisition and image processing performance
(C, RPC, NFS, X11, UNIX, Solaris, SunOS).
- Consulted on various aspects of distributed processing including: interprocess
communication, realtime RPC synchronization, threading, realtime X11
window client communications and developed control programs for a multi-computer
currency print inspection system, running on SunOS, Solaris, pSOS and proprietary
systems. (C, RPC, NFS, X11, UNIX, Solaris, SunOS).
Sun MicroSystems/Morgan Stanley, Chelmsford, MA 10/95
- 11/95
- Analyzed disk drive, filesystem and NFS/AFS network performance for
a large installation of Solaris and AIX workstations and servers. Contributed
data, findings and recommendations to a report. Presented and explained
significant results with end-user management and system administrators
(NFS, AFS, UNIX, Solaris, AIX).
A Priori Technica, Ltd. England.
Freelance Consulting Software Engineer, 1992 - 1994
House of Fraser, Information Systems, Swindon, UK
- Consulted on TCP/IP X.25 migration, Internet and ISO LLC protocols,
bridging and encapsulation, network architecture and design.
Retail Logic Ltd., Camberley, UK
- Designer and principal developer of
ASPEN
an AIX/RS6000 UNIX-based remote EPOS terminal polling system for the automatic
retrieval and distribution of EPOS data files. Created for a large UK retailer
and used to poll hundreds of sites nightly.
Bull Information Systems, Hemel Hempsted, UK
- Designer and developer of network and device communications subsystems
running on UNIX for back-office POS data and information processing system
using TCP, LLC1, LLC2 on Solaris.
Retail Logic Ltd., Camberley, UK
- Network software component design and implementation for SOLVE/SE,
an electronic funds transfer (EFT) and authorization concentrator and routing
system.
AEG/MODCOMP, Wokingham, UK
- Interface design for 4GL database to X400 MTA gateway.
Cray Research Inc., Bracknell,
England.
Senior Software Development Analyst, Networking Group, 1989 - 1992
-
Designed and developed a new generation of file transfer services (FTA)
for Cray supercomputers and networked workstation systems running UNIX.
Supporting Internet FTP, ISO FTAM and additional proprietary protocols.
-
Originated ideas and designs for network authentication and authorization
schemes for secure network file access and transfer.
-
Led the development of a distributed (client/server) user interface for
the Cray supercomputer NQS batch system. Implemented portable NQS protocol
modules for use in Cray's networked queuing environment (NQE).
-
Presented technical seminars and product information to customers, user
groups and corporate management.
-
Liaised with customer analysts to identify and define user requirements.
-
Practiced Gilb quality assurance and project management techniques for
software development cycles.
-
Participated in IEEE POSIX and International Standards Organization meetings.
-
Speaker at Cray annual Technical Symposium in recognition of new technology
contributions to the company.
Digital Equipment Corporation, Reading, England.
Software Engineer, ULTRIX Engineering, 1987 - 1989
-
Designed and coded a high-performance TCP/IP network driver supporting
communications between Digital VAX and Cray supercomputers.
-
Created a network tunneling interface for ULTRIX and a DECnet tunneling
application which was used to provide connectivity to remote IP islands
over the corporate DECnet WAN.
-
Specified and developed the installation and verification tools for TCP/IP
and DECnet networked products. Managed the testing and certification projects
for an electronic mail gateway product. Coordinated product certification,
field-test and product release activities.
-
Represented Digital in the X/Open working group for the verification of
systems.
-
Trained customer service and product support personnel in product usage,
theory of operation, and problem diagnosis.
-
System-managed development group VAX/ULTRIX VAX/VMS and workstation systems.
Analogic Ltd., Bracknell, England.
Product and Applications Specialist, Computing Systems Division, 1985
- 1987
-
Designed and coded the microcode routines for the low-level control of
an array processor.
-
Produced and presented customer technical training courses.
-
Developed array processor I/O channel driver and system software for state-of-the-art
realtime data acquisition and signal processing applications.
-
Designed and developed VAX/VMS driver extensions and Fortran API for multi-channel
data acquisition system.
Analogic Corporation, Massachusetts,
USA.
Programmer, Computing Systems Division, 1983 - 1985
-
Developed hardware diagnostics for an AMD bit-slice pipelined arithmetic
processor with MC68000 CPU and I/O elements in a high-performance array
processor system.
-
Worked with hardware development and manufacturing teams to trouble-shoot
system prototypes and manufacturing problems.
-
Produced and presented customer training classes in hardware failure diagnosis
and trouble-shooting.
-
Ported software development tools, written in C, from VAX/VMS to an embedded
MC68000 based system.
-
Developed an HP-UX file server to support file access from an attached
diskless processor.
-
Designed and implemented a high-speed I/O port driver and application program
library interface for a pipelined arithmetic processor.
Analogic Ltd., Weybridge, England.
Electronics Field Service Engineer, Service Department, part-time 1979
- 1983
-
Repaired data acquisition and industrial control and measurement systems.
-
Built module and device test equipment.
-
Produced demonstration software for product exhibitions (Fortran, Array
Processor, RSX-11, PDP-11).
Education
University of Kent at Canterbury,
Kent, England.
B.Sc. Computer Science with honors. Graduated in 1983
Undergraduate Computer Science, Faculty of Natural Science, 1980 - 1983.
Special interest in operating systems and communications. 3rd year
projects: Intel iAPX432 processor simulator and Rugby time server for Cambridge
token-ring network and BSD 4.1 UNIX. Treasurer, engineer and presenter
at the University radio station.
Acceptable Use Policy
Browsing (reading) this work via the www.aprioriamerica.com,
or www.scguild.com websites is permitted.
Retrieval of this work for the purposes of indexing with
links is permitted.
Copying and/or publishing of this work or any derived
work (including a summary résumé) is not permitted.
Only when explicitly authorized by the copyright owner
may this work be submitted to a potential client or employer by an agent
or other third party.
Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2007 Ian McDonnell.
All rights reserved.
$Id: resume3.html,v 1.2 2007/02/28 04:30:22 imcd Exp imcd $