I am having some difficulty getting Sourcery Probe up on the Sabre Smart Devices Board. Mentor has been a great help getting it talking, but I am have problems related to initializing the target, specifically, getting memory tests to run without failure.
The question at the end of these details is: what registers might have to be set besides what is in the DCD to get JTAG to reliably write to memory.
Things that are known to work and demonstrate that this is not a hardware problem:
- primes app runs from SD
- serial download will talk to the manufacturing tools
- linux runs from SD
- Can load image from eclipse, set BP to _start, and can step in code
To get the probe to work, I had to find the dcd.c file in ...smart_device/dcd.c and convert it to register writes in the probes .maj file.
When the probe is connected and the mon app is run, it successfully halts the target, and runs the dcd register initialization. When the register initialization is absent, I can't even download the image, so it is clear that adding the dcd register writes are applied.
The problem is when I run the mon apps memory tests, I have discovered that it fails on every other address. For example:
Passing means it runs in a loop testing w/r, and fail means it fails right away.
I don't have any other initialization of registers other than the DCD ones. So I am not trying to mess with clocks and other things. I am assuming that when the target is powered/reset the ROM code runs and does that, otherwise I could not step through code with a debugger. I wait for some time to ensure the ROM code gets to the point of serial download before trying to connect to the target. I have also verified the WDOG eFuse is not blown using u-boot.
What I am looking for is ideas about what kind of setup problem can cause this kind of memory failure pattern. Is there something critical that the ROM code does that is outside the DCD that I must do to reliably be able to talk to memory though JTAG? Can the JTAG probe interfere with refresh of memory from lack of some proper register value?