[U-Boot] ppc44x - watchdog timers reboots during the image loading

ame ayman at austin.rr.com
Thu Sep 30 23:02:43 CEST 2010


On Thu, Sep 30, 2010 at 03:48:36PM -0500, Timur Tabi wrote:
> On Thu, Sep 30, 2010 at 3:15 PM, ame <ayman at phx1-ss-2-lb.cnet.com> wrote:
> > On my 460ex board, i've tried to add CONFIG_WATCHDOG to the config and it appears to
> > work until the board tries to boot. ?At that point I can count down about 10 seconds
> > and the reboot happens. ?The 10s correlates with what I think the watchdog is being
> > set to. ?I've inserted some WATCHDOG_RESET() invocations wrapping memmove_wd (which
> > admittedly should not be needed), but it does not have an effect.
> 
> Looks to me like your implementation of WATCHDOG_RESET() is broken.
> It's not actually resetting the watchdog.  That's what you should
> debug.
> 

I suspect that that is the case, but trawling through the u-boot code it appears that
WATCHDOG_RESET is a macro that eventually does one of two things:
a) if asm, bl watchdog_reset  
b) if c, watchdog_reset()

watchdog_reset in turn saves the interrupt state, disables interrupts, invokes 
reset_4xx_watchdog, then restores the interrupt state.

Finally reset_4xx_watchdog does mtspr(tsr, 0xc0000000) where tsr is 0x150 IIRC.

All of this is in the u-boot source, mostly in cpu.c and watchdog.h (i.e. none of this is
custom for my board, it is part of the ppc44x code).

I've dumped the binary to make sure the methods are actually in the code, manipulating
the spr, and getting called.  

ame



More information about the U-Boot mailing list