[uClinux-dev] Interrupt latency on ColdFire v3 under uClinux

Niels Holmgård Andersen nha at oxyguard.dk
Wed Aug 1 06:35:34 EDT 2007


Hello all,

 

I am considering designing a generic user interface using a color TFT and a modern processor to replace a series of analog and first generation microcontroller instruments, and am considering the pros and cons of uClinux. The application is networked sensing, and is as such not very complicated. However, one of the reasons for moving up to new technology is to be able to support new field busses (and the nice look and feel, of course). Ethernet-based stuff is fairly easy to do using the TCP/IP-stack on Linux, and the framebuffer support for the ColdFire TFT-interface could also be a timesaver. I have done userland and small embedded processors for 5 years, but have no experience in kernelhacking. Also, I have not yet invested in a ColdFire-board. 

 

My main doubt is that I need to support an RS422-based "old-school" fieldbus, too, for which the system will have to start answering within a fairly small window of 143-380 us after the last byte of the request has been received. The best figure for latency I have been able to find is 5-8 us using RTAI on ColdFire, but a lot more - up to tens of milliseconds - on kernel 2.4. 

 

I am aware that this is of course heavily dependent on the system configuration and on which features are enabled in the kernel (seemingly with IDE one of the worst offenders), but can anyone give a handwaving answer of what is possible? One of the selling points for the generic 2.6 kernel is that it is more pre-emptable, which would make this situation lots better.

 

I have been able to find several approaches to the problem in the archives and on the net. In September 2004, there was a discussion of this on the list where a guy had some problems with buffer overruns in the UARTs. The solution brought forward by Greg Ungerer was to implement a high-priority interrupt which bypassed Linux and the scheduler completely. It would probably solve the problem, but if it is already solved in 2.6 such that everything can be done in userspace (on a lightly loaded system), it would be really nice. RTAI also seems to be able to solve the problem, but ColdFire (or uClinux, for that matter) is not on the list of supported stuff on their homepage, and I am unsure how to approach that problem. Finally, I have the option of using a small dedicated communication coprocessor, but that would be giving up, wouldn't it ;-)

 

Can anyone help me figure out how much hacking is needed to keep interrupt latency below, say, 40 microseconds for the vast majority of serial character interrupts? 

 

Best Regards,

 

                      /Niels Holmgård Andersen

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.uclinux.org/pipermail/uclinux-dev/attachments/20070801/03f8d715/attachment.html


More information about the uClinux-dev mailing list