Re: rtlinux dma get_buffer_contents number of bytes transferred

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Sunday 14 March 2004 10:38 pm, Alex Fielding wrote:
>
> For example, when I register a comedi callback with TRIG_WAKE_EOS, using
> an 800 nsec scan and convert clock, I receive interrupts to the callback
> approximately every 34 microseconds - that roughly coincides with a 4K
> block transfer size other posters have discovered.  Setting the
> cmd.flags for TRIG_WAKE_EOS or TRIG_RT has no effect on this behavior.
>
> When I setup my own 1 msec (for example) RT thread to poll the DMA
> status of my 800 nsec scan clock, even with a call to comedi_poll() in
> there, get_buffer_contents() will return 0 fifteen times in a row before
> it returns values such as 4020, 15 more 0's then 4032, 17 more 0's then
> 4224, 15 more 0's then 3978, etc.
>
> I was hoping to find a way to put my RT interrupt handler "in between"
> each 800 nsec data conversion so it would examine every new piece of
> data and react to it at a fast rate.   That is, I'd like to use DMA as a
> faster alternative to programmed IO using the comedi_read command.

Fixing comedi_poll and TRIG_WAKE_EOS to work with the mite's dma shouldn't 
be difficult.  I'll probably do it this weekend.  However, your hope of 
being able to handle interrupts at over a megahertz is unrealistic.  It 
takes about a microsecond just to read one of the board's status registers.

- -- 
Frank

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQFAV38A5vihyNWuA4URAtFHAJ9G37RUtf6eGiaOEco38xcjLbxg9QCgtsbK
JwEOw1jaM12EK75oFgj3+lg=
=N90Z
-----END PGP SIGNATURE-----

Received on 2004-03-16Z22:26:04