Полная версия этой страницы:
Контроллер на PCI
stimorol
Nov 17 2007, 14:15
Уважаемые специалисты, я в этом вопросе не разбираюсь. Подскажите возможно ли сделать такую штуку. Купить готовый PCI контроллер (порекомендуйте какой) и написать под него драйввер (под Win XP). Значит задача такая с помощью некого приложения засылать на контроллер диапазон начала и конца некого адресного пространства, далее чтобы контроллер считывал содержимое этих адресов и слал в это приложение в каком то виде (ну там файл или массив данных. Сложно ли сделать подобный комплекс , учитывая практически полное отсутвие знании по данной тематике. И если это очень сложно, за какую сумму возможно изготовление того что мне требуется?
У меня есть PCI контроллер c BusMaster. 24 разряда - ввод, 24 разряда - вывод. Формат - LVDS. Дополнительно интерфейсы RS-232 и RS-485.
o-henry
Nov 19 2007, 09:08
Цитата(stimorol @ Nov 17 2007, 16:15)

Уважаемые специалисты, я в этом вопросе не разбираюсь. Подскажите возможно ли сделать такую штуку. Купить готовый PCI контроллер (порекомендуйте какой) и написать под него драйввер (под Win XP). Значит задача такая с помощью некого приложения засылать на контроллер диапазон начала и конца некого адресного пространства, далее чтобы контроллер считывал содержимое этих адресов и слал в это приложение в каком то виде (ну там файл или массив данных. Сложно ли сделать подобный комплекс , учитывая практически полное отсутвие знании по данной тематике. И если это очень сложно, за какую сумму возможно изготовление того что мне требуется?
Вам нужна микросхема PCI контроллера, которую Вы сами будете паять на плату или готовая PCI плата, предназначенная для ввода-вывода цифровых сигналов в ЭВМ?
Если второе, то посмотрите на такое вот изделие тайваньских мастеров:
http://www.ipc2u.ru/catalog/I/IP/11501.html
stimorol
Nov 19 2007, 10:47
Цитата(o-henry @ Nov 19 2007, 12:08)

Вам нужна микросхема PCI контроллера, которую Вы сами будете паять на плату или готовая PCI плата, предназначенная для ввода-вывода цифровых сигналов в ЭВМ?
Если второе, то посмотрите на такое вот изделие тайваньских мастеров:
http://www.ipc2u.ru/catalog/I/IP/11501.htmlне микросхема не нужна. надо сразу готовый контроллер. который можно как то заставить делать то чего мне надо. Но мне по мимио этого надо еще софт к нему, а как все это сделать ума ни приложу
o-henry
Nov 19 2007, 11:53
Цитата(stimorol @ Nov 19 2007, 12:47)

не микросхема не нужна. надо сразу готовый контроллер. который можно как то заставить делать то чего мне надо. Но мне по мимио этого надо еще софт к нему, а как все это сделать ума ни приложу
Так вот по приведенной мной ссылке - краткое описание платы PCI 7300A (на русском), которая для этого и была рождена. Оригинальный datasheet надо искать на сайте производителя ( кажись www.adlink.com.tw)
В комплекте с платой идут драйвера под винду и примеры работы с платой на С++ и каком-то бейсике.
За отдельные деньги можно заказать ПО для работы с платой в LabView (мы не пробовали)
По идее подобных плат в сети можно много нарыть. Просто с этой конкретной платой мы сами когда-то работали.
mdmitry
Nov 19 2007, 20:15
Какая нужна обработка информации?
Есть платы ЦОС, например, здесь
http://www.insys.ru/
stimorol
Nov 19 2007, 21:39
Короче незнаю, по моему не осилю я это. Мало знаний. Вобще мне надо это вот для чего. Я типа захотел попробывать себя на поприще читеров. Есть игры в которые можно рубится по инету. Чтобы среди игроков не было нечестных, т.е использующих читы, паралельно с игрой функционирует модуль называемый Punkbaster. Модуль постоянно проверяет содержимое оперативной памяти, точнее некоторые уязвимые диапазоны памяти на предмет истинности содержимого. Если скажем одну из сканируемых ячеек поправить то панкбастер тут же выкинет тебя с сервера игры. Кроме этого тот же панкбастер периодически делает скриншоты игрового экрана, которые потом анализируют толи боты то ли люди , а может и те и другие сразу. Я поклонник одной такой игры, прошел ее вобщем то вдоль и поперек, и захотелось мне придумать что такое чтобы обмануть их систему безопасности. И появилась мысль считывать ячейки памяти (те которые надо) не програмным способом а аппаратным, потом передавать содержимое ячеек некому софту, который на основе данных будет....ну хотя бы отображать местонахождения противников на схематически нарисованой карте. Но вот блин беда...нету у меня знании необходимых для програмирования контроллеров, и для написания софта тоже знаниий нет. Геймер я а не програмер если честно. В лучшем случае мне удалось бы нарыть на каком нибудь хакерском форуме по этой игре диапазон интересующих меня адресов памяти (ну например диапазон ячеек где хранятся координаты противников, чтобы потом нанести их в в виде точек на риснуко карты). Но это так вобщем все из разряда литеретурной прозы.
vladec
Nov 20 2007, 07:12
Наврядли Вам удастся через PCI получить доступ к произвольным обрастям оперативной памяти. Если Вы будете проектировать драйвера штатными средствами, то получите доступ только к той памяти, которую Вам выделит под ваше устройство операционная система.
Цитата(vladec @ Nov 20 2007, 10:12)

Наврядли Вам удастся через PCI получить доступ к произвольным обрастям оперативной памяти. Если Вы будете проектировать драйвера штатными средствами, то получите доступ только к той памяти, которую Вам выделит под ваше устройство операционная система.
Вроде бы этим делом не система занимается, а драйвер, через memory mapping... В принципе устройство может получить доступ к любой области памяти (будь то оперативная память компьютера или область памяти, выделенная под другое устройство) и система ему запретить не сможет.
vladec
Nov 21 2007, 07:06
Если работать штатно, то в драйвере вы запрашиваете под свою задачу память нужного типа и объема и получаете физический адрес ее начала для загрузки в PCI-master.
stimorol
Nov 21 2007, 09:36
Цитата(vladec @ Nov 21 2007, 10:06)

Если работать штатно, то в драйвере вы запрашиваете под свою задачу память нужного типа и объема и получаете физический адрес ее начала для загрузки в PCI-master.
Так всетаки можно сделать то чего мне надо или нет?
Да можно же. Master-устройство имеет возможность обращаться к любой области памяти и портов ввода-вывода. К взаимодействию устройства с драйвером это отношения не имеет. Устройству для работы драйвер может быть и вовсе не нужен (то есть данные о том, что сканировать ему как-то надо передать, но необязательно через драйвер). Например, софт, который предположительно должен отображать местоположение противников крутится на другом компе, а плата ему данные сливает по USB или RS или LPT или еще как-нибудь. Только сложность и стоимость реализации такого комплекса вряд ли сопоставима с поставленной задачей.
stimorol
Nov 21 2007, 23:19
Цитата(BSV @ Nov 21 2007, 23:34)

Да можно же. Master-устройство имеет возможность обращаться к любой области памяти и портов ввода-вывода. К взаимодействию устройства с драйвером это отношения не имеет. Устройству для работы драйвер может быть и вовсе не нужен (то есть данные о том, что сканировать ему как-то надо передать, но необязательно через драйвер). Например, софт, который предположительно должен отображать местоположение противников крутится на другом компе, а плата ему данные сливает по USB или RS или LPT или еще как-нибудь. Только сложность и стоимость реализации такого комплекса вряд ли сопоставима с поставленной задачей.
ну вот уже легче стало. Не посоветуете с чего начать?
Да не получится из устройства вот так просто изменять или считывать память. Во-первых надо узнать местонахождение в памяти нужного куска в физической памяти. Если не забыли, программы работают с виртуальной. Чтобы устройство могло обращаться всегда к правильной памяти, выделяется невыгружаемый, возможно некешируемый кусок системной памяти, он блокируется и никуда не двигается. Обычные страницы памяти могут находится где угодно. При неизменных виртуальных адресах программы, страницы в памяти могут находиться по разным адресам в физической памяти, в том числе и в swap-файле, из него то уже ничего не достанешь.
stimorol
Dec 5 2007, 16:09
Цитата(Tosha @ Nov 27 2007, 06:59)

Да не получится из устройства вот так просто изменять или считывать память. Во-первых надо узнать местонахождение в памяти нужного куска в физической памяти. Если не забыли, программы работают с виртуальной. Чтобы устройство могло обращаться всегда к правильной памяти, выделяется невыгружаемый, возможно некешируемый кусок системной памяти, он блокируется и никуда не двигается. Обычные страницы памяти могут находится где угодно. При неизменных виртуальных адресах программы, страницы в памяти могут находиться по разным адресам в физической памяти, в том числе и в swap-файле, из него то уже ничего не достанешь.
это понятно. Узнать диапазон памяти думаю я сумею. И уверен что он будет находится не в области виртуальной памяти.
Цитата(stimorol @ Dec 5 2007, 19:09)

это понятно. Узнать диапазон памяти думаю я сумею. И уверен что он будет находится не в области виртуальной памяти.
Все это конечно здорово и прекрасно, но не проще ли подгрузить в адресное пространство процесса свою dll'ку и тем самым получить полный доступ к данным процесса? А то и вовсе через debug API получить полный доступ к адресному пространству процесса? Или, свой поток создать в адресном пространстве "жертвы"?
Зачем умножать сущности сверх необходимого? И гемороя меньше с преобразованием физических адресов в виртуальные. Да и порядок следования физических страниц далеко не всегда соответствует виртуальным. Да и вообще, часть страниц может быть в свопе... :-)
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.