Yahoo Groups archive

Lpc2000

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

Message

Re: spurious interrupts on LPC

2006-03-26 by brendanmurphy37

Jaya,

Who cares?

Brendan

P.S. It's no wonder you're tired: that's a lot of typing you've done 
there! Maybe you should rest a while....


--- In lpc2000@yahoogroups.com, Jayasooriah <jayasooriah@...> wrote:
>
> 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.