Debugging tools (long, philosophical)

DAVE_HEMPSTEAD at HP-Andover-om3.om.hp.com DAVE_HEMPSTEAD at HP-Andover-om3.om.hp.com
Fri Mar 5 18:13:29 GMT 1999


Hi,
   Well I've watched the debates over tools and ram emulators, etc, go on for 
weeks, and I've finally got to dive in.  So here goes......

   Before I enter the debate about what features go into a ram emulator, I think
we should agree upon what problems we are trying to solve.  Different tools 
solve different problems.
   I'll start off with a list of some of the problems I'd like to solve, and 
then propose some tools which might help me solve them.
   One other assumption for me:  I want all my tools to be cheap to buy/build. 
(I admit, I'm cheap).

   When you are looking at tools, there are many parameters to help you select 
the right one (and everyone's parameters are different).  For example, price is 
one parameter.  Others are:  complexity to build, invasiveness, ruggedness, 
size, reliability, etc.


1.  Problem:  I don't know what my ECM is doing 'right now'.  I want to  know 
what the last values it output were, which ones are changing and how often they 
are changing.

    Any tool to solve this problem will not affect what is happening, it will 
just watch it.  Therefore, this tool should be usable at any time (engine off, 
running, etc).  

    One possible tool:  One way to solve this is to use a logic analyzer either 
on the outputs of interest, or one on the processor (to see them all).  Note 
that I'd need a good understanding of how the processor's addresses map to the 
actual outputs for the processor-logic-analyzer to work.
    Other possible tools are simple meters, oscilloscopes, led indicators, etc.
    As for me, I want a cheap logic analyzer.

2.  Problem:  I want to change what my ECM will do (next time it is run).

    For this problem, we want to change behavior, but not while the ECM is 
running.  Once it is changed, then we can 'let-er-rip' and use tool #1 to see 
the results.

    One possible tool:  A prom programmer and sockets in the PCM.  
    Another possible tool:  A rom emulator.  This would need a way to download 
the new data (while engine is off) from somewhere else (like from a PC or other 
rom's), and then when the ECM is turned on, act like a rom.
    Another possible tool:  Software which communicates with the ECM which 
downloads new values into the existing rom (would only work for flash, or eeprom
if the programming voltages were available).
    Another possible tool:  Replace the rom with battery backed up ram, and make
sure that the battery can never run down.  Then all you need is a tool to write 
to ram.

3.  Problem:  I want to see what my ECM is doing 'right now' and change it.  
This is basically a superset of #1 and #2.  

    This is the toughest problem to solve, since it allows you to be invasive, 
yet you want to keep the processor 'doing its job'.  You'd want to be able to 
use this tool while the engine is running.

    One possible tool:  A processor emulator, which plugs into the cpu slot, and
has its own internal memory space that you can download into.  It lets you 
change memory locations (and therefore outputs).
    Another possible tool:  A rom emulator (built out of ram's) that you can 
change while the processor is running.  Presumably you would change the memory 
locations via a PC and you interleave your access memory cycles with the ECM's 
processor.  For this solution, you probably need some software in the memory 
space which makes the ECM to set individual outputs to values located in memory 
(that you can download), since you are unable to write to the output registers 
directly.


Anyway, I'd be interested in tools which can help me solve these problems.  
These are just off the top of my head.  I'm sure there are other tools I'd like 
to have (many, many software tools, but that's a separate debate).

Now, can someone describe their 'ram emulator' tool in these terms???

Dave Hempstead




More information about the Gmecm mailing list