[U-Boot] Hangs at relocation on 460EX Target

Stefan Roese sr at denx.de
Wed Oct 22 07:12:30 CEST 2008


On Tuesday 21 October 2008, Ayman M. El-Khashab wrote:
> > How about reading the code?
>
> (Looking at canyonlands.h)
>
> Ok, I took a look at this and the autocalibration is not obvious.  It looks
> like there is a currently a hardcoded RQDC value of 80000038.  If this is
> undefined then the code will go into the autocalibration mode.  So
> I've undefined it and sure enough it goes into autocalibration.  The part
> that is odd is that the autocal does not work on the Canyonlands board.  If
> it is enabled, then the Canyonlands fails in the same way as our hardware.
> I.e. right at the time of relocation, it just hangs.  When set back to the
> hardcoded value, the canyonlands works fine.
>
> Perusing the code, the only sort of exception that I noticed was one for
> the Katmai.  During operation I don't see the code fail to find the window,
> so it appears that it finds a suitable value.  When examined with the
> abatron it looks like a value is set into the mfio_rqdc register.
>
> So I am somewhat puzzled.  It is not obvious to me why the autocal is
> failing to work on the canyonlands.

Yes, there have been issues with the "old" autocalibration code on some boards. That's one 
reason that AMCC provided a new version just a few weeks ago:

075d0b81e896e8735ae26372cd384f87cbd24e41

ppc4xx: IBM Memory Controller DDR autocalibration routines

    Alternate SDRAM DDR autocalibration routine that can be generically used
    for any PPC4xx chips that have the IBM SDRAM Controller core allowing for
    support of more DIMM/memory chip vendors and gets the DDR autocalibration
    values which give the best read latency performance (SDRAM0_RDCC.[RDSS]).
    
    Two alternate SDRAM DDR autocalibration algoritm are provided in this patch,
    "Method_A" and "Method_B".  DDR autocalibration Method_A scans the full range
    of possible PPC4xx  SDRAM Controller DDR autocalibration values and takes a
    lot longer to run than Method_B.  Method_B executes in the same amount of time
    as the currently existing DDR autocalibration routine, i.e. 1 second or so.
    Normally Method_B is used and it is set as the default method.
    
    The current U-Boot PPC4xx DDR autocalibration code calibrates the IBM SDRAM
    Controller registers.[bit-field]:
    1)  SDRAM0_RQDC.[RQFD]
    2)  SDRAM0_RFDC.[RFFD]
    
    This alternate PPC4xx DDR autocalibration code calibrates the following
    IBM SDRAM Controller registers.[bit-field]:
    
    1)  SDRAM0_WRDTR.[WDTR]
    2)  SDRAM0_CLKTR.[CKTR]
    3)  SDRAM0_RQDC.[RQFD]
    4)  SDRAM0_RFDC.[RFFD]
    
    and will also use the calibrated settings of the above four registers that
    produce the best "Read Sample Cycle Select" value in the SDRAM0_RDCC.[RDSS]
    register.[bit-field].
    
    Signed-off-by: Adam Graham <agraham at amcc.com>
    Signed-off-by: Stefan Roese <sr at denx.de>


It's currently only used on Kilauea (405EX) but I think it should work
on Canyonlands as well. So I suggest you give this version a try. IIRC,
it also has some advanced debugging mechanisms that you could use to track
down the problems.

Here an extract from kilauea.h:

/*
 * CONFIG_PPC4xx_DDR_AUTOCALIBRATION
 *
 * Note: DDR Autocalibration Method_A scans the full range of possible PPC4xx
 *       SDRAM Controller DDR autocalibration values and takes a lot longer
 *       to run than Method_B.
 * (See the Method_A and Method_B algorithm discription in the file:
 *      cpu/ppc4xx/4xx_ibm_ddr2_autocalib.c)
 * Define CONFIG_PPC4xx_DDR_METHOD_A to use DDR autocalibration Method_A
 *
 * DDR Autocalibration Method_B is the default.
 */
#define CONFIG_PPC4xx_DDR_AUTOCALIBRATION       /* IBM DDR autocalibration */
#define DEBUG_PPC4xx_DDR_AUTOCALIBRATION        /* dynamic DDR autocal debug */
#undef  CONFIG_PPC4xx_DDR_METHOD_A


Give it a try in your board (and Canyonlands as well) and let me know if
this helps or not.

Best regards,
Stefan

=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de
=====================================================================


More information about the U-Boot mailing list