Ian McDonnell
Freelance Consulting Software Engineer
Objectives
System-on-a-Chip (SoC) based systems development.
Focusing on networking and communications related products and applications,
real-time and embedded systems, data acquisition and control systems.
Embedded Linux systems platform design and development, device drivers
and applications; ARM-Linux being a favorite.
Firmware development for SoC and 32-bit microcontroller devices,
bootstrap and specialized I/O functions.
Summary
A well-rounded pragmatic engineer with broad experience in systems development
from Supercomputers to 8-bit micros.
Deep knowledge of Unix systems, networking and Internet protocols.
Excellent understanding of operating system principles,
time-share and real-time.
Interacts and communicates very well with team members;
is cooperative and friendly; provides leadership and mentoring.
Has broad understanding of computing systems, communications and systems
architecture; electrical engineering.
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,
product development.
Takes pride in creating high-quality creative and practical solutions.
Skills
Networking and Communications: Internet client/server and systems;
LAN and WAN network protocols, access and connectivity devices;
protocol gateways, routers, switches and inter-working devices;
network appliance, test and diagnostic equipment; network security.
Real-time, high-performance and multi-threaded data processing.
Systems Engineering and Architecture:
processor, memory, buses, peripheral, choices and trade-offs.
Device drivers: PCI configuration, bridges and devices (Ethernet, SCSI,
co-processor, Fibre Channel, PLX-Bridge, etc.).
FPGA and CPLD interfaces; I2C controller/devices;
SPI controller/devices; USB Device/Host/Class; MMC/SD controllers;
NAND/NOR/Managed Flash memory; Wireless-LAN 802.11 devices;
Controller-Area-Network (CAN) controllers.
SoC and microcontroller: bootstrap, clocking/PLLs,
SDRAM configuration, pinning, GPIO, power management, memory management,
embedded peripheral and controller drivers.
Embedded Linux know-how:
system architecture; bare-metal boot; RAM and Flash-based filesystems;
kernel; run-time support libraries, Glibc and uClibc; Busybox utilities,
system start-up and persistent configuration;
applications and drivers, protocols; fast boot techniques;
system update and recovery techniques; customization, MTD, lots more.
Development system tools and methods, SCM, OSS and FLOSS development.
Microcontroller firmware development: simple RTOS and eCos applications,
bootstrap and I/O controller firmware.
Developed free standing code providing bare-metal processor/system start-up
and direct OS load from current memory/media technologies including
Dataflash, NAND, eMMC/SD/SDHC devices.
Platforms: UNIX (application and kernel), SVR4, BSD, Linux, Solaris, eCos,
POSIX, POSIX-RT and X/Open system interfaces; inter-process communication
services: streams, sockets, TLI, NLI, multi-threading, RTLinux,
SMP, shared memory, filesystems, semaphores etc.
Programming: C, C++, shell, perl, expect, Tcl/tk, lex, yacc,
etc.; various assembler ARM, PowerPC, IA32/X86.
Tools: JTAG programmers, debuggers, ARM DCC; EmbeddedICE,
Abatron BDI2000; Sniffers; Logic Analyzers, Scopes.
Development Environment: UNIX, X-Window System, VNC, KDE, Makefiles,
GNU tools and cross compilers, Binutils ld-scripts, GDB.
Code-management: RCS, CVS, Clearcase, Subversion, Git.
Methods: UML, ROSE, Octopus, Gilb/Fagan Inspection.
Contact Information
Web: http://www.aprioriamerica.com
e-mail: projects5 @ aprioriamerica.com
Phone: +1-781-354-5878
Experience
A Priori America, Inc. Winchester MA
Business Owner and Freelance Consulting Software and Systems Engineer, 1994-date
Clients and Project Highlights
Continental Electronics Corporation, Dallas TX
World-Class Radio Transmitter Equipment Manufacturer
Hybrid Digital (HD) Radio Transmitter Product Development (2008-present)
-
System comprised of OTS SBC X86 processor and a collection of
Continental Electronics-designed DSP and Digital RF boards
connected via PCI, USB and proprietary LVDS interfaces.
Participated in early hardware design review, FPGA interface design.
Produced system software architecture design.
-
Developed complete X86 embedded Linux system from boot to applications from
Compact Flash, including RAM based filesystem, start-up scripts, etc.
-
Designed and coded driver for PCI PLX9030 attached Altera FGPA
on up-converter board; drivers for two TI DSP TMS320C6415 boards,
shared-memory IPC (PCI) design and coding both X86 host and TI DSP;
drivers for two peripheral controllers attached via USB (USB class drivers);
code API interfaces for drivers.
-
Designed and coded multi-threaded HD-Radio protocol interface engine
application moving data from network to DSP requiring hard real-time
scheduling and low jitter.
-
Designed upper level control software for configuration and control.
Coded many utilities for embedded Flash chip programming, FPGA configuration,
subsystem debug, diagnostics and statistics, etc.
Participated in extensive system test and integration.
-
All work, save a few on-site visits, performed from Winchester MA
office and involved colaboration with other remote CS/EE consultants.
Bright Star Engineering, Wilmington MA
Manufacturer of SoC-based SBCs and Automotive Diagnostic Tools
Product Development (2004-present)
-
Designed and developed several generations of automotive
diagnostic tool products; many thousands of which are in use every day
around the world.
-
Responsibilities include platform and driver development for
PowerPC and ARM based GNU/Linux SBC designs, including
all aspects from hardware design reviews, prototype bring-up and bootstrap
to multi-threaded application-specific real-time protocol implementation.
Microcontroller firmware development and interface design.
-
Processors include: ARM, PowerPC and MIPS.
SoC chips: Atmel/ARM AT91SAM9200, AT91SAM9G20, AT91SAM9G45;
NXP/ARM LPC2194; Motorola/FreeScale PowerPC MPC5200 (PPC603e);
Sharp/ARM LH79524; Alchemy/MIPS AU1100, Atmel AVR.
Bare-metal bootstapping: CPU, clock/PLL, SDRAM/DDR, MMU setup,
with high-speed OS and Filesystem load directly from NOR, NAND and
eMMC/SD/SDHC cards and chips.
-
Extensive Linux kernel work, drivers, memory devices, embedded
peripheral I/O and control, RTLinux and dual OS drivers.
Developed creative software solutions for various hardware design
restrictions, SoC pinning constraints and device errata.
-
Driver, API and application development supporting a wide-range of
components and subsystems including: fast Flash-based boot mechanisms,
MTD work with NOR/NAND and Dataflash/EEPROM,
Controller-Area-Network (CAN) controllers, I2C controllers
and devices, Wireless LAN,
analog-to-digital ADC, serial comms UART,
SPI and I2C controllers and devices, GPIO, Timers/counters,
SD/MMC card storage, watchdog, Ethernet MAC and PHY MII, USB host and USB
devices, handheld LCD displays and keypads, attached microcontrollers,
real-time vehicle diagnostic protocols and electrical interfaces.
-
Wireless LAN driver ports: Conexant PCI to MPC5200 PPC and Marvell SDIO (Wi2Wi)
to AT91SAM ARM controller. Flash filesystem ports; development of YAFFS.
Developed fast-boot mechanisms, product recovery mechanisms and
booting of system images from a running system (pre-dates KEXEC).
Das U-Boot customization for boards and functional requirements.
-
eCos C++ based ARM microcontroller firmware development for several
Controller-Area-Network (CAN) Bus interface designs --
NXP (Philips) LPC2000 series.
Wireless Techniques/Tufts University, Medford MA
Research Laboratory Equipment Development (2009)
-
Put together an ARM-Linux GNU, Busybox platform running on
Atmel AT91RM9200 on an SSV DNP/9200 card and provided tools,
build environment and application samples. Developed two drivers
for communications and GPIO polling/interrupts etc.
Seranoa Networks Inc. (Start-up), Boxborough MA
Network Edge Switches Product Development (2002-2003)
-
Embedded Linux on both PowerPC and StrongARM architectures:
Motorola MPC8260 PowerQUICC-II, Intel IXP1200/StrongARM network processor.
Contributed to Switching product hardware and software design reviews.
-
Hardware bring-up and trouble shooting of IXP1200 processor,
Flash-ROM, SRAM, SDRAM, i82559 and 8260 FEC Ethernet chips.
Designed and coded IXP1200/StrongARM network processor initialization,
memory configuration, I/O and PCI configuration.
-
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 including Busybox. Added Ethernet jumbo frames support.
-
Developed ARM-Linux drivers for IXP1200, interfaced microcode-based
data-plane with Linux protocol stack.
Developed switch and forwarding information base driver.
Coded IXF1002 dual Gigabit Ethernet driver interface to microcode and PHY.
-
Protocol development:
Integrated MPLS 0.9 for Linux with 2.4 and 2.3 kernels and fixed numerous
bugs and issues. Created new socket protocol type and API
for MPLS applications.
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.
Coded SunRPC based inter-process and co-processor control services
including modified SunRPC libraries for tight control of timeouts,
retransmission and reply caching.
Zetari Inc. (Start-up), Waltham MA
Integrated Server/NAS/Switch Development (2000-2001)
-
System architecture, design and development of a high-density
integrated server, NAS and switch system.
-
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 proprietary 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).
Nokia, Burlington MA
Telecommunications Equipment Manufacturers
Internet-Access Equipment Development (1998-2000)
-
FreeBSD-based and ChorusOS operating systems and proprietary networking code;
PowerPC 603e and ATM based rack system hardware.
-
Principal designer/developer of L2TP Access Concentrator (LAC) subsystem
development, including PPPoE (RFC2516) and PPP encapsulation, session
management, L2TP tunneling and zero-copy packet switching.
ATM and Fast Ethernet data-links.
-
Implemented queuing layer for the Internet differentiated services (RFC2475)
expedited forwarding quality of service (QoS) - including
ATM, T1/E1 and Ethernet drivers and extended APIs 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.
-
Internet Protocol fast-path forwarding coding. Integrated and optimized
forwarding interface with underlying ATM datalink and routing base.
Enhanced ChorusOS networking modules to support Internet CIDR routing scheme.
-
Routing daemon port and FIB integration adding RIP, OSPF, BGP,
to distributed router. Designed and implemented route distribution components.
Integrated routing information base with distributed forwarding engine
and information base.
-
Provided mentoring and guidance to engineers working with IP,
data communications, operating system and network management components.
BBN Planet (Genuity), Cambridge MA
Internet Service Provider
Firewall Management Software Development (1997)
-
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).
Giesecke & Devrient Engineering, formerly Ektron/Kodak, Bedford MA
Manufactures of Printing Inspection Systems
Currency Inspection Systems Development (1995/6)
-
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:
inter-process communication, real-time RPC synchronization, threading,
real-time 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).
A Priori Technica, Ltd. UK
Business Owner and Freelance Consulting Software Engineer, 1992-1994
Clients and Project Highlights
House of Fraser, Information Systems, Swindon UK
UK Department Store Retailer
-
Consulted on TCP/IP X.25 migration, Internet and ISO LLC protocols,
bridging and encapsulation, network architecture and design.
Retail Logic Ltd., Camberley UK
POS and Credit Card Processing Software Developers
-
Designer and principal developer of ASPEN remote EPOS terminal
polling system for the automatic retrieval and distribution of EPOS data files.
Created for a large UK Supermarket and to poll hundreds of sites nightly.
Running on AIX/RS6000 UNIX-based platform.
Bull Information Systems, Hemel Hempsted UK
International Computer Systems Manufacturer
-
Designed and developed network and device communications subsystems
running on SUN Solaris for back-office POS data and information
processing system using TCP and LAN Link-Layer-Control protocols LLC1, LLC2.
Employers
Cray Research Inc., Bracknell UK
Manufacturers of Supercomputer Systems
Senior Software Engineer, 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 UK
Manufacturers of Mini-Computers.
Software Engineer, ULTRIX Engineering, 1987-1989
-
Designed and coded a high-performance TCP/IP network driver supporting
communications between Digital VAX and Cray supercomputers.
-
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.
Analogic Corporation, Peabody MA
Electronics Systems Manufacturer
Product and Applications Specialist,
Computing Systems Division (UK), 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 real-time data acquisition and signal processing applications.
-
Designed and developed VAX/VMS driver extensions and
Fortran API for multi-channel data acquisition system.
Software Engineer, Computing Systems Division (Wakefield MA), 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.
Field Service Engineer, Service Dept. (UK) part-time intern 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
website 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.
nly 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-2003, 2007, 2010 Ian McDonnell.
All rights reserved.
$Id: resume4.html,v 1.3 2010/02/19 23:48:12 imcd Exp imcd $