vkorehovisback (vkorehovisback) wrote in engineering_ru,
vkorehovisback
vkorehovisback
engineering_ru

Categories:

Как сделать PCI карту своими руками, Часть 5 (Софт и драйвер)

Оригинал взят у 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

Tags: проектирование & проекты, своими руками, электроника
Subscribe

  • ЛИПовые дренажи

    Сегодня расскажу, как меня вызвали на самолёт, и что из этого получилось. Приезжаю такой... - самолёт имени Airbus-320 NEO с двигателями…

  • очень рекомендую.

    Техномузей в Манхайме. Ссылка. Потому, что: 1) Музей не распиареный и там меньше посетителей. 2) Большая площадь, хорошая парковка, недорого, сразу…

  • Реактивное...

    Не только лишь все знают, что моделизм - развлечение не из дешёвых. Когда моделизм из хобби превращается в спорт, то суммы потраченные на модель…

promo engineering_ru may 8, 2016 17:48 28
Buy for 50 tokens
Пишет vova_modelist: Что делать, если очень надо провести плавдок через Панамский канал, но он туда не влезает? Сделать то, что люди делают с кроватью, которую надо пронести в дверь: естественно, поставить его на попа на торец. В 1945-ом году американцам…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 11 comments

  • ЛИПовые дренажи

    Сегодня расскажу, как меня вызвали на самолёт, и что из этого получилось. Приезжаю такой... - самолёт имени Airbus-320 NEO с двигателями…

  • очень рекомендую.

    Техномузей в Манхайме. Ссылка. Потому, что: 1) Музей не распиареный и там меньше посетителей. 2) Большая площадь, хорошая парковка, недорого, сразу…

  • Реактивное...

    Не только лишь все знают, что моделизм - развлечение не из дешёвых. Когда моделизм из хобби превращается в спорт, то суммы потраченные на модель…