Mam kartę Compact PCI w obudowie PXI; ma 2 paski pamięci, które powinny być dostępne za pośrednictwem operacji NiVisa firmy National Instruments. Mam problem z tym, że Windows 7 zmienia rejestr poleceń na karcie podczas sekwencji uruchamiania, tak że paski pamięci karty są niedostępne. Uruchomiłem analizator magistrali i zauważyłem, że rejestr poleceń przestrzeni konfiguracyjnej jest ustawiony na pożądaną wartość (0x0197) po uruchomieniu systemu BIOS.
Chciałbym, aby ta wartość utrzymywała się w sekwencji uruchamiania systemu Windows. Pozostaje taki sam, gdy używasz systemu operacyjnego Windows XP, ale nie działa w systemie Windows 7. Skonfigurowałem maszynę z podwójnym uruchomieniem z Windows XP i Windows 7, aby upewnić się, że cały sprzęt jest taki sam podczas porównania. Po sekwencji uruchamiania systemu Windows 7 wartością jest 0x0194.
Jestem w stanie ustawić rejestr poleceń na 0x197, aby uzyskać te dwa ostatnie bity tak, jak chcę z poziomu programu, którego używam do rozmowy z kartą PXI, a to pozwala mi używać karty zgodnie z życzeniem, ale jest nie stabilna poprawka. Pojawiają się częste błędy podczas rozpoczynania nowych sesji komunikacyjnych (po zamknięciu starych sesji), że alokacja pamięci nie może być wykonana przez biblioteki National Instruments.
- Czy istnieje sposób, aby uniemożliwić systemowi Windows 7 skonfigurowanie karty PXI?
Wygląda na to, że już tak chcę po zakończeniu BIOS-u. Wygląda na to, że Windows CE wyłącza konfigurację karty z flagą rejestru NoConfig . Nie byłem w stanie znaleźć metody, która działałaby w systemie Windows 7 lub Windows XP.
Windows XP próbuje również zmienić konfigurację przestrzeni konfiguracyjnej karty, ale pozostawia ją w stanie użytecznym. Opcjonalnie, ponieważ zwiększy to moje zrozumienie, ale prawdopodobnie jest styczne do rozwiązania mojego problemu, jestem zainteresowany:
- Jaką różnicę robi rekonfiguracja systemu Windows 7, która ma inny wynik na tej karcie niż system Windows XP?
źródło
pci.sys
programuje paski BAR z przypisanymi zasobami po otrzymaniuIRP_MN_START_DEVICE
IORP. Sterownik wyższego poziomu może zmodyfikować ten proces. Jest to jednak kwestia tego, kto napisał ten sterownik urządzenia. To nie jest normalny sposób.