This is the mail archive of the ecos-discuss@sourceware.org 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]

POSIX & SMP compatibility and other problems in a Leon3 platform


Hi,

I am using eCos on a Leon3-based SMP system, with a modified interrupt
controller, so that I had to adapt the interrupt and SMP-related HAL
functions. I am also using the POSIX compatibility layer on top.

 I am running into several problems, and before digging too much
(more) into the kernel code, I'd like to ask some questions to the
mailing list, in case someone has already run into them before (sorry
if they seem random, I'm trying to gather everything into a single
e-mail):

1) I am running into a lot of problems when using the POSIX timers
with the real system, mainly deadlocks related to timer list
corruption or scheduler lock going out of sync. This didn't use to
happen in the simulations, but with the real system (and the real
timings) it's happening all the time. Though it all might be related
to the new interrupt controller implementation, I just wanted to ask
if someone has used the POSIX layer (specifically timers) on a SMP
platform (specifically a Sparc or Leon platform), and whether there
were some problems or issues I should be aware of.

2) with the new interrupt controller, several SMP (CPU communication)
interrupts can get grouped, and I have found that I had to prevent
consecutive calls to "reschedule" and "timeslice" inside the same DSR,
otherwise the thread list got corrupted. Is that normal? Or should it
work, and it's a sympthom of other (maybe timing-related) problem?

3) to be able to use a big number of interrupts, they are grouped into
interrupt banks, and I need to decode the real interrupt inside the
ISR, and post the DSR for the decoded interrupt. This is maybe a basic
question, but can I post the DSR inside the ISR, or do I need to
remember the correct DSR and do it in the interrupt_end() function? In
another words, is it necessary to lock the scheduler before posting
the DSR? (I have tried both implementations and I can't see any
difference apart from timing itself).

4) has someone adapted eCos for Leon3 to a "slow" interrupt controller
(explicit acknowledge, CPU message destination selection by masking),
than can share the experience, like timer or SMP CPU message interrupt
adaptation, or workarounds for the different timing misadjustments?

Thank you very much in advance for your help,
Inigo.

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


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