grahamlab <[email protected]> writes: > Would someone please tell me how often the Serial_ISR and Serial_DSR > functions get called > Thanks
Essentially once per character, there are no FIFOs so the ISR has to get each byte out of the receive register before the next arrives. If the ISR is sufficiently delayed it might be able to fetch two characters from the device if it happens to run at exactly the right time. The DSR will be scheduled every time a character is put into the rx buffer. The DSRs might also be delayed, so when it runs it might find several interrupts have happened and there are several characters in the rx buffer. It will then deal with all of those before returning. The purpose of the rx buffer is to decouple the DSR from the actual hardware, so only ISR latency actually matters. However, unless you are seeing any of the status error bits I mentioned being set, or the rx buffer is overflowing, I don't think that the problem lies in the latency of the ISR or DSR. I believe you also tried reducing your baud rate to 1200, where the ISR has a luxurious 8ms to respond, and it still failed. So I cannot see that the problem is in either the serial device or the driver. You mentioned that you were using Linux in VirtualBox with USB serial convertors. When you tried running with real serial devices, was this also using VirtualBox? If so I know where I am tempted to point the finger. Are you able to run Linux on a real machine, or use a Windows based terminal emulator for your testing? -- Nick Garnett eCos Kernel Architect eCosCentric Limited http://www.eCosCentric.com The eCos experts Barnwell House, Barnwell Drive, Cambridge, UK. Tel: +44 1223 245571 Registered in England and Wales: Reg No: 4422071 -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
