DSP-10: Installing UHF3 to DSPx Flash Bank 1

DSPx Flash Bank 1 - A 512 KByte plug-in flash memory is part of the DSPx board. This memory can be erased and programmed electrically, making it versatile. Bank 1, of banks 0 to 7, is a 64 KByte program area that can be transferred to the ADSP-2185 DSP and executed at power-up, or a reset. Since flash memory is permanent until deliberately erased, we can cause the DSP to come up running without any extra steps.

This web page discusses the transfer of an Intel Hex program file, distributed for the DSP-10 into bank 1. This file is named UHF3Xzzz.HEX, where zzz is the version number, such as 34 or 35A. Note that flash memory can be used for other purposes, but we are focused here on this particular use. By loading flash bank 1 with UHF3Xzzz.HEX it will not be necessary to load UHF3Xzzz.EXE each time you start your DSP-10. One requirement for programming Bank 1 is that Flash Bank 0 must contain a copy of the "DSP Monitor" program. Information for working with Flash Bank 0, is covered separately. In working with Bank 1, error messages will be generated if the monitor is not present.

Jumpers The DSPx board has a pair of jumpers that are critical for ensuring that Bank 0 is not accidentally damaged. These jumpers can be used as standard mechanical slip-on shorts, or in the case of JP1, it can be made more convenient by bringing the pins to a SPST switch. It is strongly recommended that you do not just poke wire in the board holes, with the potential for poor connections.

Jumper JP0 prevents any changes to Flash Bank 0 (the Monitor). JP0 SHOULD REMAIN OPEN during all steps of this procedure.

Jumper JP1 determines which flash bank will be used as a source when loading a program to the DSP. If JP1 is open (Open circuit)), Bank 0 will be used and the monitor will be loaded. If JP1 is shorted, Bank 1 is shorted, Bank 1 will be used (normally the UHF3 for the DSP-10).

Summary of Steps Flash Bank 1 programming details are given below, but in summary:

  1. JP1 is open for Bank 0 and the Monitor is loaded.
  2. The KK7P program FLASHUTL is loaded from a file and run in the DSPx.
  3. The Intel hex file for UHF3 is read and sent to FLASHUTL for loading to Bank 1.
  4. JP1 is shorted for Bank 1 and the DSPx is reset resulting in the UHF3 program running.
Steps 2 and 3 are implemented by a MS-DOS (just called DOS here) batch file FL1B.BAT. You will interact with the batch file and the programs being called, but the error checking and loading is automated. As the process takes place, read the screen contents to see if errors have been found. If that happens, the best recovery will be indicated. In no case will the flash memory be damaged.

Step-by-Step This process is controlled by the FL1B.BAT DOS batch file. It, along with the programs being called, have screen comments showing the progress of the loading. The following is a step-by-step description of the human control required:

  1. Make sure the following files are all in a single directory:
    
      FL1B.BAT
      FLASHUTB.EXE
      EZLD.COM
      UHF3Xzzz.HEX
      XFINDMN1.EXE
      XFLASH1.EXE
    
  2. Make sure both JP0 and JP1 are open.
  3. Reset the DSPx (reset button or power off and on)
  4. Make the directory in step 1 the current directory.
  5. Type "FL1B n UHF3Xzzz.HEX" followed by an "Enter" key. n is the Serial COM port being used in the range 1 to 4. If you are unsure of the COM port being used, enter a value of 0 (zero) for n and FL1B will search out the proper port.
  6. Various status lines will be shown on the screen, with a "Y" or "y" response needed three times . Do NOT hit "Enter" or the process will be aborted. If the process is aborted, on-purpose or accidentally, just return to step 1 of this process.
  7. A single period is printed for each Intel Hex line loaded. These will appear, several per second. Wait for the process to complete, which is several minutes.
  8. Short JP1 (select Bank 1)
  9. Reset the DSPx---this should result in the DSP-10 DSP program running.

What if there are problems? Here are a few ideas, beyond just repeating the steps above:

During the hex-file loading process, one of the programs used, XFLASH1.EXE, writes a diagnostic file called XF_TRACE.TXT It contains much of the same material that was on the screen during the loading process, BUT the trace file did not scroll away. A sample of this file for a successful load is available here.

There is an LED on the DSPx board marked FL1. A couple of checks can be done simply using the indicator:

  1. If JP1 is open, a reset should result in FL1 flashing on and off.
  2. If the UHF3 is successfully placed in Bank 1, and JP1 is shorted, a reset should result is several short fast flashes, followed by FL1 at half brightness. Any other FL1 pattern indicates a problem.

EZLD.COM is used to place FLASHUTL.EXE into DSP memory (and to run it). If EZLD is not talking properly to the Monitor, it will fill the screen with HEX data bytes. Proper operation has a sign-on line and then is quiet until the load is finished (a few seconds) when two more lines of status are shown.

There are several versions of Monitor that may be in use. For purposes of loading Bank 1, any of these may be used.

Files for loading Bank 1 For convenience, all of the files listed above in item 1, except the UHF3Xzzz.HEX, are available here. in a single ZIP file. The current version of the UHF3Xzzz.HEX (such as UHF3X35A.HEX, or later) is linked on the DSP-10 home page. Look for "DSP Program."

Flash integrity The check sums at the end of the loading process can be repeated in the future by using a terminal program to send a 'C' command to the FLASHUTB, running in the DSP. If there is ever a question about the flash data this could be helpful. Save the XF_TRACE.TXT file and the check sum numbers for each sector and the entire bank will be available. These are also listed in the ZIP for UHF3Xzzz.HEX

Thanks - Many thanks to Mike, KD7TS, and Jimmy, W7CQ, for helping me at all levels from concepts to writing code to many hours of testing.

Back to DSP-10 Page

This was revised 3 May 2013. Bob Larkin, W7PUA