Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Re: spurious interrupts on LPC

2006-03-25 by Jayasooriah

Hello,

For what it is worth, here is a summary of the issues surrounding the very 
first question I raised relating to spurious interrupts on LPC 2000 family.

A different perspective emerges you look at the distractions by way of 
noise generated those whom I have labelled "the usual suspects".


==> 2006-03-14 21:40:10 GMT Jayasooriah

I looked at LPC200 FAQ claim that spurious interrupts can occur in any ARM7 
that incorporates the VIC.  I was surprised and I asked Robert (Philips) to 
clarify:

1/  Is the spurious interrupt problem specific to implementation of VIC on 
LPC, or is it a generic VIC problem?

2/  Do any other ARM cores with VIC suffer from the same problem?

[Has anyone answered this question?  No?  Yes ... no!]

==> 2006-03-15 00:12:07 GMT Robert (Philips)

Forwarded my question the author of the FAQ.

[Neither Robert nor Philips has provided any response from the author to date.]

Asks me to investigate this on other ARM variants and report my findings.

2006-03-15 07:06:37 GMT Jayasooriah

I respond by saying that none of the other variants make this claim.

I reiterate that I am looking for references to substantiate the claim in 
Philips LPC200 FAQ and Applicaition Note 10414 that all ARM7 variants with 
VIC suffer from spurious interrupts that LPC suffers from.

[To date, there has been no reference from Philips, Robert or anyone else 
for that matter to substantiate this claim.]

I did lookup references to spurious interrupts in relation to ARM7 and most 
of them come back to LPC2000.  There was even a reference to LPC2000 in 
relation to spurious on lecture notes in a University course!  It does look 
like the LPC family is very well known for its spurious interrupts like no 
other processor.

I will admit I found few references relating to peripheral on particular 
ARM variants, but these appear to be peripheral specific -- there has been 
no other claim I can find that attributes the issue as generic to any ARM7 
+ VIC.

We did not get an answer to the question, but we did have a very active 
thread with lots of distractions from the usual suspects:

Distraction #1:  ARM FAQ 3677 explains spurious interrupts in ARM7.

At first there was rejoicing amongst the usual suspects at how quickly my 
question was dealt given it looked I was challenge the legitimacy of a 
claim by Philips.

When we got to the bottom of this and learnt of the subtle difference 
between spurious and surprise interrupts, and that this FAQ discusses 
surprise interrupts, not spurious interrupts, the usual suspects went quiet 
for a while ...

Then someone who claimed to have many years experience in this field made a 
bungle and claimed that my solution does not allow nested interrupts.

Distraction #2:  My solution is not acceptable because it does not allow 
nested interrupts.

There was another round of rejoicing from the usual suspects, that my 
solution is not accepted to anyone in the real world.

I pointed out the bungle.   Things went quiet for while.

There was this one person who persisted on having his implementation 
validated by by me through this forum.  This led to a further incorrect 
claim relating to my solution.

Distraction #3:  My solution in relation to UARTs is not a solution because 
one cannot use the UART if one do not enable receiver interrupts.

I pointed out that how one uses timer interrupts to receive characters as 
the UARTs have a FIFO in the receive channel, and that this method has been 
put to practice and shown to work.

The same persistent person then picks up another issue in relation to 
validating his solution, regarding my statement that what happens in the 
case of what this person was doing is undefined.

Distraction #4:  Prove the VIC behaviour is "UNDEFINED" if one polls 
interrupt sources one by one in the "spurious interrupt handler".

I point out that I cannot define the behaviour because the PL190 TRM 
clearly states this something it was not designed to handle, and that if 
such an event did occur, its priority logic cannot cope with it.

I did say that came to this view having discussed the matter with ARM, and 
having read responses from engineer in ARM working on PL192 design.

[PL192 is the successor to PL190 and it can handle interrupts RDA/CTI type 
of interrupts from UART0/1 on LPC family.]

I pointed out that reading and writing to the VIC vector when you do not 
know the cause of the interrupt is documented in PL190 as unpredictable.

Now there was another rejoice ... but exactly for what reason I am not 
sure.  It  appears to do with someone claiming of having run tests for a 
long time and not having had a single spurious interrupt over this time.

After all the distractions it does not seem to matter that not one person 
has been able to provide one shred of evidence, or even a reference to 
substantiate the claim by Philps that started this thread.

We now know for a fact, from ARM, that any ARM variant that incorporates 
PL192 VIC will not support interrupts of the type originating form UART0/1 
on LPC family.

It does not seem to matter that, because the LPC's world spins around the 
PL190 design as implemented on LPCs, and has problems with its UART0/1 that 
generates spurious interrupts.

Now lets turn to the solutions I proposed that is based on *preventing* 
spurious interrupts altogether on the LPC.  This has been formally 
documented and available on-line for anyone to comment on.

As far as AN10414 is concerned, there are two scenarios that generate 
spurious interrupts on LPC: a) when an interrupt are disabled through VIC 
as it occurs; and b) when CTI and RDA interact within the UARTs in 
transient manner that any PL190 based VIC does not support.

In relation the first problem:

* My solution to Philips AN10414 watchdog problem is downright simple: use 
CPSR instead of VIC that Philips recommends.  It is not a matter of 
preference as one poster put it, but a matter of either preventing or 
handling spurious interrupts.

* I also showed how one can disable a particular interrupt using the VIC if 
one brackets this operation using masking operations on CPSR.

One asks why the above solution is unacceptable to the usual suspects.  It 
appears that if this solution were acceptable, then they would have to 
admit that RDA/CTI is not relating to ARM7+VIC ...

Given the UART RDA and CTI interrupts exhibit transient behaviour that is 
not handled by the VIC, it is easy for me to say "do not use these 
interrupts". Of course Philips cannot say the same without admitting to a 
flaw in the UART0/1 design.

There were claims that my solution meant one cannot use UARTS at all -- but 
hang on, I did show how one can use the UARTs but without using RDA/CTI 
interrupts.  This appears to have been buried in the noise generated by the 
usual suspects.

Someone said to me a while ago, when one participant was continually 
pestering me for answers, that I should have simply told this person to 
point out where it says the behaviour of VIC is defined when an interrupt 
exhibits transient behaviour.

I thought it would be kinder for me to keep explaining in different ways 
until this person eventually catches on to how my solution removes spurious 
interrupts altogether nice and simple.

Guess what?  I think my explanation worked if I am to read the many emails 
I have had arising from opening up my analysis and conclusions on-line for 
comment.  Even this persistent poster appears to have understood it somewhat!

Judging from the fact that my critics in this forum have yet been unable to 
fault my findings or solutions, we actually ended up solving the problem in 
the best way possible -- without generation of a single spurious interrupt 
in the system.

I am encouraged by the responses I got to my analysis of LPC spurious 
interrupts and calls for the same level of documentation for the other 
problems I found.

Have a browse through this thread on GMANE and you will see what role 
Philips has been playing in this forum, in this thread in particular.

I was told that that Philips is here for no other reason that to promote 
its LPC family of products.  I said to the effect that is is not a bad 
thing.  But I was reminded there is a complimentary role to play that 
involves gagging threads that dwell in (potentially serious) flaws in LPC 
family.

The issues I have raised certainly appear to dwell in flaws to a large 
extent, and there is no doubt in my mind that Robert (of Philips) is doing 
what he is expected to do under the circumstances.

It is a pity the usual suspects see virtue in gagging independent and 
unaligned discussion of the problems raised here relating to various 
aspects of the LPC, be it code security, watchdog anomalies, flash 
deficiencies or spurious interrupts.

Enjoy.

Jaya

Send instant messages to your online friends http://au.messenger.yahoo.com

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.