Gary L. Jennejohn Telephone: +49 (0)8092 850 591 Cell phone: +49 (0)176 782 591 69 E-Mail: gljennjohn@googlemail.com Citizenship: USA Education: Bachelor of Science in Nuclear Engineering - Rensselaer Polytechnic Institute in Troy, NY Bachelor of Science in Electric Power Engineering - Rensselaer Polytechnic Institute in Troy, NY I have an unlimited work and residence permit for Germany. History: After buying my first computer in 1978 (a Processor Technology SOL-20), I started developing CP/M BIOSes to drive new hardware which I had bought. This was done in 8080 assembler. This resulted in my developing a CP/M BIOS for a company in Walnut Creek, CA in 8086 assembler. This then led to my getting my first job as a UNIX Software Engineer with UniSoft Corp. in Berkeley, CA in 1984. After working for various companies as a UNIX Software Engineer I became a freelance developer in 2000, working primarily in the embedded Linux field, although I did one project using embedded NetBSD. I have mostly done various device drivers for boards using embedded Linux, such as ISDN, SPI, HDLC, CAN-bus, V.24. Almost evey one of these drivers was used to communicate with and control other components/hardware. Skills: High-level programming languages: C, C++, bourne/bash shell script, a little perl Assembler: 8051, 8080, 8086, Z80, 68010, 68020, MIPS, ARM, PowerPC Protocols: TCP/IP, UDP/IP, ISDN, X.25, HDLC, SPI, I2C, RS232, RS485, CAN Realtime: RTAI (older version from 2003) realtime extension for Linux The target CPUs have been those commonly used in embedded systems: Freescale MPC5121e, MPC82x, MPC86x, MPC82xx, MPC83xx AMCC 440Ex Samsung S3C2400 (ARM920t) Texas Instruments OMAP I also did a project using an ARM7-based CPU, but the details escape me. Debugging: GNU gdb (kernel and applications), JTAG hardware debugger BDI-2000 from Abatron SCM: CVS, git, Clearcase (not an expert) Languages: English, fluent German (spoken and written) References: Julian H. Stacey jhs@berklix.com, Vector Systems Limited Wolfgang Poschenrieder wp@mymail.ch, formerly Force Computer GmbH Raphael Bossek raphael.bossek@googlemail.com, formerly SPEECH DESIGN GmbH Wolfgang Denk wd@denx.de, DENX Software Engineering GmbH Work Experience: This resume does not list every job I've ever held in detail because that would take too much space. This is more a summary with some highlights. I. 2000 to present Freelancer doing Embedded Linux projects I have a frame agreement as a Senior Software Consultant with DENX Software Engineering GmbH in Groebenzell, Germany. Unless otherwise noted, DENX was my customer for all projects. Note that the Linux kernel is implemented in C with some assembler. A few projectss, in no particular order (this is only a fraction of what I've done): ISDN - developed a driver for a ISDN chip from Siemens which was used in a voice mail system. I actually developed the driver twice under Linux and a third-party realtime OS which the customer had been using prior to switching to Linux. This project was in 2000/2001 for SPEECH DESIGN GmbH. SPI - developed a driver which was used to communicate with a DSP which was part of a construction crane control system. The driver implemented a customer-specific protocol with timers for retries, etc. This project was in 2002. SPI - developed SPI drivers for accessing a SPI-atached flash device using the Freescale MPC5121e. One driver was for U-Boot and one was for Linux. I had to identify and implement a work-around for a bug in the SPI controller. This project was in 2009. I2C - developed a Linux input-layer driver using the MPC5121e for a I2C-attached keypad using the MAXIM MAX7359 keyboard controller. This project was in 2009. HDLC - developed drivers for U-Boot and Linux which were used to emulate an ethernet interface to communicate with slave boards in a telco system. This project was in 2008. CAN - developed a driver which to Linux looked like an ethernet interface and which was used to communicate with POS devices in a tram/railroad ticket selling system. Due to the long wiring (750 meters) used in testing, the driver had to be extensively instrumented with debugging mechanisms (setting GPIO outputs at various locations to trigger a logic analyzer) in order to get the timings right. This project was in 2006. V.24 - developed a driver, running on a TI OMAP, which implemented a customer-specific protocol used to control another CPU (INCA-IP) in a telephone. This project was in 2006/2007. V.24 - developed a synchronous, high speed (3 Mbps) serial driver which ran on a small embedded board which was used to monitor other boards in a Telco chassis. This project was done in 2003/2004 for Force Computer GmbH (now defunct). RTAI - I developed a RTAI kernel module to interface to a Texas Instruments DSP which was located on a sensor module. The DSP was attached through a Host Port Interface (HPI) to a MPC860 with a 16 bit data bus and an interrupt to flag that data were ready to be read. Because the data had to be read out within a guaranteed time period the customer specified RTAI. In addition I wrote an example application to retrieve and display the data from the DSP. This project was done in 2003. I also did a few system-level projects such as a X.29 PAD in software which was basically a gateway between TCP/IP and X.25. I did the first port of Linux to the INCA-IP (telephony) CPU from Infineon. I implemented the initial USB mass storage (UMASS) support for U-Boot (a BIOS substitute widely used in the embedded Linux field - see www.denx.de). II. 1988 to 2000 PCS/DEC/Compaq in Munich, Germany Note that PCS was acquired by DEC and DEC was then acquired by Compaq. I was a Software Engineer mostly doing UNIX (AT&T System 5.4) kernel work - device driver development and debugging. I also did some projects for customers. One of the most interesting was for a so-called "weather station" which was deployed in workstations used by the German Army. The purpose of this small, embedded board was to warn the operator of the danger of condensation forming in the workstation at poweron time, allowing the operator to avoid damaging the hardware due to short circuits. The board had a 8051 CPU and a humidity and temperature sensor. The 8051 periodically read out the sensors and used an IDE (integral/ differential/exponential) model of temperature/humidity/condensation to estimate whether it would be safe to turn on the workstation. The result of the estimate was shown using LEDs. The IDE was calibrated with data from a large series of measurements in an environment chamber. The software basically consisted of an infinite loop driven by periodic timer interrupts - there was no operating system. The project was implemented in C with some assembler. III. 1986 to 1988 UniSoft GmbH in Munich, Germany UniSoft was a so-called UNIX porting house. Since UNIX source licenses were so expensive at that time, OEMs would bring their hardware to UNIX porting houses like UniSoft to have UNIX customized for their hardware, The OEM would then sell a much less expensive binary version to their customers. This market is now defunct since the advent of OSS UNIX variants (FreeBSD, OpenBSD, NetBSD, Linux). UniSoft supported AT&T UNIX variants - System III, IV and 5.4. I was a Software Engineer doing UNIX ports. The work basically consisted of customizing disk (harddisk and floppy), ethernet and serial drivers to suit the OEM's hardware. Sometimes the OEM had boards which required custom drivers. I also did bug-fixing of standard utilities, as required. Generally, the OEM hardware used S100 bus, VME bus or Multibus with a CPU from Motorola; at that time only the 68010 and 68020 were in common use. The most notable project which I did at Munich was an implementation of a sort of "save to disk" for Philips which allowed a user to shut down the system and resume right where it had left off. This functionality is common today and is part of ACPI (S4), but in 1987 it was extremely unusual, especially when used in a UNIX context. Unfortunately, Philips never did anything with this effort. IV. 1984 to 1986 UniSoft Corp. in Berkeley, CA, USA See above for a general description of my duties at UniSoft. Here a few UNIX ports which stand out in my mind after so many years: a) an extensive port with lots of customized drivers for Morrow Designs. Morrow Designs was one of the larger suppliers of S100 bus systems. The product never hit the market because Morrow Designs filed for bankruptcy in 1986. b) a port to a prototype system from Apple with a custom MMU designed by Apple. This port convinced Apple to develop and market the Macintosh II using UNIX (called AU/X by Apple). V. 1975 to 1984 Mare Island Naval Shipyard in Vallejo, CA, USA I worked as a Refueling Engineer in the Refueling Branch of the Nuclear Engineering Department. The Refueling Branch was responsible for planning, preparing and carryng out refuelings of nuclear-powered submarines for the US Navy. As an engineer I was involved in preparation and testing of the refueling equipment in preparation for refueling operations. I wrote procedures detailing maintenance, refurbishment and testing operations for the equipment. I was responsible for the analysis and resolution of problem reports. I was also frequently present during testing operations to provide on-site technical direction. I was involved in the decommissioning of the USS Nautilus, among other projects. I had a secret security clearance. VI. Open Source I am a FreeBSD committer (gj@freebsd.org) since 1995 and maintain a few ports. At one time I was more active and implemented parts of the ISDN support (isdn4bsd, also known as i4b) which was part of FreeBSD for many years. ISDN is no longer so interesting with the advent of affordable DSL and the code was removed from FreeBSD a few years ago. I have also contributed software to U-Boot and the Linux kernel. Last modified 14 August 2010