Herunterladen Inhalt Inhalt Diese Seite drucken

Phoenix Contact IBS PCI DDK UM Anwenderhandbuch Seite 135

Device driver development kit zu anschaltbaugruppen für pc-systeme mit pci-bus
Inhaltsverzeichnis

Werbung

"OS?"sys.c
6189A
Die Dateien "OS?"sys.c (ntsys.c, vxwsys.c sowie bald auch "IhrOS"sys.c)
stellen die Schnittstelle zum jeweiligen Betriebssystem dar. Hier finden die
Aufrufe der Systemfunktionen statt. Ebenso werden die Datenstrukturen
an das Betriebssystem angepasst.
Hier einige Funktionen, die in "OS?"sys.c bearbeitet werden:
IBD_IoConnectInterrupt(PT_BOARD_INFO pBoardInfo);
Verbindet den Interrupt mit dem Betriebssystem
VxWorks-Funktion:
if ((pciIntConnect(INUM_TO_IVEC (((int) pBoardInfo->queryInfo.uInterrupt) +
INT_NUM_IRQ0), IbsInterruptServiceRoutine, (int)pBoardInfo)) == ERROR)
{
printf("Connect interrupt failed\n");
return(RETURN_ERR);
}
sysIntEnablePIC((int) pBoardInfo->queryInfo.uInterrupt) ;
Windows NT-Funktion:
status = IoConnectInterrupt(&pBoardInfo->pInterruptObject,
IbsInterruptServiceRoutine,
pBoardInfo, NULL, pBoardInfo->uMappedIrqVector,
pBoardInfo->Irql, pBoardInfo->Irql, LevelSensitive,
TRUE, /* share interrupt */ pBoardInfo->Affinity, FALSE);
ReadIOAddressBoardNumber(PT_PCI_INFO PciInfo);
Liest das erste IO-Register der PCI-Anschaltbaugruppe. Hier steht die
Board-Nummer, die mit den DIP-Switches eingestellt wird. Alle 8 mög-
lichen Board-Nummern werden verglichen und sollten zwei Boards
doppelt adressiert sein, so werden diese als „invalid" gekennzeichnet.
IbsInterruptServiceRoutine(PT_BOARD_INFO pBoardInfo);
Link zu der InterruptServiceRoutine
ScanPciDevices(PT_PCI_INFO PciInfo);
Sucht im PCI-Adressraum nach der IBS-PCI-Anschaltbaugruppe und
füllt die entsprechende Datenstruktur
ToDo (Anpassung an Betriebssysteme)
6-5

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis