[U-Boot] Periodic task

Ran Shalit ranshalit at gmail.com
Wed Aug 26 10:57:12 CEST 2015


On Wed, Aug 26, 2015 at 10:05 AM, Heiko Schocher <hs at denx.de> wrote:
> Hello Ran,
>
>
> Am 26.08.2015 um 08:09 schrieb Ran Shalit:
>>
>> On Wed, Aug 26, 2015 at 7:45 AM, Heiko Schocher <hs at denx.de> wrote:
>>>
>>> Hello Ran,
>>>
>>> Am 25.08.2015 um 22:03 schrieb Ran Shalit:
>>>>
>>>>
>>>> Hello,
>>>>
>>>> I need to do some periodic very simple task during u-boot prompt
>>>> (while u-boot wais for commands). The task is very simple, just
>>>> writing into a watchdog refresh register.
>>>> But it seems that it's very difficult to "hack" u-boot with such
>>>> periodic
>>>> task.
>>>> I see that main loop is waiting in loop for characters in a call to
>>>> getc, which is a blocking command. If it was non-blocking, it might
>>>> have help me. I'm not sure if there is a way to replace the getc with
>>>> a non-blocking call.
>>>>
>>>> Does anyone have any idea if there is some simple way to do periodic
>>>> task in u-boot  ?
>>>
>>>
>>>
>>> As you want to trigger a watchdog, have a look at
>>> u-boot:/drivers/watchdog
>>> and grep the U-Boot code for
>>> CONFIG_WATCHDOG
>>> CONFIG_HW_WATCHDOG
>>>
>>> bye,
>>> Heiko
>>> --
>>
>>
>>
>> Hi Heiko,
>>
>> That's a great suggestion.
>> I can understand from this, that there is timer interrupt in the
>> background for the watchdog refresh activity.
>
>
> I do not know anything about your hw ... but timer interrupt is not
> necessary.
>
> WATCHDOG_RESET is called from the U-Boot code ..
> see definition in include/watchdog.h
>
>
> bye,
> Heiko
> --


Hi Heiko,

I am using PPC mpc8349 freescale.
In the arch/powerpc/lib/board.c file it does the following:
....
for (;;) {
WATCHDOG_RESET();
main_loop();
}

There is something in the concept of u-boot flow that I don't uunderstand.
How is it that main_loop will perdiocally return to WATCHDOG_RESET  if
it waits for keyboard activity with getc() blocking function.

Thank you for the time!
Ran


More information about the U-Boot mailing list