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