XO 1.75 Memory Test: Difference between revisions
Line 9: | Line 9: | ||
ok |
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 |
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. |
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. |
Latest revision as of 15:46, 6 June 2012
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 .