Запустил DMA PCI-устройства. Принимаю данные в адресное пространство ядра (в драйвер). DMA буфер получаю так:
dma_buff = __get_dma_pages(GFP_KERNEL, PAGE_ORDER);
dma_buff_phys = __pa(dma_buff);
Контроллеру скармливаю dma_buff_phys, а данные потом читаю из dma_buff. Все нормально. Но хотелось бы, чтоб по DMA данные писались прямо в пространство пользовательского процесса. Как это можно сделать??? Вот родилась идея: в пользовательском процессе выделить буфер, его адрес (виртуальный) в драйвер, там получить физический и его в контроллер. Вот только вопрос как из виртуального физ. получить (вернее логический, физ. то я из логического получу __pa()) и со страницами, чтоб все нормально было???

Ответ на:
комментарий
от blackice

Ответ на:
комментарий
от senjy


Ответ на:
комментарий
от idle

Ответ на:
комментарий
от senjy

Ответ на:
комментарий
от idle

Ответ на:
комментарий
от senjy

Ответ на:
комментарий
от karak

Ответ на:
комментарий
от karak

Ответ на:
комментарий
от senjy

Ответ на:
комментарий
от karak

Ответ на:
комментарий
от karak

Ответ на:
комментарий
от senjy

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум DMA ISA (2012)
- Форум Смена физического адреса буфера в пространстве пользователя (2021)
- Форум Мапирование памяти для взаимодействия с устройством на PCI шине (2012)
- Форум Непрерывность выделения памяти - виртуальная и физическая (2023)
- Форум вопрос о get_usr_pages() (2010)
- Форум Драйвер PCI на платформе MIPS (2010)
- Форум Прием данных через DMA (2007)
- Форум Получение данных по DMA (2001)
- Форум STM32 DMA SPI теряет данные (2020)
- Форум DMA (2011)