Programming Chips Using Offsets


If you’re completely new to burning chips, you may want to take a look at the Beginners’ Guide before reading the rest of this article.  You will probably still need to read this guide in order to choose the correct programming parameters unless you’re in the situation where you’re programming a chip that is the exact same size as the chip you are replacing.  Programming chips with offsets comes into play in two situations:

  1. If the chip you are programming is of a larger capacity than the binary file you are putting on it, you need to use an offset to ensure the tune ends up in the right spot on the chip.
  2. Switching adapters which hold multiple programs require the use of offsets to fit multiple programs on a single chip for a switching adapter.

Both of these cases will be covered in this article.

Chip Offsets With a Single Tune:

We’re going to assume you have either TunerPro or Flash n Burn open at this point and the chip physically oriented correctly.  If you need help with this, look at the Beginners’ Guide before continuing.  We will be selecting the correct buffer and chip addressing to ensure the chip is burned properly and can be used.

When in the software:

  1. Select the type of chip you’ll be programming from the drop-down menu. This will likely be either the AT29C256, 27SF512, AT90F040 or Moates J3 adapter (F3/F3v2).
  2. Pick the ‘Load file to buffer’ option, and navigate to the file you want programmed on the chip. Select it, and it will be loaded to memory on the PC. Take note of the file size indicated in the message window. (You can typically “hover” over the filename before opening it and Windows will pop up an information box iwth the file size)  It will likely be one of five sizes: 4k, 16k, 32k, 56k or 64k bytes.
    • The file you have loaded will determine your buffer addressing (start/end)
    • 4k byte = 0000/0FFF
    • 16k byte = 0000/3FFF
    • 32k byte = 0000/7FFF
    • 56k byte = 0000/DFFF
    • 64k byte = 0000/FFFF
  3. In the top right part of the window you will see the Chip Addressing offset values that need to be changed. The buffer addressing along with the chip size will determine what offsets you need to use. (Flash n Burn usually automatically selects sane offsets based on your chip type and file size in order to place your buffer at the end of the chip, where it usually belongs.)
    The following table summarizes what offsets you need to use depending on chip used and file size:

    File Size
    Buffer Start -> End
    Chip Start -> End
    4k (4096)
    000000 -> 000FFF
    007000 -> 007FFF
    16k (16384)
    000000 -> 003FFF
    004000 -> 007FFF
    32k (32768)
    000000 -> 007FFF
    000000 -> 007FFF
    4k (4096)
    000000 -> 000FFF
    00F000 -> 00FFFF
    16k (16384)
    000000 -> 003FFF
    00C000 -> 00FFFF
    32k (32768)
    000000 -> 007FFF
    008000 -> 00FFFF
    56k (57344)
    000000 -> 00DFFF
    002000 -> 00FFFF
    64k (65536)
    000000 -> 00FFFF
    000000 -> 00FFFF
    32k (32768 EECIV)
    000000 -> 007FFF
    032000 -> 039FFF
    56k (57344 EECIV)
    000000 -> 00DFFF
    032000 -> 03FFFF
    64k (65536 EECIV)
    000000 -> 00FFFF
    032000 -> 03FFFF
    216k or 224k (EECV)
    “bank” format: non-linear!
    convert to 256k!
    256k (EECV)
    000000 -> 03FFFF
    000000 -> 03FFFF

    While the correct values are often selected, you can manually enter them.  For a single-tune single-chip scenario, you generally want the buffer (or file content) to be placed at the ‘end’ of the chip. The notable exceptions to this rule are 32k EECIV Ford tunes (which need to start at 0x32000 and end before the end of the chip) and 216k/224k Ford EECV bins (which are not in linear memory format and need converted to 256k before programming).

    To do this manually:

    • Ensure Buffer Addresses are correct for the file size you have loaded.
    • Adjust the Chip Addressing start value and end value until the end value is the maximum value for the chip AND buffer address values are correct.
    • A short list of common chip addressing settings:
      • 64k bin: 000000 start 00FFFF end ( SST27SF512 chip )
      • 32k bin: 008000 start 00FFFF end ( SST27SF512 chip )
      • 16k bin: 00C000 start 00FFFF end ( SST27SF512 chip )
      • 4k bin: 00F000 start 00FFFF end ( SST27SF512 chip )
      • 56k Ford EECIV bin: 032000 start 03FFFF end ( Ford F3 chip )
      • 256k Ford EECV bin: 000000 start 03FFFF end ( Ford F3 chip )
      • 112k Ford EECV bin: SPECIAL need other software ( Ford F3 chip )
      • 216k Ford EECV bin: SPECIAL need other software ( Ford F3 chip )
      • BEB files CANNOT be programmed with FnB / TP.  Must program using Binary Editor
      • eBIN file CANNOT be programmed
  4. Once you are satisfied with the offsets, perform a normal Erase/Blank/Program/Verify cycle!  Consult the Beginners’ Guide for more information.

Using Switching Adapters:

Using our switching adapters (G2X, G3, GX, TwoTimer, F3, F3v2,F8) requires programming chips using offsets of making “stacked” bin files.  Switching adapters use chips that are larger than an ECU requires, allowing the extra space to be used for multiple programs.  The “extra” space gets divided up into chunks, each of which can store an individual tune.  There are two approaches to creating proper chips for use with switching adapters, both equally valid:

  1. Lump all tune files together on your PC into one bin file “stacked” which is the same size as the chip, program chip at once.
    • The “Bin Stacker/splitter” function in TunerPro can be used to prepare a single file from a group of tunes.  (You can also use a hex editor or other tool)
    • This “stacked” file contains all the tunes and can then be programmed like a “normal” file using TunerPro, Flash n Burn, etc.
    • “Normal” programming cycle: Erase, Blank check, Load tune/buffer, Program chip, Verify.
    • Entire chip gets programmed at once, all tunes for the ECU get programmed on the chip in one operation as part of the “stacked” file.
    • Requires preparation of new “stacked” file and reprogramming of entire chip if any individual tune changes.
  2. Program the chip multiple times, once for each tune, different small selected area of chip Program/Verify cycle instead of whole chip.
    • Instead of relying on a program to create a “stacked” file, knowledge of chip addressing is used to place tunes at correct places within a chip.
    • Programming cycle changes slightly: Erase, Blank check happens at very beginning of cycle ONLY ONCE.  Does NOT happen before every Program/Verify operation, like normal.
    • Erase/Blank is followed by multiple Program, Verify operations.  Each operation is for one tune.  Each operation will have different start/end addresses which are a portion of the chip.
    • Does NOT require preparing any special files in advance – uses the same bin files which would be used for single-tune programming.
    • If you want to chance a tune which is already programmed, the entire chip must be erased and all tunes individually reprogrammed.

As a rule of thumb, tunes start at the end of the chip and count down.  i.e. “Tune 0” is in the highest addresses on the chip, or the top slot in a stacked bin.  “Tune 1” will be the next lower slot.  Some adapters have chips which can hold more tunes than there are address lines for switching.

Each switching adapter we sell has different numbers of available slots, slot sizes and corresponding chip addresses start/end:

  • G2X: 27SF512 chip (00000/0FFFF), 16x 32kbit/4kbyte slots on chip:
    1. F000/FFFF
    2. E000/EFFF
    3. D000/DFFF
    4. C000/CFFF
    5. B000/BFFF
    6. A000/AFFF
    7. 9000/9FFF
    8. 8000/8FFF
  • G3: 29F040 chip (000000 / 07FFFFF), 16x variable size slots, Ex remote required, addressing varies according to settings on adapter
  • GX: 29F040 chip (000000 / 07FFFFF), 16x 64k slots, Ex remote required, addressing varies according to size of base file.
    • There are 16 slots on the chip.  Each slot is 64k ( 0x0FFFF) in size.
    • Tunes smaller than 64k typically need to be top-justified so that they END at the end of each window
    • When using the Ex remote (or no switcher – floating switch inputs) slot “0” will be at the end of the chip and bigger numbers on the Ex remote will mean slots closer to the beginning (0x000000) of the chip.
  • TwoTimer: 27SF512 (00000/0FFFF), 2x 256kbit/32kbyte slots, idles in “high position”
    1. 8000/FFFF
    2. 0000/7FFF
  • F3 (version one – switch pin and 2 tunes): special case.  Cannot program entire device at once, stacking NOT possible.  Program chip twice, manually change state of switching pin during programming. Note: “Erase chip” function does NOT erase whole chip, only erases the “bank” selected by the jumper
  • F3v2 (version two – 4 pin connector and dial switch, 8 tunes): special case.  Cannot program entire device at once, stacking NOT possible.  Program chip multiple times, manually change state of switch during programming to select different slots. Note: “Erase chip” function does NOT erase whole chip, only erases the “bank” selected by the switch
  • F8: special case.  Use F8 device utility to prepare and program tunes.