реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> PCI9054 + DMA, Настройка DMA для передачи данных Local -> PCI
Ember
сообщение Nov 7 2005, 14:42
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 22-06-05
Из: Ukraine, Kharkov
Пользователь №: 6 229



Народ помогите справиться с задачей:
Есть мост PCI9054. Прием/передача налажена. Теперь необходимо запустить DMA.
Драйвер разработан мной в NuMega Driver Studio
Проблема в правильно настройке DMA, а точнее в настройке Local Address и PCI Address.
Что именно там необходимо указывать?
По идее в регистр LocalAddress нужно записать 0, т.к хочу считывать данные с начала страницы.
А вот что с PciAddress???????????? Что туда писать?
Go to the top of the page
 
+Quote Post
-Al-
сообщение Nov 8 2005, 09:58
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 330
Регистрация: 10-06-05
Из: Россия, Москва
Пользователь №: 5 894



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

Полагаю, что PCI Address это физический адрес области памяти в PC c котором Вы хотите работать по DMA.
Go to the top of the page
 
+Quote Post
Ember
сообщение Nov 9 2005, 07:23
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 22-06-05
Из: Ukraine, Kharkov
Пользователь №: 6 229



С этим утверждением я согласен. НО. Проблема в том, что у меня есть указатель на буффер, который я получил из приложения. Этот указатель по идее является логическим адресом области памяти в которую я хочу прочитать данные. И именно этот адрес, вроде, нужно преобразовать в физический адрес, а потом полученный физический адрес записать в регистр PCI Address. А как преобразовать логический адрес буффера в физический адрес ??!!
Go to the top of the page
 
+Quote Post
-Al-
сообщение Nov 9 2005, 10:03
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 330
Регистрация: 10-06-05
Из: Россия, Москва
Пользователь №: 5 894



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

Покопайте в сторону Memory Mapping в WinAPI
Go to the top of the page
 
+Quote Post
Ember
сообщение Nov 9 2005, 14:05
Сообщение #5





Группа: Новичок
Сообщений: 5
Регистрация: 22-06-05
Из: Ukraine, Kharkov
Пользователь №: 6 229



WinApi сдесь не поможет, т.к. вычисление физического адреса происходит непосредственно в самом драйвере, а там нет WinApi.
Я уже нашел функцию вычисления физического адреса на основе виртуального - MmGetPhysicalAddress, которая объявлена в файле ntddk.h. Но почему-то не могу её подключить (пока). Хотя я явно подключаю этот файл (#include <ntddk.h>), компилятор не видит данной функции.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 08:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01427 секунд с 7
ELECTRONIX ©2004-2016