ARM926 Software reset problems
Dieter Kiermaier
dk-arm-linux at gmx.de
Fri Nov 13 09:59:51 EST 2009
Am Freitag 13 November 2009 15:41:17 schrieb Ricardo Martínez:
>
> Hi Russell,
>
> Thanks for your help.
>
> I'm one step further. kernel_restart() uses arch_reset() which is hardware
> dependent.
>
> Most ARM9 make arch_reset() through Watchdog peripheral. But the CPU I'm
> using does not have Watchdog timer.
>
> I was trying to find an alternative, based only on software, but It may be
> not posible.
>
Maybe there is another way. Please read the hardware manual careful.
I now it from my last CPU (netsilicon ARM 926) that you have to write e.g.
the CPU PLL register to fire a hardware reset.
What CPU are you using?
Dieter
> For example, in u-boot command line I can do reset just jumping back to
> start of u-boot code. This is more or less what "cpu_arm926_reset" does, but
> most times system hangs.
>
> Thanks,
> Ricardo Martinez
>
>
> -----Mensaje original-----
> De: Russell King - ARM Linux [mailto:linux at arm.linux.org.uk]
> Enviado el: viernes, 13 de noviembre de 2009 13:21
> Para: Ricardo Martínez
> CC: linux-arm-kernel at lists.infradead.org
> Asunto: Re: ARM926 Software reset problems
>
> On Fri, Nov 13, 2009 at 12:32:16PM +0100, Ricardo Martínez wrote:
> > I'm using
> > cpu_arm926_reset(ulong address) function which:
> > - flushes I/D caches
> > - jumps to "address", whose value in my case is NOR flash
> > base address where U-Boot stays (after remapping).
>
> You should not be using this directly. Software rebooting has a specific
> sequence, and the above is the very last step.
>
> > But it sometimes work, but most times hangs. Can this be caused by
> > MMU not being switched off?
>
> cpu_arm926_reset() turns the MMU and caches off.
>
> > Is there any other prefered method to soft reboot ARM926 from Linux?
> > I've taken a look at some PXA, OMAP & AT91 code about soft rebooting.
> > It seems they use Watchdog timer to reset, but my CPU does not have a
> watchdog.
>
> Don't call cpu_arm926_reset() directly. Use kernel_restart() instead, or
> even better the reboot syscall from userspace.
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
More information about the linux-arm-kernel
mailing list