Hi all, I have done a hal port to the Analog Devices Blackfin processor starting from the latest from cvs version of ecos. I don't quite understand how the interrupt handling in default_interrupt_vsr works.
When an interrupt occurs from my uart, i have a interrupt trampoline which does some vector translation and then calls the hal_interrupt_default_vsr which calls the isr of my uart rx interrupt. This isr requests a dsr to run. I have made the hal_interrupt_default_vsr as instructed ending with the interrupt_end call from the interrupt object of the kernel. One of the problems i seem to have is that call_pending_dsrs is called (from within interrupt_end - scheduler::unlock_inner) while the processor is still running at the interrupt level of my uart. (Nested interrupts are disabled, no separate interrupt stack is used) I assume a return from interrupt should be executed somewhere between the execution of the isr/post_dsr and the call_pending_dsrs? Where would this be done, in other words at which point in the hal do i need to return from my interrupt? Is it correct that call_pending_dsrs should be executed only when other interrupts are allowed again, in other words after return from the interrupt? Sorry if my questions are a bit confusing, but i don't quite understand the problems i'm having at this point (Crashes when having a lot of communication on my uart rx resulting in ASSERT_FAIL: <6>mutex.cxx[249]cyg_bool Cyg_Mutex::lock() Locking mutex I already own) Any suggestions? Tnx, Davy Wouters Atos engineering