[U-Boot] Incorrect memtest range on MPC8536DS

Hi,
If run without arguments, mtest hangs on MPC8536DS. I guess this is because of the following definitions:
#define CONFIG_SYS_MEMTEST_START 0x00000000 #define CONFIG_SYS_MEMTEST_END 0x7fffffff
I was able to successfully run mtest on 0x00100000 - 0x10000000.
What is the largest safe range for this platform ?
Thanks.
Felix.

Dear Felix Radensky,
In message 4A843B9B.2000203@embedded-sol.com you wrote:
Hi,
If run without arguments, mtest hangs on MPC8536DS. I guess this is because of the following definitions:
#define CONFIG_SYS_MEMTEST_START 0x00000000 #define CONFIG_SYS_MEMTEST_END 0x7fffffff
I was able to successfully run mtest on 0x00100000 - 0x10000000.
What is the largest safe range for this platform ?
It depends on RAM size and stack usage. Usually 1 or 2 MB below stack base is safe enough.
Best regards,
Wolfgang Denk

Hi, Wolfgang
Wolfgang Denk wrote:
Dear Felix Radensky,
In message 4A843B9B.2000203@embedded-sol.com you wrote:
Hi,
If run without arguments, mtest hangs on MPC8536DS. I guess this is because of the following definitions:
#define CONFIG_SYS_MEMTEST_START 0x00000000 #define CONFIG_SYS_MEMTEST_END 0x7fffffff
I was able to successfully run mtest on 0x00100000 - 0x10000000.
What is the largest safe range for this platform ?
It depends on RAM size and stack usage. Usually 1 or 2 MB below stack base is safe enough.
Thanks for clarifying. This platform has 512MB of RAM. The stack pointer is at 0x1fe2df48. Test works fine with upper limit set to 0x1fd2df48.
For some reason I cannot set lower limit to 0x00000000. The lowest working address is 0x00000a98. At 0x00000a97 the test hangs, and at 0x00000a96 I get the following crash:
IP: 1FF30000 XER: 20000000 LR: 1FF30000 REGS: 1fe2dbd0 TRAP: 0700 DAR: 00000000 MSR: 00001000 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 00
GPR00: 1FF30000 1FE2DCC0 1FE2DF64 1FE2DCD0 00000001 0000000C FFFFFFFF 00000000 GPR08: 1FF99715 0000398C FFFFFFFF 1FFB0120 48022084 5E36E3C4 1FFA9F00 00000000 GPR16: 1FF54880 1FF96508 00000000 1FF996F8 00001000 1FE2DCC0 00000000 1FF30000 GPR24: 1FF33AE8 00000A96 00000001 1FD2DF48 00000000 1FE35648 1FFAABE0 00000003 ** Illegal Instruction ** Call backtrace: 1FF30000 1FF4A524 1FF56924 1FF5600C 1FF5618C 1FF58CEC 1FF33748 1FF315FC Program Check Exception ### ERROR ### Please RESET the board ###
The faulting address (0x1FF30000) seems to be the relocation address, as the following debug messages indicate:
Top of RAM usable for U-Boot at: 20000000 Reserving 805k for U-Boot at: 1ff30000 Reserving 1032k for malloc() at: 1fe2e000 Reserving 80 Bytes for Board Info at: 1fe2dfb0 Reserving 76 Bytes for Global Data at: 1fe2df64 Stack Pointer at: 1fe2df48 New Stack Pointer is: 1fe2df48 Now running in RAM - U-Boot at: 1ff30000
Can you (or Kumar) please explain what's going on here ?
Thanks a lot.
Felix.

Dear Felix Radensky,
In message 4A869531.2090706@embedded-sol.com you wrote:
Thanks for clarifying. This platform has 512MB of RAM. The stack pointer is at 0x1fe2df48. Test works fine with upper limit set to 0x1fd2df48.
I recommend to set CONFIG_SYS_MEMTEST_END to 0x1F000000, then.
For some reason I cannot set lower limit to 0x00000000. The lowest working address is 0x00000a98. At 0x00000a97 the test hangs, and at 0x00000a96 I get the following crash:
Indeed. The exception vectors are located there, and as soon as you overwrite these the next timer interrupt will crash your system.
Can you (or Kumar) please explain what's going on here ?
Set CONFIG_SYS_MEMTEST_START to 0x0010000 or so.
Best regards,
Wolfgang Denk
participants (2)
-
Felix Radensky
-
Wolfgang Denk