Other Parts Discussed in Thread: AM3517
I'm busy bringing up a new board using the AM3517. I have an EVM as reference design. I am using my own operating system and no sources are used from a third party.
I am using current XLoader and U-Boot sources as reference together with current Ti docs.
So far all was well. I have 512Mb of DD2 working fine (no termination resistors, no low temp problems - using VTG_DYNAMIC).
As part of the initial validation I run a series of simple tests to gauge performance (this is a good way of checking that all clocks etc are setup as they should). MPU at 600Mhz, Core at 332Mhz, everything else as per XLoader/UBoot.
Maximum execution speed using a small ASM loop (no data access) gets close to the 1.2MIPS so that is fine and expected (with I-Cache enabled).
But - with data access things go horribly wrong.
MOV R2,#0x100000 ;try for about 1 million accesses
LP: LDR R0,=0x40200000 ;Internal RAM
LDR R1,[R0],#4
LDR R1,[R0],#4
.. Total of 10 lines.. of LDR R1,[R0],#4
LDR R1,[R0],#4
LDR R1,[R0],#4
SUBS R2,R2,#1
BNE LP
This results in around 4 million data access per second with Data cache disabled and 40 million with cache enabled (measured using a toggling LED and scope).
Using the same code accessing SDRAM is slightly slower.
That is pathetic. Something is wrong.
Trying the same on the EVM using XLoader and UBoot (without kernel image so it halts with panic) and then running the code produces identical results so I know my init is good (or at least the same as the EVM).
Only 4 million accesses to a non-cached internal RAM per second ? This is not much more than the speed I expect from an old 8-bit CPU. With a core clock of 332 Mhz things should be MUCH faster. Some interface or sync clock is not running at the correct speed (that's my guess anyway).
After fiddling with about every register I can think of I'm close to giving up. Anybody see the light that I am missing ?
A further hint is that DSS accesses to memory seem to run at high speed - so this (and the fact that the issue appears with internal and external memories) points to the CPU side of the L3 interconnect.
Any suggestion or idea to try out is most welcome...
Rainier