Я хочу получить доступ к памяти пользователя с платы PCIe, которая обеспечивает 1 ГБ памяти с помощью BAR0. В настоящее время я использую только функции чтения и записи моего драйвера устройства символов, который ОЧЕНЬ медленный (чтение 1 МБ/с и запись 16 МБ/с) на 8-разрядном PCIe Gen3.Возможно ли использовать MMAP для памяти PCI BAR?
static ssize_t
MPD_read(
struct file *filp,
char *buffer,
size_t bufferSize,
loff_t *offset)
{
unsigned long unusedBytes = copy_to_user(
(void *) buffer,
MPD_AdapterBoard.bars[ 0 ].barHWAddress,
bufferSize);
return 0;
}
static ssize_t
MPD_write(
struct file *filp,
const char *buffer,
size_t bufferSize,
loff_t *offset)
{
unsigned long unusedBytes = copy_from_user(
MPD_AdapterBoard.bars[ 0 ].barHWAddress,
(void *) buffer,
bufferSize);
return 0;
}
Можно ли использовать MMAP (с операцией файла .mmap), чтобы получить больше скорости? Или DMA - единственный вариант?
Заранее благодарен!
/Jesko