Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PCI9054 + DMA
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > ISA/PCI/PCI-X/PCI Express
Ember
Народ помогите справиться с задачей:
Есть мост PCI9054. Прием/передача налажена. Теперь необходимо запустить DMA.
Драйвер разработан мной в NuMega Driver Studio
Проблема в правильно настройке DMA, а точнее в настройке Local Address и PCI Address.
Что именно там необходимо указывать?
По идее в регистр LocalAddress нужно записать 0, т.к хочу считывать данные с начала страницы.
А вот что с PciAddress???????????? Что туда писать?
-Al-
Цитата(Ember @ Nov 7 2005, 17:42) *
Народ помогите справиться с задачей:
Есть мост PCI9054. Прием/передача налажена. Теперь необходимо запустить DMA.
Драйвер разработан мной в NuMega Driver Studio
Проблема в правильно настройке DMA, а точнее в настройке Local Address и PCI Address.
Что именно там необходимо указывать?
По идее в регистр LocalAddress нужно записать 0, т.к хочу считывать данные с начала страницы.
А вот что с PciAddress???????????? Что туда писать?

Полагаю, что PCI Address это физический адрес области памяти в PC c котором Вы хотите работать по DMA.
Ember
С этим утверждением я согласен. НО. Проблема в том, что у меня есть указатель на буффер, который я получил из приложения. Этот указатель по идее является логическим адресом области памяти в которую я хочу прочитать данные. И именно этот адрес, вроде, нужно преобразовать в физический адрес, а потом полученный физический адрес записать в регистр PCI Address. А как преобразовать логический адрес буффера в физический адрес ??!!
-Al-
Цитата(Ember @ Nov 9 2005, 10:23) *
С этим утверждением я согласен. НО. Проблема в том, что у меня есть указатель на буффер, который я получил из приложения. Этот указатель по идее является логическим адресом области памяти в которую я хочу прочитать данные. И именно этот адрес, вроде, нужно преобразовать в физический адрес, а потом полученный физический адрес записать в регистр PCI Address. А как преобразовать логический адрес буффера в физический адрес ??!!

Покопайте в сторону Memory Mapping в WinAPI
Ember
WinApi сдесь не поможет, т.к. вычисление физического адреса происходит непосредственно в самом драйвере, а там нет WinApi.
Я уже нашел функцию вычисления физического адреса на основе виртуального - MmGetPhysicalAddress, которая объявлена в файле ntddk.h. Но почему-то не могу её подключить (пока). Хотя я явно подключаю этот файл (#include <ntddk.h>), компилятор не видит данной функции.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.