|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 2, 2003 02:27:38 Уж не знаю по теме это или нет, но уж очень меня один вопрос волнует. Как работать с DMA под win2k? На разных форумах упоминается часто, но ничего дельного я не нашел. Может кто-нибудь знает, хоть что-то по этой теме? |
|
|
Дата: Июн 2, 2003 19:49:32 Ну, насчет твоего вопроса, как выделить память, которая бы устроила контроллер DMA - есть в ддк такая функция AllocateCommonBuffers(). Она как раз нужна для работы с DMA, думаю, память как раз из первых 16 мегов и выделяет. Вот только тебе одной этой функцией не обойтись, там еще целая кучка есть. :) |
|
|
Дата: Июн 2, 2003 21:23:38 [ Offtop. Sorry. ] Гы. Народ постепенно сюда перетекает ;-) Кто следующий? |
|
|
Дата: Июн 2, 2003 22:20:30 >[ Offtop. Sorry. ] Гы. Народ постепенно сюда перетекает ;-) Кто следующий? :-)) А почему этот форум пишет, что я воин какого-то дзена? ;-) |
|
|
Дата: Июн 2, 2003 22:35:30 Говоря откровенно, я кажется облажался на счет 16MB. Если вы посмотрите в Систему/Контроллер прямого доступа к памяти вы увидите широкий диапазон адресов ввода вывода, думаю должно хватить на все 4GB. Когда мы инициализируем DMA под дос мы используем порт 4 для двух младших байт адреса и 81h для одного старшего. Мне показалось логичным попробовать отослать по 81h еще один байт адреса, что я и сделал. Результатом стал BSOD (я к этому уже привык). Хотя возможно у меня кривые руки, опыта практически ноль, так что будет интересно, если кто-нибудь повторит мой эксперимент. Да т еще одно для получения физического адреса моего буфера я использовал MmGetPhysicalAddress. Это правильно? Кроме того нашел такие функции для работы с DMA (используются в той последовательности в которой показаны ниже): 1. KeFlushIoBuffers just before attempting to allocate the system DMA controller See Chapter 16 for more information about maintaining cache coherency during DMA with KeFlushIoBuffers and FlushAdapterBuffers. 2. AllocateAdapterChannel when the driver is ready to program its device for DMA and needs the system DMA controller AllocateAdapterChannel, in turn, calls the driver's AdapterControl routine. 3. MmGetMdlVirtualAddress to get an index into the MDL, required as an parameter in the initial call to MapTransfer 4. MapTransfer to program the system DMA controller for the transfer operation A driver might need to call MapTransfer more than once to transfer all the requested data, as explained in Splitting Transfer Requests. 5. FlushAdapterBuffers just after each DMA transfer operation to/from the slave device If a driver must call MapTransfer more than once to transfer all the requested data, it must call FlushAdapterBuffers as many times as it calls MapTransfer. 6. FreeAdapterChannel either as soon as all the requested data has been transferred or if the driver fails the IRP because of a device I/O error Попробовать еще ни успел. |
|
|
Дата: Июн 2, 2003 22:42:18 · Поправил: Four-F [ Sten: А почему этот форум пишет, что я воин какого-то дзена? ;-) ] Это знают Хранитель сайта, Самурай дзена и Ужасный Модератор. Они же, в девичестве, admin, Aquila и Eddy. ;-)))))))))) Еще раз сорри за офтоп. |
|
|
Дата: Июн 2, 2003 23:57:49 >Да т еще одно для получения физического адреса моего буфера я использовал MmGetPhysicalAddress. Это правильно? Ну, в одной из статей в NT Insider (http://www.osronline.com/article.cfm?id=19) сказано: ------------------------------------ Following the architecture means that doing DMA by calling MmGetPhysicalAddress() and taking the result and stuffing it into your device is not an option. Sure, it’s fast. But it also won’t work on all the platforms that can support Win2K/XP. Driver writers that do this should be shot, or at least have their driver-writing license revoked. ------------------------------------ :-)) Статьи доступный только для подписчиков (там анкету надо заполнять). А в целом, ты на правильном пути. |
|
|
Дата: Июн 3, 2003 00:22:57 To:Sten Свершилось. DS3.0 доступен для скачивания на ftp exetools.com. Sorry за офтоп. :-) |
|
|
Дата: Июн 3, 2003 01:43:01 · Поправил: film 2Sten: А можешь статью целиком мне кинуть на a@splash.com.ua |
|
|
Дата: Июн 3, 2003 20:32:38 > Свершилось. DS3.0 доступен для скачивания на ftp exetools.com. Sorry за офтоп. :-) Это конечно хорошо. :) > А можешь статью целиком мне кинуть на a@splash.com.ua Сейчас кину. |
|
|
Дата: Июн 3, 2003 22:42:28 Sten, а IceExt под него будет? |
|
|
Дата: Июн 4, 2003 11:18:14 > Sten, а IceExt под него будет? Вот докачаю по диалапу 85 метров и там посмотрим. :-)) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.077 |