[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [microblaze-uclinux] FSLFIFO



Hi Simon,

Simon Tam wrote:

I have only one FSL link in my design. I believe the tasklet in the driver loops around all 8 FIFOs however. So I changed the MAX_FSLFIFO_COUNT from 8 to 1 hoping this will improve the performance. But it seems that did not make any difference by looking at the object code. I still see the put statements for each of the 8 FSL links. And the performance did not improve. I wonder if there is a better way to make the link faster if I am only using one FIFO.

The performance issue is not related to the number of configured FSL channels (that just saves you a bit of memory more than anything else), instead it's just a limitation of the driver architecture and the original FSL instruction semantics.

If you look at the code, we have to use non-blocking FSL operations, and check the result each time. This is slow. Also, it's polled rather than interrupt driven - that's slow and inefficient.

One of our students created an interrupt-driven version of the driver - you hook the FSL channel's HAS_DATA signal to the interrupt controller - but I'll have to dig it out. The code needs some cleanup as well. But, from memory the performance and latency is quite a lot better.

Regards,

John

___________________________
microblaze-uclinux mailing list
microblaze-uclinux@xxxxxxxxxxxxxx
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/