I'm trying to use a PC104 IO board that utilizes the PLX PCI9080 chip to handle DMA transfers across the PCI bus to the rest of the PC104 stack. I've been able to take the data from the IO board, DMA it to memory, and then use the regular Linux functions to write it to the hard drive. Even though my drive is using the highest UDMA settings (ATA66 for a solid state drive) and have tweaked the hdparm, it seems as if there's too much Linux file overhead involved to get it any faster -- especially because I'm trying to "stream" lots of data really fast for an extended time period to anywhere on the drive (I'll deal with the partitions and FAT later). It seems as if Linux "waits" for about 5sec before it starts to write ANYTHING to the drive. Even if I turn off all of the caching settings in hdparm. This tells me that it's a caching technique specific to the kernel that *hopefully* I can turn off.
So, Does anyone know of/have ideas about a way to configure the PCI9080 chip or similar chip to DMA that data to a single address in memory? I've set up the drive to receive data via DMA data and write it to specific sectors so then the PCI9080 would need to be "pointed to" a single location in memory (0x1f0 to be exact for the primary IDE). I've been trying everything, but I think there might be something having to do with how Linux maps the addresses in virtual memory vs. physical for the PCI9080.
Effectively, it should be set up to pull the data from the PCI source (a FIFO address on the IO board) and perform a DMA transfer to memory while NOT incrementing the destination address.
Any help is GREATLY appreciated. Thanks.