Call to arms | Teensy + SDRAM = true

@Dogbone06 : some more cleanup/details on the sketch.
Top lines in sketch vars allow setting values for building with changes: Speed, NoCap
If built USB: Dual Serial, then TyCommander second SerMon shows detail of fails if it seems relevant. When it doesn't fail One Write and Three Reads of 32MB show 128 MB transfer in 0.98 seconds:
>>**>> FixedPatt(12) pattern 00000000 with readRepeat 3 ...
Test fixed pattern Compare time secs 0.98 with Error Cnt 0
And the same # Write/Read on PsuedoRand takes longer as it has to recalculate the expected value each time to write and then test:
>>**>> PseudoRand(0) Seed 2976674124 with readRepeat 3 ...
Test pseudo-random sequence Compare time secs 1.79 with Error Cnt 0
 
I updated the FlexIO VGA code to be compatible with the SDRAM DevBoard.

The results aren't great... it struggles badly if both buffers are in SDRAM, and even with one buffer in DMAMEM it still can't keep up with resolutions above 640x480. Given that this is mostly sequential access (compatible with SDRAM bursting) and only using 4bpp (not even 8, let alone 16 or 24), it seems DMA just doesn't work very well with the SEMC controller. Maybe eLCDIF will perform better since it's supposedly a different bus master...
 
I updated the FlexIO VGA code to be compatible with the SDRAM DevBoard.

The results aren't great... it struggles badly if both buffers are in SDRAM, and even with one buffer in DMAMEM it still can't keep up with resolutions above 640x480. Given that this is mostly sequential access (compatible with SDRAM bursting) and only using 4bpp (not even 8, let alone 16 or 24), it seems DMA just doesn't work very well with the SEMC controller. Maybe eLCDIF will perform better since it's supposedly a different bus master...

That's quite disappointing!
I was hoping to use two large buffers for my 8080 FlexIO display driver library.

eLCDIF and perhaps PXP seem to support SDRAM so hopefully will see better performance there - I'm waiting on some breakout boards for a 4.3" and 5" RGB LCDs I have sitting at home. Will wire them up and start playing around when they arrive.

Would it not make more sense to use the eLCDIF to generate the VGA signals instead of FlexIO seeing that we have exposed all the pins?
 
eLCDIF is a lot less flexible. It can't do tricks like pixel-doubling/line-doubling so low VGA resolutions aren't available, and the minimum bitdepth is 8bpp even if you only use 16 colors (4bpp) or monochrome (1bpp) so a lot of memory is wasted.
With FlexIO I can also trigger an interrupt pretty much anywhere I want e.g. at the end of every line, when half a frame has been processed, when the active video region has finished rendering rather than the entire frame...
 
@jmarsh
tried to duplicate the results you showed in post #483 but running at 166Mhz using the board variant. Seems like I am getting faster transfers at 166mhz

Code:
SDRAM Memory Test, 32 Mbyte
testing with fixed pattern 5A698421 :    Fill us: 102378, MB/s: 312.567139.2    Test us: 409849, MB/s: 78.077538.2
testing with pseudo-random sequence, seed=2976674124    Fill us: 307599, MB/s: 104.031548.2    Test us: 575558, MB/s: 55.598217.2
testing with pseudo-random sequence, seed=1438200953    Fill us: 307598, MB/s: 104.031891.2    Test us: 575558, MB/s: 55.598217.2
testing with pseudo-random sequence, seed=3413783263    Fill us: 307598, MB/s: 104.031891.2    Test us: 575553, MB/s: 55.598701.2
testing with pseudo-random sequence, seed=1900517911    Fill us: 307598, MB/s: 104.031891.2    Test us: 575558, MB/s: 55.598217.2
testing with pseudo-random sequence, seed=1227909400    Fill us: 307599, MB/s: 104.031548.2    Test us: 575553, MB/s: 55.598701.2
testing with pseudo-random sequence, seed=276562754    Fill us: 307598, MB/s: 104.031891.2    Test us: 575554, MB/s: 55.598606.2
testing with pseudo-random sequence, seed=146878114    Fill us: 307599, MB/s: 104.031548.2    Test us: 575556, MB/s: 55.598415.2
testing with pseudo-random sequence, seed=615545407    Fill us: 307599, MB/s: 104.031548.2    Test us: 575557, MB/s: 55.598316.2
testing with pseudo-random sequence, seed=110497896    Fill us: 307599, MB/s: 104.031548.2    Test us: 575555, MB/s: 55.598507.2
testing with pseudo-random sequence, seed=74539250    Fill us: 307599, MB/s: 104.031548.2    Test us: 575555, MB/s: 55.598507.2
testing with pseudo-random sequence, seed=4197336575    Fill us: 307599, MB/s: 104.031548.2    Test us: 575556, MB/s: 55.598415.2
testing with pseudo-random sequence, seed=2280382233    Fill us: 307598, MB/s: 104.031891.2    Test us: 575557, MB/s: 55.598316.2
testing with pseudo-random sequence, seed=542894183    Fill us: 307599, MB/s: 104.031548.2    Test us: 575556, MB/s: 55.598415.2
testing with pseudo-random sequence, seed=3978544245    Fill us: 307599, MB/s: 104.031548.2    Test us: 575557, MB/s: 55.598316.2
testing with pseudo-random sequence, seed=2315909796    Fill us: 307599, MB/s: 104.031548.2    Test us: 575555, MB/s: 55.598507.2
testing with pseudo-random sequence, seed=3736286001    Fill us: 307599, MB/s: 104.031548.2    Test us: 575554, MB/s: 55.598606.2
testing with pseudo-random sequence, seed=2876690683    Fill us: 307599, MB/s: 104.031548.2    Test us: 575559, MB/s: 55.598122.2
testing with pseudo-random sequence, seed=215559886    Fill us: 307599, MB/s: 104.031548.2    Test us: 575554, MB/s: 55.598606.2
testing with pseudo-random sequence, seed=539179291    Fill us: 307599, MB/s: 104.031548.2    Test us: 575562, MB/s: 55.597832.2
testing with pseudo-random sequence, seed=537678650    Fill us: 307598, MB/s: 104.031891.2    Test us: 575553, MB/s: 55.598701.2
testing with pseudo-random sequence, seed=4001405270    Fill us: 307599, MB/s: 104.031548.2    Test us: 575555, MB/s: 55.598507.2
testing with pseudo-random sequence, seed=2169216599    Fill us: 307599, MB/s: 104.031548.2    Test us: 575557, MB/s: 55.598316.2
testing with pseudo-random sequence, seed=4036891097    Fill us: 307599, MB/s: 104.031548.2    Test us: 575558, MB/s: 55.598217.2
testing with pseudo-random sequence, seed=1535452389    Fill us: 307599, MB/s: 104.031548.2    Test us: 575558, MB/s: 55.598217.2
testing with pseudo-random sequence, seed=2959727213    Fill us: 307598, MB/s: 104.031891.2    Test us: 575553, MB/s: 55.598701.2
testing with pseudo-random sequence, seed=4219363395    Fill us: 307599, MB/s: 104.031548.2    Test us: 575555, MB/s: 55.598507.2
testing with pseudo-random sequence, seed=1036929753    Fill us: 307598, MB/s: 104.031891.2    Test us: 575556, MB/s: 55.598415.2
testing with pseudo-random sequence, seed=2125248865    Fill us: 307599, MB/s: 104.031548.2    Test us: 575556, MB/s: 55.598415.2
testing with pseudo-random sequence, seed=3177905864    Fill us: 307599, MB/s: 104.031548.2    Test us: 575554, MB/s: 55.598606.2
testing with pseudo-random sequence, seed=2399307098    Fill us: 307599, MB/s: 104.031548.2    Test us: 575557, MB/s: 55.598316.2
testing with pseudo-random sequence, seed=3847634607    Fill us: 307599, MB/s: 104.031548.2    Test us: 575558, MB/s: 55.598217.2
testing with pseudo-random sequence, seed=27467969    Fill us: 307599, MB/s: 104.031548.2    Test us: 575554, MB/s: 55.598606.2
testing with pseudo-random sequence, seed=520563506    Fill us: 307598, MB/s: 104.031891.2    Test us: 575557, MB/s: 55.598316.2
testing with pseudo-random sequence, seed=381313790    Fill us: 307598, MB/s: 104.031891.2    Test us: 575555, MB/s: 55.598507.2
testing with pseudo-random sequence, seed=4174769276    Fill us: 307599, MB/s: 104.031548.2    Test us: 575557, MB/s: 55.598316.2
testing with pseudo-random sequence, seed=3932189449    Fill us: 307599, MB/s: 104.031548.2    Test us: 575558, MB/s: 55.598217.2
testing with pseudo-random sequence, seed=4079717394    Fill us: 307599, MB/s: 104.031548.2    Test us: 575553, MB/s: 55.598701.2
testing with pseudo-random sequence, seed=868357076    Fill us: 307599, MB/s: 104.031548.2    Test us: 575553, MB/s: 55.598701.2
testing with pseudo-random sequence, seed=2474062993    Fill us: 307599, MB/s: 104.031548.2    Test us: 575558, MB/s: 55.598217.2
testing with pseudo-random sequence, seed=1502682190    Fill us: 307599, MB/s: 104.031548.2    Test us: 575555, MB/s: 55.598507.2
testing with pseudo-random sequence, seed=2471230478    Fill us: 307599, MB/s: 104.031548.2    Test us: 575553, MB/s: 55.598701.2
testing with pseudo-random sequence, seed=85016565    Fill us: 307599, MB/s: 104.031548.2    Test us: 575554, MB/s: 55.598606.2
testing with pseudo-random sequence, seed=1427530695    Fill us: 307599, MB/s: 104.031548.2    Test us: 575559, MB/s: 55.598122.2
testing with pseudo-random sequence, seed=1100533073    Fill us: 307599, MB/s: 104.031548.2    Test us: 575557, MB/s: 55.598316.2
testing with fixed pattern 55555555 :    Fill us: 102391, MB/s: 312.527466.2    Test us: 409877, MB/s: 78.072205.2
testing with fixed pattern 33333333 :    Fill us: 102378, MB/s: 312.567139.2    Test us: 409848, MB/s: 78.077728.2
testing with fixed pattern 0F0F0F0F :    Fill us: 102377, MB/s: 312.570221.2    Test us: 409850, MB/s: 78.077347.2
testing with fixed pattern 00FF00FF :    Fill us: 102378, MB/s: 312.567139.2    Test us: 409848, MB/s: 78.077728.2
testing with fixed pattern 0000FFFF :    Fill us: 102378, MB/s: 312.567139.2    Test us: 409849, MB/s: 78.077538.2
testing with fixed pattern AAAAAAAA :    Fill us: 102379, MB/s: 312.564087.2    Test us: 409852, MB/s: 78.076965.2
testing with fixed pattern CCCCCCCC :    Fill us: 102376, MB/s: 312.573273.2    Test us: 409846, MB/s: 78.078102.2
testing with fixed pattern F0F0F0F0 :    Fill us: 102377, MB/s: 312.570221.2    Test us: 409845, MB/s: 78.078300.2
testing with fixed pattern FF00FF00 :    Fill us: 102377, MB/s: 312.570221.2    Test us: 409849, MB/s: 78.077538.2
testing with fixed pattern FFFF0000 :    Fill us: 102378, MB/s: 312.567139.2    Test us: 409850, MB/s: 78.077347.2
testing with fixed pattern FFFFFFFF :    Fill us: 102376, MB/s: 312.573273.2    Test us: 409844, MB/s: 78.078484.2
testing with fixed pattern 00000000 :    Fill us: 102378, MB/s: 312.567139.2    Test us: 409849, MB/s: 78.077538.2
 test ran for 44.73 seconds
All memory tests passed :-)

Not sure what your code is but here is what I just used:
Code:
//#include "SDRAM_t4.h"

//constructor for
//SDRAM_t4 sdram;

bool memory_ok = false;
uint32_t *memory_begin, *memory_end;

bool check_fixed_pattern(uint32_t pattern);
bool check_lfsr_pattern(uint32_t seed);

void setup()
{
    while (!Serial) ; // wait
    pinMode(13, OUTPUT);
    uint8_t size = 32;
    Serial.printf("SDRAM Memory Test, %d Mbyte\n", size);
    if (size == 0) return;

    // sdram.begin initializes the available SDRAM Module
    // begin defaults to 32mb but you can specify the size
    // from begin
    // begin(uint16 external_memory_size) where size is in
    // MB
    //if(!sdram.begin()) {
    //  Serial.println("SDRAM FAILED TO INITIALIZE.....");
      //while(1);
    //}
    
    memory_begin = (uint32_t *)(0x80000000);
    memory_end = (uint32_t *)(0x80000000 + size * 1048576);
    elapsedMillis msec = 0;
    if (!check_fixed_pattern(0x5A698421)) return;
    if (!check_lfsr_pattern(2976674124ul)) return;
    if (!check_lfsr_pattern(1438200953ul)) return;
    if (!check_lfsr_pattern(3413783263ul)) return;
    if (!check_lfsr_pattern(1900517911ul)) return;
    if (!check_lfsr_pattern(1227909400ul)) return;
    if (!check_lfsr_pattern(276562754ul)) return;
    if (!check_lfsr_pattern(146878114ul)) return;
    if (!check_lfsr_pattern(615545407ul)) return;
    if (!check_lfsr_pattern(110497896ul)) return;
    if (!check_lfsr_pattern(74539250ul)) return;
    if (!check_lfsr_pattern(4197336575ul)) return;
    if (!check_lfsr_pattern(2280382233ul)) return;
    if (!check_lfsr_pattern(542894183ul)) return;
    if (!check_lfsr_pattern(3978544245ul)) return;
    if (!check_lfsr_pattern(2315909796ul)) return;
    if (!check_lfsr_pattern(3736286001ul)) return;
    if (!check_lfsr_pattern(2876690683ul)) return;
    if (!check_lfsr_pattern(215559886ul)) return;
    if (!check_lfsr_pattern(539179291ul)) return;
    if (!check_lfsr_pattern(537678650ul)) return;
    if (!check_lfsr_pattern(4001405270ul)) return;
    if (!check_lfsr_pattern(2169216599ul)) return;
    if (!check_lfsr_pattern(4036891097ul)) return;
    if (!check_lfsr_pattern(1535452389ul)) return;
    if (!check_lfsr_pattern(2959727213ul)) return;
    if (!check_lfsr_pattern(4219363395ul)) return;
    if (!check_lfsr_pattern(1036929753ul)) return;
    if (!check_lfsr_pattern(2125248865ul)) return;
    if (!check_lfsr_pattern(3177905864ul)) return;
    if (!check_lfsr_pattern(2399307098ul)) return;
    if (!check_lfsr_pattern(3847634607ul)) return;
    if (!check_lfsr_pattern(27467969ul)) return;
    if (!check_lfsr_pattern(520563506ul)) return;
    if (!check_lfsr_pattern(381313790ul)) return;
    if (!check_lfsr_pattern(4174769276ul)) return;
    if (!check_lfsr_pattern(3932189449ul)) return;
    if (!check_lfsr_pattern(4079717394ul)) return;
    if (!check_lfsr_pattern(868357076ul)) return;
    if (!check_lfsr_pattern(2474062993ul)) return;
    if (!check_lfsr_pattern(1502682190ul)) return;
    if (!check_lfsr_pattern(2471230478ul)) return;
    if (!check_lfsr_pattern(85016565ul)) return;
    if (!check_lfsr_pattern(1427530695ul)) return;
    if (!check_lfsr_pattern(1100533073ul)) return;
    if (!check_fixed_pattern(0x55555555)) return;
    if (!check_fixed_pattern(0x33333333)) return;
    if (!check_fixed_pattern(0x0F0F0F0F)) return;
    if (!check_fixed_pattern(0x00FF00FF)) return;
    if (!check_fixed_pattern(0x0000FFFF)) return;
    if (!check_fixed_pattern(0xAAAAAAAA)) return;
    if (!check_fixed_pattern(0xCCCCCCCC)) return;
    if (!check_fixed_pattern(0xF0F0F0F0)) return;
    if (!check_fixed_pattern(0xFF00FF00)) return;
    if (!check_fixed_pattern(0xFFFF0000)) return;
    if (!check_fixed_pattern(0xFFFFFFFF)) return;
    if (!check_fixed_pattern(0x00000000)) return;
    Serial.printf(" test ran for %.2f seconds\n", (float)msec / 1000.0f);
    Serial.println("All memory tests passed :-)");
    memory_ok = true;
}

bool fail_message(volatile uint32_t *location, uint32_t actual, uint32_t expected)
{
    Serial.printf(" Error at %08X, read %08X but expected %08X\n",
        (uint32_t)location, actual, expected);
    return false;
}

// fill the entire RAM with a fixed pattern, then check it
bool check_fixed_pattern(uint32_t pattern)
{
    volatile uint32_t *p;
    Serial.printf("testing with fixed pattern %08X :", pattern);
    uint32_t time_now = micros();
    for (p = memory_begin; p < memory_end; p++) {
        *p = pattern;
    }
    uint32_t diff = micros() - time_now;
    Serial.printf("\tFill us: %d, MB/s: %f.2", diff, (float)(32)/(float)(diff*0.000001));
    arm_dcache_flush_delete((void *)memory_begin,
        (uint32_t)memory_end - (uint32_t)memory_begin);
    for (p = memory_begin; p < memory_end; p++) {
        uint32_t actual = *p;
        if (actual != pattern) return fail_message(p, actual, pattern);
    }
    diff = micros() - time_now;
    Serial.printf("\tTest us: %d, MB/s: %f.2\n", diff, (float)(32)/(float)(diff*0.000001));
    return true;
}

// fill the entire RAM with a pseudo-random sequence, then check it
bool check_lfsr_pattern(uint32_t seed)
{
    volatile uint32_t *p;
    uint32_t reg;

    Serial.printf("testing with pseudo-random sequence, seed=%u", seed);
    reg = seed;
    uint32_t time_now = micros();
    for (p = memory_begin; p < memory_end; p++) {
        *p = reg;
        for (int i=0; i < 3; i++) {
            // https://en.wikipedia.org/wiki/Xorshift
            reg ^= reg << 13;
            reg ^= reg >> 17;
            reg ^= reg << 5;
        }
    }
    uint32_t diff = micros() - time_now;
    Serial.printf("\tFill us: %d, MB/s: %f.2", diff, (float)(32)/(float)(diff*0.000001));
    arm_dcache_flush_delete((void *)memory_begin,
        (uint32_t)memory_end - (uint32_t)memory_begin);
    reg = seed;
    time_now = micros();
    for (p = memory_begin; p < memory_end; p++) {
        uint32_t actual = *p;
        if (actual != reg) return fail_message(p, actual, reg);
        //Serial.printf(" reg=%08X\n", reg);
        for (int i=0; i < 3; i++) {
            reg ^= reg << 13;
            reg ^= reg >> 17;
            reg ^= reg << 5;
        }
    }
    diff = micros() - time_now;
    Serial.printf("\tTest us: %d, MB/s: %f.2\n", diff, (float)(32)/(float)(diff*0.000001));
    return true;
}

void loop()
{
    digitalWrite(13, HIGH);
    delay(100);
    if (!memory_ok) digitalWrite(13, LOW); // rapid blink if any test fails
    delay(100);
}
 
Obviously non-identical code will give different results... mine has an extra step inside every read/write (the address is permutated rather than incremented, even for the sequential tests where the permutation evaluates to +1).
The test results also change significantly when varying the CPU speed, obviously they're not exclusively measuring only the RAM access but only serve to compare different SDRAM settings to each other - for example I've discovered it's possible to set CAS to 2 rather than 3 for any frequency up to around 170MHz before errors start to show up.
 
Obviously non-identical code will give different results... mine has an extra step inside every read/write (the address is permutated rather than incremented, even for the sequential tests where the permutation evaluates to +1).
Probably should have posted your code so we are all working from the same script. The sketch I am using is Paul's standard PSRAM test case modified for SDRAM.
 
Ok running your test the results are more in line with what you showed at 166mhz
Code:
EXTMEM Memory Test, 32 Mbyte
Beginning sequential access tests
testing with fixed pattern 5A698421        fill us:168776 MB/s:189.60        test us:380109 MB/s:84.19
testing with fixed pattern 55555555        fill us:167782 MB/s:190.72        test us:380109 MB/s:84.19
testing with fixed pattern 33333333        fill us:167784 MB/s:190.72        test us:380109 MB/s:84.19
testing with fixed pattern 0F0F0F0F        fill us:167782 MB/s:190.72        test us:380109 MB/s:84.19
testing with fixed pattern 00FF00FF        fill us:171242 MB/s:186.87        test us:380109 MB/s:84.19
testing with fixed pattern 0000FFFF        fill us:167783 MB/s:190.72        test us:380109 MB/s:84.19
testing with fixed pattern AAAAAAAA        fill us:167789 MB/s:190.72        test us:380109 MB/s:84.19
testing with fixed pattern CCCCCCCC        fill us:167783 MB/s:190.72        test us:380109 MB/s:84.19
testing with fixed pattern F0F0F0F0        fill us:171234 MB/s:186.88        test us:380109 MB/s:84.19
testing with fixed pattern FF00FF00        fill us:167782 MB/s:190.72        test us:380109 MB/s:84.19
testing with fixed pattern FFFF0000        fill us:171225 MB/s:186.89        test us:380109 MB/s:84.19
testing with fixed pattern FFFFFFFF        fill us:167782 MB/s:190.72        test us:380109 MB/s:84.19
testing with fixed pattern 00000000        fill us:167782 MB/s:190.72        test us:380109 MB/s:84.19
testing with pseudo-random sequence, seed=2976674124        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=1438200953        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=3413783263        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=1900517911        fill us:391490 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=1227909400        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=276562754        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=146878114        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=615545407        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=110497896        fill us:391490 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=74539250        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=4197336575        fill us:391490 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=2280382233        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=542894183        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=3978544245        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=2315909796        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=3736286001        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=2876690683        fill us:391489 MB/s:81.74        test us:617678 MB/s:51.81
testing with pseudo-random sequence, seed=215559886        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=539179291        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=537678650        fill us:391489 MB/s:81.74        test us:617678 MB/s:51.81
testing with pseudo-random sequence, seed=4001405270        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=2169216599        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=4036891097        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=1535452389        fill us:391490 MB/s:81.74        test us:617678 MB/s:51.81
testing with pseudo-random sequence, seed=2959727213        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=4219363395        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=1036929753        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=2125248865        fill us:391490 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=3177905864        fill us:391489 MB/s:81.74        test us:617678 MB/s:51.81
testing with pseudo-random sequence, seed=2399307098        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=3847634607        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=27467969        fill us:391489 MB/s:81.74        test us:617678 MB/s:51.81
testing with pseudo-random sequence, seed=520563506        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=381313790        fill us:391489 MB/s:81.74        test us:617678 MB/s:51.81
testing with pseudo-random sequence, seed=4174769276        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=3932189449        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=4079717394        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=868357076        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=2474062993        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=1502682190        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=2471230478        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=85016565        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=1427530695        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
testing with pseudo-random sequence, seed=1100533073        fill us:391489 MB/s:81.74        test us:617677 MB/s:51.81
 test ran for 52.24 seconds
 3648 MBs test ran at 69.83 MB/sec overall
Beginning random access tests
testing with fixed pattern 5A698421        fill us:657520 MB/s:48.67        test us:2017446 MB/s:15.86
testing with fixed pattern 55555555        fill us:653187 MB/s:48.99        test us:2017463 MB/s:15.86
testing with fixed pattern 33333333        fill us:672782 MB/s:47.56        test us:2017462 MB/s:15.86
testing with fixed pattern 0F0F0F0F        fill us:660280 MB/s:48.46        test us:2017467 MB/s:15.86
testing with fixed pattern 00FF00FF        fill us:654775 MB/s:48.87        test us:2017463 MB/s:15.86
testing with fixed pattern 0000FFFF        fill us:664191 MB/s:48.18        test us:2017641 MB/s:15.86
testing with fixed pattern AAAAAAAA        fill us:661144 MB/s:48.40        test us:2017462 MB/s:15.86
testing with fixed pattern CCCCCCCC        fill us:652557 MB/s:49.04        test us:2017464 MB/s:15.86
testing with fixed pattern F0F0F0F0        fill us:652556 MB/s:49.04        test us:2017462 MB/s:15.86
testing with fixed pattern FF00FF00        fill us:661774 MB/s:48.35        test us:2017460 MB/s:15.86
testing with fixed pattern FFFF0000        fill us:660279 MB/s:48.46        test us:2017470 MB/s:15.86
testing with fixed pattern FFFFFFFF        fill us:661413 MB/s:48.38        test us:2017459 MB/s:15.86
testing with fixed pattern 00000000        fill us:661412 MB/s:48.38        test us:2017478 MB/s:15.86
testing with pseudo-random sequence, seed=2976674124        fill us:657894 MB/s:48.64        test us:2261094 MB/s:14.15
testing with pseudo-random sequence, seed=1438200953        fill us:658724 MB/s:48.58        test us:2261064 MB/s:14.15
testing with pseudo-random sequence, seed=3413783263        fill us:653182 MB/s:48.99        test us:2261090 MB/s:14.15
testing with pseudo-random sequence, seed=1900517911        fill us:656497 MB/s:48.74        test us:2261108 MB/s:14.15
testing with pseudo-random sequence, seed=1227909400        fill us:658639 MB/s:48.59        test us:2261068 MB/s:14.15
testing with pseudo-random sequence, seed=276562754        fill us:664011 MB/s:48.19        test us:2261099 MB/s:14.15
testing with pseudo-random sequence, seed=146878114        fill us:656670 MB/s:48.73        test us:2261087 MB/s:14.15
testing with pseudo-random sequence, seed=615545407        fill us:652894 MB/s:49.01        test us:2261117 MB/s:14.15
testing with pseudo-random sequence, seed=110497896        fill us:651366 MB/s:49.13        test us:2261082 MB/s:14.15
testing with pseudo-random sequence, seed=74539250        fill us:653180 MB/s:48.99        test us:2261061 MB/s:14.15
testing with pseudo-random sequence, seed=4197336575        fill us:664989 MB/s:48.12        test us:2261114 MB/s:14.15
testing with pseudo-random sequence, seed=2280382233        fill us:657608 MB/s:48.66        test us:2261091 MB/s:14.15
testing with pseudo-random sequence, seed=542894183        fill us:658217 MB/s:48.62        test us:2261105 MB/s:14.15
testing with pseudo-random sequence, seed=3978544245        fill us:651597 MB/s:49.11        test us:2261119 MB/s:14.15
testing with pseudo-random sequence, seed=2315909796        fill us:653182 MB/s:48.99        test us:2261094 MB/s:14.15
testing with pseudo-random sequence, seed=3736286001        fill us:663588 MB/s:48.22        test us:2261097 MB/s:14.15
testing with pseudo-random sequence, seed=2876690683        fill us:657054 MB/s:48.70        test us:2261074 MB/s:14.15
testing with pseudo-random sequence, seed=215559886        fill us:654372 MB/s:48.90        test us:2261090 MB/s:14.15
testing with pseudo-random sequence, seed=539179291        fill us:652556 MB/s:49.04        test us:2261077 MB/s:14.15
testing with pseudo-random sequence, seed=537678650        fill us:652744 MB/s:49.02        test us:2261110 MB/s:14.15
testing with pseudo-random sequence, seed=4001405270        fill us:652059 MB/s:49.08        test us:2261117 MB/s:14.15
testing with pseudo-random sequence, seed=2169216599        fill us:651395 MB/s:49.13        test us:2261104 MB/s:14.15
testing with pseudo-random sequence, seed=4036891097        fill us:673149 MB/s:47.54        test us:2261097 MB/s:14.15
testing with pseudo-random sequence, seed=1535452389        fill us:652742 MB/s:49.02        test us:2261116 MB/s:14.15
testing with pseudo-random sequence, seed=2959727213        fill us:651598 MB/s:49.11        test us:2261097 MB/s:14.15
testing with pseudo-random sequence, seed=4219363395        fill us:655165 MB/s:48.84        test us:2261080 MB/s:14.15
testing with pseudo-random sequence, seed=1036929753        fill us:653183 MB/s:48.99        test us:2261066 MB/s:14.15
testing with pseudo-random sequence, seed=2125248865        fill us:658208 MB/s:48.62        test us:2261125 MB/s:14.15
testing with pseudo-random sequence, seed=3177905864        fill us:652897 MB/s:49.01        test us:2261092 MB/s:14.15
testing with pseudo-random sequence, seed=2399307098        fill us:651601 MB/s:49.11        test us:2261093 MB/s:14.15
testing with pseudo-random sequence, seed=3847634607        fill us:652739 MB/s:49.02        test us:2261146 MB/s:14.15
testing with pseudo-random sequence, seed=27467969        fill us:661405 MB/s:48.38        test us:2261086 MB/s:14.15
testing with pseudo-random sequence, seed=520563506        fill us:669956 MB/s:47.76        test us:2261095 MB/s:14.15
testing with pseudo-random sequence, seed=381313790        fill us:656474 MB/s:48.75        test us:2261057 MB/s:14.15
testing with pseudo-random sequence, seed=4174769276        fill us:652557 MB/s:49.04        test us:2261076 MB/s:14.15
testing with pseudo-random sequence, seed=3932189449        fill us:652556 MB/s:49.04        test us:2261102 MB/s:14.15
testing with pseudo-random sequence, seed=4079717394        fill us:677037 MB/s:47.26        test us:2261087 MB/s:14.15
testing with pseudo-random sequence, seed=868357076        fill us:661121 MB/s:48.40        test us:2261057 MB/s:14.15
testing with pseudo-random sequence, seed=2474062993        fill us:665019 MB/s:48.12        test us:2261093 MB/s:14.15
testing with pseudo-random sequence, seed=1502682190        fill us:653194 MB/s:48.99        test us:2261089 MB/s:14.15
testing with pseudo-random sequence, seed=2471230478        fill us:651722 MB/s:49.10        test us:2261099 MB/s:14.15
testing with pseudo-random sequence, seed=85016565        fill us:665013 MB/s:48.12        test us:2261068 MB/s:14.15
testing with pseudo-random sequence, seed=1427530695        fill us:665016 MB/s:48.12        test us:2261111 MB/s:14.15
testing with pseudo-random sequence, seed=1100533073        fill us:652889 MB/s:49.01        test us:2261130 MB/s:14.15
 test ran for 163.91 seconds
 3648 MBs test ran at 22.26 MB/sec overall
All memory tests passed :-)
 
Sorry, I am not very good at taking tests these days :LOL:

But wonder, if your configuration setup may not be geared to your usage cases? if you are mainly using this memory to read in from a camera or SD or ... using DMA access (or not), and then output to display again sequential access, where each memory location is accessed typically once.

Wondering if the memory cache is helping you or hurting you. My guess is the later. Have you tried running your test and/or display program with different cache settings on this region and see if it makes a difference....

Note this is also true for the tests run above, in each test you are only writing once to a specific memory and then reading it once... So again you are just thrashing the cache.

Edit: make it hopefully easier to understand.
 
Last edited:
Obviously for the random access tests the cache will be a hinderance, that is the point of including them (they are "worst-access" times).

For framebuffer usage access is typically sequential but it's nearly exclusively writes (from the CPU side), so having the cache fill a line just to overwrite it is wasteful; an unfortunate side-effect of using ARM Cortex which doesn't have a "allocate empty line" cache operation. But I have been wondering about the 2MB uncached MPU SDRAM region that the NXP SDK uses, which just so happens to be almost exactly the size of a 800x600x32bpp framebuffer... that was going to be an exercise for tomorrow, test setting the MPU region to uncached and rework the VGA code to use 16-bit access since that's the native data size of the SDRAM. In theory 32-bit access should be fine too since SEMC supports up to 8-cycle bursts.

(Regardless, the cache shouldn't really be an issue since using DMAMEM for the buffers does work and that memory is cached, there just isn't enough of it for two buffers unless the linker script is modified to reassign ITCM/DTCM memory to OCRAM.)
 
Last edited:
XBar Table - in HardwareSerial.cpp - (probably weak linkage)

FlexIO - in library flexio_t4 in the .cpp file - probably see about weak linkage. Will experiment. The good part is I own the library ;)
Sorry, I know I am mostly talking to myself... (And sometimes even answering myself) :unsure:

I updated, my core branch to support XBar pins. Probably missed some, but was more interested in can I update them, and not necessarily 100%
updated...

Note: my earlier comment in HardwareSerial.cpp about finding a better home for the table, still applies!

I am now trying to update XBAR pins. This is more of a challenge. As it is a library. Note: I am also experimenting updating my FlexIO_t4 library to move the pin mappings out of the main hardware object and into a pin mapping table object, as to make it easier to replace and extend. Also this removed the need for all 3 hardware objects to define the same number of pins... Have this working in my branch:

However still WIP, as having difficulty overwriting it in variant. Why I don't believe that the system is setup to allow things in variants (and probably) cores to allow them to include libraries... Maybe the can, but it is not currently finding it...

Also not sure if the code is easily allowing me to overwrite some class static const variables... May play with it some more...

Also found it interesting that, I have a simple test program:
Code:
#include <FlexIO_t4.h>

void setup() {
  // put your setup code here, to run once:
  while (!Serial) {}
  Serial.begin(115200);

  if (CrashReport) {
    Serial.print(CrashReport);
  }

//  Serial.printf("XBAR count %u\n", count_pin_to_xbar_info);
  Serial.printf("\nCount flex objects: %u\n", FlexIOHandler::CNT_FLEX_IO_OBJECT);
  Serial.printf("Count digital pins: %u\n", NUM_DIGITAL_PINS);
  Serial.printf("CORE_NUM_TOTAL_PINS: %u\n", CORE_NUM_TOTAL_PINS);
  Serial.printf("CORE_NUM_DIGITAL: %u\n", CORE_NUM_DIGITAL);
  Serial.printf("CORE_NUM_INTERRUPT: %u\n", CORE_NUM_INTERRUPT);
  Serial.printf("CORE_NUM_ANALOG: %u\n", CORE_NUM_ANALOG);
  for (uint8_t i = 0; i < FlexIOHandler::CNT_FLEX_IO_OBJECT; i++) {
    Serial.printf("FlexIO(%d %u) pins:", i, FlexIOHandler::flexIOHandler_list[i]->pinCount());
    for (uint8_t pin = 0; pin < CORE_NUM_DIGITAL; pin++) {
      uint8_t flex_pin = FlexIOHandler::flexIOHandler_list[i]->mapIOPinToFlexPin(pin);
      if (flex_pin != 0xff) Serial.printf(" %u:%u", pin, flex_pin);
    }
    Serial.println();
#if 0
    // now verify new tables
    const FlexIOHandler::FLEXIO_Hardware_t &hardware = FlexIOHandler::flexIOHandler_list[i]->hardware();
    const FlexIOHandler::FLEXIO_Pins_t *pins = FlexIOHandler::flexIOHandler_list[i]->pins();
    uint8_t pin_count = FlexIOHandler::flexIOHandler_list[i]->pinCount();
    bool errors = false;
    for (uint8_t j = 0; j < pin_count; j++) {
      if (j == FlexIOHandler::CNT_FLEX_PINS) {
        Serial.println("\tpin_count > CNT_FLEX_PINS");
        break;
      }
      if ((hardware.io_pin[j] != pins[j].io_pin) || (hardware.flex_pin[j] != pins[j].flex_pin) || (hardware.io_pin_mux[j] != pins[j].io_pin_mux)) {
        if (!errors) {
          errors = true;
          Serial.print("\t");
        }
        Serial.printf(" %u(%u %u %u)!= (%u %u %u)", j, hardware.io_pin[j], hardware.flex_pin[j], hardware.io_pin_mux[j],
                      pins[j].io_pin, pins[j].flex_pin, pins[j].io_pin_mux);
      }
      if ((pin_count < FlexIOHandler::CNT_FLEX_PINS) && (hardware.io_pin[pin_count] != 0xff)) {
        if (!errors) {
          errors = true;
          Serial.print("\t");
        }
        Serial.printf(" %u(%u %u %u) length", pin_count, hardware.io_pin[pin_count], hardware.flex_pin[pin_count], hardware.io_pin_mux[pin_count]);
      }
      if (errors) Serial.println();
    }
#endif   
  }
}

void loop() {
  // put your main code here, to run repeatedly:
}
Note a lot of it is now #ifdefed out, as I added it earlier when I had the pin information, still in hardware object and pin object, and wanted to verify I did not screw up the new tables... Compiled and verified on T4, T4.1 and MMOD...

But was getting some interesting results on counts of pins...
Code:
Count digital pins(NUM_DIGITAL_PINS): 46
CORE_NUM_TOTAL_PINS: 64
CORE_NUM_DIGITAL: 64
CORE_NUM_INTERRUPT: 64
CORE_NUM_ANALOG: 14

Wondering why we have two different sets of defines, here ...
The ones set in core_pins.h and others in pins_arduino.h

And internally the only place that NUM_DIGITAL_PINS is used within the core is in the define:
Code:
#define digitalPinToInterrupt(p)  ((p) < NUM_DIGITAL_PINS ? (p) : -1)
And that is done in two different files (core_pins.h and pins_arduino.h)...

Will back to playing, or maybe off to a different distraction.
🦗
 

Attachments

  • teensy-dev.zip
    14 KB · Views: 83
@Dogbone06 : some more cleanup/details on the sketch.
Top lines in sketch vars allow setting values for building with changes: Speed, NoCap
If built USB: Dual Serial, then TyCommander second SerMon shows detail of fails if it seems relevant. When it doesn't fail One Write and Three Reads of 32MB show 128 MB transfer in 0.98 seconds:

And the same # Write/Read on PsuedoRand takes longer as it has to recalculate the expected value each time to write and then test:
Great! I will play this weekend. Starting saturday. Will reach out to you then :)
 
Sorry, I know I am mostly talking to myself... (And sometimes even answering myself) :unsure:


I am now trying to update XBAR pins. This is more of a challenge. As it is a library. Note: I am also experimenting updating my FlexIO_t4 library to move the pin mappings out of the main hardware object and into a pin mapping table object, as to make it easier to replace and extend. Also this removed the need for all 3 hardware objects to define the same number of pins... Have this working in my branch:


Will back to playing, or maybe off to a different distraction.
🦗
Update: Oops I meant flexio.
Found a version that works. The FlexIo branch I mentioned was updated.
Variant zip file updated with how I am doing it...

Note my pin numbers. for pins on the right hand side...
1705975422997.png


I did a quick and dirty test of using the Teensy->USB Serial example USBtoSerial where I used this:
Code:
// set this to the hardware serial port you wish to use
#include <FlexSerial.h>
FlexSerial MySerial(61, 62); // pin 3 receive, pin 2 transmit
#define HWSERIAL MySerial

Nothing else changed as due to Paul's earlier changes to FlexIO and Serial to have common base class.
And have jumper from pins 61 to 62 and it echos :D

Done for today
 

Attachments

  • teensy-dev.zip
    14 KB · Views: 526
Regular test with MEM_CACHE_WBWA:
Code:
EXTMEM Memory Test, 32 Mbyte
EXTMEM frequency: 166.16 MHz
Beginning sequential access tests
testing with fixed pattern 5A698421             fill us:167782 MB/s:190.72              test us:374350 MB/s:85.48
testing with fixed pattern 55555555             fill us:167783 MB/s:190.72              test us:374349 MB/s:85.48
testing with fixed pattern 33333333             fill us:167783 MB/s:190.72              test us:374350 MB/s:85.48
testing with fixed pattern 0F0F0F0F             fill us:167783 MB/s:190.72              test us:374349 MB/s:85.48
testing with fixed pattern 00FF00FF             fill us:167785 MB/s:190.72              test us:374349 MB/s:85.48
testing with fixed pattern 0000FFFF             fill us:167783 MB/s:190.72              test us:374350 MB/s:85.48
testing with fixed pattern AAAAAAAA             fill us:167782 MB/s:190.72              test us:374350 MB/s:85.48
testing with fixed pattern CCCCCCCC             fill us:171158 MB/s:186.96              test us:374350 MB/s:85.48
testing with fixed pattern F0F0F0F0             fill us:167783 MB/s:190.72              test us:374349 MB/s:85.48
testing with fixed pattern FF00FF00             fill us:171238 MB/s:186.87              test us:374350 MB/s:85.48
testing with fixed pattern FFFF0000             fill us:171215 MB/s:186.90              test us:374350 MB/s:85.48
testing with fixed pattern FFFFFFFF             fill us:167782 MB/s:190.72              test us:374350 MB/s:85.48
testing with fixed pattern 00000000             fill us:167782 MB/s:190.72              test us:374349 MB/s:85.48
testing with pseudo-random sequence, seed=2976674124            fill us:391489 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=1438200953            fill us:391489 MB/s:81.74               test us:611036 MB/s:52.37
testing with pseudo-random sequence, seed=3413783263            fill us:391489 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=1900517911            fill us:391489 MB/s:81.74               test us:611036 MB/s:52.37
testing with pseudo-random sequence, seed=1227909400            fill us:391489 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=276562754             fill us:391489 MB/s:81.74               test us:611036 MB/s:52.37
testing with pseudo-random sequence, seed=146878114             fill us:391489 MB/s:81.74               test us:611038 MB/s:52.37
testing with pseudo-random sequence, seed=615545407             fill us:391489 MB/s:81.74               test us:611036 MB/s:52.37
testing with pseudo-random sequence, seed=110497896             fill us:391489 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=74539250              fill us:391489 MB/s:81.74               test us:611036 MB/s:52.37
testing with pseudo-random sequence, seed=4197336575            fill us:391489 MB/s:81.74               test us:611038 MB/s:52.37
testing with pseudo-random sequence, seed=2280382233            fill us:391490 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=542894183             fill us:391489 MB/s:81.74               test us:611038 MB/s:52.37
testing with pseudo-random sequence, seed=3978544245            fill us:391489 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=2315909796            fill us:391489 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=3736286001            fill us:391489 MB/s:81.74               test us:611036 MB/s:52.37
testing with pseudo-random sequence, seed=2876690683            fill us:391489 MB/s:81.74               test us:611036 MB/s:52.37
testing with pseudo-random sequence, seed=215559886             fill us:391489 MB/s:81.74               test us:611039 MB/s:52.37
testing with pseudo-random sequence, seed=539179291             fill us:391490 MB/s:81.74               test us:611036 MB/s:52.37
testing with pseudo-random sequence, seed=537678650             fill us:391489 MB/s:81.74               test us:611038 MB/s:52.37
testing with pseudo-random sequence, seed=4001405270            fill us:391489 MB/s:81.74               test us:611036 MB/s:52.37
testing with pseudo-random sequence, seed=2169216599            fill us:391489 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=4036891097            fill us:391489 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=1535452389            fill us:391489 MB/s:81.74               test us:611038 MB/s:52.37
testing with pseudo-random sequence, seed=2959727213            fill us:391489 MB/s:81.74               test us:611035 MB/s:52.37
testing with pseudo-random sequence, seed=4219363395            fill us:391489 MB/s:81.74               test us:611035 MB/s:52.37
testing with pseudo-random sequence, seed=1036929753            fill us:391489 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=2125248865            fill us:391489 MB/s:81.74               test us:611036 MB/s:52.37
testing with pseudo-random sequence, seed=3177905864            fill us:391489 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=2399307098            fill us:391490 MB/s:81.74               test us:611038 MB/s:52.37
testing with pseudo-random sequence, seed=3847634607            fill us:391490 MB/s:81.74               test us:611036 MB/s:52.37
testing with pseudo-random sequence, seed=27467969              fill us:391489 MB/s:81.74               test us:611036 MB/s:52.37
testing with pseudo-random sequence, seed=520563506             fill us:391490 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=381313790             fill us:391490 MB/s:81.74               test us:611036 MB/s:52.37
testing with pseudo-random sequence, seed=4174769276            fill us:391489 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=3932189449            fill us:391489 MB/s:81.74               test us:611036 MB/s:52.37
testing with pseudo-random sequence, seed=4079717394            fill us:391489 MB/s:81.74               test us:611038 MB/s:52.37
testing with pseudo-random sequence, seed=868357076             fill us:391490 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=2474062993            fill us:391489 MB/s:81.74               test us:611038 MB/s:52.37
testing with pseudo-random sequence, seed=1502682190            fill us:391489 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=2471230478            fill us:391489 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=85016565              fill us:391489 MB/s:81.74               test us:611037 MB/s:52.37
testing with pseudo-random sequence, seed=1427530695            fill us:391489 MB/s:81.74               test us:611038 MB/s:52.37
testing with pseudo-random sequence, seed=1100533073            fill us:391489 MB/s:81.74               test us:611037 MB/s:52.37
 test ran for 51.87 seconds
 3648 MBs test ran at 70.33 MB/sec overall
Beginning random access tests
testing with fixed pattern 5A698421             fill us:655618 MB/s:48.81               test us:1969319 MB/s:16.25
testing with fixed pattern 55555555             fill us:658791 MB/s:48.57               test us:1969354 MB/s:16.25
testing with fixed pattern 33333333             fill us:660302 MB/s:48.46               test us:1969364 MB/s:16.25
testing with fixed pattern 0F0F0F0F             fill us:659358 MB/s:48.53               test us:1969347 MB/s:16.25
testing with fixed pattern 00FF00FF             fill us:652500 MB/s:49.04               test us:1969327 MB/s:16.25
testing with fixed pattern 0000FFFF             fill us:659464 MB/s:48.52               test us:1969428 MB/s:16.25
testing with fixed pattern AAAAAAAA             fill us:652692 MB/s:49.03               test us:1969326 MB/s:16.25
testing with fixed pattern CCCCCCCC             fill us:655441 MB/s:48.82               test us:1969345 MB/s:16.25
testing with fixed pattern F0F0F0F0             fill us:652254 MB/s:49.06               test us:1969338 MB/s:16.25
testing with fixed pattern FF00FF00             fill us:659000 MB/s:48.56               test us:1969386 MB/s:16.25
testing with fixed pattern FFFF0000             fill us:652692 MB/s:49.03               test us:1969360 MB/s:16.25
testing with fixed pattern FFFFFFFF             fill us:652502 MB/s:49.04               test us:1969366 MB/s:16.25
testing with fixed pattern 00000000             fill us:652259 MB/s:49.06               test us:1969366 MB/s:16.25
testing with pseudo-random sequence, seed=2976674124            fill us:653126 MB/s:49.00               test us:2206137 MB/s:14.50
testing with pseudo-random sequence, seed=1438200953            fill us:653115 MB/s:49.00               test us:2206097 MB/s:14.51
testing with pseudo-random sequence, seed=3413783263            fill us:651350 MB/s:49.13               test us:2206124 MB/s:14.51
testing with pseudo-random sequence, seed=1900517911            fill us:651383 MB/s:49.13               test us:2206112 MB/s:14.51
testing with pseudo-random sequence, seed=1227909400            fill us:652676 MB/s:49.03               test us:2206140 MB/s:14.50
testing with pseudo-random sequence, seed=276562754             fill us:660014 MB/s:48.48               test us:2206131 MB/s:14.51
testing with pseudo-random sequence, seed=146878114             fill us:662699 MB/s:48.29               test us:2206121 MB/s:14.51
testing with pseudo-random sequence, seed=615545407             fill us:651569 MB/s:49.11               test us:2206099 MB/s:14.51
testing with pseudo-random sequence, seed=110497896             fill us:654072 MB/s:48.92               test us:2206108 MB/s:14.51
testing with pseudo-random sequence, seed=74539250              fill us:651379 MB/s:49.13               test us:2206122 MB/s:14.51
testing with pseudo-random sequence, seed=4197336575            fill us:651693 MB/s:49.10               test us:2206090 MB/s:14.51
testing with pseudo-random sequence, seed=2280382233            fill us:652515 MB/s:49.04               test us:2206108 MB/s:14.51
testing with pseudo-random sequence, seed=542894183             fill us:658921 MB/s:48.56               test us:2206112 MB/s:14.51
testing with pseudo-random sequence, seed=3978544245            fill us:651570 MB/s:49.11               test us:2206110 MB/s:14.51
testing with pseudo-random sequence, seed=2315909796            fill us:652511 MB/s:49.04               test us:2206099 MB/s:14.51
testing with pseudo-random sequence, seed=3736286001            fill us:651381 MB/s:49.13               test us:2206158 MB/s:14.50
testing with pseudo-random sequence, seed=2876690683            fill us:651345 MB/s:49.13               test us:2206106 MB/s:14.51
testing with pseudo-random sequence, seed=215559886             fill us:653686 MB/s:48.95               test us:2206138 MB/s:14.50
testing with pseudo-random sequence, seed=539179291             fill us:652501 MB/s:49.04               test us:2206135 MB/s:14.51
testing with pseudo-random sequence, seed=537678650             fill us:669117 MB/s:47.82               test us:2206103 MB/s:14.51
testing with pseudo-random sequence, seed=4001405270            fill us:659995 MB/s:48.49               test us:2206126 MB/s:14.51
testing with pseudo-random sequence, seed=2169216599            fill us:652682 MB/s:49.03               test us:2206115 MB/s:14.51
testing with pseudo-random sequence, seed=4036891097            fill us:655388 MB/s:48.83               test us:2206111 MB/s:14.51
testing with pseudo-random sequence, seed=1535452389            fill us:652516 MB/s:49.04               test us:2206115 MB/s:14.51
testing with pseudo-random sequence, seed=2959727213            fill us:658800 MB/s:48.57               test us:2206121 MB/s:14.51
testing with pseudo-random sequence, seed=4219363395            fill us:655080 MB/s:48.85               test us:2206133 MB/s:14.51
testing with pseudo-random sequence, seed=1036929753            fill us:653122 MB/s:49.00               test us:2206114 MB/s:14.51
testing with pseudo-random sequence, seed=2125248865            fill us:651581 MB/s:49.11               test us:2206107 MB/s:14.51
testing with pseudo-random sequence, seed=3177905864            fill us:652518 MB/s:49.04               test us:2206090 MB/s:14.51
testing with pseudo-random sequence, seed=2399307098            fill us:651348 MB/s:49.13               test us:2206108 MB/s:14.51
testing with pseudo-random sequence, seed=3847634607            fill us:653113 MB/s:49.00               test us:2206133 MB/s:14.51
testing with pseudo-random sequence, seed=27467969              fill us:651120 MB/s:49.15               test us:2206159 MB/s:14.50
testing with pseudo-random sequence, seed=520563506             fill us:651347 MB/s:49.13               test us:2206124 MB/s:14.51
testing with pseudo-random sequence, seed=381313790             fill us:656510 MB/s:48.74               test us:2206115 MB/s:14.51
testing with pseudo-random sequence, seed=4174769276            fill us:663397 MB/s:48.24               test us:2206086 MB/s:14.51
testing with pseudo-random sequence, seed=3932189449            fill us:660496 MB/s:48.45               test us:2206112 MB/s:14.51
testing with pseudo-random sequence, seed=4079717394            fill us:651346 MB/s:49.13               test us:2206138 MB/s:14.50
testing with pseudo-random sequence, seed=868357076             fill us:651350 MB/s:49.13               test us:2206118 MB/s:14.51
testing with pseudo-random sequence, seed=2474062993            fill us:652508 MB/s:49.04               test us:2206125 MB/s:14.51
testing with pseudo-random sequence, seed=1502682190            fill us:656323 MB/s:48.76               test us:2206096 MB/s:14.51
testing with pseudo-random sequence, seed=2471230478            fill us:652839 MB/s:49.02               test us:2206129 MB/s:14.51
testing with pseudo-random sequence, seed=85016565              fill us:655042 MB/s:48.85               test us:2206136 MB/s:14.50
testing with pseudo-random sequence, seed=1427530695            fill us:656491 MB/s:48.74               test us:2206099 MB/s:14.51
testing with pseudo-random sequence, seed=1100533073            fill us:651380 MB/s:49.13               test us:2206104 MB/s:14.51
 test ran for 160.69 seconds
 3648 MBs test ran at 22.70 MB/sec overall
All memory tests passed :-)

Test with MEM_CACHE_WT (Write-through):
Code:
EXTMEM Memory Test, 32 Mbyte
EXTMEM frequency: 166.16 MHz
Beginning sequential access tests
testing with fixed pattern 5A698421             fill us:170578 MB/s:187.60              test us:374350 MB/s:85.48
testing with fixed pattern 55555555             fill us:170591 MB/s:187.58              test us:374350 MB/s:85.48
testing with fixed pattern 33333333             fill us:170550 MB/s:187.63              test us:374350 MB/s:85.48
testing with fixed pattern 0F0F0F0F             fill us:170531 MB/s:187.65              test us:374349 MB/s:85.48
testing with fixed pattern 00FF00FF             fill us:170545 MB/s:187.63              test us:374349 MB/s:85.48
testing with fixed pattern 0000FFFF             fill us:170573 MB/s:187.60              test us:374350 MB/s:85.48
testing with fixed pattern AAAAAAAA             fill us:170558 MB/s:187.62              test us:374350 MB/s:85.48
testing with fixed pattern CCCCCCCC             fill us:170546 MB/s:187.63              test us:374350 MB/s:85.48
testing with fixed pattern F0F0F0F0             fill us:170529 MB/s:187.65              test us:374350 MB/s:85.48
testing with fixed pattern FF00FF00             fill us:170528 MB/s:187.65              test us:374350 MB/s:85.48
testing with fixed pattern FFFF0000             fill us:170595 MB/s:187.58              test us:374350 MB/s:85.48
testing with fixed pattern FFFFFFFF             fill us:170531 MB/s:187.65              test us:374349 MB/s:85.48
testing with fixed pattern 00000000             fill us:170563 MB/s:187.61              test us:374350 MB/s:85.48
testing with pseudo-random sequence, seed=2976674124            fill us:391489 MB/s:81.74               test us:611049 MB/s:52.37
testing with pseudo-random sequence, seed=1438200953            fill us:391490 MB/s:81.74               test us:611048 MB/s:52.37
testing with pseudo-random sequence, seed=3413783263            fill us:391490 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=1900517911            fill us:391489 MB/s:81.74               test us:611048 MB/s:52.37
testing with pseudo-random sequence, seed=1227909400            fill us:391490 MB/s:81.74               test us:611048 MB/s:52.37
testing with pseudo-random sequence, seed=276562754             fill us:391490 MB/s:81.74               test us:611046 MB/s:52.37
testing with pseudo-random sequence, seed=146878114             fill us:391490 MB/s:81.74               test us:611045 MB/s:52.37
testing with pseudo-random sequence, seed=615545407             fill us:391489 MB/s:81.74               test us:611048 MB/s:52.37
testing with pseudo-random sequence, seed=110497896             fill us:391490 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=74539250              fill us:391490 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=4197336575            fill us:391490 MB/s:81.74               test us:611048 MB/s:52.37
testing with pseudo-random sequence, seed=2280382233            fill us:391489 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=542894183             fill us:391490 MB/s:81.74               test us:611045 MB/s:52.37
testing with pseudo-random sequence, seed=3978544245            fill us:391489 MB/s:81.74               test us:611046 MB/s:52.37
testing with pseudo-random sequence, seed=2315909796            fill us:391490 MB/s:81.74               test us:611048 MB/s:52.37
testing with pseudo-random sequence, seed=3736286001            fill us:391489 MB/s:81.74               test us:611046 MB/s:52.37
testing with pseudo-random sequence, seed=2876690683            fill us:391490 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=215559886             fill us:391490 MB/s:81.74               test us:611046 MB/s:52.37
testing with pseudo-random sequence, seed=539179291             fill us:391490 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=537678650             fill us:391489 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=4001405270            fill us:391489 MB/s:81.74               test us:611046 MB/s:52.37
testing with pseudo-random sequence, seed=2169216599            fill us:391489 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=4036891097            fill us:391489 MB/s:81.74               test us:611046 MB/s:52.37
testing with pseudo-random sequence, seed=1535452389            fill us:391490 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=2959727213            fill us:391490 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=4219363395            fill us:391489 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=1036929753            fill us:391489 MB/s:81.74               test us:611046 MB/s:52.37
testing with pseudo-random sequence, seed=2125248865            fill us:391490 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=3177905864            fill us:391489 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=2399307098            fill us:391490 MB/s:81.74               test us:611045 MB/s:52.37
testing with pseudo-random sequence, seed=3847634607            fill us:391490 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=27467969              fill us:391490 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=520563506             fill us:391489 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=381313790             fill us:391489 MB/s:81.74               test us:611046 MB/s:52.37
testing with pseudo-random sequence, seed=4174769276            fill us:391489 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=3932189449            fill us:391489 MB/s:81.74               test us:611046 MB/s:52.37
testing with pseudo-random sequence, seed=4079717394            fill us:391490 MB/s:81.74               test us:611046 MB/s:52.37
testing with pseudo-random sequence, seed=868357076             fill us:391490 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=2474062993            fill us:391490 MB/s:81.74               test us:611048 MB/s:52.37
testing with pseudo-random sequence, seed=1502682190            fill us:391490 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=2471230478            fill us:391489 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=85016565              fill us:391490 MB/s:81.74               test us:611049 MB/s:52.37
testing with pseudo-random sequence, seed=1427530695            fill us:391490 MB/s:81.74               test us:611047 MB/s:52.37
testing with pseudo-random sequence, seed=1100533073            fill us:391490 MB/s:81.74               test us:611049 MB/s:52.37
 test ran for 51.89 seconds
 3648 MBs test ran at 70.30 MB/sec overall
Beginning random access tests
testing with fixed pattern 5A698421             fill us:651347 MB/s:49.13               test us:1969356 MB/s:16.25
testing with fixed pattern 55555555             fill us:651352 MB/s:49.13               test us:1969338 MB/s:16.25
testing with fixed pattern 33333333             fill us:651355 MB/s:49.13               test us:1969359 MB/s:16.25
testing with fixed pattern 0F0F0F0F             fill us:651357 MB/s:49.13               test us:1969352 MB/s:16.25
testing with fixed pattern 00FF00FF             fill us:651355 MB/s:49.13               test us:1969346 MB/s:16.25
testing with fixed pattern 0000FFFF             fill us:651349 MB/s:49.13               test us:1969402 MB/s:16.25
testing with fixed pattern AAAAAAAA             fill us:651354 MB/s:49.13               test us:1969337 MB/s:16.25
testing with fixed pattern CCCCCCCC             fill us:651348 MB/s:49.13               test us:1969322 MB/s:16.25
testing with fixed pattern F0F0F0F0             fill us:651353 MB/s:49.13               test us:1969350 MB/s:16.25
testing with fixed pattern FF00FF00             fill us:651353 MB/s:49.13               test us:1969357 MB/s:16.25
testing with fixed pattern FFFF0000             fill us:651348 MB/s:49.13               test us:1969384 MB/s:16.25
testing with fixed pattern FFFFFFFF             fill us:651354 MB/s:49.13               test us:1969332 MB/s:16.25
testing with fixed pattern 00000000             fill us:651353 MB/s:49.13               test us:1969348 MB/s:16.25
testing with pseudo-random sequence, seed=2976674124            fill us:651353 MB/s:49.13               test us:2206111 MB/s:14.51
testing with pseudo-random sequence, seed=1438200953            fill us:651352 MB/s:49.13               test us:2206131 MB/s:14.51
testing with pseudo-random sequence, seed=3413783263            fill us:651353 MB/s:49.13               test us:2206130 MB/s:14.51
testing with pseudo-random sequence, seed=1900517911            fill us:651351 MB/s:49.13               test us:2206148 MB/s:14.50
testing with pseudo-random sequence, seed=1227909400            fill us:651348 MB/s:49.13               test us:2206138 MB/s:14.50
testing with pseudo-random sequence, seed=276562754             fill us:651350 MB/s:49.13               test us:2206147 MB/s:14.50
testing with pseudo-random sequence, seed=146878114             fill us:651351 MB/s:49.13               test us:2206121 MB/s:14.51
testing with pseudo-random sequence, seed=615545407             fill us:651352 MB/s:49.13               test us:2206136 MB/s:14.50
testing with pseudo-random sequence, seed=110497896             fill us:651354 MB/s:49.13               test us:2206112 MB/s:14.51
testing with pseudo-random sequence, seed=74539250              fill us:651354 MB/s:49.13               test us:2206108 MB/s:14.51
testing with pseudo-random sequence, seed=4197336575            fill us:651348 MB/s:49.13               test us:2206151 MB/s:14.50
testing with pseudo-random sequence, seed=2280382233            fill us:651352 MB/s:49.13               test us:2206117 MB/s:14.51
testing with pseudo-random sequence, seed=542894183             fill us:651356 MB/s:49.13               test us:2206154 MB/s:14.50
testing with pseudo-random sequence, seed=3978544245            fill us:651355 MB/s:49.13               test us:2206105 MB/s:14.51
testing with pseudo-random sequence, seed=2315909796            fill us:651356 MB/s:49.13               test us:2206104 MB/s:14.51
testing with pseudo-random sequence, seed=3736286001            fill us:651348 MB/s:49.13               test us:2206156 MB/s:14.50
testing with pseudo-random sequence, seed=2876690683            fill us:651347 MB/s:49.13               test us:2206130 MB/s:14.51
testing with pseudo-random sequence, seed=215559886             fill us:651356 MB/s:49.13               test us:2206129 MB/s:14.51
testing with pseudo-random sequence, seed=539179291             fill us:651354 MB/s:49.13               test us:2206119 MB/s:14.51
testing with pseudo-random sequence, seed=537678650             fill us:651351 MB/s:49.13               test us:2206161 MB/s:14.50
testing with pseudo-random sequence, seed=4001405270            fill us:651349 MB/s:49.13               test us:2206127 MB/s:14.51
testing with pseudo-random sequence, seed=2169216599            fill us:651351 MB/s:49.13               test us:2206102 MB/s:14.51
testing with pseudo-random sequence, seed=4036891097            fill us:651355 MB/s:49.13               test us:2206159 MB/s:14.50
testing with pseudo-random sequence, seed=1535452389            fill us:651351 MB/s:49.13               test us:2206137 MB/s:14.50
testing with pseudo-random sequence, seed=2959727213            fill us:651354 MB/s:49.13               test us:2206138 MB/s:14.50
testing with pseudo-random sequence, seed=4219363395            fill us:651353 MB/s:49.13               test us:2206155 MB/s:14.50
testing with pseudo-random sequence, seed=1036929753            fill us:651353 MB/s:49.13               test us:2206121 MB/s:14.51
testing with pseudo-random sequence, seed=2125248865            fill us:651350 MB/s:49.13               test us:2206162 MB/s:14.50
testing with pseudo-random sequence, seed=3177905864            fill us:651354 MB/s:49.13               test us:2206103 MB/s:14.51
testing with pseudo-random sequence, seed=2399307098            fill us:651359 MB/s:49.13               test us:2206150 MB/s:14.50
testing with pseudo-random sequence, seed=3847634607            fill us:651348 MB/s:49.13               test us:2206117 MB/s:14.51
testing with pseudo-random sequence, seed=27467969              fill us:651356 MB/s:49.13               test us:2206133 MB/s:14.51
testing with pseudo-random sequence, seed=520563506             fill us:651353 MB/s:49.13               test us:2206134 MB/s:14.51
testing with pseudo-random sequence, seed=381313790             fill us:651354 MB/s:49.13               test us:2206114 MB/s:14.51
testing with pseudo-random sequence, seed=4174769276            fill us:651351 MB/s:49.13               test us:2206140 MB/s:14.50
testing with pseudo-random sequence, seed=3932189449            fill us:651351 MB/s:49.13               test us:2206115 MB/s:14.51
testing with pseudo-random sequence, seed=4079717394            fill us:651351 MB/s:49.13               test us:2206144 MB/s:14.50
testing with pseudo-random sequence, seed=868357076             fill us:651353 MB/s:49.13               test us:2206141 MB/s:14.50
testing with pseudo-random sequence, seed=2474062993            fill us:651350 MB/s:49.13               test us:2206134 MB/s:14.51
testing with pseudo-random sequence, seed=1502682190            fill us:651352 MB/s:49.13               test us:2206149 MB/s:14.50
testing with pseudo-random sequence, seed=2471230478            fill us:651350 MB/s:49.13               test us:2206121 MB/s:14.51
testing with pseudo-random sequence, seed=85016565              fill us:651350 MB/s:49.13               test us:2206110 MB/s:14.51
testing with pseudo-random sequence, seed=1427530695            fill us:651351 MB/s:49.13               test us:2206102 MB/s:14.51
testing with pseudo-random sequence, seed=1100533073            fill us:651354 MB/s:49.13               test us:2206108 MB/s:14.51
 test ran for 160.50 seconds
 3648 MBs test ran at 22.73 MB/sec overall
All memory tests passed :-)

Test with MEM_NOCACHE:
Code:
EXTMEM Memory Test, 32 Mbyte
EXTMEM frequency: 166.16 MHz
Beginning sequential access tests
testing with fixed pattern 5A698421             fill us:167781 MB/s:190.72              test us:1372724 MB/s:23.31
testing with fixed pattern 55555555             fill us:167782 MB/s:190.72              test us:1372724 MB/s:23.31
testing with fixed pattern 33333333             fill us:167782 MB/s:190.72              test us:1372725 MB/s:23.31
testing with fixed pattern 0F0F0F0F             fill us:175673 MB/s:182.16              test us:1372723 MB/s:23.31
testing with fixed pattern 00FF00FF             fill us:167782 MB/s:190.72              test us:1372725 MB/s:23.31
testing with fixed pattern 0000FFFF             fill us:167781 MB/s:190.72              test us:1372724 MB/s:23.31
testing with fixed pattern AAAAAAAA             fill us:167782 MB/s:190.72              test us:1372724 MB/s:23.31
testing with fixed pattern CCCCCCCC             fill us:167782 MB/s:190.72              test us:1372724 MB/s:23.31
testing with fixed pattern F0F0F0F0             fill us:167782 MB/s:190.72              test us:1372723 MB/s:23.31
testing with fixed pattern FF00FF00             fill us:167782 MB/s:190.72              test us:1372723 MB/s:23.31
testing with fixed pattern FFFF0000             fill us:167782 MB/s:190.72              test us:1372721 MB/s:23.31
testing with fixed pattern FFFFFFFF             fill us:167782 MB/s:190.72              test us:1372723 MB/s:23.31
testing with fixed pattern 00000000             fill us:167782 MB/s:190.72              test us:1372725 MB/s:23.31
testing with pseudo-random sequence, seed=2976674124            fill us:391490 MB/s:81.74               test us:1587606 MB/s:20.16
testing with pseudo-random sequence, seed=1438200953            fill us:391489 MB/s:81.74               test us:1587607 MB/s:20.16
testing with pseudo-random sequence, seed=3413783263            fill us:391490 MB/s:81.74               test us:1587608 MB/s:20.16
testing with pseudo-random sequence, seed=1900517911            fill us:391489 MB/s:81.74               test us:1587606 MB/s:20.16
testing with pseudo-random sequence, seed=1227909400            fill us:391489 MB/s:81.74               test us:1587607 MB/s:20.16
testing with pseudo-random sequence, seed=276562754             fill us:391489 MB/s:81.74               test us:1587607 MB/s:20.16
testing with pseudo-random sequence, seed=146878114             fill us:391489 MB/s:81.74               test us:1587609 MB/s:20.16
testing with pseudo-random sequence, seed=615545407             fill us:391489 MB/s:81.74               test us:1587610 MB/s:20.16
testing with pseudo-random sequence, seed=110497896             fill us:391490 MB/s:81.74               test us:1587608 MB/s:20.16
testing with pseudo-random sequence, seed=74539250              fill us:391490 MB/s:81.74               test us:1587608 MB/s:20.16
testing with pseudo-random sequence, seed=4197336575            fill us:391489 MB/s:81.74               test us:1587605 MB/s:20.16
testing with pseudo-random sequence, seed=2280382233            fill us:391490 MB/s:81.74               test us:1587608 MB/s:20.16
testing with pseudo-random sequence, seed=542894183             fill us:391490 MB/s:81.74               test us:1587608 MB/s:20.16
testing with pseudo-random sequence, seed=3978544245            fill us:391489 MB/s:81.74               test us:1587608 MB/s:20.16
testing with pseudo-random sequence, seed=2315909796            fill us:391489 MB/s:81.74               test us:1587607 MB/s:20.16
testing with pseudo-random sequence, seed=3736286001            fill us:391489 MB/s:81.74               test us:1587609 MB/s:20.16
testing with pseudo-random sequence, seed=2876690683            fill us:391490 MB/s:81.74               test us:1587606 MB/s:20.16
testing with pseudo-random sequence, seed=215559886             fill us:391489 MB/s:81.74               test us:1587608 MB/s:20.16
testing with pseudo-random sequence, seed=539179291             fill us:391490 MB/s:81.74               test us:1587608 MB/s:20.16
testing with pseudo-random sequence, seed=537678650             fill us:391490 MB/s:81.74               test us:1587608 MB/s:20.16
testing with pseudo-random sequence, seed=4001405270            fill us:391489 MB/s:81.74               test us:1587606 MB/s:20.16
testing with pseudo-random sequence, seed=2169216599            fill us:391490 MB/s:81.74               test us:1587608 MB/s:20.16
testing with pseudo-random sequence, seed=4036891097            fill us:391490 MB/s:81.74               test us:1587607 MB/s:20.16
testing with pseudo-random sequence, seed=1535452389            fill us:391489 MB/s:81.74               test us:1587605 MB/s:20.16
testing with pseudo-random sequence, seed=2959727213            fill us:391490 MB/s:81.74               test us:1587608 MB/s:20.16
testing with pseudo-random sequence, seed=4219363395            fill us:391489 MB/s:81.74               test us:1587605 MB/s:20.16
testing with pseudo-random sequence, seed=1036929753            fill us:391489 MB/s:81.74               test us:1587607 MB/s:20.16
testing with pseudo-random sequence, seed=2125248865            fill us:391489 MB/s:81.74               test us:1587606 MB/s:20.16
testing with pseudo-random sequence, seed=3177905864            fill us:391490 MB/s:81.74               test us:1587606 MB/s:20.16
testing with pseudo-random sequence, seed=2399307098            fill us:391489 MB/s:81.74               test us:1587607 MB/s:20.16
testing with pseudo-random sequence, seed=3847634607            fill us:391489 MB/s:81.74               test us:1587608 MB/s:20.16
testing with pseudo-random sequence, seed=27467969              fill us:391490 MB/s:81.74               test us:1587610 MB/s:20.16
testing with pseudo-random sequence, seed=520563506             fill us:391489 MB/s:81.74               test us:1587607 MB/s:20.16
testing with pseudo-random sequence, seed=381313790             fill us:391490 MB/s:81.74               test us:1587609 MB/s:20.16
testing with pseudo-random sequence, seed=4174769276            fill us:391490 MB/s:81.74               test us:1587605 MB/s:20.16
testing with pseudo-random sequence, seed=3932189449            fill us:391489 MB/s:81.74               test us:1587607 MB/s:20.16
testing with pseudo-random sequence, seed=4079717394            fill us:391489 MB/s:81.74               test us:1587608 MB/s:20.16
testing with pseudo-random sequence, seed=868357076             fill us:391489 MB/s:81.74               test us:1587608 MB/s:20.16
testing with pseudo-random sequence, seed=2474062993            fill us:391489 MB/s:81.74               test us:1587607 MB/s:20.16
testing with pseudo-random sequence, seed=1502682190            fill us:391489 MB/s:81.74               test us:1587607 MB/s:20.16
testing with pseudo-random sequence, seed=2471230478            fill us:391489 MB/s:81.74               test us:1587606 MB/s:20.16
testing with pseudo-random sequence, seed=85016565              fill us:391489 MB/s:81.74               test us:1587607 MB/s:20.16
testing with pseudo-random sequence, seed=1427530695            fill us:391489 MB/s:81.74               test us:1587607 MB/s:20.16
testing with pseudo-random sequence, seed=1100533073            fill us:391489 MB/s:81.74               test us:1587608 MB/s:20.16
 test ran for 107.81 seconds
 3648 MBs test ran at 33.84 MB/sec overall
Beginning random access tests
testing with fixed pattern 5A698421             fill us:651378 MB/s:49.13               test us:1707476 MB/s:18.74
testing with fixed pattern 55555555             fill us:651379 MB/s:49.13               test us:1707446 MB/s:18.74
testing with fixed pattern 33333333             fill us:651378 MB/s:49.13               test us:1707450 MB/s:18.74
testing with fixed pattern 0F0F0F0F             fill us:651382 MB/s:49.13               test us:1707498 MB/s:18.74
testing with fixed pattern 00FF00FF             fill us:651380 MB/s:49.13               test us:1707467 MB/s:18.74
testing with fixed pattern 0000FFFF             fill us:651378 MB/s:49.13               test us:1707459 MB/s:18.74
testing with fixed pattern AAAAAAAA             fill us:651378 MB/s:49.13               test us:1707487 MB/s:18.74
testing with fixed pattern CCCCCCCC             fill us:651377 MB/s:49.13               test us:1707483 MB/s:18.74
testing with fixed pattern F0F0F0F0             fill us:651376 MB/s:49.13               test us:1707460 MB/s:18.74
testing with fixed pattern FF00FF00             fill us:651381 MB/s:49.13               test us:1707475 MB/s:18.74
testing with fixed pattern FFFF0000             fill us:651381 MB/s:49.13               test us:1707488 MB/s:18.74
testing with fixed pattern FFFFFFFF             fill us:651380 MB/s:49.13               test us:1707498 MB/s:18.74
testing with fixed pattern 00000000             fill us:651379 MB/s:49.13               test us:1707472 MB/s:18.74
testing with pseudo-random sequence, seed=2976674124            fill us:651375 MB/s:49.13               test us:1952633 MB/s:16.39
testing with pseudo-random sequence, seed=1438200953            fill us:651380 MB/s:49.13               test us:1952640 MB/s:16.39
testing with pseudo-random sequence, seed=3413783263            fill us:651381 MB/s:49.13               test us:1952654 MB/s:16.39
testing with pseudo-random sequence, seed=1900517911            fill us:651376 MB/s:49.13               test us:1952617 MB/s:16.39
testing with pseudo-random sequence, seed=1227909400            fill us:651378 MB/s:49.13               test us:1952626 MB/s:16.39
testing with pseudo-random sequence, seed=276562754             fill us:651379 MB/s:49.13               test us:1952643 MB/s:16.39
testing with pseudo-random sequence, seed=146878114             fill us:651381 MB/s:49.13               test us:1952607 MB/s:16.39
testing with pseudo-random sequence, seed=615545407             fill us:651377 MB/s:49.13               test us:1952646 MB/s:16.39
testing with pseudo-random sequence, seed=110497896             fill us:651375 MB/s:49.13               test us:1952636 MB/s:16.39
testing with pseudo-random sequence, seed=74539250              fill us:651377 MB/s:49.13               test us:1952639 MB/s:16.39
testing with pseudo-random sequence, seed=4197336575            fill us:651378 MB/s:49.13               test us:1952646 MB/s:16.39
testing with pseudo-random sequence, seed=2280382233            fill us:651378 MB/s:49.13               test us:1952651 MB/s:16.39
testing with pseudo-random sequence, seed=542894183             fill us:651380 MB/s:49.13               test us:1952641 MB/s:16.39
testing with pseudo-random sequence, seed=3978544245            fill us:651378 MB/s:49.13               test us:1952638 MB/s:16.39
testing with pseudo-random sequence, seed=2315909796            fill us:651380 MB/s:49.13               test us:1952630 MB/s:16.39
testing with pseudo-random sequence, seed=3736286001            fill us:651378 MB/s:49.13               test us:1952646 MB/s:16.39
testing with pseudo-random sequence, seed=2876690683            fill us:651380 MB/s:49.13               test us:1952647 MB/s:16.39
testing with pseudo-random sequence, seed=215559886             fill us:651378 MB/s:49.13               test us:1952646 MB/s:16.39
testing with pseudo-random sequence, seed=539179291             fill us:651381 MB/s:49.13               test us:1952634 MB/s:16.39
testing with pseudo-random sequence, seed=537678650             fill us:651379 MB/s:49.13               test us:1952636 MB/s:16.39
testing with pseudo-random sequence, seed=4001405270            fill us:651379 MB/s:49.13               test us:1952650 MB/s:16.39
testing with pseudo-random sequence, seed=2169216599            fill us:651380 MB/s:49.13               test us:1952652 MB/s:16.39
testing with pseudo-random sequence, seed=4036891097            fill us:651379 MB/s:49.13               test us:1952630 MB/s:16.39
testing with pseudo-random sequence, seed=1535452389            fill us:651380 MB/s:49.13               test us:1952634 MB/s:16.39
testing with pseudo-random sequence, seed=2959727213            fill us:651382 MB/s:49.13               test us:1952637 MB/s:16.39
testing with pseudo-random sequence, seed=4219363395            fill us:651379 MB/s:49.13               test us:1952634 MB/s:16.39
testing with pseudo-random sequence, seed=1036929753            fill us:651376 MB/s:49.13               test us:1952650 MB/s:16.39
testing with pseudo-random sequence, seed=2125248865            fill us:651378 MB/s:49.13               test us:1952618 MB/s:16.39
testing with pseudo-random sequence, seed=3177905864            fill us:651377 MB/s:49.13               test us:1952639 MB/s:16.39
testing with pseudo-random sequence, seed=2399307098            fill us:651379 MB/s:49.13               test us:1952627 MB/s:16.39
testing with pseudo-random sequence, seed=3847634607            fill us:651377 MB/s:49.13               test us:1952636 MB/s:16.39
testing with pseudo-random sequence, seed=27467969              fill us:651378 MB/s:49.13               test us:1952613 MB/s:16.39
testing with pseudo-random sequence, seed=520563506             fill us:651378 MB/s:49.13               test us:1952642 MB/s:16.39
testing with pseudo-random sequence, seed=381313790             fill us:651381 MB/s:49.13               test us:1952639 MB/s:16.39
testing with pseudo-random sequence, seed=4174769276            fill us:651380 MB/s:49.13               test us:1952660 MB/s:16.39
testing with pseudo-random sequence, seed=3932189449            fill us:651379 MB/s:49.13               test us:1952612 MB/s:16.39
testing with pseudo-random sequence, seed=4079717394            fill us:651380 MB/s:49.13               test us:1952642 MB/s:16.39
testing with pseudo-random sequence, seed=868357076             fill us:651379 MB/s:49.13               test us:1952623 MB/s:16.39
testing with pseudo-random sequence, seed=2474062993            fill us:651378 MB/s:49.13               test us:1952636 MB/s:16.39
testing with pseudo-random sequence, seed=1502682190            fill us:651380 MB/s:49.13               test us:1952632 MB/s:16.39
testing with pseudo-random sequence, seed=2471230478            fill us:651381 MB/s:49.13               test us:1952623 MB/s:16.39
testing with pseudo-random sequence, seed=85016565              fill us:651378 MB/s:49.13               test us:1952650 MB/s:16.39
testing with pseudo-random sequence, seed=1427530695            fill us:651378 MB/s:49.13               test us:1952651 MB/s:16.39
testing with pseudo-random sequence, seed=1100533073            fill us:651377 MB/s:49.13               test us:1952637 MB/s:16.39
 test ran for 145.94 seconds
 3648 MBs test ran at 25.00 MB/sec overall
All memory tests passed :-)

Write speeds are pretty much the same for all modes so doesn't really matter for framebuffer usage... except for WT or NOCACHE you don't need to bother manually flushing the cache.
 
Regular test with MEM_CACHE_WBWA:
...
Write speeds are pretty much the same for all modes so doesn't really matter for framebuffer usage... except for WT or NOCACHE you don't need to bother manually flushing the cache.
Something unique about write .vs. read speed - prior post from NXP docs - write is about 3X faster 'by design'
So, it has some unique path/process/handling between the two.
 
Writing simply is faster by design because it's a "one step" transaction - the CPU says "put THIS data at THIS location" and then goes on with its other business. For a read it says "retrieve the data at THIS location" and then has to wait around for the RAM to respond.

The specification PDF for the SDRAM gives details with the clock diagrams for READ and WRITE operations, READ shows there are X cycles delay (depending on the set CAS Latency) between when the command is received and when data is returned:
read_burst.png

but for a WRITE operation the data is sent at the same time as the command and address so the overall operation is completed sooner:
write_burst.png
 
That very much depends on how you interpret a "write"... if the cache is enabled in write-back mode and you repeatedly write from the CPU to the same location, the speed of the SDRAM is irrelevant because it will always hit the cache and never get flushed...
 
Wondering if the memory cache is helping you or hurting you. My guess is the later. Have you tried running your test and/or display program with different cache settings on this region and see if it makes a difference....
Seem to remember some detailed discussion on the DMA and Cache settings from way back in beta testing days (thats about 5years ago now). So did some searching
DMA Problem - Cache - start of discussion

OCRAM and DMA operations: - start of discussion

and this one only because I found it interesting: https://forum.pjrc.com/index.php?threads/t4-memory-to-memory-using-dma.69845/
 
Looks like there is some good news... I have (very basic) LCDIF code running and it is able to push 1024x768x60@8bpp (dual-buffered) without any problems... and can even manage 1280x1024x60Hz if the SDRAM is overclocked to 200MHz.
I'm not exactly sure how it's managing it, but it's nice to see. Need to tweak the code some more to see what the limits are with higher bitdepths (16/24bpp).
The IMXRT does get a bit hot to touch but there's no tempmon warnings yet so I assume it's fine.
 
Looks like there is some good news... I have (very basic) LCDIF code running and it is able to push 1024x768x60@8bpp (dual-buffered) without any problems... and can even manage 1280x1024x60Hz if the SDRAM is overclocked to 200MHz.
I'm not exactly sure how it's managing it, but it's nice to see. Need to tweak the code some more to see what the limits are with higher bitdepths (16/24bpp).
The IMXRT does get a bit hot to touch but there's no tempmon warnings yet so I assume it's fine.
Mind sharing what you have so far?
I'm still waiting on my LCD breakout boards and would love to have something ready to go when I get them
 
Mind sharing what you have so far?
I'm still waiting on my LCD breakout boards and would love to have something ready to go when I get them

LCDIF requires 64-byte aligned buffers, the extmem_malloc interface doesn't have a way to request aligned allocations... should probably fix that.
 
Back
Top