Hey guys,
I've got a custom OMAP3503 board with 256Mbytes of LPDDR
memory (single die, x32-bit) that i've got working with x-loader and u-
boot. However, when i load the Linux kernel, it randomly produces the
following errors:
1) Stops midway through the "Uncompressing Linux ...." stage, and this
is arbitrary and random on different attempts
2) If it ever does go through, it sometimes displays "invalid
compressed format (err = 2)" or "crc error", and says "System halted"
3) If i disable caching in the kernel (in arch/arm/boot/compressed.S,
line 233 "bl cache_on"), it at least completes the Uncompressing stage
fine and proceeds to print "....... done, booting the kernel.", at
which point it does not boot (most likely since i disabled the
caching)
4) If i reset the board (not power-cycle) after the board hang above,
and do a crc32 check on the kernel image in DDR memory (this is
possible since DDR2 memory contents do not get changed after a soft-
reset), it matches the CRC32 that i have calculated manually on the
kernel image. This shows that the main kernel image (from which it is
uncompressed) is still intact.
I've run my own DDR2 tester using the ROM bootloader, and done address/
bus stuck-at testing as well as complete psuedo-random data testing on
the full 256MByte memory. They all check out fine. The only difference
i have from the BeagleBoard is that i'm using the CUS 0.65mm packaged
version of the OMAP3503 as well as a non-POP LPDDR memory with single
die (not dual die in the Beagle Board) - hence, i had to modify the
DDR MCFG register for 14-bit RAS width and 256MByte CS space to get
this to work properly.
If you guys have any ideas, please do help as i'm at my wits end!
Thank you kindly,
Jerry