[U-Boot] Periodic task

Ran Shalit ranshalit at gmail.com
Wed Aug 26 11:45:44 CEST 2015


On Wed, Aug 26, 2015 at 12:29 PM, Heiko Schocher <hs at denx.de> wrote:
> Hello Ran,
>
>
> Am 26.08.2015 um 10:57 schrieb Ran Shalit:
>>
>> 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.
>
>
> Look into the serial driver: drivers/serial/ns16550.c
> NS16550_getc() triggers periodically the watchdog ...
>
>
> bye,
> Heiko
> --


Hi Heiko,

Thaks for the pointers.
I think I start to understand the general idea.
it seems that WATCHDOG_RESET is triggered wherever possible in the code flow.

Thanks very much,
Ran


More information about the U-Boot mailing list