This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Interrupt acknowledge in ISR.


I have just read the "from ISR to thread" messages.  So other issue
I'd like to mention.

From eCos CVS, some people put  "cyg_drv_interrupt_acknowledge()" in 
ISRs, some put it into DSRs, even some others (e.g. edb7xxx) put this
line into the threads created by DSR semaphore.

However, should this be commonly put into the ISR routine?  For my
hardware (Samsung S3C44B0X), if "cyg_drv_interrupt_acknowledge()"
is not put in ISR, the program will interrupt again immediately after 
the "return cyg_isr_call_dsr" line.  DSR and any other threads can NEVER 
be executed, the MCU is interrupting again and again.  Is this normal?

Is there any ISR design difference in MCUs (in my case all ARM MCU),
so that people may put "cyg_drv_interrupt_acknowledge()" even out
of the ISR?

In my case, if I were to disable interrupts before I finish DSR,
I have to put the "cyg_drv_interrupt_unmask()" at the end of DSR only.  The
"cyg_drv_interrupt_acknowledge()" is always put in ISR.

Any guidelines OR common practises for the "cyg_drv_interrupt_acknowledge()"?
People seems put it anywhere.  Other people may face problem if they
are to port sources into other hardware.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]