XO 1.75 Memory Test

From OLPC
Jump to: navigation, search

The following information is only needed for debugging the timing parameters for a new DDR3 DRAM for the XO-1.75 laptop.

Memory Configuration

You will need a serial cable attached. Hold down the "rotate" key (near the screen) while booting the laptop, in order to stop the boot in CForth. You should see something like:

CForth built 2011-12-28 10:11 from commit f550eeba...
Using lower core voltage
Skipping OFW
ok

At this point, the DDR3 memory has not been initialized. There is a table with most of the memory configuration parameters loaded in memory, which you can modify. You can see a listing of this table using the ".table" command. The first column is the actual address in memory of that row of the table. The second column is the value being written to a configuration register. The third column is the address of the configuration register being written:

ok .table 
d100d8f0 :        0 d0000b40
d100d8f8 :        0 d0000b50
d100d900 : 911500ca d0000050
d100d908 : 64660404 d0000060
d100d910 : c2003053 d0000190
d100d918 : 34f4a187 d00001c0
d100d920 :    f0141 d0000650
d100d928 :  4040200 d0000660
d100d930 : 90045000 d0000080
d100d938 :  f080000 d0000090
d100d940 : c0000000 d00000f0
d100d948 : 20c08009 d00001a0
d100d950 :  1010101 d0000280
d100d958 :        1 d0000760
d100d960 :  1000002 d0000770
d100d968 :       33 d0000780
d100d970 :  1010101 d00007b0
d100d978 :        1 d00007d0
d100d980 :        0 d00007e0
d100d988 :        0 d0000540
d100d990 :        1 d0000570
d100d998 :        0 d0000580
d100d9a0 :        0 d0000590
d100d9a8 :        0 d00005a0
d100d9b0 :        0 d00005b0
d100d9b8 :        0 d0000180
d100d9c0 : 20004033 d0000140
d100d9c8 : 17784799 d00001d0
d100d9d0 :  7700790 d00001e0
d100d9d8 :       77 d00001f0
d100d9e0 : f0000040 d0000230
d100d9e8 :       40 d0000e10
d100d9f0 :       40 d0000e20
d100d9f8 :       40 d0000e30
d100da00 : 20000000 d0000240
d100da08 : 40000000 d0000240
d100da10 :        0 d0000e40
d100da18 :        0 d0000e50
d100da20 :  1000001 d0000120
ok

After modifying the table, you can initialize the memory using the "init1". You can then either test the memory (see below) or start OFW using the "ofw" command.

The memory may only be initialized once. init1 only works the first time (it doesn't even try after that). To test a different memory configuration you need to power cycle the laptop.

Memory Test Commands

In the following commands, if no error is encountered the error address returned is -1 (0xFFFFFFFF).

lfill ( address length value -- )
lcheck ( address length value -- error_address )
inc-fill (address length -- )
inc-check (address length -- error_address )
random-fill ( address length -- )
random-check ( address length -- error_address )

Beware that only the lower 256MB of memory can be tested using CForth. The next 256MB are aliases of the lower 256MB!

If you run a memory test without first initializing the memory using "init1", the processor will silently hang.

For example, a quick test of the lower 1 MB of memory would be:

0 100000 random-fill
0 100000 random-check .