Перейти к содержанию

DMA под Linux (ядро 2.4) в режиме bus-master для PCI устройств


Рекомендуемые сообщения

Плиз!!! Помогите!!!

В драйвере PCI устройства, выделяю блок памяти функцией pci_alloc_consistent для DMA в режиме PCI bus-master. Функция возвращает два адреса: виртуальный и физический. Физический записываю в устройство и инициирую однократный ввод данных от PCI устройства в режиме PCI bus-master. Цикл завершается корректно, данные, которые (в режиме ядра) читаю по виртуальному адресу правильные. После этого, не удаляя блок, хочу этот блок памяти спроецировать в пользовательскую программу. Из приложения вызываю mmap (с параметром: fd = дескриптор моего символьного у-ва, offset = физический адрес блока памяти выделенного ранее), вызов проходит без ошибок, но данные не те.

Подскажите, может я не правильно что-то делаю? Или совсем нельзя так делать для памяти выделенной pci_alloc_consistent? Хотя для этого же устройства, я проецирую регистры PCI устройства и все работает правильно. Спасибо.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...