[identity profile] vkorehovisback.livejournal.com posting in [community profile] engineering_ru
Оригинал взят у [livejournal.com profile] vkorehovisback в Как сделать PCI карту своими руками, Часть 5 (Софт и драйвер)
Вставляем карту в компьютер.
И загружаем виндовс.
Виндовс находит неопознанное оборудование, запускаем Device Manager => Properties => Details
pci card windows
Проверяем соответствие идентификаторов верилогу(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 \7600.16385.1\redist\wdf\amd64\WdfCoInstaller01009.dll \kmdf\objchk_win7_amd64\amd64
Далее нужно правой кнопкой на неопознанном "Coprocessor" кликнуть и выбрать Update driver..
указать путь к \kmdf\objchk_win7_amd64\amd64
Виндовс должен спросить хотите ли вы инсталлировать не подписанный драйвер, выберите продолжить..
Далее драйвер должен установиться и успешно инициализироваться:
devicemanager
Проверяем соответствие ресурсов верилогу:
resources
т.е. имеем 16 байт диапазон ввода вывода.
и 1М диапазон памяти, что и было сконфигурировано в верилоге.
Сразу после установки, у меня выскакивает окно в моем 7-м виндовсе!
это не смотря на то, что я пользуюсь ReadyDriver Plus, который автоматически разрешает не подписанные драйверы во время загрузки!.
как с этим бороться? кто знает?
signature

Date: 2014-05-18 05:43 pm (UTC)
From: [identity profile] still-gray.livejournal.com
Если я помню, то эту проверку на цифровую подпись отключают где-то в меню опций загрузки по нажатию F8. Винджовс перестанет докучать. Но я могу быть не прав.

Date: 2014-05-18 07:29 pm (UTC)
From: [identity profile] dmarck.livejournal.com
IIRC, это отключаемо только в 32битный версии W7, а в W7x64 signing enforced.

Date: 2014-05-18 08:23 pm (UTC)
From: [identity profile] skiffy.livejournal.com
подписать самовыданным сертификатом придется
http://forum.bimoid.com/showthread.php?t=332
здесь рецепт как включить поддержку самоподписанных драйверов на win7 64

Date: 2014-05-21 12:55 pm (UTC)
From: [identity profile] ikaktys.livejournal.com
я надеюсь что изготовление такого контроллера было чисто с научной точки зрения, поднабраться опыта с PCI ?

А то при изготовлении его же, но с интерфейсом USB/Ethernet геморрой снижается на порядок, а то и два.

Date: 2014-05-21 01:27 pm (UTC)
From: [identity profile] ikaktys.livejournal.com
верю, но при чем тут реалтаймовость USB/Ethernet, основной смысл как раз в том что бы уйти от железа компа совсем, что б никто на мамке не мог перебить процесс + управление шаговыми моторами обычно оперирует мощностями и напряжениями далекими от того что есть в компьютере, даже мелкий CNC станок имеет БП на 24в/10-15А, на каждый мотор надо минимум три провода вести, т.е. в сумме надо пучек и 10-12 проводов из платы, все строго с опторазвязкой, для подключения надо комп открывать + иметь такой в который эта карта влезет, ноуты отпадают автоматически.

в случае же USB/Ethernet реалтаймовость компа/драйвера не играет никакой роли, да и сам драйвер становится не нужен, только прослойка для перехвата команд от программы управления (тот же Mach3 или его аналоги почти все имеют возможность поддержки плагинов) и передача их внешнему контроллеру, а тот уже тактует сам, на 146% realtime, не завися ни от кого, причем уровень абстракции можно делать произвольный, как передавая чистый G-Code сразу контроллеру, так и полупереваренное от плагина Mach3, не заморачиваясь своим интерпретатором

Date: 2014-05-21 01:54 pm (UTC)
From: [identity profile] ikaktys.livejournal.com
почему пионерия ?
тебе же тоже надо как то свою карту "кормить", из какого то софта, откуда ты получаешь траектории инструмента, в каком формате, как преобразуешь, как рисуешь результат на экране ?

Тот же Mach3 позволяет получить в плагине как GCode, так и его полуперевареную через компилятор самого Mach3 интерпретацию, у меня есть готовый Smoothstepper, он сам на железе может микросекундно реагировать на E-Stop, калибровка же выполняется на низких скоростях датчиками позволяющими "вылет" на пару мм, так что задержки в 0.1-0.2с не смертельны.

Date: 2014-05-21 04:17 pm (UTC)
From: [identity profile] blog.footpaths.ru (from livejournal.com)
Ага, согласен с автором статьи.

Profile

engineering_ru: (Default)
Инженерия

December 2025

S M T W T F S
 123456
78910111213
14151617181920
2122232425 2627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 23rd, 2026 04:04 am
Powered by Dreamwidth Studios