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]

Re: Question about DSRs


Rajeev wrote:

>  Hi,
>         we are porting the serial driver of the PID board onto our
> customized board.  Transmit and Recieve are both in interrupt mode.
> When serial_xmt_char or serial_rcv_char are used in the ISR the driver
> seems to work well but when xmt_char is put in the DSR ,  the behaviour
> is not consistent, mean to say, when i have repeated write calls in a
> loop in my app ,the DSR doesnt get the control at all , but if i have
> just two write calls not in a loop then the  DSR gets control but it
> waits till cyg_user_start exits.

   I have re-read your mail....

  The DSRs are managed in two different ways if you activate these
options:

CYGIMP_KERNEL_INTERRUPTS_DSRS_LIST
CYGIMP_KERNEL_INTERRUPTS_DSRS_TABLE

  If you use the ..LIST, then every ISR that launchs a DSR will produce a
different DSR to happen, but if you use ...TABLE then if the ISRs happen
very close together (a second or third ISR is called before executing, NOT
launching, the DSRs) then the DSR is executed only once, but with the
number of times that it has been launched in the count argument.

  Maybe you have configured it to use a table instead of a list.

  The fact that the DSRs only happen when cyg_user_start exits is clear,
there are no ISRs till cyg_user_start finishes, and then obviously there
are no DSRs launched till then.

  Hope this helps.



--
Rafael Rodríguez Velilla        rrv@tid.es
Telefónica I+D          http://www.tid.es
Telf: +34 - 91 337 4270




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