Dear all,
I'm using C6670 EVM. I'm loading my application into DDR3 using Ethernet RBL (ROM Boot Loader). I am not using I2C Intermediate Boot Loader.. So, my board is properly configured for Ethernet boot and everything works as expected.
However, I'm worried about the following: DDR3 configuration by RBL does not include leveling configuration (read or write leveling). I have checked this in Table 2-3 "DDR configuration" in Keystone Architecture Bootloader User Guide (SPRUGY5B). RBL writes into DDR3 PLL configuration, SDRAM Config Register, Timing, PHY CTL, etc, but not into Leveling configuration.
Without leveling configuration, I think that RBL access to DDR3 might not be reliable. One easy solution for this would be slowering down DDR3 clock frequency by PLL configuration. Slow access to DDR3 might not need leveling. However, when I configure DDR3 PLL to 400MHz (this means DDR3-800 access, while default configuration for EVMC6670 is DDR3-1333), RBL can't write to DDR3. So my application won't work. Any DDR3 PLL frequency below default configuration (666.67MHz) won't work. I am updating also timing parameters for the new frequency values without success.
I'm writting the following boot table section into my application binary.
00 00 00 70 00 8F 35 00 02 42 80 F5 00 00 00 00 00 00 00 14 00 00 00 02
63 06 2A 32 00 00 00 00 00 00 14 50 11 13 78 3C 30 71 7F E3 55 9F 86 AF
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 70 07 32 14 00 00 00 00 00 10 01 0F 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
According to "tiboot_c66x.h" (because Table 2-3 in SPRUGY5B has an errata), those 3 words in bold above are for DDR3 PLL configuration. That configuration above works perfectly (again, without leveling so I don't truts it to work 100% of the booting processes). 0x14 == 20 (multiplier). 0x2 (dividier). 66.67MHz x 20 / 2 = 666.67MHz appropiate for DDR3-1333 operation.
Changing DDR3 configuration into DDR3-800 (400MHz clk):
00 00 00 70 00 8F 35 00 02 42 80 F5 00 00 00 00 00 00 00 0C 00 00 00 02
63 06 2A 32 00 00 00 00 00 00 14 50 11 13 78 3C 30 71 7F E3 55 9F 86 AF
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 70 07 32 14 00 00 00 00 00 10 01 0F 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Above configuration won't work.
Please note that I can configure DDR3 PLL to 400MHz with Emulator editing GEL files and it works properly.
To summarize:
1) I'm worried about lack of DDR3 leveling configuration in RBL
2) I don't understand why I can't configure DDR3 PLL to 400MHz using RBL (indeed, any value below 666.67MHz won't work). I think this could be a feasible solution for the problem in 1).
Thanks in advance.
Regards,
Ricardo