https://github.com/chimeratk/pcieuni-driver

Linux kernel module (driver) to access PCI express devices. Based on the gpcieuni base driver.

https://github.com/chimeratk/pcieuni-driver

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (7.5%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Linux kernel module (driver) to access PCI express devices. Based on the gpcieuni base driver.

Basic Info
  • Host: GitHub
  • Owner: ChimeraTK
  • License: gpl-3.0
  • Language: C++
  • Default Branch: master
  • Size: 193 KB
Statistics
  • Stars: 4
  • Watchers: 7
  • Forks: 4
  • Open Issues: 4
  • Releases: 0
Created about 10 years ago · Last pushed over 1 year ago
Metadata Files
Readme License

README

                             The DAMC Linux device driver
                             
The DAMC device driver designed to provide access to the memmory and IO space of the DAMC module.
As well to make DMA transfer from DAMC module to host memmory space.

Installation:
The driver file should to be installed in the /lib/modules/`uname -r'/ directory.
Call "depmod -a" and try the driver calling "modprobe damc"
The driver during loading creates the "damc" class in /sys/class and device nodes damcsX in /dev 
directory. There X is a slot number in which the module is installed. To have standart device names 
(for example damc0 or damc1) one should create udev rules.

Creating udev rules (Ubuntu for other Linux versions read the udev manual):
1. add this line to the /etc/udev/permissions.rules:
# DAMC modules
SUBSYSTEM=="damc",      MODE="066" 

2.add lines to the /etc/udev/rules.d/60-symlinks.rules
    #rules to create damc device nodes
    KERNEL=="damcs3",     SYMLINK="damc1"
    KERNEL=="damcs1",     SYMLINK="damc2"
    KERNEL=="damcs2",     SYMLINK="damc0"
    
Using the driver:
The example code is damc_pagetest.cpp or damc_dmatest.cpp.

To read and write to and from memmory or IO spave of the module use read and write system calls with
device_rw structe as an argument. This structe defined in the damc_fn.h:
struct device_rw  {
       u_int		offset_rw;  /*offset in address*/
       u_int		data_rw;     /*data to set or returned read data */
       u_int		mode_rw;   /*mode of rw (RW_D8, RW_D16, RW_D32)*/
       u_int 	barx_rw;     /*BARx (0, 1, 2, 3)*/
};

Owner

  • Name: ChimeraTK
  • Login: ChimeraTK
  • Kind: organization

Control system and Hardware Interface with Mapped and Extensible Register-based device Abstraction Tool Kit

GitHub Events

Total
  • Watch event: 2
  • Delete event: 1
  • Push event: 3
  • Pull request review event: 1
  • Pull request event: 2
  • Fork event: 1
  • Create event: 1
Last Year
  • Watch event: 2
  • Delete event: 1
  • Push event: 3
  • Pull request review event: 1
  • Pull request event: 2
  • Fork event: 1
  • Create event: 1