logo_efi332.gif (8782 bytes)

Note: The EFI332 project is defunct, and these pages are no longer being actively maintained.

Other Info


EFI332 4-Layer Board Software by Bruce Bowling and Al Grippo

Prototype Framework For Generic EFI332 Code Development

TPU MicroCode For 58XX Crank Wheels

EFI332 4-Layer Board Software by Bruce Bowling and Al Grippo

The latest version of the software for the 4-layer EFI board is maintained at this site. To download, hold the "shift" key down while clicking the desired link - this will bring up a "save file" dialog. This software is offered "as-is", with no warranty or liabilities whatsoever. In addition, this software is not to be used for commercial applications, in part or in whole, without permission from Al Grippo or Bruce Bowling.

To start, download this README file, and proceed from here.


EFI Embedded Execution Software

efibank.c - This is the main embedded control code for the 4-layer EFI board.

efinput.dat - Definition file for all of the configurable variables

efinput.doc - Definition text file for all of the configurable variables, with datatypes and valid ranges

efconsts.dat - Definition file for LCD

efinput.sr - The compiled S-records of the above efi embedded program - downloaded into the NV-SRAM.


Flash Configuration and Download Code

fmu.c -or- fmu2.c - The Flash programmer code - this program is uploaded into the SRAM and executed once to load the rom_start code into Flash (see the comments in the beginning of this file for operational use).

fmu.sr - The compiled S-records of the fmu Flash programmer.

rom_start.c - The actual Flash ROM code - sets up SIM registers, chip selects, etc, and then executes program (i.e. efi execution code) living in the NV-SRAM. This version handles the 120ns Flash parts and will work with the faster parts as well.

romld120.txt - The compiled S-records of the above rom_start code.


PC Monitor Program Software

mainpc.c - This is the source code for the PC monitor program. The source was developed under Turbo-C, and uses DOS text mode.

Rs232.c - The RS-232 driver program used by mainpc for serial communications - freeware from somewhere out there.

mainpc.exe - The compiled mainpc program executable.


PIC Fake Crank & Cam Stimulator Software

sig48.ASM - Microchip PIC assembler program for the crank and cam stimulator board.

sig48.HEX - Microchip PIC hex listing for the crank/cam stimulator (ready for programmer).


Back to Top

Prototype Framework For Generic EFI332 Code Development

Placeholder for now until I populate with code in development

Back to Top

Low Level TPU I/O Code

The three basic TPU functions - PMMX, PSP12 and PSP3 - have been designed to provide angle-based engine management operations needed to control fuel injection timing, ignition timing and knock window timing.


PMMX is an input function which is specifically designed to correctly process the input signals from the Bosch "60 teeth plus 2 missing teeth" crankshaft timing wheel. Key features of PMMX:

  • Missing teeth gap is handled automatically, with no CPU intervention.
  • A number of different noise rejection algorithms eliminate the effect of spurious signals on the input pins.
  • Separate counters provide angular references based on crankshaft and camshaft positions.
  • User controlled Camshaft synchronization.
  • Two different forms of crankshaft speed measurement are simultaneously maintained. These may be used to assist in the detection of engine misfires.


PSP12 is an output funciton which can be configured to provided fuel injection timing pulses or ignition timing pulses. Once initialized, the pulses will be scheduled automatically in every crankshaft or camshaft cycle, as specified by timing parameters supplied by the host CPU.

The CPU may at any time initiate an additional fuel injection pulse without loss of the normally scheduled pulse. Key features of PSP12:

  • The ignition pulse may be directly specified as a dwell time and spark advance angle.
  • The fuel injection pulses may be specified as a fuelling time and valve closure time.
  • Additional fuels pulses may be asynchronously initiated by the CPU.
  • Cycle-based scheduler allows CPU to update pulse angles completely asynchronously to currently scheduled pulses.
  • Automatically componesates for changes in engine speed.
  • Output pulses may be scheduled normally to start or stop at any point within the missing teeth gap.
  • Output pin may be forced permanently low or high.


PSP3 is an output function which can be configured to generate knock window pulses based on angular position alone. Once initialized by the CPU, the pulses will be automatically scheduled at a programmable rate related to the crankshaft or camshaft position. Key features of PSP3:

  • Active low or active high pulses may be selected.
  • Automatically compensates for changes in engine speed.
  • Output pulses may be scheduled normally to start or stop at any point withing the missing teeth gap.
  • Crankshaft timing pulses may be reconstructed with the elimination of missing teeth gap.
  • Output pin may be forced permanently low or high.

The full documentation for these TPU functions is now available and the TPU source code may be downloaded here. An MS Word version of the docs has been made availble by yours truly, as well as a Postscript version for those that don't do windows.

Rod Barman supplied this information on the TPU functions. You can contact Rod at rodb@cs.ubc.ca



Back to Top

For problems or questions regarding this web contact bowtievette@aol.com.

Thanks to Bowling & Grippo for their financial support of this site!