I also required a large physical area that could facilitate PCI
bus mastering burst DMA. I received two channels of word-size
(16-bits) data at 40Msps. I would either average (4:1 low pass
filter) the data samples or shapshot (open aperature for
10Msps, close for 30Msps) data segments. The data acquisition
cards I used only support DMA transfers to contiguous memory
locations (old Altera FLEX10K PCI interface chips). It would
have been better if I could have used "scatter/gather" DMA
(send number of memory blocks to the PCI chip and it returns an
array of non-contiguous virtual memory addresses). Newer cards for a
follow-on, then I may be able to avoid the shared memory
for this purpose (I still think shared memory would be a cool
idea for a cluster).
I successfully employed 'lilo' using the 'append = 80M' option
to create a ~40MBy shared memory region. All data transfers
populated a structure containing a HUGE array and some flags
(mutexes and semaphores). I contemplated the 'bigphysarea' patch, but I
needed to access the memory from my real-time kernel module (I wrote an
tuneable power spectral density alogrithm that was loadable into the
kernel). The shared memory pool fit the bill and I had no performance
impact on the rest of the Linux kernel.
Please feel free to contact me if you need additional information
([EMAIL PROTECTED]). Real time Linux rocks! Real time Linux on the 2.4
kernel rocks++!
Steven Chung
-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
---
For more information on Real-Time Linux see:
http://www.rtlinux.org/rtlinux/