> And it showes that only DDR_CR41 is different. uboot.bin is using 0x00C80064,
> and working project is using 0x00000064.
The obvious thing to do is to change U-Boot to match the "working project". Have you tried that? Did it start working?
> What this meaning?
The Reference Manual has a chapter on the SDR/DDR controller. It has a section listing all the registers and describing all the fields in all the registers.
That one is described as being for:
21.4.42 DDR Control Register 41 (DDR_CR41)
31–16: TDLL: DLL lock time in cycles.
There's a BIG CLUE to your U-Boot problem where it then says:
Note: This field must be cleared.
=============
There are 49 control registers. I've never seen a controller with so many registers! All the other manuals I've seen have a big section detailing how to set up the controller. Not this one, here's all it says:
21.6 Initialization/Application Information
The memory controller requires a sequence for correct operation after power to the microcontroller and
memory devices is stable. When initialized, the memory controller automatically initializes the memory
devices.
The procedure to initialize the memory controller is as follows:
1. Issue write register commands to configure the DRAM protocols and the settings for the DCC.
Keep DDR_CR09[START] cleared during this initialization step.
2. Set DDR_CR09[START]. This triggers the memory controller to execute the initialization
sequence using the parameters written into the registers. The memory controller waits for the PHY
to indicate that the PHY and memory devices are ready to accept commands.
That's ALL it says. Are there any Application Notes to help set up the other 48 registers for this part?
Tom