Оригинал взят у
vkorehovisback в Как сделать PCI карту своими руками, Часть 5 (Софт и драйвер)
Вставляем карту в компьютер.
И загружаем виндовс.
Виндовс находит неопознанное оборудование, запускаем Device Manager => Properties => Details

Проверяем соответствие идентификаторов верилогу(cfg_cnc.v):
Виндовс не позволяет увидеть ресурсы карты, до загрузки драйвера:
У меня 64 битная система виндовс 7 x64 (amd64)
нам потребуется:
1) Visual Studio (качаем с торрентов)
2) Windows DDK http://www.microsoft.com/en-ie/download/details.aspx?id=11800
Будем использовать такую простую архитектуру, на основе
WinDDK/7600.16385.1/src/general/pcidrv/pcidrv.htm
используя GENPCI.INF
Код переработанного драйвера можно найти тут:
https://github.com/vkorehov/cncdrv
1) Я урезал большинство аппаратно зависимого кода/структур, заменив на ULONG буфер там где только можно.
2) ДМА код нужно еще перабатывать под себя
3) весь код по управлению энергопотреблением вырезан за ненадобностью.
4) обработчик прерываний вырезан (на этом этапе), добавить его не сложно.
5) адаптивный рост/снижение буферов также вырезано, буферы будут фиксированные, ожидание отправки тоже не нужно, потому что FPGA работает быстрее шины PCI,
Компилируем драйвер командой BLD, запустив соответствующую консоль ДДК (для вашей архитектуры) и сделав CD в папку kmdf
В .inf файле упоминается еще один файл, которого нету в процессе сборки, его нужно скопировать вручную:
cp\7600.16385.1\redist\wdf\amd64\WdfCoInstaller01009.dll \kmdf\objchk_win7_amd64\amd64
Далее нужно правой кнопкой на неопознанном "Coprocessor" кликнуть и выбрать Update driver..
указать путь к\kmdf\objchk_win7_amd64\amd64
Виндовс должен спросить хотите ли вы инсталлировать не подписанный драйвер, выберите продолжить..
Далее драйвер должен установиться и успешно инициализироваться:

Проверяем соответствие ресурсов верилогу:

т.е. имеем 16 байт диапазон ввода вывода.
и 1М диапазон памяти, что и было сконфигурировано в верилоге.
Сразу после установки, у меня выскакивает окно в моем 7-м виндовсе!
это не смотря на то, что я пользуюсь ReadyDriver Plus, который автоматически разрешает не подписанные драйверы во время загрузки!.
как с этим бороться? кто знает?

И загружаем виндовс.
Виндовс находит неопознанное оборудование, запускаем Device Manager => Properties => Details

Проверяем соответствие идентификаторов верилогу(cfg_cnc.v):
... // Device ID and Vendor ID assign CFG[151:120] = 32'h0300_10ee ; ... // Class Code and Revision ID assign CFG[183:152] = 32'h0b40_0000 ; ... // Subsystem ID and Subvendor ID assign CFG[215:184] = 32'h0000_0000 ; ...
Виндовс не позволяет увидеть ресурсы карты, до загрузки драйвера:
... // BAR0 assign CFG[0] = `ENABLE ; // BAR enabled assign CFG[32:1] = `SIZE16 ; // BAR size assign CFG[33] = `IO_PREFETCH ; // Prefetchable assign CFG[35:34] = `IO_TYPE ; assign CFG[36] = `IO ; // BAR1 assign CFG[37] = `ENABLE ; // BAR enabled assign CFG[69:38] = `SIZE1M ; // BAR size assign CFG[70] = `PREFETCH ; // Prefetchable assign CFG[72:71] = `TYPE00 ; assign CFG[73] = `MEMORY ; // BAR2 assign CFG[74] = `DISABLE ; // BAR disabled assign CFG[106:75] = `SIZE2G ; assign CFG[107] = `NOFETCH ; assign CFG[109:108] = `TYPE00 ; assign CFG[110] = `MEMORY ; ...
У меня 64 битная система виндовс 7 x64 (amd64)
нам потребуется:
1) Visual Studio (качаем с торрентов)
2) Windows DDK http://www.microsoft.com/en-ie/download/details.aspx?id=11800
Будем использовать такую простую архитектуру, на основе
WinDDK/7600.16385.1/src/general/pcidrv/pcidrv.htm
используя GENPCI.INF
---------------------
| |
| MYPING | <-- Usermode test application
| |
---------------------
^
| UserMode
-------------------------------------------------------------------------
| KernelMode
V
---------------------
| |
| PCIDRV | <-- Installed as a function driver
| |
---------------------
^
| <-------------- Talk to the hardware using I/O resources
V
Код переработанного драйвера можно найти тут:
https://github.com/vkorehov/cncdrv
1) Я урезал большинство аппаратно зависимого кода/структур, заменив на ULONG буфер там где только можно.
2) ДМА код нужно еще перабатывать под себя
3) весь код по управлению энергопотреблением вырезан за ненадобностью.
4) обработчик прерываний вырезан (на этом этапе), добавить его не сложно.
5) адаптивный рост/снижение буферов также вырезано, буферы будут фиксированные, ожидание отправки тоже не нужно, потому что FPGA работает быстрее шины PCI,
Компилируем драйвер командой BLD, запустив соответствующую консоль ДДК (для вашей архитектуры) и сделав CD в папку kmdf
В .inf файле упоминается еще один файл, которого нету в процессе сборки, его нужно скопировать вручную:
cp
Далее нужно правой кнопкой на неопознанном "Coprocessor" кликнуть и выбрать Update driver..
указать путь к
Виндовс должен спросить хотите ли вы инсталлировать не подписанный драйвер, выберите продолжить..
Далее драйвер должен установиться и успешно инициализироваться:

Проверяем соответствие ресурсов верилогу:

т.е. имеем 16 байт диапазон ввода вывода.
и 1М диапазон памяти, что и было сконфигурировано в верилоге.
Сразу после установки, у меня выскакивает окно в моем 7-м виндовсе!
это не смотря на то, что я пользуюсь ReadyDriver Plus, который автоматически разрешает не подписанные драйверы во время загрузки!.
как с этим бороться? кто знает?

no subject
Date: 2014-05-18 05:43 pm (UTC)no subject
Date: 2014-05-18 06:20 pm (UTC)уроды... это какая-то "новая" защита с последним сервис паком.
no subject
Date: 2014-05-18 07:29 pm (UTC)no subject
Date: 2014-05-18 08:23 pm (UTC)http://forum.bimoid.com/showthread.php?t=332
здесь рецепт как включить поддержку самоподписанных драйверов на win7 64
no subject
Date: 2014-05-18 09:08 pm (UTC)больше окно не появлялось, после повторной установки драйверов.
no subject
Date: 2014-05-21 12:55 pm (UTC)А то при изготовлении его же, но с интерфейсом USB/Ethernet геморрой снижается на порядок, а то и два.
no subject
Date: 2014-05-21 01:17 pm (UTC)вы просто не знаете вопрос достаточно глубоко(внутреннее устройства драйверов USB/Ethernet), чтобы оценить их пригодность для приложений реального времени.
PCI хорошая простая шина, близко интегрированная с host bus и имеет предсказуемые характеристики по задержкам, джиттеру и т.д.
no subject
Date: 2014-05-21 01:27 pm (UTC)в случае же USB/Ethernet реалтаймовость компа/драйвера не играет никакой роли, да и сам драйвер становится не нужен, только прослойка для перехвата команд от программы управления (тот же Mach3 или его аналоги почти все имеют возможность поддержки плагинов) и передача их внешнему контроллеру, а тот уже тактует сам, на 146% realtime, не завися ни от кого, причем уровень абстракции можно делать произвольный, как передавая чистый G-Code сразу контроллеру, так и полупереваренное от плагина Mach3, не заморачиваясь своим интерпретатором
no subject
Date: 2014-05-21 01:40 pm (UTC)тут пионерия снова вылезает.
самая выгодная реализация = циклический буфер с тактами, который нужно пополнять равномерно.
да, может потребность в реальном времени в этом случае снижается, но нужна, для чтения таких сигналов как E-stop калибровка и т.д.
no subject
Date: 2014-05-21 01:54 pm (UTC)тебе же тоже надо как то свою карту "кормить", из какого то софта, откуда ты получаешь траектории инструмента, в каком формате, как преобразуешь, как рисуешь результат на экране ?
Тот же Mach3 позволяет получить в плагине как GCode, так и его полуперевареную через компилятор самого Mach3 интерпретацию, у меня есть готовый Smoothstepper, он сам на железе может микросекундно реагировать на E-Stop, калибровка же выполняется на низких скоростях датчиками позволяющими "вылет" на пару мм, так что задержки в 0.1-0.2с не смертельны.
no subject
Date: 2014-05-21 04:17 pm (UTC)