pci-toolkit

Kithara »PCI Toolkit«

Function Library for PCI Driver Development

The »PCI Toolkit« provides all important mechanisms for rapid development of hardware drivers, especially for PCI/PCIe boards.

By using the comprehensive and simply applicable API, access from the ordinary programming environment to the hardware components is possible as if a real device driver was developed with huge effort.

Via I/O ports, physical memory as well as handler for reactions to hardware interrupts, it is possible to address each hardware component of the PC system, as far as the access details are known. For the hardware-dependent programming all known bus types are supported: ISA, PCI, PCIe as well as PCMCIA, CardBus and ExpressCard.

The »PCI Toolkit« provides functions for instantaneous access to I/O registers and physical memory of the PC hardware. Additionally, the processing of hardware interrupts at the application or kernel level is possible. Furthermore, it is possible to determine interface resources and the PCI configuration data.

Programming languages like C/C++, Delphi or C# are directly supported and the developers can work in their familiar programming environment during the entire development. The »PCI Toolkit« provides a generic driver, which enables the developers a direct access to PCI/PCIe hardware resources.

  • Direct access to all I/O registers of the PC (8 bit, 16 bit and 32 bit)
  • Direct access to physical memory
  • High-performance mechanisms for interrupt programming
  • Multiple handler per IRG installable
  • Generic WDM-driver for plug & play installation included
  • Unlimited distribution of the runtime files
  • Code execution on the kernel-level supported by C/C++ and Delphi
  • The »PCI Toolkit« replaces the »Hardware Toolkit«

For further information see »Driver Collection«.

Notice: An individual combination of the function modules as well as real-time capability is provided by the »RealTime Suite«.

The »PCI Toolkit« consists of following modules, which provides only the mentioned real-time capabilities if the module is part of the »RealTime Suite«.

Basic Functions

Base Module

  • Supports the following operating systems: Windows 7/8/10 (32 and 64 bit), Server 2008 R2 as well as Embedded versions
  • Supports PIC and APIC hardware, NUMA multi-processor PCs, Hyper-threading, multi-core etc.
  • Functions for: opening the driver, device handling, version information, debugging support, system information
  • Application threads, events, callbacks, shared memory, data and message pipes, fast mutex objects
  • Further information...

Kernel Module

  • Real-time code implementation at the kernel level
  • Real-time memory management, memory copy function
  • Only in connection with C/C++ or Delphi
  • Generic WDM-driver for plug & play installation included
  • Further information...

Hardware Access

IoPort Module

  • Access to all I/O registers of the PC application or DLL
  • Determination of the PCI configuration data and resource data
  • Further information...

Memory Module

  • Access to external physical memory (Dual-Port-RAM)
  • Provision of PC memory for external hardware (DMA memory)
  • Further information...

Interrupt Module

  • Processing of hardware interrupts at the application or kernel level
  • Use of the operating system mechanisms for interrupt processing
  • By using the RealTime Modules interrupts of PCI or PCIe Hardware can be processed
  • Further information...

Platforms

Real-time capability can only be achieved on the kernel level.

For this purpose a programming language is required that is able to generate native x86 or x64 machine code, e.g. C/C++ or Delphi. Nevertheless the »RealTime Suite« supports various platforms, for example a .NET environment.

The solution is, to transfer the time-critical code into a DLL, which will be loaded directly into the real-time context at the kernel level. The »RealTime Suite« provides all this functions.

Instantly usable program frameworks for the platforms mentioned above are part of every software delivery.

System Requirements

The products of the »RealTime Suite« support a wide range of hardware and software combinations:

If you have questions regarding the system support, please contact us!

Operating system

The software supports the following operating systems:

  • Windows 10 (32 and 64 bit, 64 bit only by using the dedicated mode)
  • Windows 8 and 8.1 (32 and 64 bit, 64 bit only by using the dedicated mode)
  • Windows Server 2012 (64 Bit, only using by the dedicated mode)
  • Windows 7 (32 and 64 bit) + Windows Embedded Standard 7
  • Windows Server 2008 R2 (64 bit)

Hardware

The software runs on the following hardware:

  • CPU: AMD (Athlon) or Intel (Pentium 2), 32 - or 64-bit
  • Single-or multi-core, Hyperthreading, plain version to 8 logical CPU cores (extended version currently up to 32 logical cores, more details on request)
  • ACPI recommended (Advanced Control and Power Interface), APIC recommended (Advanced Programmable Interrupt Controller) - Some features require ACPI-APIC
  • the PC must be able to support PAE (Page Address Extension)
  • Using Gigabit-Ethernet, controller of Intel and RealTek are generally supported on demand

Compiler

Immediately usable program frameworks for the following programming languages / compilers are included in the supplied software (other programming languages can be supported on request):

  • Visual Studio 20xx C++ with MFC user interface (supplied project files: VS 2005/08/10/12/13/15)
  • C++ Builder (Embarcadero, formerly Borland) VCL user interface
  • Delphi (Embarcadero, formerly Borland) VCL user interface
  • Visual Studio 20xx C# with WPF user interface (incl. C++ DLL for real-time execution, supplied project files: VS 2005/08/10/12/13/15)
  • In order to execute code in a real-time context, generally any compiler that can generate a DLL with native machine code, is usable. Furthermore, the Windows application can also be generated with other programming languages, such as C#.

 


EtherCAT® is a registered trademark of the EtherCAT Technology Group.

CANopen® is a registered trademark of the CAN in Automation e.V..

GigE Vision® is a registered trademark of the Automated Imaging Association.