Axel Beierlein wrote:
> Am 30.08.2007, 08:55 Uhr, schrieb Jan Kiszka <[EMAIL PROTECTED]>:
>
>> Axel Beierlein wrote:
>>> Am 29.08.2007, 16:42 Uhr, schrieb Jan Kiszka <[EMAIL PROTECTED]>:
>>>
>>>> Axel Beierlein wrote:
>>>>> what could it be that an simple rt_dev_open locks up my system when it
>>>>> calls rtdm_lock_put_irqrestore?
>>>>>
>>>>> [...]
>>>>> if (rtdm_irq_request(&ctx->irq_handle,
>>>>> MPC5xxx_PSC2_IRQ,
>>>>> rt_psc_interrupt,
>>>>> RTDM_IRQTYPE_SHARED | RTDM_IRQTYPE_EDGE,
>>>>> context->device->proc_name,
>>>>> ctx))
>>>>> {
>>>>> printk ("psc5200B.c: request_irq() failed\n");
>>>>> return -1;
>>>>> }
>>>>>
>>>>> rtdm_irq_enable(&ctx->irq_handle);
>>>>>
>>>>> rtdm_lock_get_irqsave(&ctx->lock, lock_ctx);
>>>>>
>>>>> ctx->imr_status = MPC5xxx_PSC_IMR_RXRDY;
>>>>> out_be16(&psc->mpc5xxx_psc_imr, ctx->imr_status);
>>>>
>>>> Let me guess: this line arms the related IRQ source at hw level, no?
>>>>
>>>
>>> Yes you are right. This Bit enables the RX_Ready IRQ at hw level. Sorry
>>> for the little Code fragment but the code relates to your 16550A.c and i
>>> don´t want to post all the routines at the moment.
>>>
>>>>>
>>>>> rtdm_lock_put_irqrestore(&ctx->lock, lock_ctx);
>>>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>>> Here i get the crash
>>>>
>>>> Because it enabled local IRQ delivery again, and the system ends up in
>>>> an IRQ storm, or some endless loop in the IRQ handler, or some crash
>>>> related to IRQ handling. Still just guessing...
>>>>
>>>> Jan
>>>>
>>>
>>> But how your UART driver handle this Problem? I have check the Irq
>>> Handler an implement an printk in it to see where it hangs, but it
>>> doesn´t step into this handler.
>>
>> In case you have an IRQ storm or your handler runs in an endless loop,
>> you won't be able to read that printk even if it's executed - Linux will
>> have no chance to dump the message.
>>
>> Start debugging with shrinking the handler down to a plain "return
>> RTDM_IRQ_HANDLED" (or even RTDM_IRQ_NONE so that Xenomai disables the
>> line), then slowly re-enabling and reviewing your code.
>
> That has no effect. It doesn´t step into it.
> I think there is another Problem, cause when i go back to the userspace
> applikation after i have opened the device the system locks up when i
> call a funktion like getchar()
> Just in following dev_open and dev_close is workin for only one time.
> But when i call the same applikation a second time it locks up in the
> rt_open routine at rtdm_lock_put_irqrestore.Something must be very wrong. Do you register the correct IRQ line / modify the right hw registers? Also, don't you have some hardware debugger at hand to find out where the system goes to, what IRQs show up? Jan
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
