Consultancy and Total Solutions Training Provider for Embedded Systems, Electronics and Electrical Engineering, Programming, Computing, Operations, ISO9000, ISO14000 and Management.

Bridging the Gap

Training Courses

Interfacing PCIe in Linux

Course id: 0034


Computing systems rely significantly on ultra high bandwidth buses to move vast amount of data as quickly as possible for applications such as real-time video processing, gaming and database searching. In modern computing systems, the PCI Express (PCIe) bus forms the backbone connecting the various peripherals – such as the graphics card and the Ethernet controller – with the processor.

This course emphasises on the configuration and implementation of the PCIe controller IP core for FPGAs and interfacing and using PCIe under Linux.

Course highlight
Participants would have hands-on experience using the Altera DE4 Developmet Kit and the Quartus II design environment.

What you will learn

Participants will gain the necessary knowledge to develop custom PCIe character and block drivers in Linux that will communicate with the PCIe controller.

Who should attend

This course is particularly suited for hardware and software engineers who would like/are required to develop Linux device drivers for PCIe-based peripherals, and implementing the PCIe controller on the FPGA.


Participants must be capable of developing drivers in the Linux environment and have developed hardware modules in Verilog.

Course methodology

This course is presented classroom style, with lab exercises/demonstrations.

Course duration

4 days.

Course structure

  • Introduction
    • Overview of PCIe
    • Data Link Layer
    • Transaction Layer Packets
  • Interfacing PCIe
    • PCIe specifications
    • Read/Write Access
    • Hands-on practical 1: PCIe TLP Communication
    • Interrupt transactions
    • Hands-on practical 2: Handling Interrupts on PCIe
  • High-Level Drivers in Linux
    • Autodetection of devices
    • Autoinitialisation
    • Accessing device configuration
    • Accessing device I/O
    • Interrupts
  • Linux Driver Model
    • Driver models
    • Busses, Devices, Classes
    • Device creation/removal
    • Driver registration/removal
    • Hotplugging
    • Custom firmware
  • Memory Management
    • Address Types
    • Page Tables
    • Virtual Memory
    • Device Operations
    • Remapping regions
  • Direct Memory Access (DMA)
    • Memory mapping
    • Address allocation
    • Bus addresses
    • DMA cycles
  • Advance Issues
    • Power management
    • System shutdown
    • Userspace communication

Course Schedule





News on ProvenPac

  ProvenPac Sdn. Bhd.
  C-4-3 Gembira Park,
  Jalan Riang, 58200
  Kuala Lumpur, Malaysia

  Tel: +603 03 5889 5889

No public course
currently scheduled.


Please inform me when
this course is scheduled.


Please contact me to
arrange in-house training.