[U-Boot-Users] My board doesn't boot - ram controller problem?
Peter Asemann
peter.asemann at web.de
Thu Jun 2 16:56:38 CEST 2005
Hi there!
I've made tests to make sure my hardware boots before trying to run the
u-boot. I found out it doesn't boot. So this question isn't that u-boot
related; but it's close.
To test booting I wrote a very small assembler program (9 lines) which
switches on a LED on my custom MPC875 powererd board and then loops forever.
I had the following assumptions:
1. The MPC875 will try to boot from 0xfff00100 due to my HRCW settings,
which cause MSR[IP] to be "1".
2. The whole memory is tiled with the first 64K of the flash due to the
fact that OR0 is 0x00000ff4 when the board boots, which should mask out
the first 16 Bit of any address, so 0xffffxxxx addresses the same memory
location as 0x0000xxxx.
I succeeded flashing my testprogram to 0x100 in the flash. The program
run within flash by the telling the debugger to jump to 0x100. Switching
off and on the board, nothing happened.
So I took a closer look on the memory in the debugger to make sure my
assumptions were correct, and found out that assumption 2 seem not to
fit the real world.
Though the OR0 should mask the whole first 16Bit of the address (so
0xffff0100 should be the same as 0x00000100), it doesn't really do that.
Only the first 8 bit of the address are completely ignored, so
0xff000100 is the same as 0x00000100. But 0xff800100 isn't, it seems to
show empty flash (0xffffffff), I found out when looking into memory
using the debugger.
Actually I have no idea what's wrong. I didn't find a hint in the MPC
manual this could happen. I feel like maybe I'd understand that if I
already had read the comment about relocating memory and the MPC manual
often enough as I was told... but I didn't do that yet.
Maybe the fact that my flash is 16MB (0x1000000) big kind of disables
the OR-masking-mechanism?
That could mean I need to put my "boot code" at 0xf00100 in my flash or
change the board's setup so that IMMR is at 0xff000000 (instead of 0x0)
and MSR[IP] is "0" instead of "1", so the board will really boot from 0x100.
Whatever. Any hints?
Best regards,
Peter Asemann
More information about the U-Boot
mailing list