[ECOS] LPC2XXX watchdog feeds and interrupts

Laurie Gellatly laurie.gellatly@netic.com
Mon Oct 26 21:05:00 GMT 2009


Hi Sergei,
Two things. It should not be an option as when the feed sequence is  
eventually interrupted and the processor is reset it can be VERY time  
consuming to track down. I know from bitter experience.
The other is I was not sure about which interrupt disable/enable  
function pairs to use. Is HAL_DISABLE_INTERRUPTS preferred over  
cyg_disable_interrupts?
We need ALL interrupts off during the feed.

         ...Laurie:{)
+61 416 114419


On 27/10/2009, at 7:40 AM, Sergei Gavrikov <sergei.gavrikov@gmail.com>  
wrote:

> On Mon, Oct 26, 2009 at 08:58:19PM +1100, Laurie Gellatly wrote:
>> Hi All, I using an ARM 7 (LPC2212) based on an eCosCentric build. It
>> appears that watchdog feeds are done with interrupts enabled yet the
>> NXP manual warns against leaving interrupts enabled during a feed
>> sequence (and I'm pretty sure I've seen the consequences).  Firstly,
>> have I missed something? Are interrupts disabled and I just don't
>> see where when I call watchdog_reset() OR should I be adding
>> cyg_interrupt_disable() and cyg_interrupt_enable() calls around the
>> feed sequence in watchdog_lpc2xxx.cxx
>>
>> Thanks            ...Laurie:{)
>
> Hello Laurie,
>
> I found no any global interrupt disabling/enabling workaround for eCos
> io/watchdog *::reset. More that the most targets as I could see have a
> peace with CPU's watchdog with a single atomic write, but NXP and some
> other targets claim two writes (!atomic operation): devs/watchdog/*
>
> Well, NXP points on such a claim, for example, in this application
> note
> http://www.standardics.nxp.com/support/documents/microcontrollers/pdf/an10414.pdf
> and in their other data sheets. Well, may be that is rare condition:
> to break two sequenced  writes, but safety is safety :-) Could you
> provide a patch for the issue, please`?
>
> IMO, you would add some CDL in devs/watchdog/arm/lpc2xxx/*/*, e.g.
> CYGOPT_DEVICES_WATCHDOG_ARM_LPC2XXX_RESET_SAFE to wrap that reset,
> well, to add something likes the below
>
>    int old;
>    HAL_DISABLE_INTERRUPTS( old );
>    /* Feed magic values to reset the watchdog. */
>    /* ... */
>    HAL_RESTORE_INTERRUPTS( old );
>
> But, as I could understand, you pointed on eCosCentric build.
>
> HTH
>
> Sergei
>

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss



More information about the Ecos-discuss mailing list