Добрый день!
Нужна помощь людей реально сталкивавшихся с разроботкой PCI устройств и/или написанием драйверов для них...
Есть некая PCI плата ввода/вывода (более конкретно сказать не могу...)
Эта плата позволяет вводить в PC или выводить из PC некую информацию.
К этой плате производитель дает небольшой SDK, с помощью которого все это можно делать из свой программы...
Все хорошо, за исключением одной проблемы. SDK позволяет работать с платой либо на ввод данных, либо на
вывод. Но иногда, необходимо в реальном режиме времени вводить данные, обрабатывать их, и немного изменяя,
выводить обратно... В таких случая производитель предлагает использовать 2 платы в одном компьютере — одну
на ввод и другую на вывод данных.
Естественно, что возникает большое желание обойтись без второй платы

т.к. ее стоимость — "имеет значение".
На мои вопросы, может ли их плата на самом деле работать одновременно и на ввод и на вывод или это чисто
программное ограничение (в чем есть резон производителю — чтобы брали больше карт) производитель платы упорно
отмалчиваеться...
Немного поковырявшись отладчиком в функциях SDK нашел, что как и следовало ожидать, вся работа с железом идет
через DeviceIoContorl... В принципе, я определил какой набор кодов и с какими данными шлеться устройству для
передачи и приема данных...
Теперь собственно сам вопрос: реально ли дизасемблировать или как-то посмотреть каким-либо отладчиком, что
конкретно делает драйвер, когда получает эти команды через DeviceIoContorl?
Т.е., я так полагаю, драйвер, получив код "запись данных в устройство" выполняет копирование данных из локальной
памяти компьютера в память платы по шине PCI, и при получении команды "чтении данных из устройства" — наоборот,
из памяти платы в память компьютера... Так вот, если самому узнать, как именно он это делает, то возможно ли будет
реализовать "комбинированный" цикл "чтение из устройства, модификация, запись в устройство"???
С драйверами никогда дела не имел, но ассемблер знаю...
Интересует мнение знающих людей, возможно ли так глубоко "исследовать" драйвер устройства без исходников, или это
практически не реально??? Если да, то чем лучше пользоваться?
И еще, как именно происходит копирование из локальной памяти в память устройства по шине PCI?
Какие функции Windows API для этого используютья? Или это все делаеться через порты ввода/вывода?
Кстати, поток данных там довольно большой, порядка 15 мегабайт в секунду, т.е. должны использоваться механизмы
DMA, если я правильно понимаю.... Вдруг это имеет значение...
Подскажите пожалуйста, кто сможет...
С уважением,
Владимир.
Все зависит от архитектуры самой платы. Если разработчики предполагали использовать ее только для ввода или вывода, то увы. Ну а если это лень программеров или баги софта и нет времени с этим разбираться, то в документацию просто вносится информация об ограничениях.
Наша фирма делает PCI платы ввода-вывода. Сами много раз так делали (мало людей у нас и на детальное тестирование нет времени). Выкатывали продукт со всякими ограничениями. А потом по мере жалоб клиентов устраняли баги. Если клиент хотел купить много плат, то фиксили проблему быстро, а если мало, то откладывали в долгий ящик.
Здравствуйте, Аноним, Вы писали:
А>Конечно реально!
А>Я знаю что отладчик SoftIce от компании NuMega (сейчас она вроде как-то по другому называется )может отлаживать драйверы ядра
Мо-ло-дец!

И дальше что?
А>там по идее должен быть какой-нибудь стандартный PCI мост (типа 5090 или не помню уже как называется).
Сори, попутал. Наверно все-таки 9052.
SW>Нужна помощь людей реально сталкивавшихся с разроботкой PCI устройств и/или написанием драйверов для них...
здрасти
SW>Естественно, что возникает большое желание обойтись без второй платы
т.к. ее стоимость — "имеет значение".
скока deнех канкретна может дешевле свою железяку сделать
Как варианты:
— Если есть оба варианта сдк — почему бы их не использовать оба разом?
— Если известен набор ioctl для нижележащего драйвера — может просто обвязку свою написать или это слишком высокоуровнево?
— На третье есть еще такое зверье, как Interactive DisAssembler — уж для анализа всяко лучше SI.
Нет ничего нереального