This is the mail archive of the
ecos-devel@sourceware.org
mailing list for the eCos project.
New hal port + interrupts + rescheduling + call_pending_dsrs problem
- From: "Davy Wouters" <davy dot wouters dot atos at gmail dot com>
- To: ecos-devel at ecos dot sourceware dot org
- Date: Fri, 27 Jun 2008 16:40:44 +0200
- Subject: New hal port + interrupts + rescheduling + call_pending_dsrs problem
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:mime-version:content-type:content-transfer-encoding :content-disposition; bh=DlZqS45n+r0MeDDkD4u890UTG4kTd4z0S4L3tQK9BZ8=; b=L3bQmlNBJVKoy/ttp62JVbyBRvlPGH5HQ8rMVGtXr4wcDpmOHK+o+z+IS5LXMkvNw1 0dfCSHQf1Ta2m8JKHdfBVtsaNQN9JDaugQIrvTgXrzZVG2wnl1jOslUnhBIsjBTKVT4S WRliRS25h6pdlRJX+hDjuJVnCqlmvfXKn9RwM=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type :content-transfer-encoding:content-disposition; b=GZI6fdN0qp8UyUsueb2tAL96XT8sxW4iP4nks8Y+T5BAqfNzwGFfKJH38p2n7m0khh H9B0yPrIAYoNhJ7axk1j9ifz7PR5MvQtd9Uji6ECItLzijHmJ7GIuzKxcjQfWnuEFHKO GeZKheVROinbatksnk+deN5/ix2GA+gILwjPg=
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